🇨🇳
🌞

Linux 系统安装 Denyhosts 与修改服务器端口

[1]denyhosts.png

前用 Wordpress 做网站的时候,租了一个 Vultr 服务器,通过 Xshell 远程登录终端后,系统发出警告,提示在此次成功登录前有 xxxx 次登录失败的记录,并且发现是某一个固定的 IP 地址在不断的尝试登陆。在网上找了许多有关这种问题的解决方法,基本都是通过利用 hosts.deny 文件屏蔽此 IP 地址即可。除此之外,为了安全起见,最好在租好新的服务器后修改默认端口。

Denyhosts 是一个以 Python2.3 编写的程序,它主要根据系统日志文件/var/log/secure文件分析,当发现同一 IP 在进行多次 SSH 密码尝试时就会记录 IP 到/etc/hosts.deny文件,从而达到自动屏蔽该 IP 的目的。下面总结一下 Denyhosts 的安装方法。

检查安装环境

首先判断系统安装的 sshd是否支持 tcp_wrappers(默认都支持),如果有输出:libwrap.so.0 => /lib64/libwrap.so.0则为支持,命令如下

1
ldd /usr/sbin/sshd |grep libwrap.so.0

其次判断是否有 Python(CentOS默认都有),只要系统 Python 版本不小于 2.3 版本即可。

1
python -V

安装 Denyhosts

下载

下载 DenyHosts-2.6.tar.gz 并上传到服务器,可以从这里下载。

安装

解压文件:

1
tar -zxvf DenyHosts-2.6.tar.gz

开始安装:

1
2
cd DenyHosts-2.6
python setup.py install

注:程序脚本自动安装在 /usr/share/denyhosts/ 目录下;库文件安装在 /usr/lib/python2.6/site-packages/DenyHosts/ 目录下;denyhosts.py 默认安装在 /usr/bin/ 目录下。

设置启动脚本

1
2
3
4
cd /usr/share/denyhosts/
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control

将 denyhosts.cfg-dist 中不是以 # 开头的行,写入 denyhosts.cfg 文件

1
grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg

编辑 denyhosts.cfg

1
vi denyhosts.cfg

具体配置项可参考以下的配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
############ THESE SETTINGS ARE REQUIRED ############
            ##分析源文件
            SECURE_LOG = /var/log/secure
            ##禁止sshd登陆的IP存放文件
            HOSTS_DENY = /etc/hosts.deny
            
            ##过多久后清除已经禁止的IP
            PURGE_DENY =  1d
            
            
            ##监控的服务名
            BLOCK_SERVICE  = sshd
            
            ##表示允许无效用户登录失败的次数
            DENY_THRESHOLD_INVALID = 3
            
            ##表示允许普通用户登录失败的次数
            DENY_THRESHOLD_VALID = 3
            
            ##表示允许root用户登录失败的次数
            DENY_THRESHOLD_ROOT = 3
            
            
            DENY_THRESHOLD_RESTRICTED = 1
            
            
            WORK_DIR = /usr/share/denyhosts/data
            
            SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
            
            ##是否做域名反解
            HOSTNAME_LOOKUP=NO
            
            
            LOCK_FILE = /var/lock/subsys/denyhosts

添加到系统服务

将 Denyhosts 添加到系统服务并自动启动

修改自启动文件:

1
vi /etc/rc.local

在末尾添加以下行:

1
/usr/share/denyhosts/daemon-control start

添加至系统服务:

1
2
3
ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
chkconfig --add denyhosts
chkconfig --level 345 denyhosts on

启动 Denyhosts

1
service denyhosts start

查看 Denyhosts 是否运行成功

1
service denyhosts status

显示:DenyHosts is running with pid = XXXX,即运行成功

至此,Denyhosts 也就配置完成了;此外将 sshd 的默认端口修改掉,再结合 Denyhosts 可以防止大部分 sshd 的暴力破解了。

修改 sshd 默认端口

编辑配置文件

1
vi /etc/ssh/sshd_config

默认端口是 22,并且已经被注释掉了

修改端口号

#Port 22 这里将 # 删除,修改 22 为其他数字,如 1234。第一次设置最好先保留 22 端口,即将 # 删除,在 Port 22 下添加一行 Port 1234,等完全设置 好后再将其注释掉。

1
2
Port 22
Port 1234

在防火墙上放开端口

首先添加端口到防火墙:

1
firewall-cmd --zone=public --add-port=1234/tcp --permanent

permanent 是保存配置,不然下次重启以后这次修改无效

然后重启防火墙:

1
firewall-cmd --reload

查看添加端口是否成功,如果添加成功则会显示 yes,否则 no

1
firewall-cmd --zone=public --query-port=1234/tcp

检查端口是否已经开放

1
iptables -nL --line-number

重启 sshd 服务

如果断开此终端了重连需要修改端口

1
systemctl restart sshd.service

参考

  1. https://www.cnblogs.com/rwxwsblog/p/4590608.html
updatedupdated2019-12-092019-12-09
update: 优化标签 closes #6
点击刷新