服务器上有着重要数据,同时服务器带公网IP,全天24小时暴露在公网上,随时可能被黑客盯上,所以服务器的安全至关重要。
目录
一、SSH登陆认证
Linux服务器通过SSH可以进行远程登陆,登陆的时候认证方式一般采用的是密码认证,其实这个十分不安全。建议采取SSH密钥对方式认证,或者使用下面将尝试的USB安全密钥认证。
二、启用USB密钥YubiKey登陆认证
YubiKey
是Yubico公司开发的一款非常棒的USB密钥。亚马逊或者咸鱼上可以购买。
服务器设置
相比SSH密钥对认证方式,USB安全密钥要配置的东西多些。
1. 安装依赖
sudo apt-get update sudo apt-get install libpam-yubico
2. 修改passwd
文件
echo "root:YubiKey token ID" >> /etc/passwd
将Yubikey token ID替换掉。token ID是12位字符串,可以用带NFC功能的手机读取YubiKey信息,取#符号后的字符(44位)的前12位。
3. 创建Mapping文件
echo "root:YubiKey token ID" >> /var/yubico_passwd
4. 设置PAM,调用Mapping文件
编辑文件/etc/pam.d/sshd,新增
auth required pam_yubico.so id=CLIENT_ID debug authfile=/var/yubico_passwd
将CLIENT_ID替换掉。在Yubico官网申请API,获取CLIENT_ID: https://upgrade.yubico.com/getapikey
5. 修改sshd_config文件 /etc/ssh/sshd_config
PubkeyAuthentication no HostbasedAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication yes PasswordAuthentication no UsePAM yes
6. 重启SSH服务
确保当前网络连接稳定,且重启后不要关闭当前会话,可以打开别的连接并尝试能否用USB密钥完成认证。确保能完成认证后,才可决定是否关闭当前会话。
sudo service ssh restart
三、SSH客户端尝试登陆
博主使用的是Termius客户端。客户端不用设置什么,直接连接,弹出认证窗口,插入USB并触摸USB上触点,利用USB密钥进行认证登陆
四、一些参考
1. Yubico PAM module https://developers.yubico.com/yubico-pam/
2. YubiKey Support https://docs.termius.com/termius-handbook/yubikey-support