免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3248 | 回复: 13
打印 上一主题 下一主题

[网络管理] 求:iptables 禁止特定地址以外的几个地址的写法 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-28 14:34 |只看该作者 |倒序浏览
本帖最后由 errai 于 2013-03-28 15:12 编辑

iptables 禁止特定地址以外的几个地址的写法

现在需要实现如下功能:使用SKYPE,另外对61.164.65.50和61.164.65.50以及另外几个IP地址的80端口访问,除外所有访问都被禁止

思路:先将所有访问都NAT出去,然后再用LAYER7协议将除SKYPE之外的所有类别都禁止:
[57:4503] -A PREROUTING -m mac --mac-source 00-0C-29-1A-7B-7D -j MARK --set-mark 0x6  将某个MAC打上MARK 0X6
[10:594] -A POSTROUTING -m mark --mark 0x6 -j MASQUERADE                                             NAT
[0:0] -A FORWARD -m mark --mark 0x6 ! -d  "61.164.75.244" -p tcp -m tcp --dport  80 -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto qq -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto bittorrent -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto http -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto http-rtsp -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto kugoo -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto poco -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto pplive -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto tonghuashun -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto xunlei -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto yahoo -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto xboxlive -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto aim -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto dazhihui -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto edonkey -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto ftp -j DROP
[0:0] -A FORWARD -m mark --mark 0x6 -m layer7 --l7proto goboogy -j DROP
.................

如上所示,可以实现SKYPE可以上线,也可以实现对61.164.75.244地址的80端口访问,但!匹配模式我只找到匹配一个地址的写法,如果每个地址一行反写,那么一个地址都出不去,不知道!模式下匹配多个地址怎么写,哪位高手做过不妨指点下,谢谢。

地址间用,或者空格隔开都是不对的,IPTABLES无法识别

因为LAYER7的匹配用禁止比较合适,无法使用NAT,否则单独对这几个地址和SKYPE打标签,然后设置允许访问即可。对SKYPE打标签,匹配禁止可以,但匹配允许访问不行。


论坛徽章:
3
IT运维版块每日发帖之星
日期:2015-12-30 06:20:00IT运维版块每日发帖之星
日期:2016-02-16 06:20:00每日论坛发贴之星
日期:2016-02-16 06:20:00
2 [报告]
发表于 2013-03-28 15:33 |只看该作者
你将默认的protocol设置为DROP然后再开放skype 以及那几个特定地址的特定端口不就行了?为什么要先做一遍NAT然后再用那个layer7协议再开放某个?这么做不嫌麻烦么?再者,你既然都先将所有访问做了一遍NAT了,那么不妨多写几行策略每个策略开放一个特定地址的特定端口、、、、、、这样虽然多写了几行策略,但是与你做的“NAT”比那是小巫见大巫了。。。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
3 [报告]
发表于 2013-03-29 08:33 |只看该作者
回复 2# w630866139


Layer7的协议比较合适的写法是禁止某项服务,不是允许某项服务。

如果要禁止某个人的某项应用,那首先得开放所有的服务,然后再禁止除了这项服务之外的其他所有服务。


然后我这里的要求是,允许SKYPE服务,还有几项特定的访问80端口的服务,其他的服务都禁止。

您如果没问题的话,或者麻烦下帮我写几个语句来实现这几项要求。

如果不会语句也没事,叙述一下逻辑也可以。不过有一点您可以需要了解下,platinum版主曾告诉我,LAYER7的匹配方式是禁止比较合适,因为NAT的匹配方式匹配TCP/IP的头数据包,但LAYER7的特征却不一定在头几个数据包里,因此用允许可能会失败,用禁止却比较合适一些。

如果不会逻辑也没有问题,或者告诉我一下用 !号反向匹配时如果匹配多个地址怎么写?逻辑为:除了  1.1.1.1和2.2.2.2和3.3.3.3这几个地址之外.....


