简述
防火墙是一个隔离工具,主要工作在主机或者网络的边缘。
对于进出本机或者网络的报文根据事先定义好的网络规则进行检测。
对匹配的报文进行相应处理
- 主机防火墙
- 网络防火墙
防火墙概念图
四表五链
- 四表(功能)
filter:过滤,防火墙
nat:网络地址转换
mangle:拆分报文,做出修改,再封装起来
raw:关闭nat表上启用的链接追踪功能 - 五链
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
报文走向
接收报文:
发送报文:
报文转发:
表上都有那些链
- filter:INPUT,FORWARD,OUTPUT
- nat:PREROUTING(DNAT),OUTPUT,INPUT,POSTROUTING(SNAT)
- mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
- raw:PREROUTING,OUTPUT
修改规则思考点
实现什么功能,判断在哪个表上做出修改;
报文流向路径,判断在哪个链上做出修改。
链管理
代码 | 说明 |
---|---|
iptables -F | 清空某表的规则 |
iptables -X | 删除所有自定义的链 |
iptables -N | 创建新的自定义链 |
iptables -P | 设置链的状态 |
规则管理
- 查看防火墙规则
[root@sonw ~]# iptables -L -n --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
3 INPUT_direct all -- 0.0.0.0/0 0.0.0.0/0
4 INPUT_ZONES_SOURCE all -- 0.0.0.0/0 0.0.0.0/0
5 INPUT_ZONES all -- 0.0.0.0/0 0.0.0.0/0
6 DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
...
-A 将新的规则追加于指定链的尾部
[root@sonw ~]# iptables -t filter -A INPUT -d 192.168.77.153 -p icmp -j REJECT
## 在filter表INPUT链上,目标地址为192.168.77.153,协议为icmp的,动作:黑名单
## 拒绝ping 192.168.77.153
-I 将新规则插入至指定链的位置
[root@sonw ~]# iptables -t filter -I 1 INPUT -d 192.168.77.153 -p icmp -j REJECT
## 将这条规则插入到INPUT链的1号位置
-D 删除指定链上的指定规则
[root@sonw ~]# iptables -D INPUT 1
## 删除INPUT链上的一号规则(没有指定表,默认为:filter)
网络防火墙
设置客户端允许ssh连接主机
客户端访问web端设置的防火墙
[root@sonw ~]# iptables -A INPUT -s 172.16.19.2 -d 192.168.10.2 -p tcp --dport 22 -j ACCEPT
web端回复客户端的防火墙
[root@sonw ~]# iptables -A INPUT -s 192.168.10.2 -d 172.16.10.2 -p tcp --dport 22 -j ACCEPT
路由转发
开启路由转发功能需要修改内核参数
- 临时修改
[root@sonw ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
- 永久修改
[root@sonw ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@sonw ~]# sysctl -p
- 备份防火墙配置
[root@sonw ~]# iptables-save > /etc/sysconfig/iptables
- 恢复防火墙配置
[root@sonw ~]# iptables-restore < /etc/sysconfig/iptables
DNAT/SNAT
想要内网ping通外网或者外网ping通内网
路由转发功能必须要开启
- 原地址为192.168.20.2,经过防火墙转换成172.16.100.1(SNAT:原地址转换)
[root@sonw ~]# iptables -t nat -A POSTROUTING -s 192.168.10.2 -d 172.16.100.2 -j SNAT --to-source 172.16.100.1
- 访问目标地址为172.16.100.1,基于tcp协议80端口转发给192.168.10.2的77端口(DNAT:目标地址转换)
[root@sonw ~]# iptables -t nat -A PREROUTING -s 172.16.100.2 -d 172.16.100.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.2:77