在 Debian Jessie 上使用 Fail2Ban 和 Tinyhoneypot 提高您的 IPv4 安全性
在此页
- 成分
- 设置
- 确保它正常工作
- 让我们调整您的 Fail2Ban 以与 TinyHoneyPot 合作
- 后记
这是一个五分钟的练习,可以提高 IPv4 地址计算机的安全性。本教程中描述的设置的目的是在一段时间内锁定端口扫描程序和恶意端口打开程序。本练习仅在 Debian Jessie 上进行过尝试和应用。在练习期间,每个命令都以 root 身份提交。如何获得根访问权限是您的交易。
su -、sudo、控制台登录等...
给懒人的新手指导:当我表示 bash 提示时,只需将文本的粗体部分复制粘贴到您自己的部分即可。
这些成分
- fail2ban 软件能够动态处理您的防火墙规则以将坏人拒之门外。
- tinyhoneypot 能够侦听 TCP/IP 端口并记录开启器的详细信息。
- xinetd 服务启动 tinyhoneypot 并管理其侦听端口。
安装成分:(只需复制粘贴文本的粗体部分)
:~# apt-get install tinyhoneypot fail2ban xinetd
设置
为了使 SSH 侦听不同的端口,请将您的 ssh 配置文件替换为其他 ssh 端口:
:~# sed -i.orig 's/Port 22/Port 2201/m' /etc/ssh/sshd_config
您原来的 /etc/ssh/sshd_config 配置保存为 /etc/ssh/sshd_config.orig
当您重新启动 SSH 服务时,它现在将监听 2201 端口(而不是 22)。
:~# netstat -lptn | grep ssh
tcp 0 0 0.0.0.0:2201 0.0.0.0:* LISTEN 4313/sshd
tcp6 0 0 :::2201 :::* LISTEN 4313/sshd
到目前为止,一切都很好..
配置 Xinetd 以启动 tinyhoneypot 并监听 TCP 的端口 22:
:~# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/
像这样编辑 /etc/xinetd.d/thp-pasv :
:~# cat /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
}
(RE) 使用您的新设置启动 xinetd 并确保它在端口 22 上侦听。
:~# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4567/xinetd
确保它正常工作
从另一台机器打开 ssh 连接。
:~$ ssh 192.168.88.212
一段时间后应该不会发生任何事情,按 [Ctrl + C] 中断它
并检查测试机器上的日志条目:
:~# cat /var/log/thpot/captures
Feb 29 13:02:10 SID=56D4334221165.nullresp PID=4837 SRC=192.168.88.242 SPT=47187 ET=00:00:11 BYTES=39
如果一切顺利,您的捕获日志中应该有一个条目。
让我们调整您的 Fail2Ban 以与 TinyHoneyPot 合作
:/etc/fail2ban# cp -v jail.conf jail.local
永远不要编辑你的 jail.conf!将其复制为 jail.local 并仅在 .local 文件中进行更改!
在你的 jail.local 中找到 [ssh] 部分并根据 /etc/ssh/sshd_config 的 [Port 2201] 修改它
[ssh]
enabled = true
port = 2201
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
在 jail.local 的 JAIL 部分创建并输入:
这将使 Fail2Ban 读取 tinyhoneypot 的日志文件并从中获取 IPv4 地址以拒绝。我建议将它放在 [ssh] 部分之后。大约是第137行。
[thp-ssh]
enabled = true
port = all
filter = thpot
logpath = /var/log/thpot/captures
banaction = iptables-allports
maxretry = 1
findtime = 1800
bantime = 99999
Fail2ban 应该有一个过滤器,以便知道要拒绝什么。
:~# cat /etc/fail2ban/filter.d/thpot.local
[Definition]
failregex = SRC=<HOST>
ignoreregex =
它已经完成!
只是一个简短的测试....
:~# service fail2ban restart
您应该在 /var/log/fail2ban.log 的末尾看到类似的内容
2016-02-29 13:54:06,915 fail2ban.jail [6102]: INFO Creating new jail 'thp-ssh'
2016-02-29 13:54:06,915 fail2ban.jail [6102]: INFO Jail 'thp-ssh' uses pyinotify
2016-02-29 13:54:06,920 fail2ban.jail [6102]: INFO Initiated 'pyinotify' backend
2016-02-29 13:54:06,922 fail2ban.filter [6102]: INFO Added logfile = /var/log/thpot/captures
2016-02-29 13:54:06,923 fail2ban.filter [6102]: INFO Set maxRetry = 1
2016-02-29 13:54:06,925 fail2ban.filter [6102]: INFO Set findtime = 1800
2016-02-29 13:54:06,926 fail2ban.actions[6102]: INFO Set banTime = 99999
2016-02-29 13:54:06,934 fail2ban.jail [6102]: INFO Jail 'ssh' started
2016-02-29 13:54:06,940 fail2ban.jail [6102]: INFO Jail 'thp-ssh' started
您可以从 jail.local 查看您的自定义值,并在需要时微调它们。
findtime = 1800
bantime = 99999
查看您当前的 iptables 规则:
:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:05:17 2016
*filter
:INPUT ACCEPT [2:64]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:05:17 2016
让我们从另一台机器检查拒绝规则:
:~# ssh 192.168.88.212
ssh: connect to host 192.168.88.212 port 22: Connection refused
第一个动作什么都不做。攻击者很可能会在一段时间后打断它,第二个动作将被拒绝。
你的 iptables 规则现在应该是这样的:
:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:10:53 2016
*filter
:INPUT ACCEPT [4:542]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:88]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -s 192.168.88.242/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:10:53 2016
结果是:攻击者 PC 在每个端口上都被拒绝。
后记
在撰写本 HowTo 时,Fail2Ban 和 tinyhoneypot 都无法处理 IPv6 如果您认为本 Howto 有用,请分享!让你的朋友知道。