本文最后更新于2022年6月1日,已超过 1 年没更新!内容可能已失效,请自行测试。
防火墙管理工具
在 RHEL 7 系统中,firewalld 防火墙取代了 iptables 防火墙.
iptables与 firewalld 都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已
- iptables服务把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理
- firewalld服务是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理
iptables
早期的 Linux 系统中,默认使用的是 iptables 防火墙管理服务来配置防火墙
策略与规则链
防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)
iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类
- 在进行路由选择前处理数据包(PREROUTING)
- 处理流入的数据包(INPUT)
- 处理流出的数据包(OUTPUT)
- 处理转发的数据包(FORWARD)
- 在进行路由选择后处理数据包(POSTROUTING)
iptables中基本的命令参数
参数 | 作用 |
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外 |
-d | 匹配目标地址 |
-i网卡名称 | 匹配从这块网卡流入的数据 |
-o网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如TCP、UDP、ICMP |
--dport num | 匹配目标端口号 |
--sport num | 匹配来源端口号 |
查看已有的防火墙规则链
iptables -L
清空已有的防火墙规则链
iptables -F
把 INPUT 规则链的默认策略设置为拒绝
iptables -P INPUT DROP
向 INPUT 链中添加允许 ICMP 流量进入的策略规则
iptables -I INPUT -p icmp -j ACCEPT
删除 INPUT规则链中允许 ICMP流量的规则
iptables -D INPUT 1
将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
向 INPUT 规则链中添加拒绝所有人访问本机 12345 端口的策略规则
iptables -I INPUT -p tcp --dport 12345 -j REJECT
iptables -I INPUT -p udp --dport 12345 -j REJECT
向 INPUT 规则链中添加拒绝 192.168.10.5 主机访问本机 80 端口的策略规则
iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT
向 INPUT 规则链中添加拒绝所有主机访问本机 1000~1024 端口的策略规则
iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
iptables -A INPUT -p udp--dport 1000:1024 -j REJECT
如果想让配置的防火墙策略永久生效,执行保存命令
service iptables save
firewalld
终端管理工具
用 firewall-cmd 命令设置防火墙策略时添加--permanent参数就可以永久生效
想让配置的策略立即生效 需要手动执行
firewall-cmd --reload
查看 firewalld 服务当前所使用的区域
firewall-cmd --get-default-zone
查询 ifcfg-ens32网卡在 firewalld 服务中的区域
firewall-cmd --get-zone-of-interface=ifcfg-ens32
服务的访问控制列表
TCP Wrappers服务的防火墙策略由两个控制列表文件所控制, 用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量.控制列表文件修改后会立即生效,系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;如果没有匹配,则去进一步匹配拒绝控制列表文件(/etc/hosts.deny) ,若找到匹配项则拒绝该流量.如果这两个文件全都没有匹配到,则默认放行流量
编写拒绝策略规则文件,禁止访问本机 sshd 服务的所有流量
vim /etc/hosts.deny
#
# hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a 'deny' option instead.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
sshd:*
在允许策略规则文件中添加一条规则,使其放行源自 192.168.10.0/24 网段,访问本机 sshd服务的所有流量
vim /etc/hosts.allow
#
# hosts.allow This file contains access rules which are used to
# allow or deny connections to network services that
# either use the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
sshd:192.168.10.
- 在 RHEL 7 系统中,iptables 是否已经被 firewalld 服务彻底取代?
- iptables 和 firewalld 服务均可用于 RHEL 7 系统
- 简述防火墙策略规则中 DROP 和 REJECT 的不同之处
- DROP的动作是丢包,不响应;REJECT 是拒绝请求,同时向发送方回送拒绝信息
- 如何把 iptables 服务的 INPUT 规则链默认策略设置为 DROP?
- iptables -P INPUT DROP
- 编写一条防火墙策略规则,禁止源自 192.168.10.0/24 网段的流量访问本机的 sshd 服务(22 端口)
- iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j REJECT
- firewalld 中区域的作用
- 可以依据不同的工作场景来调用不同的 firewalld区域,实现大量防火墙策略规则的快速切换
- 如何在 firewalld 中把默认的区域设置为 dmz?
- firewall-cmd --set-default-zone=dmz
Comments | NOTHING