iptables对请求的URL作IP访问控制

本文介绍如何使用iptables进行路径级别的访问控制,通过示例展示如何仅允许特定IP访问指定路径,同时提供iptables命令参数解释,并给出针对视频网站的有效屏蔽方法。

服务器运行环境是Tomcat,现在要实现的目的是,只允许特定的IP访问某个目录,

一种方法是在tomcat配置文件server.conf中,使用RemoteAddrValve对虚拟主机做访问控制。

另外一种方法可以通过iptables规则。个人比较喜欢iptables

例如:禁止访问http://192.168.137.254:10000/managersns 这个路径,只允许192.168.137.101访问

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -s 192.168.137.101 -m string --string "/managersns" --algo bm -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -m string --string "/managersns" --algo bm -j DROP

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -s 192.168.137.101 -m string --string "/managersns" --algo bm -j ACCEPT

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -m string --string "/managersns" --algo bm -j DROP

以上规则是正对eth0网卡,可以跟踪自己需求修改。

参数说明:

-m string

使用string功能,string是iptables的一个module,也就是做字符串匹配的。

–string “xxxx”

定义字符串内容,可以是URL里任意字符,如果是需要block下载某些类型的文件或请求,这个有很大的发挥空间,可自由想象喔。

–algo bm

设置字符匹配的查询算法,一般默认使用bm算法效果就可以了,另外还可以设置kmp算法,那是一种更复杂的算法,详细内容可自行参见高等数学里的资料。(bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)

-j DROP

这在公司网络禁用视频网站是非常有效的,在网关服务器上设置:

iptables -A FORWARD -m string –-string “ku6.com” --algo bm -j DROP iptables -A FORWARD -m string –-string “tudou.com” –-algo bm -j DROP iptables -A FORWARD -m string –-string “ouou.com” –-algo bm -j DROP

iptables -A FORWARD -m string –-string “ku6.com” --algo bm -j DROP

iptables -A FORWARD -m string –-string “tudou.com” –-algo bm -j DROP

iptables -A FORWARD -m string –-string “ouou.com” –-algo bm -j DROP

其中各项参数的意义如下:

-A FORWARD

增加FORWARD链的规则,以上规则是针对启用了路由功能(即:echo 1 > /proc/sys/net/ipv4/ip_forward)

如果是直接访问,可使用的INPUT或OUTPUT。

设置符合此条件的包的处理方式,DROP即是丢弃,也是reject的意思。

iptables -A INPUT -m string --string "stringname" --algo bm -j DROP

推荐阅读:

iptables—包过滤(网络层)防火墙 http://www.linuxidc.com/Linux/2013-08/88423.htm

Linux防火墙iptables详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htm

iptables+L7+Squid实现完善的软件防火墙 http://www.linuxidc.com/Linux/2013-05/84802.htm

iptables的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Linux下防火墙iptables用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htm

要使用iptables实现URL白名单过滤并支持端口转发,可以结合使用iptables的`string`模块和`nat`表。下面是一个示例: 1. 首先,确保你的系统上已经安装了iptables和`string`模块。如果没有安装,可以使用适合你的Linux发行版的包管理器进行安装。 2. 创建一个新的iptables链,用于处理HTTP请求: ```shell iptables -N URL_FILTER ``` 3. 在新链中添加规则,匹配URL的关键字,并将匹配的请求转发到特定的目标(例如,允许连接或重定向到其他端口): ```shell iptables -A URL_FILTER -m string --string "example.com" --algo bm -j ACCEPT iptables -A URL_FILTER -j DNAT --to-destination <新目标IP>:<新目标端口> ``` 上述规则将匹配所有包含"example.com"的URL,并允许与该URL相关的连接。如果你想将这些连接重定向到其他端口,可以使用`DNAT`目标来指定新的目标IP和端口。 4. 将新链与输入流量关联,以便所有进入系统的HTTP请求都经过URL过滤: ```shell iptables -A INPUT -p tcp --dport 80 -j URL_FILTER ``` 这将将所有TCP端口80上的请求转发到URL过滤链。 5. 如果你还想支持端口转发,可以在`nat`表中添加规则,将被重定向的流量转发到新的目标IP和端口: ```shell iptables -t nat -A PREROUTING -p tcp --dport <原始端口> -j DNAT --to-destination <新目标IP>:<新目标端口> iptables -t nat -A POSTROUTING -j MASQUERADE ``` 上述规则将将来自原始端口的流量转发到新的目标IP和端口,并通过MASQUERADE选项进行网络地址转换。 请注意,上述示例只是一个简单的演示,实际情况可能更加复杂。你可以根据自己的需求和情况进行定制。同时,iptables只能过滤TCP流量,并且在处理大量规则时可能会影响性能。因此,对于更复杂的URL过滤需求和端口转发,可能需要考虑使用专门的代理服务器或防火墙软件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值