LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1288|回复: 6

请教一个Iptables脚本的写法!!!

[复制链接]
发表于 2006-8-29 14:38:30 | 显示全部楼层 |阅读模式
用途:拒绝所有的QQ IP,但是如果找到一个IP加进去一个,每次都必须重启Iptables,我想知道有没有办法增加IP又不用重启Iptables?在网上找到这么一个脚本,但还好像有问题,没有搞懂。他是这么写的:

一、建立一个文本用来存放IP地址:#vi /etc/blacklist

二、新建一条链:#iptables -t filter -N BLACKLIST  (注:原文说这个链名必须大写,请问是这样子吗?)

三、脚本原文如下
#!/bin/sh
while true ;do
       iptables -t filter -F BLACKLIST
                for ip in `cat /etc/blacklist` ;do
                        iptables -t filter -A BLACKLIST -s ${ip} -j drop
                done  
      sleep 60   
    done

这个脚本的按他本人的说法是每60秒自动读取脚本的IP地址一次,只要在/etc/blacklist的IP就会被拒绝掉。

疑问1:“iptables -t filter -F BLACKLIST”“-F”是清除所有规则,他这样做的作用是什么?

疑问2:“iptables -t filter -A BLACKLIST -s ${ip} -j drop”这行如果没错,“-s”应该改是“-d”才对吧

疑问3:我试着把这个脚本加入到我原来的Iptables,结果原来的规则全被清了

请教:如果这个脚本不对,那实现这个功能的脚本应该怎么写?谢谢!
发表于 2006-8-29 23:15:17 | 显示全部楼层
受到启发,偶改进一下偶原来的脚本,到时候贴上来好了。
回复 支持 反对

使用道具 举报

发表于 2006-8-30 00:17:14 | 显示全部楼层
Post by llylin
用途:拒绝所有的QQ IP,但是如果找到一个IP加进去一个,每次都必须重启Iptables,我想知道有没有办法增加IP又不用重启Iptables?在网上找到这么一个脚本,但还好像有问题,没有搞懂。他是这么写的:

一、建立一个文本用来存放IP地址:#vi /etc/blacklist

二、新建一条链:#iptables -t filter -N BLACKLIST  (注:原文说这个链名必须大写,请问是这样子吗?)

三、脚本原文如下
#!/bin/sh
while true ;do
       iptables -t filter -F BLACKLIST
                for ip in `cat /etc/blacklist` ;do
                        iptables -t filter -A BLACKLIST -s ${ip} -j drop
                done  
      sleep 60   
    done

这个脚本的按他本人的说法是每60秒自动读取脚本的IP地址一次,只要在/etc/blacklist的IP就会被拒绝掉。

疑问1:“iptables -t filter -F BLACKLIST”“-F”是清除所有规则,他这样做的作用是什么?

疑问2:“iptables -t filter -A BLACKLIST -s ${ip} -j drop”这行如果没错,“-s”应该改是“-d”才对吧

疑问3:我试着把这个脚本加入到我原来的Iptables,结果原来的规则全被清了

请教:如果这个脚本不对,那实现这个功能的脚本应该怎么写?谢谢!

首先说明,所谓的iptables重启,也就是iptables规则的清空、重新载入的过程。
疑问1。其实,他这个脚本实现的同样是清空规则,再重新载入。-F就是清空现有的BACKLIST链的规则。

疑问2。-s和-d都可以,-s代表从${ip}发回来的数据包,执行DROP;-d代表发往${ip}的数据包,执行DROP。虽然执行的时间不同,但是效果相同。

疑问3。不清楚你所说的“加入到我原来的Iptables”,是将上面这个脚本添加到哪里?如果你将它覆盖了iptables的默认配置文件(RHEL AS4下是/etc/sysconfig/iptables文件),是不可以的,因为iptables的规则配置文件有专门的格式,这个脚本并不符合格式,当iptables重新载入规则时,会由于这个配置文件错误,而拒绝载入。这时iptables的规则既是默认规则,也就是所有的链都空规则,默认规则亦为ACCEPT。

这个自定义的BACKLIST链并不是iptables的内建链,需要通过内建链的调用才会生效。例如
  1. #iptables -A FORWARD -j BLACKLIST
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-8-30 00:25:25 | 显示全部楼层
如果要实现自动封闭添加BlackList' IP的话,可以采用如下操作。
按照正常需要配置iptables,然后
#iptables -N BLACKLIST
#iptables -A FORWARD -j BLACKLIST (如果是屏蔽本机的话,就是INPUT链)

再将上面的脚本
#!/bin/sh
while true ;do
iptables -t filter -F BLACKLIST
for ip in `cat /etc/blacklist` ;do
iptables -t filter -A BLACKLIST -s ${ip} -j DROP
done
sleep 60
done

保存到合适位置,chmod为755。
然后在自启动文件中调用,例如写入/etc/rc.local文件。
回复 支持 反对

使用道具 举报

发表于 2006-8-30 02:06:21 | 显示全部楼层
已经有人做了,我就不献丑了。。写的东西实在太烂。:(。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-30 11:06:21 | 显示全部楼层
谢谢两位!不好意思,还是不懂要怎么用?要怎么样才不会影响我原来的规则?
回复 支持 反对

使用道具 举报

发表于 2006-8-30 12:19:10 | 显示全部楼层
把我3楼和4楼的帖子,仔仔细细的看一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表