在 Debian Jessie 上使用 Fail2Ban 和 Tinyhoneypot 提高您的 IPv4 安全性在 Debian Jessie 上使用 Fail2Ban 和 Tinyhoneypot 提高您的 IPv4 安全性在 Debian Jessie 上使用 Fail2Ban 和 Tinyhoneypot 提高您的 IPv4 安全性在 Debian Jessie 上使用 Fail2Ban 和 Tinyhoneypot 提高您的 IPv4 安全性
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

在 Debian Jessie 上使用 Fail2Ban 和 Tinyhoneypot 提高您的 IPv4 安全性

在此页

  1. 成分
  2. 设置
  3. 确保它正常工作
  4. 让我们调整您的 Fail2Ban 以与 TinyHoneyPot 合作
  5. 后记

这是一个五分钟的练习,可以提高 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 应该有一个过滤器,以便知道要拒绝什么。 是一个替代 IPv4 地址的宏。为它创建一个过滤器:

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

©2015-2025 艾丽卡 support@alaica.com