惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - wenus

树莓派做下载服务器 aria2 篇 免费 cdn 搞定迅雷固件在TP-LINK WR720N,127.0.0.1 9000 获取不到激活码 Mware vCenter Server 识别固态硬盘为(非SSD)是什么原因? XXX esx.problem.syslog.nonpersistent.formatOnHost not found XXX FreeBSD从零开始---安装后配置(三) FreeBSD从零开始---安装后配置(一) FreeBSD从零开始---安装后配置(二) ngrok 配置 - wenus 安装Nginx作为Windows服务自启动运行 nginx secure_link下载防盗链 htaccess高级应用:防盗链阻止迅雷下载以及限制访问 制作HP MicroServer Gen8可用的ESXi 5.x SD/TF卡启动盘 FreeBSD 10 中文环境 Web服务器禁止range请求 Apache性能优化、超时设置,linux 重启apache mysql 日志,临时文件. 如何使用tar对整个文件夹打包? freebsd 记事之PHP环境搭建
增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防...
wenus · 2016-05-29 · via 博客园 - wenus

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账号安全:改端口,禁止Root,密钥登录,Denyhosts防暴力攻击

一、增强VPS SSH账号安全方法一:修改SSH登录端口

1、用下面命令进入配置文件。


 vi /etc/ssh/sshd_config

2、找到#port 22,将前面的#去掉,然后修改端口 port 123(自己设定)。

3、然后重启ssh服务。


/etc/init.d/ssh restart

二、增强VPS SSH账号安全方法二:使用密钥登录SSH

1、SSH登录方式有账号+密码和密钥两种形式,为了阻止暴力破解VPS的账号和密码,我们可以放弃密码验证的方式,改用密钥文件验证。

2、执行以下命令在VPS上生成密钥文件。


ssh-keygen -t rsa

3、生成密钥时会询问你密钥保存的位置,默认即可,还有你可以为你的密钥还设置一个密码,默认为空。

VPS安全生成密钥

4、密钥生成后,进入密钥存放的目录中,执行以下命令,将公钥生成一个新的文件。


cat id_rsa.pub >> authorized_keys

VPS安全生成新文件

5、将id-rsa这个私钥文件下载到本地,打开PuTTYGen软件,执行Conversions->Import Key,导入这个私钥文件。

VPS安全导入私钥文件

6、Putty使用密钥登录SSH方法:如果你要使用Putty,在PuTTYGen中选择Save private key,这时会在本地生成一个PPK文件。

VPS安全保存本地文件

7、然后在Putty中填入服务器名,在SSH授权方式中选择密钥,导入刚刚保存的PPK文件。

VPS安全Putty授权方式

8、使用Xshell通过密钥登录VPS方法:如果要使用Xshell,请在PuTTYGen的Conversions中选择Export Open#SSH Key,设置一个名称保存。

VPS安全新的格式

9、然后启用Xshell,填入服务器IP,在用户身份验证中选择“Public Key”,然后浏览导入刚刚你保存的Key文件。

VPS安全Xshell导入密钥

10、导入了Key后,你就可以直接打开登录VPS了,不需要输入密码,即可进入VPS。

VPS安全直接进入

11、有了密钥登录VPS,我们就可以禁止用密码登录这种验证方式了,还是编辑配置:vim /etc/ssh/sshd_config,

添加一行:PasswordAuthentication no,如果有了这一行,请把yes改成no,保存,重启SSH服务,生效。

ChallengeResponseAuthentication no
UsePam no

VPS安全不用密码了

三、增强VPS SSH账号安全方法三:禁用Root账号

1、如果你已经设置SSH密钥登录的方式,就可以禁用Root账号了,或者你可以新建一个VPS账号。执行以下命令:


useradd freehao123 #添加用户名
passwd freehao123 #为freehao123用户名设置密码

VPS安全增加新的用户

2、然后编辑进入配置:vim /etc/ssh/sshd_config,找到PermitRootLogin yes,然后后面的Yes改no,如果没有这一行命令,直接将:PermitRootLogin no 加进去。

VPS安全不用Root

3、保存后,重启SSH服务,生效。

四、增强VPS SSH账号安全方法四:Denyhosts防暴力攻击

1、Linux各平台现在基本上都可以直接安装Denyhosts了,执行以下命令:


Debian/Ubuntu:
sudo apt-get install denyhosts
 
RedHat/CentOS
yum install denyhosts
 
Archlinux
yaourt denyhosts
 
Gentoo
emerge -av denyhosts

2、安装好了Denyhosts,默认的配置基本上就可以防御一定的暴力攻击了,/etc/hosts.deny 文件里保存了被屏蔽的记录。

VPS安全自定义设置

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 #程序的进程ID
ADMIN_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;}'

VPS是不是安全了

2、目前在Putty官网上没有看到中文版本的Putty,所以网上流行的一些汉化版本的Putty很有可能被植入了后门,大家在使用时一定要特别留心。Xshell官网直接提供了多国语言,包括中文在内。