Linux VPS 安全配置:禁用22端口、root用户以及配置Denyhosts防暴力破解

最近租了一台Vultr VPS,每天都会生成许多异常登录失败的日志,疑似受到扫描软件的暴力破解,遂Google了一下服务器安全防护方面的知识。

下面将操作过程记录下来(基于CentOS 7):

 

一、修改SSH服务默认端口

SSH服务的默认端口是22,扫描软件首先会通过此端口尝试登录,因此把它改成一个不易猜到的端口(推荐使用10000~65535之间的,复杂度最高也不易和其他进程发生冲突)

1 vim /etc/ssh/sshd_config

新增XXXXX端口并保留22端口(防止一会新端口启用失败,原先的22端口也连不上)

1 # If you want to change the port on a SELinux system, you have to tell
2 # SELinux about this change.
3 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
4 #
5 Port 22
6 Port XXXXX
7 #AddressFamily any
8 #ListenAddress 0.0.0.0
9 #ListenAddress ::

添加新端口到防火墙

1 firewall-cmd --permanent --add-port=XXXXX/tcp # 添加到防火墙
2 firewall-cmd --reload # 重新加载防火墙配置
3 firewall-cmd --permanent --query-port=XXXXX/tcp # 查看是否添加成功

也可通过查看文件 sudo cat /etc/firewalld/zones/public.xml 确认当前端口

重启SSH服务和防火墙,最好也重启下服务器

1 systemctl restart sshd.service
2 systemctl restart firewalld.service
3 reboot

使用新端口连接VPS,如果连接成功,将22端口重新注释掉

 

二、新建普通用户,禁用root用户远程登录

root用户拥有服务器的最高权限,如果被破解后果将不堪设想,可以通过禁用root用户远程登录来防止

1 vim /etc/sudoers

查看以下位置%wheel前面是否有#,如有将其删掉,授予wheel用户组超级管理员权限

1 ## Allows people in group wheel to run all commands
2 %wheel    ALL=(ALL)    ALL

新增普通用户并授权,即可在该用户下通过sudo执行需要管理员权限的命令

1 useradd test # 添加用户
2 passwd test # 设置密码
3 usermod -G wheel test # 将新用户添加到wheel组(添加到附加组,主组不变)
4 id test # 查看是否添加成功

修改/etc/ssh/sshd_config文件

1 vim /etc/ssh/sshd_config

找到以下行,将PermitRootLogin后的yes改为no,即可禁止root用户远程登录

1 PermitRootLogin no

重启SSH服务,以后通过新建的普通用户登录VPS即可

 

三、安装Denyhosts防暴力攻击

DenyHosts是针对SSH服务器的一个基于日志的入侵预防安全工具,是用Python编写的。其通过监测身份验证登录日志中失败的登录尝试,屏蔽这些登录者的IP地址,从而预防对SSH服务器的暴力破解。—— 维基百科

首先下载Denyhosts,官网地址:https://sourceforge.net/projects/denyhosts/

也可以用wget直接下载源码

1 wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz

然后解压缩

1 tar -zxvf DenyHosts-2.6.tar.gz

进入解压目录

1 cd DenyHosts-2.6

执行安装

1 python setup.py install

进入安装目录

1 cd /usr/share/denyhosts/

创建配置文件和启动文件副本

1 cp denyhosts.cfg-dist denyhosts.cfg
2 cp daemon-control-dist daemon-control

建立符号链接

1 ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts

设置Denyhosts为开机启动

1 chkconfig --add denyhosts # 增加denyhosts服务
2 chkconfig denyhosts on # 设置denyhosts在各等级(2345)为on(开启)状态
3 chkconfig --list denyhosts # 查询是否设置成功

启动服务

1 systemctl start denyhosts.service

对于多次登录失败的IP,会被记录到/etc/hosts.deny文件中加以屏蔽,从而限制其继续登录

 

附:Denyhosts配置文件说明(denyhosts.cfg)

 1 SECURE_LOG = /var/log/secure               #指定ssh日志文件
 2 HOSTS_DENY = /etc/hosts.deny               #记录阻止登陆系统IP的文件
 3 PURGE_DENY =                               #清理HOSTS_DENY文件的时间
 4 BLOCK_SERVICE  = sshd                      #在HOSTS_DENY中定义要阻止的服务
 5 DENY_THRESHOLD_INVALID = 5                 #系统不存在用户失败次数
 6 DENY_THRESHOLD_VALID = 10                  #除root外,系统存在用户失败次数
 7 DENY_THRESHOLD_ROOT = 1                    #root用户失败次数
 8 DENY_THRESHOLD_RESTRICTED = 1              #针对WORK_DIR下定义的限制用户名的失败次数
 9 WORK_DIR = /usr/share/denyhosts/data       #将deny的host或ip记录到WORK_DIR中
10 SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES  #来自于allowed-hosts中的可以尝试,是否报告 
11 HOSTNAME_LOOKUP=YES                        #是否做域名反向解析
12 LOCK_FILE = /var/lock/subsys/denyhosts     #保证同时只有一个denyhosts程序运行的锁文件
13        
14 ADMIN_EMAIL = 123@456.789                  #设置管理员邮箱,系统开启了sendmail就会发邮件
15 SMTP_HOST = localhost                      #SMTP服务器
16 SMTP_PORT = 25                             #SMTP端口
17 SMTP_FROM = DenyHosts <nobody@localhost>   #通知邮件的发信人地址
18 SMTP_SUBJECT = DenyHosts Report            #发信的主题
19 AGE_RESET_VALID=5d                         #指定时间没有失败登陆记录,将此主机的失败计数重置为0,(不适用于root)
20 AGE_RESET_ROOT=25d                         #root用户的重置时间
21 AGE_RESET_RESTRICTED=25d                   #针对有限制用户的
22 AGE_RESET_INVALID=10d                      #针对无效用户的
23    
24 DAEMON_LOG = /var/log/denyhosts            #程序后台运行的日志记录
25  
26 DAEMON_SLEEP = 30s                         #每次读取日志的时间间隔
27 DAEMON_PURGE = 1h                          #清除机制在 HOSTS_DENY 中终止旧条目的时间间隔

 

posted @ 2017-07-28 23:08  空の彼方  阅读(4920)  评论(0编辑  收藏  举报