一、首先熟悉一些名词
容器:瓶子,放东西的
表(table): 存放链的容器
链(chain): 存放规则的容器
规则(policy): 准许ACCPT或拒绝DROP规则
二、iptables执行过程
1.防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2.匹配 表示 阻止还是通过,数据包就不再向下匹配新的规则 。
3.如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明 确的阻止还是通过。
4.防火墙的默认规则是所有规则执行完才执行的。
image.png
三、四表五链
表:
filter(默认,防火墙功能,准许 拒绝)
nat (nat功能:共享上网,端口映射)
mangle
raw
四表五链流程:
四、安装部署
下载
yum install -y iptables-services
加载内核模块(临时生效,写入rc.local永久生效)
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
lsmod | egrep 'ipt|nat|filter'
systemctl start iptables.service
systemctl enable iptables.service
五、常用命令-filter表
1.查看规则
查看默认表规则
iptables -nL
查看nat表规则
iptables -t nat -nL
2.清空规则
iptables -F
iptables -X
iptables -Z
-F,--flush 清除所有规则,不会处理默认的规则
-X 删除用户自定义的链
-Z 链的计数器清零(数据包计数器与数据包字节计数器)
3.删除INPUT的第一条规则
iptables -D INPUT 1
依此类推
3.配置规则
3.1.IP相关
1.禁止10.0.0.7访问22端口
iptables -I INPUT -s 10.0.0.7 -p tcp --dport 22 -j DROP
2.禁止172.16.1.0网段访问8080端口
iptables -I INPUT -s 172.16.1.0/24 -p tcp --dport 8080 -j DROP
3.只允许10.0.0.0网段访问(设置白名单)
iptables -I input ! -s 10.0.0.0/24 -j DROP
3.2.端口相关
禁止用户访问1024-65535端口
iptables -I INPUT -p tcp --dport 1024:65535 -j DROP
禁止用户访问80端口和443端口
iptables -I INPUT -p tcp -m multiport --dport 80,443 -j DROP
3.3禁止被ping
通过内核参数设置禁止被ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
sysctl -p
通过防火墙设置禁止被ping
iptables -I INPUT -p icmp--icmp-type 8 -j DROP
3.4生产用法
允许22端口接入
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
流量进来出去走lo网卡
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
允许80,443端口接入
iptables -I INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
修改默认规则为拒绝
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
设置10.0.0.0网段为白名单
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
六、常用命令-nat表
1.共享上网
把172.16.1.7转换为10.0.0.61访问外网
iptables -t nat -A POSTROUTING -s 172.16.1.7 -j SNAT --to-source 10.0.0.61
把172.16.1.0网段转换为10.0.0.61访问外网
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
开启转发规则
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
2.端口转发
客户端访问10.0.0.61 9000端口 跳转至172.16.1.7 22端口
iptables -t nat -A POSTROUTING -d 10.0.0.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22
注意查看是否配置了转发规则
tail -1 /etc/sysctl.conf
net.ipv4.ip_forward=1
#注意:内网的服务器需要把网关设置为防火墙的IP
3.IP转发
添加临时IP10.0.0.62
ip a a 10.0.0.62/24 dev eth0 lable eth0:0
访问10.0.0.62,自动跳转至172.16.1.7
iptables -t nat -A PREROUTING -d 10.0.0.62 -j DNAT --to-destination 172.16.1.7
删除临时IP
ip a del 10.0.0.62/24 dev eth0
网友评论