Linux下的iptables配置

1、iptables的三张表、五条链
#三张表
         filter表:一般的过滤功能
         nat表:用于nat功能(端口映射,地址映射等)
         mangle表:用于对特定数据包的修改
#五条链
       PREROUTING:数据包进入路由表之前
       INPUT:通过路由表后目的地为本机
       FORWARDING:通过路由表后,目的地不为本机
       OUTPUT:由本机产生,向外转发
       POSTROUTIONG:发送到网卡接口之前

这里写图片描述

#iptables的启用
[root@desktop ~]# systemctl stop firewalld
[root@desktop ~]# systemctl disable firewalld
[root@desktop ~]# systemctl start iptables.service
[root@desktop ~]# systemctl enable iptables.service
2、iptables的策略设置
[root@desktop ~]# iptables -nL #查看防火墙策略
[root@desktop ~]# iptables -F #清空刷新火墙策略
[root@desktop ~]# service iptables save #保存策略信息
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@desktop ~]# vim /etc/sysconfig/iptables #策略文件
#添加修改策略规则
[root@desktop ~]# iptables -P INPUT DROP #默认规则,只能修改DROP或ACCEPT
[root@desktop ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT #-A增加,-dport目的端口,-j表示动作
[root@desktop ~]# iptables -A INPUT -s 172.25.254.68 -p tcp --dport 22 -j ACCEPT #250访问22端口时,是ACCEPT动作,-A添加默认添加到表最后
[root@desktop ~]# iptables -nL #iptables读表按顺序读,当读到第一条相关符合的命令便不再向下读了
[root@desktop ~]# iptables -R INPUT 1 -s 172.25.254.167 -p tcp --dport 22 -j ACCEPT #-R表示修改,1是INPUT第一条

这里写图片描述

注意:iptables读表按顺序读,当读到第一条相关符合的命令便不再向下读了
所以,当添加172.25.254.68主机对22端口是REJECT时,不再读取下一条相关规则,所以68主机ssh连接被拒绝,修改第一条规则后,可以连接

这里写图片描述

#插入修改策略规则
[root@desktop ~]# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT #-I插入,2表示第二个策略

这里写图片描述
测试如下:
这里写图片描述

3、用户新建链
[root@desktop ~]# iptables -N westos #新建链
[root@desktop ~]# iptables -nL
[root@desktop ~]# iptables -E westos WESTOS #将链的名称由westos修改为WESTOS
[root@desktop ~]# iptables -X WESTOS #删除新建链
4、基于状态的匹配扩展
[root@desktop ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #正在连接、连接过的数据包,不用再次认证,速度快
[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT #新连接使用22端口时需要认证
[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
[root@desktop ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT #回环接口
[root@desktop ~]# iptables -nL
5、地址伪装
首先配置两个虚拟机ip及网关
#Desktop
eth0网卡IP:172.25.254.168
eth1网卡IP:172.25.0.168
路由后,通过SNAT将执行命令时的源地址均转换为172.25.254.168
[root@desktop ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.168 #-j 指定方式
[root@desktop ~]# iptables -t nat -nL
#sever
eth0网卡IP:172.25.0.167 网关:172.25.0.168
[root@desktop ~]# ping 172.25.254.68 #可以ping通
6、端口转发
#Desktop
路由前,通过DNAT将执行命令时的目标均转换为172.25.0.167
[root@desktop ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest  172.25.0.167
#kiosk
[kiosk@foundation68 Desktop]$ ssh root@172.25.254.168#真机连接
[root@server ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.25.0.167 netmask 255.255.255.0 broadcast 172.25.0.167
#实际连接的是172.25.0.167

猜你喜欢

转载自blog.csdn.net/yyyxxxs/article/details/80686759