增强 Linux 主机安全性的方法
记录一下 Linux SSH 相关问题。关于 SSH ,可参照 SSH 详解:服务器、客户端和密钥。
修改 SSH 登录端口
默认的 22 端口太不安全,知道的人太多了,换换换~
# 编辑 ssh 配置文件
vim /etc/ssh/sshd_config
# 找到 #port 22,将前面的 # 去掉,然后修改端口 port xxx 为其它
port 222
# 重启 ssh 服务。
/etc/init.d/ssh restart
使用 SSH 登录
高强度密码虽然不易被暴力破解,但容易被冒牌服务器拦截,所以还是没有密钥验证安全。我们要放弃密码验证的方式,改用密钥文件验证。
可以使用 ssh-keygen -t rsa 命令生成密钥对,默认保存在 ~/.ssh 目录,密码默认为空。
id_rsa 是私钥,id_rsa.pub 是公钥。将公钥 id_rsa.pub 追加到 authorized_keys,将私钥 id-rsa 下载到本地。
# 生成密钥文件,位置默认,密码为空
ssh-keygen -t rsa
# 添加公钥到 AuthorizedKeysFile
cat id_rsa.pub >> authorized_keys
下载好的私钥可以用 Putty、Xshell 等工具通过密钥登录服务器,导入 id-rsa 后,不需要输入密码,即可登陆服务器。
如果配置完 authorized_keys 一直不生效,可能是因为 .ssh 目录和下面文件的权限问题,因为目录的权限已经超过了 sshd 的要求权限,需要修改权限满足至少下面两个条件 :
- .ssh 目录的权限必须是 700
- .ssh/authorized_keys 文件权限必须是 600
配置 SSH 免密码登录
配置了免密码登录,可以方便地进行登陆操作,方便 rsync 自动备份和 Hadoop 主机间互通信等。
# 首先,将本地公钥复制到目标服务器
scp -P (端口号) ~/.ssh/id_rsa.pub username@hostname:/home/username/id_rsa.pub
# 然后,登陆目标服务器,将公钥导入到认证文件
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
# 如果本地权限不正确还要更改权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
测试 : 使用 ssh hostname 可直接登陆目标服务器。
禁用密码登录及 root 远程登录
注意! 注意!! 注意!!! 禁用密码登陆前一定要确定密钥登陆方式是可用的,否则禁用了密码登陆,而密钥登陆又不能用……
# 禁止 root 通过 SSH 远程登录服务器、禁用所有账号通过密码验证远程 SSH 登录服务器
# 编辑 ssh 配置文件
vim /etc/ssh/sshd_config
# 添加或修改 PasswordAuthentication 所在行,禁用 root 远程登录了
PermitRootLogin no
# 添加或修改 PasswordAuthentication 所在行,禁用所有账号通过密码验证登录,设置成
PasswordAuthentication no
#保存退出
# 重启 ssh 服务
/etc/init.d/ssh restart