Linux服务器安全:密钥登陆 改SSH端口 禁用root登录

发布于 2016-02-21  3.39k 次阅读


前段时间环宇跟我说他的服务器被攻击了,往外发大量的垃圾邮件,由此我总结一下服务器安全措施

一、改SSH端口

vi /etc/ssh/sshd_config

找到 #Port 22 按i进入编辑模式

删除#号,把22改成你想要的端口比如Port 12345

按esc退出编辑模式,输入:wq!保存并推出,然后执行

service sshd restart

重启ssh服务来生效。这样以后本次会话还能继续,不过接下来连接就得用12345端口了。

二、禁止root登陆

添加一个用户,用户名是wangchenyu密码是mima

useradd wangchenyu -p mima

禁用root登陆

vi /etc/ssh/sshd_config

找到PermitRootLogin yes

改成PermitRootLogin no

如果找不到,就在最后添加一行PermitRootLogin no保存并退出

然后重启一下ssh服务来生效:

service sshd restart

三、禁止密码登陆

首先创建一个密钥,在服务器上执行

ssh-keygen -t rsa

它会询问你保存位置和是否要加密(passphrase),默认密码是空,私钥保存在~/.ssh/id_rsa 公钥保存在~/.ssh/id_rsa.pub,如图:所以我们进入保存的目录

cd ~/.ssh

用下面的命令把公钥的内容写到一个叫做authorized_keys的新文件里

cat id_rsa.pub >> authorized_keys

然后把id_rsa的内容保存到本地,可以用vi id_rsa来显示id_rsa的内容也可以用cat id_rsa命令显示id_rsa的内容:

cat id_rsa
只需要在putty上选中屏幕上的内容就能自动复制到剪切板。

打开puttygen(文章底部下载),选择import,导入id_rsa,然后save private key file(ppk):

之后用putty连接,在SSH->Auth中选择这个ppk文件作为密钥就能连接服务器了。

有关公钥私钥验证

1.id_rsa是私钥,保存在客户端(Linux和Mac中存到~/.ssh
2.id_rsa.ppk是“putty格式”的私钥,putty和winscp用它验证
3.id_rsa.pub是公钥,重命名为authorized_keys存在服务器端的~/.ssh
4.我们重命名为authorized_keys是因为/etc/ssh/sshd_config中默认设置的是验证这个文件

PS(2017-2-26更新)在CentOS 6下有一个BUG,导致有可能会因为权限的问题sshd无法读取到authorized_keys这个文件。这时候执行下面两条命令可以修复:

chmod 644 ~/.ssh
restorecon -R -v ~/.ssh