过滤不安全的流量:阻止来自不可信来源的网络请求。
保护内部网络:防止未经授权的访问,保护内部网络资源。
监控网络活动:记录和分析网络流量,帮助识别和应对安全威胁。
iptables是一个用户空间命令行工具,用于配置Linux内核中的Netfilter防火墙。它可以定义各种规则来过滤和转发网络数据包。
结构:iptables基于表(table)和链(chain)的结构。传说中的四表是:filter、nat、mangle、raw,五链是:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
功能:iptables可以进行包过滤、网络地址转换(NAT)、包修改等。
工作原理:当数据包到达时,iptables根据预定义规则进行匹配和处理,决定是否放行、拒绝或记录该数据包。
四表五链详解:
四表:
Filter表
功能:主要用于包过滤,是最常用的表。
链:INPUT、FORWARD、OUTPUT。
Nat表
功能:用于网络地址转换(NAT),如源地址转换(SNAT)和目的地址转换(DNAT)。
链:PREROUTING、OUTPUT、POSTROUTING。
Mangle表
功能:用于修改数据包的服务类型、TTL等标记。
链:PREROUTING、OUTPUT、FORWARD、INPUT、POSTROUTING。
Raw表
功能:用于配置数据包是否应被状态跟踪机制处理。常用于排除某些数据包的状态跟踪。
链:PREROUTING、OUTPUT。
五链:
PREROUTING链
位置:在数据包进入防火墙时最先处理。
应用表:Nat、Mangle、Raw。
INPUT链
位置:处理进入防火墙并且目标是本地系统的数据包。
应用表:Filter、Mangle。
FORWARD链
位置:处理进入防火墙但不直接送往本地系统的数据包,通常是转发到其他网络接口。
应用表:Filter、Mangle。
OUTPUT链
位置:处理从本地系统发出的数据包。
应用表:Filter、Nat、Mangle、Raw。
POSTROUTING链
位置:在数据包离开防火墙时最后处理。
应用表:Nat、Mangle。
数据包在链表中的处理过程大致如下:
firewalld是一个动态管理防火墙工具,提供更高级的配置接口。它默认在CentOS 7及以后的版本中使用。
结构:firewalld基于区域(zone)和服务(service)的概念,每个区域对应不同的信任级别。
功能:支持动态更新,无需重启服务即可应用新的规则。提供丰富的命令行和图形界面工具。
工作原理:firewalld通过D-Bus接口与系统交互,实时管理iptables规则。
查看当前所有规则:
默认是filter表。
iptables -L
查看INPUT链规则:
iptables -L INPUT
或者:
iptables -t 表名 -L 链名
查看详细信息,且不做域名解析:
iptables -nvL INPUT
拒绝192.168.0.100的ip访问:
iptables -I INPUT -s 192.168.0.100 -j DROP
或者
iptables -I INPUT -s 192.168.0.100 -j REJECT
或者
iptables -A INPUT -s 192.168.0.100 -j DROP
或者
iptables -A INPUT -s 192.168.0.100 -j REJECT
-I:在链的最前面添加规则,第一个匹配
-A:在链的最后面追加规则,最后匹配
-j DROP: 丢弃数据包,不给出回应,客户端会一直保持连接,直到超时
-j REJECT: 直接拒绝数据包,客户端会收到拒绝信息
拒绝192.168.0.0/24网段的ip访问:
iptables -I INPUT -s 192.168.0.0/24 -j DROP
禁止Ping本机:
iptables -A INPUT -p icmp -j REJECT
删除规则:
# 指定删除某规则,如删除禁ping规则
iptables -D INPUT -p icmp -j REJECT
# 删除指定行规则,先通过--line-numbers 获得规则行号,然后删除
iptabls -nvL --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
iptables -D INPUT 2
保存规则:
iptables-save > /etc/sysconfig/iptables
firewalld管理服务,需要先在zone中关联IP地址或者网段,或者关联网卡。
关联网卡:
firewall-cmd --permanent --add-interface=ens33
firewall-cmd --reload
查看当前区域和规则:
firewall-cmd --get-active-zones
firewall-cmd --list-all
允许HTTP服务:
默认zone是public,不指定zone就是在public中。
# 临时且及时生效
firewall-cmd --add-service=http
# 永久生效,需要reload规则
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
添加特定端口:
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
禁止ping:
firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
firewall-cmd --reload
或者
firewall-cmd --add-rich-rule='rule protocol value="icmp" drop' --permanent
firewall-cmd --reload
富规则:
# 不允许142.0网段IP远程连接,允许215.0网段IP远程连接(指定端口):
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.142.0/24 port port=22 protocol=tcp reject'
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.215.0/24 port port=22 protocol=tcp accept'
firewall-cmd --reload
端口转发:
# 内网出外网:
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
# 外网进内网(192.168.0.100为目标内网地址):
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.100
firewall-cmd --reload
在配置防火墙时,需注意以下安全因素:
最小化暴露端口:只开放必要的端口,减少攻击面。
定期审计规则:定期检查和更新防火墙规则,确保它们仍然符合安全策略。
日志记录:启用防火墙日志功能,监控异常流量和潜在威胁。