iptables与firewalld

iptable

常用参数

-P     #设置默认策略
-F     #清空规则链
-L     #查看规则链
-I <num>     #在规则链头部插入新规则
-A     #在规则链尾部加入新规则
-D <num>     #删除某一条规则
-s     #匹配来源地址 IP/MASK , 加叹号 “!”表示排除这个ip
-d     #匹配目标地址
-i <网卡名称>     #匹配从这块网卡流入的流量
-o <网卡名称>     #匹配从这块网卡流出的流量
-p     #匹配协议,如TCP,UDP,ICMP
--dport <num>    #匹配目标端口号
--sport <num>    #匹配来源端口号
  • 查看已有规则链
iptables -L
iptable --list
  • 设置默认规则链
iptables -P INPUT DROP #把INPUT规则链默认策略设置为拒绝(其他参数有ACCEPT,REJECT,LOG)
#REJECT和DROP不同的是,REJECT会在拒绝流量后回复拒绝信息,DROP是直接丢弃流量
  • 自定义规则
#向INPUT规则链添加允许icmp流量进入的策略规则
iptables -I INPUT -p icmp -j ACCEPT


#只允许指定网段的主机访问本机22端口,拒绝其他主机的访问
iptables -I INPUT -p tcp -s 10.0.0.1/24 --dport 22 -j ACCEPT #允许指定主机访问
iptables -A INPUT -p tcp --dport 22 -j REJECT #拒绝其他主机访问
#!!!需要注意的是iptables是根据配置的规则从下到上匹配,在头部的规则优先级更高。


#向INPUT链添加拒绝所有主机访问本机1000——2000端口的策略规则
iptables -A INPUT -p tcp --dport 1000:2000 -j REJECT

firewalld

默认区域及规则

firewalld引入了区域的概念,类似于window的家庭网络,工作网络,公共网络,不同区域之间可以切换,且有其相应的默认规则。

区域默认策略规则
trusted允许所有的数据包
home拒绝流出的数据包,除非与流入的流量相关;而如果流量与ssh,mdns,ipp-client,amba-client与dhcpv6-client服务相关,则允许流量
internal等同于home区域
work拒绝流入的流量,除非与流出的流量有关;而如果流量与ssh,ipp-client,amba-client与dhcpv6-client服务相关,则允许流量
public拒绝流入的流量除非与流出的流量有关;而如果流量与ssh,dhcpv6-client服务相关,则允许流量
external拒绝流入的流量。除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz拒绝流入的流量,除非与流出的流量相关
drop拒绝流入的流量,除非与流出的流量相关

常用参数

参数作用
–get-default-zone查询默认的区域名称
–set-default-zone=<区域名称>设置默认的区域,使其永久生效
–get-zones显示可用的区域
–get-services显示预先定义的服务
–get-actice-zones显示当前正在使用的区域与网卡名称
–add-source=将源自此IP或子网流量导向指定的区域
–remove-source=移除将源此IP或子网流量导入指定区域的设置
–add-interface=<网卡名称>将源自该网卡的所有流量到向指定的区域
–change-interface=<网卡名称>将指定网卡与指定区域进行关联
–list-all显示当前区域的网卡配置参数,资源,端口以及服务等信息
–list-all-zones显示所有区域的网卡配置参数,资源,端口以及服务等信息
–add-service=<服务名>设置默认区域允许该服务的流量
–add-port=<端口号/协议>设置默认区域允许该端口的流量
–remove-service=<服务名>设置默认区域不在允许该服务的流量
–remove-port=<端口号/协议>设置默认区域不在允许该端口的流量
–reload让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
–panic-on开启应急状况模式
–panic-off关闭应急状况模式
  • 查看当前服务所使用的区域
firewall-cmd --get-default-zone
  • 查看指定网卡的区域
firewall-cmd --get-zone-of-interface=ens33 #查看ens33网卡的区域
  • 修改默认区域
firewall-cmd --set-default-zone=public #设置默认区域为public
  • 允许服务通过
firewall-cmd --zone=public --add-service=http #允许http协议的流量
firewall-cmd --zone=public --query-service=http #查询http是否被允许

所有配置不加–permanent参数的话,都是临时生效,重启后恢复。

  • 永久生效并立即生效
firewall-cmd --permanent --zone=public --remove-service=http #永久模式拒绝http流量
firewall-cmd --reloacd #重新加载配置文件
  • 允许端口通过
firewall-cmd --zone=public --add-port=1000-2000/tcp #允许1000到2000的端口通过
firewall-cmd --zone=public --list-ports #查询允许通过的端口
  • 端口转发
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=172.0.0.5 #将本机888端口转发到172.0.0.5的22端口
    原文作者:lemon
    原文地址: https://segmentfault.com/a/1190000019768934
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