iptables命令中常见的控制类型有:
ACCEPT:允许通过
LOG:记录日志信息,然后传给下一条规则继续匹配
REJECT:拒绝通过,必要时会给出提示
DROP:直接丢弃,不给出任何回应
规则链依据处理数据包的位置不同而进行分类:
PREROUTING:在进行路由选择前处理数据包
INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包
POSTROUTING:在进行路由选择后处理数据包
Iptables中的规则表是用于容纳规则链,规则表默认是允许状态的,那么规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则。
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
规则表的先后顺序:raw→mangle→nat→filter
入站顺序:PREROUTING→INPUT
出站顺序:OUTPUT→POSTROUTING
转发顺序:PREROUTING→FORWARD→POSTROUTING
iptables:
-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号
环境:
xp(外网client):192.168.200.10
IPtables防火墙:192.168.200.101(外网)
192.168.10.1(内网)
192.168.20.1(内网DMZ)
nginx server: 192.168.20.2
local client: 192.168.10.2 GW:192.168.10.1
IPtable防火墙网络配置:
nmtui
systemctl restart network
ip addr
1. 安装IPtables软件包。
systemctl stop firewalld.service
systemctl disable firewalld.service
yum install -y iptables-services
2、启用路由转发。
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
3、配置内部主机访问外网。
iptables -t nat -A POSTROUTING -o ens32(#外网网卡) -s 192.168.10.0/24 -j SNAT --to-source 192.168.200.101
iptables -t nat -L
iptables save
4、设置防火墙主机拒绝icmp数据包。
iptables -t filter -I INPUT -p icmp --icmp-type 8 -j REJECT
iptables -t filter -L
iptables save
5、发布DMZ区域的Web服务器。
yum install -y epel-release
yum install -y nginx
systemctl restart nginx
systemctl enable nginx
ss -ntlu | grep 80
iptables -t nat -A PREROUTING -d 11.23.0.215 -p tcp --dport 80 -j DNAT --to-destination 192.168.10..:80
iptables save
iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere 01 tcp dpt:http to:192.168.20.2:80
6、禁止内网主机访问特定网站。
iptables -t filter -I FORWARD -s 192.168.10.0/24 -d www.weibo.com -j DROP
iptables save
iptables -t filter -L
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- 192.168.10.0/24 180.149.134.141
DROP all -- 192.168.10.0/24 180.149.134.142