用netfilter/iptables实现网关屏蔽恶意IP和URL
Published On November 05, 2016
Tags:
Linux
iptables
0x00 前言
经常存在这样一种应用场景,需要网关实现对一些恶意IP和URL屏蔽(如钓鱼网址),防止客户端访问。本文以此作为出发点,以Linux网关为例,利用Linux系统的netfilter/iptables实现屏蔽恶意IP和URL。
0x01 实验环境的网络拓扑
实验环境只需要一台笔记本电脑;由这台由物理计算机利用VMware Workstation虚拟机软件虚拟出2台虚拟机:VM1、VM2。其中,VM2是用户上网系统,VM1为VM2的Linux网关,实现数据包正常转发、恶意URL阻断、告警页面跳转等功能。宿主机(Host Machine)的无线网卡可以访问互联网,它与VM1之间通过VMware NAT模式进行网络通讯,即保证了VM1也能访问互联网。
0x02 网络环境的配置
- VMware网络配置。按照图里面的说明,分别配置子网VMnet 8(192.168.111.0)和VMnet9(192.168.112.0)
- 禁用SELinux和firewalld服务
- 虚拟机网卡配置。按照图里面的说明,分别配置VM1的两张网卡和VM2的一张网卡的网络设置
- VM1需要开启IP forward功能
- 测试网络的环境能够正常通信
0x03 Netfilter/iptables配置
启用Netfilter/iptables
CentOS 7.0默认使用的是firewall作为防火墙,需改为iptables防火墙
systemctl stop firewalld.service //停止firewall
systemctl disable firewalld.service //禁止firewall开机启动
firewall-cmd --state //查看默认防火墙状态
yum install iptables-services //安装iptables
systemctl start iptables.service //启动iptables使配置生效
systemctl enable iptables.service //设置iptables开机启动
启用SNAT功能(nat table, POSTROUTING chain)
使VMnet 9 能够访问公网
iptables -t nat -A POSTROUTING -s 192.168.112.0/24 -o eno16777736 –j MASQUERADE
主机防火墙功能(filter table, INPUT chain)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
恶意URL阻断功能(filter table, FORWARD chain)
iptables -A FORWARD -p tcp -m string --string "www.baidu.com" --algo bm -j REJECT --reject-with tcp-reset
iptables -A FORWARD -p tcp -m string --string "t.cn/h5mwx" --algo bm -j REJECT --reject-with tcp-reset
恶意IP跳转到告警页面功能(nat table, PREROUTING chain)
iptables -t nat -A PREROUTING -p tcp -d 6.6.6.6 -j DNAT --to-destination 192.168.112.2
0x04 Apache配置
在VM1的系统上安装Apache服务器,配置Web目录存放告警页面。
0x05 测试案例
这里假设www.baidu.com为恶意网站, 对恶意用例与正常用例分别进行测试。
恶意用例
- http://www.baidu.com(百度的http)
- https://www.baidu.com(百度的https)
- http://t.cn/h5mwx (百度的短网址)
- 6.6.6.6 (假定恶意IP)
正常用例
- www.taobao.com
- https://www.jd.com/
- http://t.cn/hczXq (腾讯的短网址)
注:如需转载这篇文章请注明出处