中国教育和科研计算机网
EDU首页 |  中国教育 |   高校科技 |   教育信息化 |   CERNET
教育信息化

资讯 | 专题 会议 观点 专栏 访谈 企业 产品 CIO 技术 校园信息化 下一代互联网 IPv6视频课堂

中国教育网 > 教育信息化
您现在的位置: EDU首页 > 教育信息化 > 网络安全 > 攻击防范 > 网络入侵
通过iptables的recent模块保护某些私有服务
http://www.edu.cn   2010-07-22 中国教育网络 作者:郭家荣

字体选择:【大】 【中】 【小】

  对于一台裸露在互联网上的机器,随时都可能成为肉鸡,所以管理员都希望服务器对外开放的服务(端口)越少越好,但是某些服务你又不得不对外开放,主要目的是为了自己能随时访问这些服务。

  对于一些私有服务,如:SSH、MySQL等,管理员为了自己能远程访问,不得不把22端口和3306端口对所有人都开放,这样也就给别人提供一个机会。

  那么如何来控制对这些服务的访问,让他们在需要的时候开放,不用的时候自动关闭,这个就是本文需要解决的问题。

  主要思想:

  在服务器上开web服务(web服务是互联网上最常见的一个服务,只要代码写得没有问题,其安全性应该说来是没什么问题),任何人都可以通过访问本机的web服务,通过验证后,某个端口对用户所用的IP地址临时开放一段时间(可配置),这样可以实现保护某些私有服务的目的,只有通过web验证,这些服务才对你开放。

  实现过程:

  首先需要修改recent这个模块的加载参数,修改/etc/modprobe.conf文件,增加:

  options ipt_recent ip_list_tot=200 ip_list_perms=0666

  ip_list_tot=200表示最多记忆多少的IP地址,默认100

  ip_list_perms=0666配置/proc/net/ipt_recent目录下文件的权限,为了让apache用户有权写读写,改成666,默认600

  然后需要配置iptables的规则:

  *filter

  :INPUT DROP [0:0]

  :FORWARD DROP [0:0]

  :OUTPUT ACCEPT [0:0]

  -A INPUT -i lo -j ACCEPT

  -A INPUT -p icmp -m icmp -j ACCEPT

  -A INPUT -p tcp -m tcp -qport 22 -m recent -update -seconds 60 -name SSH -rsource -j ACCEPT

  -A INPUT -i eth0 -p tcp -m tcp -qport 80 -j ACCEPT

  -A INPUT -m state -state ESTABLISHED,RELATED -j ACCEPT

  COMMIT

  最关键的一句是:

  -A INPUT -p tcp -m tcp -dport 22 -m recent -update -seconds 60 -name SSH -rsource -j ACCEPT

  这句表示对任何一个连往本机的22端口的所有IP地址都需要经过源地址检查,如果最近60秒在SSH中出现了,则可以访问,否则不予处理。

  最后就是写web验证程序,具体怎么实现大家可以自由发挥,只是对于通过验证的用户执行这么条命令,此处以php为例:

  $REMOTE_ADDR = $_SERVER[“REMOTE_ADDR”];

  exec(“/bin/echo $REMOTE_ADDR > /proc/net/ipt_recent/SSH”);

  配置完毕。

  上面的配置,如果你断开SSH 1分钟后,该端口自动关闭。

  (作者单位为江西省上犹县第二中学)

文章来源:《中国教育网络》杂志2010年7月刊

页面功能 【打印】 【关闭】 【我有话说

MOOC风暴来袭

版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号

关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com