常用Linux的盆友都知道,ssh默认都是用密码登陆的,安全性也可想而知的差,为了服务器的安全性,我们采用证书来登陆服务器,但是也不是绝对的安全(从来就没有绝对安全的系统),但是可以进一步的增强服务器的安全性,对于用者来说也非常的方便,只需维护好私钥即可,下面我们就来修改ssh的配置,以下代码都是在CentOS下可运行。
一.通过以下步骤来增强服务器的安全
- 普通账户禁止使用su,sudo功能
- SSH只能使用key登陆,禁止使用密码来登录
- wheel组允许使用su 来使用root权限
- 仅允许指定的用户使用sudo来获得root权限
二. 修改用户权限
用root登陆服务器,创建一个普通用户加wheel组
$ useradd -g wheel tadashi
设置仅允许wheel组用户可以使用su
$ vi /etc/pam.d/su
找到下面这行,去掉行首的”#”
#auth required pam_wheel.so use_uid
变为
auth required pam_wheel.so use_uid
保存
在/etc/login.defs末尾添加”SU_WHEEL_ONLY yes”,并修改sudoers 为账户tadashi设置sudo使用权限,然后将文件权限修改回去
$ echo "SU_WHEEL_ONLY yes" >> /etc/login.defs $ chmod 740 /etc/sudoers $ echo "tadashi ALL=(ALL) ALL" >> /etc/sudoers $ chmod 440 /etc/sudoers
到此我们别的普通用户就不能用su sudo命令了。
三.为用户生成ssh公秘钥
切换到tadashi用户上去,并用ssh-keygen来生产公秘钥,第一个提示是输入钥匙的文件名称,可以保持默认,默认的文件名是(id_rsa),回车,这时会提示输入一个口令然后再确认输入一次即可
$ su tadashi $ ssh-keygen -t rsa
这时会生成两个文件id_rsa和id_rsa.pub 在/home/tadashi/.ssh/目录下,接下来将公钥输出到该目录下的authorized_keys文件上,并删除公钥和设置authorized_keys的权限(权限设置不对会引起不能用秘钥登陆)
$ cd ~/.ssh $ cat id_rsa.pub >> authorized_keys $ rm -rf id_rsa.pub $ chmod 400 authorized_keys
四.修改ssh配置使其生效
$ exit $ vi /etc/ssh/sshd_config
找到如下位置进行修改
#禁止root登录 PermitRootLogin no #指定可以登录的用户 AllowUsers tadashi StrictModes yes #关闭密码验证 PasswordAuthentication no #打开RSA验证相关设置 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys #关闭 GSSAPI验证 GSSAPIAuthentication no
重启sshd服务,使其配置生效
$ service sshd restart