如何在Ubuntu Linux 16.04 LTS(入侵防护安全工具)上安装denyhosts
如何防止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