服务器安全设置之密匙登陆

2014-02-07 2326点热度 2条评论

使用VPS已经有一年有余,一直使用的还比较好,但是最近总是收到空间商的邮件说我的vps在收到恶意猜测密码。无赖之下安装了Denyhosts,但是随之而来的问题更普遍了,虽然阻挡了恶意的扫描,但总是无法登陆进vps,也给服务器的管理带来了很大的不便,经过与朋友交流,索性直接将VPS的验证方式修改为了使用密匙的方式,再修改了SSH的端,使用一月下来发现服务器很稳定,才看日志也没有那么多的恶意扫描了!

修改sshd_config配置

具体的使用参数可以参考官方说明:https://linux.die.net/man/5/sshd_config

修改SSH登录端口

$ vi /etc/ssh/sshd_config

# 修改端口为1688
Port 22 

# 停用第一类协议
Protocol 2

# 重启服务
$ service sshd restart

# Centos 7 防火墙规则处理

# 创建新的防火墙配置
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-custom.xml

# 更改端口为1688
$ vim /etc/firewalld/services/ssh-custom.xml
<port protocol="tcp" port="1688"/>

# 更新防火墙规则
$ firewall-cmd --permanent --remove-service='ssh'
$ firewall-cmd --permanent --add-service='ssh-custom'
$ firewall-cmd --reload

使用密钥登录SSH

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

生成密钥文件

[root@31828440 ~]# ssh-keygen -b 4096 -t rsa -C "jalena@bcsytv.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #直接回车
Enter passphrase (empty for no passphrase):  #访问密码
Enter same passphrase again:  #验证访问密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8f:55:92:c1:56:b8:0f:0c:fb:25:dd:29:ed:8e:e8:4b root@31828440.kvmla.com
The key's randomart image is:
+--[ RSA 2048]----+
|         ..o.    |
|        . +o     |
|         =oo.o . |
|        . =o+ +  |
|        S..= o   |
|         +. . .  |
|        . E. o   |
|         .. . .  |
|         .o.     |
+-----------------+

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

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

cd /root/.ssh

# 写入配置
cat id_rsa.pub >> authorized_keys

# 配置权限
chmod 600 authorized_keys
chmod 700 ~/.ssh

id-rsa这个私钥文件下载到本地,打开Xshell软件,执行工具->用户密匙管理,导入这个私钥文件即可。

有了密钥登录VPS,我们就可以禁止用密码登录这种验证方式了,编辑配置:/etc/ssh/sshd_config,修改如下参数:

# SSH连接方式,参数为1或者2,这里仅使用SSH2作为连接
Protocol 2

# serverkey强度
ServerKeyBits 4096

# 禁用root账户登录,非必要,若直接使用root账户登陆就不能禁止,否则无法登陆
# no表示禁用
PermitRootLogin no 

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 密匙认证信息配置
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      /root/.ssh/authorized_keys

# 禁用密码登录,安全要紧
PasswordAuthentication no

保存,重启SSH服务,生效。

注:此方式适合非Putty的连接,Putty连接需要转换Key!

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

文章评论

  • 逗妇乳

    直接关掉sshd,然后使用ssh console

    2014-02-20
    • Jalena

      @逗妇乳 太高端。不适合啊

      2014-02-20