非常感谢

   

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
4 [报告]
发表于 2013-03-29 10:25 |只看该作者
我觉得,楼主可以换个思路,参考红帽的做法,做自定义链,将你的不同的ip规则放到自定义链中,然后在forward链里面对ip进行分组,最后默认转到一个自定义的链中.

论坛徽章:
3
IT运维版块每日发帖之星
日期:2015-12-30 06:20:00IT运维版块每日发帖之星
日期:2016-02-16 06:20:00每日论坛发贴之星
日期:2016-02-16 06:20:00
5 [报告]
发表于 2013-03-29 11:01 |只看该作者
@errai

我用的思路跟chenyx哥的有类似之处,建议楼主不用考虑layer7这个协议,你可以创建iptables规则,开放某个特定地址的特定端口
比如:
  1. iptables -t filter -A FORWARD -p tcp -s 0/0 -d 1.1.1.1 --dport 80 -m state --state NEW --tcp-flags ALL SYN -j ACCEPT
复制代码
(具体规则视情况而定,这句只是我举例,使用-j ACCEPT的前提是,filter表的默认Protocol是DROP的,所以在此之前先用<iptables -t 表名 -P 链名 DROP>,将默认策略设置成DROP的,这样楼主所要允许通过防火墙的包才能通过,而其它的未在策略中允许通过防火墙的包直接DROP掉了,这样做类似于楼主所说的“先将所有访问都NAT出去,然后再用LAYER7协议将除SKYPE之外的所有类别都禁止”,但是要简单的多)
公司电脑不给力,策略就不写了,具体的策略楼主可以试试写,如果有问题咱们可以继续讨论。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
6 [报告]
发表于 2013-03-29 11:28 |只看该作者
回复 5# w630866139


    感谢回复

如果不用LAYER7的话,一些即时通讯的软件很难被禁止,我主要是实现SKYPE和QQ之类的通讯管理,再另加几个特定地址的80端口的访问权限

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
7 [报告]
发表于 2013-03-29 16:27 |只看该作者
那就像我说的那样,自定义链,每个链处理一类的需要

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
8 [报告]
发表于 2013-04-03 09:54 |只看该作者
回复 7# chenyx

我对于自定义链了解不够,针对以上的需求您可以给我写个类似的参考吗?

允许:1.1.1.1和2.2.2.2和3.3.3.3和4.4.4.4这几个地址的HTTP访问,
允许:skype和QQ访问internet

感激不尽




   

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
9 [报告]
发表于 2013-04-03 10:26 |只看该作者
用iptables -N 链名 的方式添加新链,然后设置规则,进入新链进行匹配.
比如
iptables -N NEWFOR
iptables -P NEWFOR DROP
iptables -A FORWARD -s 1.1.1.1 -j NEWFOR
iptables -A FORWARD -s 2.2.2.2 -j NEWFOR
iptables -A NEWFOR -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A NEWFOR ......各种规则,基本和系统自带的链的操作是一样的,关键是需要你进行规则整合.

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
10 [报告]
发表于 2013-04-03 10:39 |只看该作者
回复 9# chenyx


    这个上面有一个逻辑问题

我需要允许192.168.0.50这个IP使用SKYPE和QQ,禁止其上网功能,但需要开通对地址1.1.1.1和2.2.2.2和3.3.3.3和4.4.4.4这几个地址的80端口访问,

那需要先开通192.168.0.50的上网功能,然后禁止掉其他LAYER7协议,只留下SKYPE和QQ(因为LAYER7适合匹配禁止,不太适合匹配允许)

这个时候http的layer7协议访问外部已经被禁止了,再允许192.168.0.50这个地址访问这些1.1.1.1和2.2.2.2和3.3.3.3和4.4.4.4这几个地址的80端口是无效的

有一个可以匹配,就是

[0:0] -A FORWARD -m mark --mark 0x6 ! -d  "1.1.1.1" -p tcp -m tcp --dport  80 -j DROP

除了1.1.1.1这个地址之外的其他80号端口访问权限全部禁止,但我一直无法写成匹配多个地址的反写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP