增强 VPS SSH 账号安全:改端口,禁用 Root, 密钥登录,Denyhosts 防暴力攻击
原链接:http://blog.pcwuyu.com/2013/357.html
原分类:网站建设,Linux
VPS SSH 账号是我们日常管理 VPS 的主要登入方式,尤其是 Root 账号,对 Linux 系统安全至关重要。以前好多站长喜欢用 Putty 中文版,这实际是别人修改官方 Putty 汉化而来,这些软件被植入了后门,导致好几个有名的站点信息泄露,损失惨重。
如何知道自己的 VPS 账号正在遭受坏人的扫描和暴力破解呢?简单的方法就是查看日志:cat /var/log/auth.log
。如何来增强 VPS SSH 账号的安全性呢?除了养成使用正规软件的好习惯外,还要从 VPS 本身来加强 VPS SSH 账号的安全性。
默认的 SSH 端口都是 22,通过修改自己的 VPS 的端口先为扫描者增加一道端口门槛,VPS 默认的账号是 Root,如果我们禁用了 Root,那么要攻破账号又得先暴力猜测 VPS 的账号,难度又增加几分。如果还不放心,我们可以直接禁用密码登录验证 VPS 的方式,改用密钥登录,这样安全系数是相当高了。
Linux 还有一个自动统计 VPS 登录错误工具:Denyhosts
,一旦登录 VPS 账号错误次数超过了 Denyhosts 安全设置,Denyhosts 就会将该 IP 记录下来,同时将其放入黑名单当中,禁止该 IP 在某一段时间内继续访问 VPS,通过 Denyhosts 可以实现自动封锁恶意 IP。
VPS 主机和网站安全优化是一个持久的问题,没有一劳永逸的 “安全设置”,道高一尺,魔高一丈,我们只有不断地发现问题,才能最大限度地保护自己网站和 VPS 安全:
一、增强 VPS SSH 账号安全方法一:修改 SSH 登录端口
- 1、用下面命令进入配置文件。
vi /etc/ssh/sshd_config
- 2、找到 #port 22,将前面的 #去掉,然后修改端口 port 123(自己设定)。
- 3、然后重启 ssh 服务。
/etc/init.d/ssh restart
- 1、用下面命令进入配置文件。
二、增强 VPS SSH 账号安全方法二:使用密钥登录 SSH
- 1、SSH 登录方式有账号 + 密码和密钥两种形式,为了阻止暴力破解 VPS 的账号和密码,我们可以放弃密码验证的方式,改用密钥文件验证。
- 2、执行以下命令在 VPS 上生成密钥文件。
ssh-keygen -t rsa
- 3、生成密钥时会询问你密钥保存的位置,默认即可,还有你可以为你的密钥还设置一个密码,默认为空。
- 4、密钥生成后,进入密钥存放的目录中,执行以下命令,将公钥生成一个新的文件。
cat id_rsa.pub >> authorized_keys
- 5、将 id-rsa 这个私钥文件下载到本地,打开 PuTTYGen 软件,执行
Conversions->Import Key
,导入这个私钥文件。 - 6、Putty 使用密钥登录 SSH 方法:如果你要使用 Putty,在 PuTTYGen 中选择 Save private key,这时会在本地生成一个 PPK 文件。
- 7、然后在 Putty 中填入服务器名,在 SSH 授权方式中选择密钥,导入刚刚保存的 PPK 文件。
- 8、使用 Xshell 通过密钥登录 VPS 方法:如果要使用 Xshell,请在 PuTTYGen 的 Conversions 中选择 Export Open#SSH Key,设置一个名称保存。
- 9、然后启用 Xshell,填入服务器 IP,在用户身份验证中选择 “Public Key”,然后浏览导入刚刚你保存的 Key 文件。
- 10、导入了 Key 后,你就可以直接打开登录 VPS 了,不需要输入密码,即可进入 VPS。
- 11、有了密钥登录 VPS,我们就可以禁止用密码登录这种验证方式了,还是编辑配置:
vim /etc/ssh/sshd_config
,添加一行:PasswordAuthentication no
,如果有了这一行,请把 yes 改成 no,保存,重启 SSH 服务,生效。
三、增强 VPS SSH 账号安全方法三:禁用 Root 账号
- 1、如果你已经设置 SSH 密钥登录的方式,就可以禁用 Root 账号了,或者你可以新建一个 VPS 账号。执行以下命令:
useradd freehao123
#添加用户名passwd freehao123
#为 freehao123 用户名设置密码- 2、然后编辑进入配置:
vim /etc/ssh/sshd_config
,找到PermitRootLogin yes
,然后后面的 Yes 改 no,如果没有这一行命令,直接将PermitRootLogin no
加进去。 - 3、保存后,重启 SSH 服务,生效。
四、增强 VPS SSH 账号安全方法四:Denyhosts 防暴力攻击
- 1、Linux 各平台现在基本上都可以直接安装 Denyhosts 了,执行以下命令:
×Debian/Ubuntu:
sudo apt-get install denyhosts
×RedHat/CentOSyum install denyhosts
×Archlinuxyaourt denyhosts
×Gentooemerge -av denyhosts
- 2、安装好了 Denyhosts,默认的配置基本上就可以防御一定的暴力攻击了,
/etc/hosts.deny
文件里保存了被屏蔽的记录。 - 3、如果你要自定义 Denyhosts 的相关配置,执行:
vim /etc/denyhosts.conf
,以下是相关参数的说明:
SECURE_LOG = /var/log/auth.log
#ssh 日志文件,它是根据这个文件来判断的。HOSTS_DENY = /etc/hosts.deny
#控制用户登陆的文件PURGE_DENY =
#过多久后清除已经禁止的,空表示永远不解禁BLOCK_SERVICE = sshd
#禁止的服务名,如还要添加其他服务,只需添加逗号跟上相应的服务即可DENY_THRESHOLD_INVALID = 5
#允许无效用户失败的次数DENY_THRESHOLD_VALID = 10
#允许普通用户登陆失败的次数DENY_THRESHOLD_ROOT = 1
#允许 root 登陆失败的次数DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
#运行目录SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
#是否进行域名反解析LOCK_FILE = /var/run/denyhosts.pid
#程序的进程 IDADMIN_EMAIL = root@localhost
#管理员邮件地址,它会给管理员发邮件SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=5d
#用户的登录失败计数会在多久以后重置为 0,(h 表示小时,d 表示天,m 表示月,w 表示周,y 表示年)AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
RESET_ON_SUCCESS = yes
#如果一个 ip 登陆成功后,失败的登陆计数是否重置为 0五、增强 VPS SSH 账号小结
- 1、上面讲到了四个方法来增强 VPS SSH 账号的安全性,那么如何得知自己的 VPS 曾经或正在遭受账号暴力破解登录呢?执行以下命令,查询出来的结果中包含了 “ip 地址 = 数量” 就是攻击者信息。
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'
- 2、目前在 Putty 官网上没有看到中文版本的 Putty,所以网上流行的一些汉化版本的 Putty 很有可能被植入了后门,大家在使用时一定要特别留心。Xshell 官网直接提供了多国语言,包括中文在内。
本作品采用 知识共享署名 - 相同方式共享 4.0 国际许可协议 进行许可。