如何在Ubuntu Linux 16.04 LTS(入侵防护安全工具)上安装denyhosts

时间:2020-01-09 10:39:19  来源:igfitidea点击:

如何防止Ubuntu Linux 16.04 LTS服务器SSH被暴力破解登录?
如何停止入侵系统的尝试?
您需要使用DenyHosts,这是用于使用Python编写的SSH服务器的基于日志的入侵防御安全工具。
它旨在通过监视身份验证日志中的无效登录尝试并在Linux服务器上使用/etc/hosts.deny和iptables阻止原始IP地址来防止SSH服务器上的暴力攻击。
在本教程中,您将学习如何安装DenyHosts一个python程序,该程序通过在/etc/hosts.deny文件中添加条目来自动阻止ssh攻击。

步骤1安装denyhosts

执行以下apt-get命令或apt命令以在Ubuntu Linux上安装denyhosts:

$ sudo apt-get install denyhosts

或者

$ sudo apt install denyhosts

步骤2将您自己的IP地址列入白名单

编辑/etc/hosts.allow文件,并添加您的客户端IP地址。
这样可以确保您不会被意外阻止:

$ sudo vi /etc/hosts.allow

语法如下:

sshd: whitelist-ip1, whitelist-ip2, ...., whitelist-ipN

例如,在白名单192.54.1.1和203.54.2.3中,执行:

sshd: 192.54.1.1 , 203.54.2.3

保存并关闭文件。

步骤3使用/etc/denyhosts.conf配置denyhosts

在基于Debian或Ubuntu Linux的系统中,默认的运行模式是守护程序模式,配置文件是/etc/denyhosts.conf

$ sudo vi /etc/denyhosts.conf

确保将SECURE_LOG设置如下:

SECURE_LOG = /var/log/auth.log

HOSTS_DENY设置如下:

HOSTS_DENY = /etc/hosts.deny

仅阻止sshd:

BLOCK_SERVICE  = sshd

设置登录尝试的拒绝阈值限制:

DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1

要使用Linux防火墙IPTABLES阻止传入连接:

IPTABLES = /sbin/iptables

保存并关闭文件。

重新启动denyhosts服务

在Ubuntu Linux 16.04 LTS或更高版本上执行以下命令:

$ sudo systemctl restart denyhosts.service

对于较旧的Ubuntu/Debian Linux /基于非系统的系统,请执行:

$ sudo /etc/init.d/denyhosts restart

在启动时在Ubuntu Linux 16.04 LTS上启用denyhosts服务

执行以下命令:

$ sudo systemctl enable denyhosts.service

输出示例:

Synchronizing state of denyhosts.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable denyhosts

步骤4监视/var/log/denyhosts日志文件中的错误

输入以下grep命令:

$ sudo grep 'something' /var/log/denyhosts

或tail命令:

$ sudo tail -f /var/log/denyhosts

输出示例:

2016-02-10 18:23:37,811 - denyhosts   : INFO     restricted: set([])
2016-02-10 18:23:37,812 - AllowedHosts: WARNING  Couldn't load warned hosts from /var/lib/denyhosts/allowed-warned-hosts
2016-02-10 18:23:37,812 - denyhosts   : INFO     launching DenyHosts daemon (version 2.10)...
2016-02-10 18:23:37,813 - denyhosts   : INFO     DenyHost daemon is now running, pid: 25774
2016-02-10 18:23:37,813 - denyhosts   : INFO     send daemon process a TERM signal to terminate cleanly
2016-02-10 18:23:37,813 - denyhosts   : INFO       eg.  kill -TERM 25774
2016-02-10 18:23:37,814 - denyhosts   : INFO     monitoring log: /var/log/auth.log
2016-02-10 18:23:37,814 - denyhosts   : INFO     sync_time: 3600
2016-02-10 18:23:37,814 - denyhosts   : INFO     purging of /etc/hosts.deny is disabled
2016-02-10 18:23:37,814 - denyhosts   : INFO     denyhost synchronization disabled

步骤5:如何查看被阻止的主机列表

如何查看Linux或Unix上被DenyHosts阻止的IP地址列表
执行以下cat命令:

$ sudo cat /etc/hosts.deny

请注意,DenyHosts仅限于使用IPv4的连接。
它不适用于基于IPv6的IP地址。
另一个选择是使用iptables命令查看被阻止的IP地址:

$ sudo iptables -L INPUT -n -v
$ sudo iptables -L INPUT -n -v | more
$ sudo iptables -L INPUT -n -v | grep DROP

输出示例:

Chain INPUT (policy DROP 526 packets, 103K bytes)
    0     0 DROP       all  --  *      *       193.201.224.199      0.0.0.0/0           
   24  1272 DROP       all  --  *      *       75.146.185.254       0.0.0.0/0           
    0     0 DROP       all  --  *      *       78.56.6.211          0.0.0.0/0           
   80  4744 DROP       all  --  *      *       60.250.157.222       0.0.0.0/0           
2342  122K DROP       all  --  *      *       123.30.37.44         0.0.0.0/0           
    0     0 DROP       all  --  *      *       163.172.87.229       0.0.0.0/0

如何启用集中同步支持?

DenyHosts 2.0及更高版本支持集中同步,因此可以从许多计算机上阻止重复犯规者。
站点xmlrpc.denyhosts.net从运行该软件的计算机收集统计信息。
默认情况下禁用同步。
要启用同步,请执行:

$ sudo vi /etc/denyhosts.conf

设置配置选项,如下所示:

SYNC_SERVER = http://xmlrpc.denyhosts.net:9911

保存并关闭文件。
在Ubuntu Linux 16.04 LTS或更高版本上执行以下命令以重新启动服务:

$ sudo systemctl restart denyhosts.service

对于较旧的基于Ubuntu/Debian Linux /非系统的系统,请执行以下命令以重新启动服务:

$ sudo /etc/init.d/denyhosts restart

如何启动denyhosts服务?

在Ubuntu Linux 16.04 LTS或更高版本上执行以下命令以启动服务:

$ sudo systemctl start denyhosts.service

对于较旧的基于Ubuntu/Debian Linux /非系统的系统,请执行以下命令以启动服务:

$ sudo /etc/init.d/denyhosts start

如何停止denyhosts服务?

在Ubuntu Linux 16.04 LTS或更高版本上执行以下命令以停止服务:

$ sudo systemctl stop denyhosts.service

对于较旧的基于Ubuntu/Debian Linux /非系统的系统,请执行以下命令以停止服务:

$ sudo /etc/init.d/denyhosts stop