主要针对使用IPv4协议的Debian服务器。
需要的软件
fail2ban:可以根据规则动态更改修改防火墙规则,屏蔽恶意攻击者
tinyhoneypot:监听TCP/IP端口,记录开放端口的相关信息(日志)
xinetd:启动tinyhoneypot并管理它监听的端口
安装上面列出的软件包:
$ su
# apt-get install tinyhoneypot fail2ban xinetd
设置
更改SSH监听的端口,默认监听端口是22,更改为2201端口。
编辑ssh配置文件:
# vim /etc/ssh/sshd_config
找到Port 22一行,更改为:
Port 2201
重启SSH服务,监听2201端口:
# service ssh restart
检查SSH服务的监听端口:
# netstat -lptn | grep ssh
从上图可以看出,更改已经生效。
连接到SSH服务的指定端口语法:
$ ssh user@remotehostip -p XXX
配置Xinetd启动tinyhoneypot,并监听TCP 22端口:
# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/
编辑/etc/xinetd.d/thp-pasv文件:
# vim /etc/xinetd.d/thp-pasv
内容修改如下:
# default: on
# description: thp-ftpd calls the generic thpsvcs with param "ftp",
# resulting in an ftpd emulation.
service thp-pasv
{
type = UNLISTED
socket_type = stream
protocol = tcp
port = 22
wait = no
user = thpot
server = /usr/sbin/thpot
server_args = nullresp
nice = 10
disable = no
instances = 1
per_source = 1
}
重启xinetd服务:
# service xinetd restart
检查xinetd的监听端口:
# netstat -lptn | grep xinetd
Fail2Ban和TinyHoneyPot配合使用
# cd /etc/fail2ban/
不要直接编辑jail.conf,创建一个.local:
# cp -v jail.conf jail.local
在jail.local找到[ssh]段,修改为SSH服务监听端口([Port 2201):
[ssh]
enabled = true
port = 2201
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
ssh尝试登陆6次,屏蔽IP。
在[ssh]段后加入一段:
[thp-ssh]
enabled = true
port = all
filter = thpot
logpath = /var/log/thpot/captures
banaction = iptables-allports
maxretry = 1
findtime = 1800
bantime = 99999
Fail2Ban读取tinyhoneypot的日志文件。
创建filter:
# vim /etc/fail2ban/filter.d/thpot.local
内容如下:
[Definition]
failregex = SRC=<HOST>
ignoreregex =
重启fail2ban:
# service fail2ban restart
你可以测试了。尝试使用ssh(22端口)登陆,这个IP会被防火墙屏蔽。
目前为止Fail2Ban和tinyhoneypot并不能处理IPv6。