使用Debian Jessie上的Fail2Ban和Tinyhoneypot增加IPv4安全性

这是一个五分钟的练习,以提高IPv4寻址机器的安全性。本教程中描述的设置的目的是锁定p ...

在IPv4地址机上增加安全性是一个五分钟的练习。 本教程中描述的设置的目的是锁定端口扫描程序和恶意端口打开程序一段时间。 这个练习只是试用并应用于Debian Jessie。 在练习期间,每个命令都以root身份提交。 这是你的交易如何获得root访问权限。

su - ,sudo,console登录等等...

懒惰初学者的指导:当我代表bash提示时,只需将文本的粗体部分CopyPaste到你自己的。

这些成分

  • fail2ban软件能够动态处理您的防火墙规则来锁定坏人。
  • tinyhoneypot能够监听TCP / IP端口并记录开放者的详细信息。
  • xinetd服务启动tinyhoneypot并管理它的监听端口。

安装配料:(只需复制一下文本的粗体部分)

root@teszt:~# apt-get install tinyhoneypot fail2ban xinetd

设置

为了使SSH在不同的端口上监听,用ssh端口替换ssh配置文件:

root@teszt:~# 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)上监听。

root@teszt:~# service ssh restart
root@teszt:~# 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:

root@teszt:~# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/

编辑你的/etc/xinetd.d/thp-pasv来这样做:

root@teszt:~# 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上监听。

root@teszt:~# service xinetd restart
root@teszt:~# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4567/xinetd

确保它正在工作

从另一台机器打开一个ssh连接。

attacker@hackerpc:~$ ssh 192.168.88.212

过了一会儿,什么都不应该发生,中断它[Ctrl + C]

并检查您的测试机器上的日志条目:

root@teszt:~# 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合作

root@teszt:~# cd /etc/fail2ban/
root@teszt:/etc/fail2ban# cp -v jail.conf jail.local

不要编辑你的jail.conf! 将其作为jail.local的副本,只能在.local文件中进行更改!

找到您的jail.local中的[ssh]部分,并根据/ etc / ssh / sshd_config的[端口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应该有一个过滤器,以便知道要拒绝的内容。 那里 是替换IPv4地址的宏。 为此创建一个过滤器:

root@teszt:~# cat /etc/fail2ban/filter.d/thpot.local

[Definition]

failregex = SRC=<HOST>
ignoreregex =

它已经完成!

只是短暂的测试....

root@teszt:~# 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规则:

root@teszt:~# 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

我们从另一台机器检查拒绝规则:

attacker@hackerpc:~# ssh 192.168.88.212
^C
attacker@hackerpc:~# ssh 192.168.88.212
ssh: connect to host 192.168.88.212 port 22: Connection refused

第一个动作什么都不做。 攻击者可能会在一段时间后中断它。第二个动作将被拒绝。

您的iptables规则现在应该如下所示:

root@teszt:~# 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是有用的,分享它! 让你的朋友知道。