防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来制定,然后防火墙使用预先定义的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃
iptables和firewalld只是用来定义防火墙策略的防火墙工具,只是一种服务
iptables服务会把配置好的防火墙交由内核层面的netfilter网络过滤器来处理
firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理
防火墙策略规则的设置有两种
1.“通”(放行)
2.“堵”(阻止)
规则链依据数据包处理位置的不同进行分类
1.在进行路由选择前处理数据包(Prerouting)
2.处理流入的数据包(input)
3.处理流出的数据包(output)
4.处理转发的数据包(Forward)
5.在进行路由选择后处理数据包(Postrouting)
一般来讲,从内网向外网发送的流量是可控且良性的,因此使用最多的就是INPUT规则链
Accept
Reject:会在拒绝流量后再回复一条“你的信息已经收到,但是被扔掉了”
Log
Drop:直接丢弃而且不响应
iptables常用参数
参数 | 作用 |
---|---|
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链末尾加入新规则 |
-I num | 在规则链头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址 IP/MASK,加叹号"!" 表示除这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如TCP、UDP、ICMP |
–dport num | 匹配目标端口号 |
–sport num | 匹配来源端口号 |
查看已有防火墙规则链
保存配置:
service iptables save
firewalld
区域 | 默认策略规则 |
---|---|
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 |
internal | 等同于home区域 |
work | 拒绝流入的流量,除非与流出的流利数相关,而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh、dhcpv6-client服务相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
firewalld配置的防火墙策略默认是运行时(runtime),又称为当前生效模式
若想让配置一直存在,则需要使用永久模式(permanent)
方法:在用 firewall-cmd命令正常设置防火墙策略时添加 --permanent 参数,但是只有在系统重启之后才能自动生效。
若想立即生效,则需手动执行:firewall-cmd-reload
查看firewalld服务当前所使用的区域
firewall-cmd --get-default-zone
把在firewalld服务中访问8080和8081端口的流量策略设置为允许,但仅限当前生效
firewall-cmd --zone=public --add-port=8080-8081/tcp
success
firewall-cmd --zone=public --list-ports
8080-8081/tcp
firewall中的富规则变式更细致、更详细的防火墙策略配置,可以针对系统服务、端口号、源地址和目标地址等信息进行更有针对性的策略配置
优先级在所有的防火墙策略中也是最高的