服务器开机记录0: SSH公钥免密登录与fail2ban安装
New Server, Now Booting.
实在受不了之前用的服务器每逢高峰时间段就近乎失联的龟速,故停用了之前用的服务器,新开了个GIA的。然鹅开完随便登了几次服务器就看到了巨量的失败登录记录,吓得我赶紧把密码登录关了然后再装了个fail2ban。其实照理说也应该改个SSH端口,然而人就是会作死的生物啊(懒
Spec
Hostdare CN2 GIA Network @ Los Angeles
Dual-Core Processor with 1.5GB Memory
CentOS 7.6
RSA Login
- 开机
yum update #更新yum
yum install nano #装nano
timedatectl set-timezone Asia/Shanghai #调整时区
- 生成一对RSA密钥
ssh-keygen -t rsa
默认文件生成路径在/root/.ssh/
,passphrase留空。
- 用PSFTP下载私钥
cd /root/.ssh
get id_rsa
- 整理密钥文件
cd /root/.ssh
rm id_rsa #删除私钥
mv id_rsa.pub authorized_keys #系统默认公钥名称
chmod 600 authorized_keys #设置公钥权限
- 允许密钥登录
nano /etc/ssh/sshd_config
确认RSAAuthentication
和PubkeyAuthentication
两项皆为yes
,且没有被#
注释;
将PasswordAuthentication
项改为no
以禁用密码登录。
如果你对于是否能用RSA登录不是很自信,也可以先不禁用密码登录,成功之后再回来修改。
- 重启SSHD服务
service sshd restart
- 配置PuTTY
在PuTTY的Connection >> SSH >> Auth页面最下面一栏选择刚才下载的私钥,再打开对话的时候就可以在输入用户名后直接自动用RSA登录了。(打开对话前记得先保存这个配置。)
fail2ban
- 安装fail2ban
wget https://github.com/fail2ban/fail2ban/archive/0.11.1.tar.gz
tar -xf 0.11.1.tar.gz
cd fail2ban-0.11.1
python setup.py install
cd ..
rm -rf fail2ban-0.11.1
rm 0.11.1.tar.gz
systemctl enable fail2ban #设置自启动
看到有yum install fail2ban
一键安装的,但我这里试了一下并没有找到这个包。还是老实去GitHub找吧(
- 配置fail2ban
cd /etc/fail2ban/
cp jail.conf jail.local
nano jail.local
取消第23行、第24行的注释#
,以启用SSHD监狱:
# [sshd]
# enabled = true
编辑第101行开始的封禁策略:
# "bantime" is the number of seconds that a host is banned.
bantime = 10m #封禁时间,如720h
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 10m #在这个时间内达到最大重试次数会触发封禁
# "maxretry" is the number of failures before a host get banned.
maxretry = 5 #最大重试次数
编辑第284行开始的SSHD监狱配置:
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal #取消这行的注释,可以从上述模式中选择其他方案
port = ssh #写你的SSH端口号
logpath = %(sshd_log)s #写你SSHD的Log路径,如/var/log/secure
backend = %(sshd_backend)s #写auto即可
- 重载fail2ban:
fail2ban-client reload
- 第一时间赶来
嘲笑查看监狱状况:
fail2ban-client status #查看你家开的监狱总览
fail2ban-client status sshd #巡查sshd监狱
iptables -L -n #确认iptables和你是不是一丘之貉