TypeCodes

阿里云CentOS主机 LNMP 环境之主机安全篇一

前面一篇文章介绍了阿里云的CentOS 6.5系统 LNMP 环境下,如何让 web 站点的更为安全。这篇文章主要从用户登录主机方式入手,简单分享下如何让自己的 Linux 主机更安全。

1 禁止 CentOS 系统中除 root 外的用户登录
###### 查看 CentOS 系统中的所有用户
[root@typecodes ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
###### 只需简单在 /etc 目录下建立 nologin 文件即可禁止除root外的用户登录
[root@typecodes ~]# touch /etc/nologin
2 禁用密码登录, 只能使用ssh公私钥匹配认证登录主机

通过上面一步的操作,只剩下 root 用户可以登录系统了。但是 Linux 系统默认可以使用密码登录,这种方式的缺点就是假如其它人获取了密码,就等于获取了完全控制主机的权限。所以,我们可以选择一种更为严格和安全的登录方式,那就是使用 ssh公钥和私钥配置认证的方式登录。其基本原理是:

用户先通过非对称加密技术RSA产生一对公、私密钥,公钥储存在远端主机上,私钥保留在自己手中。在登录时,用户端请求连接远端服务器。服务器端先生成一段随机数然后发给用户端,用户端通过私钥对其解密,成功则说明用户端认证通过。然后回传给服务器端,服务器端用储存的公钥对其解密,成功则说明服务器端认证通过。这样双方都认证成功,也就实现了免密码直接登录shell

下面介绍用 SecureCRT 客户端生成公、私密钥登录 ssh 服务器。

1、“工具”——“创建公钥”,在“密钥生成向导”会话框中的“密钥类型”选择“RSA”,然后点击“下一步”。

“密钥类型”选择“RSA”

2、设置“通行短语”,用于保护本地的密钥(根据个人需要选择)

设置“通行短语”

3、设置“密钥位长度(K)”为1024,然后出现“密钥生成向导”进度条。

设置“密钥位长度(K)”为1024

4、选择“OpenSSH 密钥格式”以及密钥保存位置 当完成该操作后,会在该文件路径下生成两个文件:公钥文件,例如centos6_Identity.pub;私钥文件,例如centos6_Identity。

“OpenSSH 密钥格式”以及密钥保存位置

5、在“是否使用此密钥为全局密钥?”确认框中选择“否”。

6、用root账户在 home 目录下创建 .ssh 文件夹, 权限600 :

[root@typecodes ~]# mkdir .ssh
[root@typecodes ~]# chmod 600 .ssh

7、用root账户把刚保存的公钥文件 centos6_Identity.pub 上传到 .ssh 文件夹下,并复制一份名为 authorized_keys 的文件。

[root@typecodes .ssh]# cp centos6_Identity.pub authorized_keys
[root@typecodes .ssh]# chmod 600 authorized_keys

8、修改 OpenSSH 服务器配置文件

[root@typecodes ~]# vim /etc/ssh/sshd_config
###### 修改 OpenSSH 默认端口 22 为其它端口
Port 2001
###### 允许 root 账户登录
PermitRootLogin yes
###### 禁止使用密码验证登录
PasswordAuthentication no
###### 启用RSA加密
RSAAuthentication yes
###### 启用公钥认证
PubkeyAuthentication yes
###### 公钥文件的存放位置
AuthorizedKeysFile .ssh/authorized_keys

###### :wq保存后, 重启 sshd 服务
[root@typecodes ~]# service sshd restart

9、用 SecureCRT 重新登录远程主机: “选项”——“会话选项”——“连接”——“SSH2”——“公钥”——“属性”,在“使用身份或证书文件”中选择之前存储的密钥文件 centos6_Identity.pub 。如果在步骤8中修改了 ssh 默认的端口 22 的话,相应把下图 SecureCRT 中的端口改掉。

重新配置ssh2的登录方式

选择之前生成的密钥文件

10.输入之前设置的“通行短语”即可成功登录:

输入之前设置的“通行短语”

打赏支持

Comments »