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 # 查看是否添加成功

重启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在各等级(2、3、4、5)为on(开启)状态
3 chkconfig --list denyhosts # 查询是否设置成功

启动服务

1 systemctl start denyhosts.service

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

结束语

至此,VPS的安全配置告一段落了。当然还有例如改用SSH密钥登录服务器等方法,不过笔者觉得万一需要在其他电脑上临时登录,用密钥反而不太方便。其实对于普通的个人服务器来说,通过以上的配置,已经能够抵御大部分暴力攻击了。

附: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 <[email protected]>   #通知邮件的发信人地址
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 中终止旧条目的时间间隔
时间: 2024-12-21 09:37:06

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

增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击

VPS SSH账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要.以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门,导致好几个有名的站点信息泄露,损失惨重. 如何知道自己的VPS账号正在遭受坏人的扫描和暴力破解呢?简单的方法就是查看日志:cat /var/log/auth.log.如何来增强VPS SSH账号的安全性呢?除了养成使用正规软件的好习惯外,还要从VPS本身来加强VPS SSH账号的安全性. 默认的S

Linux centos 远程SSH默认22端口修改为其他端口

修改SSH的默认端口: 1,控制SSH访问端口的文件为 /etc/ssh/sshd_config . 因此,编辑SSH配置文件sshd_config: #vi /etc/ssh/sshd_config 2,查找到 Port=22字段,将其前面的注释去掉: 13  #Port 22        //将注释符#去掉 14  #AddressFamily any 15  #ListenAddress 0.0.0.0 16  #ListenAddress :: 3,在这行下面再加同样的一行,端口号改为

linux的启动模式的设置及root用户密码的修改

1.修改启动模式: 进入命令行终端使用这个命令 [[email protected] ~]# vi /etc/inittab id:5:initdefault: 5为图形界面模式 3为多用户开发者模式 敲击i进入编辑模式,将5修改为3 执行Esc->:wq->reboot 修改成功! 2.修改root密码: a.启动系统, b.在界面启动时让它停留一下,随便按一下键盘上的一个键,此时就会进入到操作系统配置引导界面, c.根据提示,敲击键盘e键,编辑启动信息 d.找到kernel选项,根据提示,

Git配置非22端口,解决:ssh: connect to host xxx port 22: Connection timed out fatal: The remote end hung up unexpectedly

背景:私自搭建了Git服务器,而Git本身就是SSH进行连接的,而Git命令上默认只能通过22端口实现. 解决方法: 第一种: 在系统的用户目录下的文件夹:.ssh 如果该路径下没有config文件,则创建一个. config中添加如下内容: 如是以域名访问的则添加如下内容:(注意修改xxx为你的远程仓库的名称) Host xxx HostName xxx.com Port 3333 如是以IP访问的,则添加如下内容:(注意修改IP为你的远程仓库IP) Host "211.111.xx.xxx&

linux防火墙开放和禁用指定端口

一.例如:开放8080端口 firewall-cmd --permanent --add-port=8080/tcp 二.重启使设置生效 systemctl restart firewalld.service 三.查看设置 firewall-cmd --list-all 四.例如:禁用8080端口 firewall-cmd --permanent --remove-port=8080/tcp 五.重启使之生效 原文地址:https://www.cnblogs.com/qq931399960/p/

linux-ubuntu配置通过22端口远程连接

当安装好ubuntu后获取到对应主机的ip地址,要想通过类似xshell这样的远程连接工具连接到ubuntu主机,需要在你刚刚安装好的ubuntu主机上安装openssh这个软件,才能通过远程来连接ubuntu主机,具体操作如下: 1.使用  sudo apt-get install openssh-server openssh-client   这一命令安装openssh客户端 2.重新启动ssh  sudo /etc/init.d/ssh restart  启动后,就可以通过远程来连接刚刚安

linux下开启SSH,并且允许root用户远程登录,允许无密码登录

参考:http://blog.csdn.net/jia0511/article/details/8237698 1. 允许root用户远程登录 修改ssh服务配置文件 sudo vi /etc/ssh/sshd_config 调整PermitRootLogin参数值为yes,如下图: 2. 允许无密码登录 同上,修改ssh服务配置文件,两种情况: 1) 将PermitEmptyPasswords yes前面的#号去掉 2) 将PermitEmptyPasswords 参数值修改为yes,如下图:

Linux学习笔记(一) Ubuntu中root用户和user用户的相互切换

Ubuntu默认是不启动root用户,现在介绍如何进入root的方法. (1)从user用户切换到root用户 不管是用图形模式登录Ubuntu,还是命令行模式登录,我们会发现缺省的用户是user 只需要简单的执行sudo su 即可 注意: 出于安全考虑,默认时Ubuntu的root用户时没有固定密码的,它的密码是随机产生并且动态改变 的,貌似是每5分钟改变一次,所以用su(switch user)是不可以的,因为我们不知道root的密码 (2)从root用户切回user用户 想从root用户

Linux 系统安全 -- 防暴力破解

fail2ban防止暴力破解 1. 下载stable稳定版解压缩1 2. 编译安装1 3. 拷贝启动脚本1 4. 修改配置文件1 5. 启动fail2ban2 6. 测试,ssh连接,连续输入3次密码2 7. 此时在查看服务端的防火墙和failban状态2 8. 解锁被failban禁止登录的ip3 9. 自动部署的脚本3  防止暴力破解的一般方法: 1) 密码足够复杂  2)修改端口号  3) 禁用root登  4)第三方防爆破软件 fail2ban实现锁IP 说明:监视系统日志,然后通过匹配