服务器开机记录0: SSH公钥免密登录与fail2ban安装

New Server, Now Booting.

服务器开机记录0: SSH公钥免密登录与fail2ban安装

  实在受不了之前用的服务器每逢高峰时间段就近乎失联的龟速,故停用了之前用的服务器,新开了个GIA的。然鹅开完随便登了几次服务器就看到了巨量的失败登录记录,吓得我赶紧把密码登录关了然后再装了个fail2ban。其实照理说也应该改个SSH端口,然而人就是会作死的生物啊(懒

Spec

Hostdare CN2 GIA Network @ Los Angeles
Dual-Core Processor with 1.5GB Memory
CentOS 7.6

RSA Login

  1. 开机
yum update								#更新yum
yum install nano						#装nano
timedatectl set-timezone Asia/Shanghai	#调整时区

  1. 生成一对RSA密钥
ssh-keygen -t rsa

默认文件生成路径在/root/.ssh/,passphrase留空。

  1. 用PSFTP下载私钥
cd /root/.ssh
get id_rsa

  1. 整理密钥文件
cd /root/.ssh
rm id_rsa						#删除私钥
mv id_rsa.pub authorized_keys	#系统默认公钥名称
chmod 600 authorized_keys		#设置公钥权限

  1. 允许密钥登录
nano /etc/ssh/sshd_config

确认RSAAuthenticationPubkeyAuthentication两项皆为yes,且没有被#注释;
PasswordAuthentication项改为no以禁用密码登录。

如果你对于是否能用RSA登录不是很自信,也可以先不禁用密码登录,成功之后再回来修改。

  1. 重启SSHD服务
service sshd restart

  1. 配置PuTTY

在PuTTY的Connection >> SSH >> Auth页面最下面一栏选择刚才下载的私钥,再打开对话的时候就可以在输入用户名后直接自动用RSA登录了。(打开对话前记得先保存这个配置。)

fail2ban

  1. 安装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找吧(

  1. 配置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即可

  1. 重载fail2ban:
fail2ban-client reload

  1. 第一时间赶来 嘲笑 查看监狱状况:
fail2ban-client status			#查看你家开的监狱总览
fail2ban-client status sshd		#巡查sshd监狱
iptables -L -n					#确认iptables和你是不是一丘之貉