Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6968712
  • 博文数量: 637
  • 博客积分: 10265
  • 博客等级: 上将
  • 技术积分: 6165
  • 用 户 组: 普通用户
  • 注册时间: 2004-12-12 22:00
文章分类

全部博文(637)

文章存档

2011年(1)

2010年(1)

2009年(3)

2008年(12)

2007年(44)

2006年(156)

2005年(419)

2004年(1)

分类: LINUX

2010-02-23 20:14:37

以前写过一篇《》,后来想想,其实这个题目写得不好,不应该说是加固Linux的安全,应该是加固私有服务的安全

同样,这篇文章也是关于通过recent模块来保护私有服务的。

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

对于一些私有服务,如: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 --dport 22 -m recent --update --seconds 60 --name SSH --rsource -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 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分钟后,该端口自动关闭。

阅读(3162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~