14 Dec 2010 @ 3:08 PM 

利用 Denyhosts 屏蔽 SSH的文章,网上一搜一大把,不过用在FreeBSD上的就不是很多,很多都是在linux下面部署的。
不过就算有些文章是介绍Freebsd下面部署 Denyhosts, 也能工作,我之前就是照着网上的教程设置的,很容易设置,但是只能屏蔽SSH暴力破解,可以把恶意的SSH猜密码的IP屏蔽掉, 同时也不让这个IP来进行FTP连接。 所以网上很多所谓的用 Denyhosts 来屏蔽 SSH 和FTP攻击都是监控的 SSH 穷举攻击,然后封闭IP。也就是发现一个SSH猜密码的,就禁止他的IP地址,即不让他用SSH 22 端口连接,也不让他通过 FTP 21 端口链接。

本文系原创,请转载时保留原始出处 http://www.7cm.org/2010/12/原创:freebsd利用de…sh和-ftp-穷举暴力破解/

我这篇文章介绍了一种方法,可以分析系统安全日志,既可以屏蔽 来自SSH的暴力破解,也能屏蔽来自FTP的暴力破解。

其实方法很简单,但是我找到这个方法的道路确是曲折的。

我的系统是 Freebsd 7.2 ,安装Denyhosts软件非常容易。

$cd  /usr/ports/security/denyhosts

$sudo make install clean

系统就能自动装好这个软件了。

然后去编辑 /etc/rc.conf 这个文件,增加一行

denyhosts_enable=”YES”

然后就可以使用下面一条命令启动这个服务了。

sudo /usr/local/etc/rc.d/denyhosts start

如果是修改了一些规则之后,要生效就要重启这个服务

方法是:sudo /usr/local/etc/rc.d/denyhosts restart

配置文件:

denyhosts 默认安装到 freebsd 系统后,配置文件在/usr/local/share/denyhosts/ 目录下面有个例子 denyhosts.cfg-dist

把这个例子拷贝到指定目录并改名

sudo cp /usr/local/share/denyhosts/denyhosts.cfg-dist   /usr/local/etc/denyhosts.conf

好了,然后编辑一下这个文件

vi  /usr/local/etc/denyhosts.conf
比较有用的几个参数是

14 # Mandrake, FreeBSD or OpenBSD:

# 说明,这是告诉 denyhost 去分析那一个日志文件
15 SECURE_LOG = /var/log/auth.log

# 说明,这是告诉 denyhost 把需要禁止的IP放到那个文件里面

34 HOSTS_DENY = /etc/hosts.deniedssh
# 说明,这是告诉 denyhost 把需要禁止的IP封闭5天

58 PURGE_DENY =  5d

# 说明,这是告诉 denyhost 把需要禁止的IP封闭所有网络服务。

96 BLOCK_SERVICE = ALL

# 说明,这是告诉 denyhost 允许几次错误的尝试,去试验不存在的用户名。

111 DENY_THRESHOLD_INVALID = 5

# 说明,这是告诉 denyhost 允许几次错误的尝试,去试验已经存在的用户名的密码。

22 DENY_THRESHOLD_VALID = 10

# 说明,这是告诉 denyhost 允许几次错误的尝试,去试验已经存在的root的密码。

132 DENY_THRESHOLD_ROOT = 1

# 说明,这是告诉 denyhost 使用那个工作目录,请使用绝对路径

157 WORK_DIR = /home/lidong/denyhosts/

# 说明,这是告诉 denyhost  发现攻击后给管理员发电子邮件,发到那个邮箱去。

223 ADMIN_EMAIL = admin@youremaildomain.com

# 多少天后重置那些错误的尝试

321 AGE_RESET_VALID=5d

# 多少天后重置那些错误的尝试,针对 root帐号

337 AGE_RESET_ROOT=25d

# 针对猜用户名的锁定多久解锁

370 AGE_RESET_INVALID=10d

# 成功验证一次,就清零

383 RESET_ON_SUCCESS = yes

下面是关键的地方了,只有这样设定,才能让Denyhosts 真正去屏蔽来自 FTP的攻击
SSHD_FORMAT_REGEX=.* (sshd.*:|\[sshd\]|ftpd.*:) (?P<message>.*)
USERDEF_FAILED_ENTRY_REGEX=FTP LOGIN FAILED FROM (?P<host>.*), (?P<user>.*)
FAILED_ENTRY_REGEX6=FTP LOGIN FAILED FROM (?P<host>.*), (?P<user>.*)

这三行是通过分析我的 auth.log 日志分析而生成的。

此三行要出现在 denyhosts.conf 中。才能正确的识别 FTP的穷举攻击

我给那无聊的攻击者留点面子,就把它的最后一位ip隐藏掉好了。

我的日志中有这样的记录:

421 #19 Dec 13 15:09:34 www ftpd[25737]: FTP LOGIN FAILED FROM 117.24.153.x, new
422 #20 Dec 13 15:09:34 www ftpd[25775]: FTP LOGIN FAILED FROM 117.24.153.x, new
423 #21 Dec 13 15:09:34 www ftpd[25804]: FTP LOGIN FAILED FROM 117.24.153.x, new
424 #22 Dec 13 15:09:38 www ftpd[26134]: FTP LOGIN FAILED FROM 117.24.153.x, new
425 #23 Dec 13 15:09:42 www ftpd[26436]: FTP LOGIN FAILED FROM 117.24.153.x, new
426 #24 Dec 13 15:09:42 www ftpd[26466]: FTP LOGIN FAILED FROM 117.24.153.x, new

我的 FTP 服务会往 auth.log 中这样些日志 ftpd[xxxxx]: xx

所以我修改SSHD_FORMAT_REGEX=.* (sshd.*:|\[sshd\]|ftpd.*:) (?P<message>.*)

然后 后面的有用的信息就是FTP LOGIN FAILED FROM 117.24.153.x, new

下面这两句是双保险,其实只用后面那句也行。

USERDEF_FAILED_ENTRY_REGEX=FTP LOGIN FAILED FROM (?P<host>.*), (?P<user>.*)

FAILED_ENTRY_REGEX6=FTP LOGIN FAILED FROM (?P<host>.*), (?P<user>.*)

Denyhosts 预留了 7 个用于匹配不同认证日志信息的正则表达式 FAILED_ENTRY_REGEX  FAILED_ENTRY_REGEX1 … FAILED_ENTRY_REGEX6

我使用了第 6 个。关于这些正则表达式,可以去分析 Denyhosts 的源文件 /usr/local/lib/python2.6/site-packages/DenyHosts/regex.py

一目了然。

设定完成后,重启一下 denyhosts 就可以了,查看被抓到的坏蛋,去这里看看,

cat /etc/hosts.deniedssh

本文参考了 denyhost 官方站点蹩脚的介绍。http://denyhosts.sourceforge.net/faq.html

非常蹩脚,一点都不直观,我认为我写的这个中文教程,应该对国内的玩儿FreeBsd的朋友有所帮助。

本文系绝对原创,如果转载请务必保留原始出处 http://7cm.org

Posted By: lidong
Last Edit: 14 Dec 2010 @ 03:33 PM

EmailPermalink
Tags
Categories: freebsd


 

Responses to this post » (One Total)

 
  1. [...] after the host, instead of before like in SSH. I didn't figure it out myself. I took a look at this Japanese web page, without understanding a word of it. The 3 lines that the recommend look [...]

Post a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


 Last 50 Posts
 Back
Change Theme...
  • Users » 260
  • Posts/Pages » 111
  • Comments » 38
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

About



    No Child Pages.

Contact Me



    No Child Pages.