Iptables
iptables(网络 过滤器)是一个工作于用户空间的防火墙应用软件,是与3.5版本Linux内核集成的IP信息包过滤系统。如果Linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。
安装iptables服务之前,要将firewalld服务彻底关掉
安装服务,并启动服务
iptables -t filter -nL ##查看filter表的所有策略
iptables -F ##刷新策略
service iptables save ##保存刷新后的策略
查看策略
添加策略
iptables -A INPUT -i lo -j ACCEPT
所有lo接口的服务都接受
iptables -A INPUT -s 172.25.254.49 -p tcp --dport 22 -j ACCEPT
ip为172.25.254.49通过22端口的服务接受
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
所有通过80端口的服务接受
iptables -A INPUT -j REJECT
除上述策略外,其他都拒绝
查看策略,并添加序号
iptables -R INPUT 1 -p tcp --dport 80 -j REJECT
替换原编号为1的策略为拒绝所有通过80端口的服务
iptables -I INPUT 1 -i lo -j ACCEPT
将此策略插入到表中的第一条
iptables -D INPUT 2
删除表中的第2条策略
iptables -P INPUT DROP
设定filter表中input链的默认规则,当数据包没有被规则列表中的任何规则匹配到时,按此默认规则处理
刷新策略,重新添加一般正常情况下的策略:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
第二次连接(ESTABLISHED)和正在连接中的(RELATED)的服务接受
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
所有第一次通过lo接口的服务接受
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
所有第一次通过22端口的服务接受
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
所有第一次通过80端口的服务接受
iptables -A INPUT -j REJECT
除上述策略外,其他全都拒绝
开启另一台虚拟机,会发现ssh可以连接上本机,但ping不通,是因为火墙的策略中规定通过22端口的服务接受,ssh服务是通过22端口,但ping不通过22端口
源地址伪装:
修改另一台虚拟机的ip为172.25.254.49
本台主机的两块网卡ip分别为:
eth0:172.25.254.149
eth1:172.25.49.149
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.149
在nat表中添加若ip为172.25.49.249的主机连接172.25.254.49的主机时,通过本台主机的eth0网卡路由转换伪装为172.25.254.149这个ip去连接的策略
iptables -t nat -A PREROUTING -i eth0 -d 172.25.254.149 -j DNAT --to-dest 172.25.49.249
在nat表中添加若ip为172.25.254.49的主机发现连接自己的主机ip为172.25.254.149,主动去连接时直接连接到ip为172.25.49.249的源主机的策略
编辑配置文件/etc/fstab/使本机的两块网卡之间能够相互连接
测试:
用ip为172.25.49.249的主机连接ip为172.25.254.49的主机
w ##查看连接的是哪个主机主机
查看之后发现连接的自己的主机ip为172.25.254.149(伪装后的地址),再连接回去后发现真正连接自己的主机ip为172.25.49.249