一点经验上的基础配置,做个流程化记录。以下配置以Ubuntu 20.04为例。
apt 更改为国内源
ssh安装及配置
安装
客户端
默认已安装,如无:
sudo apt install openssh-client
服务端
sudo apt install openssh-server
命令
启动,停止,重启,查看状态
sudo /etc/init.d/ssh start
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh restart
sudo /etc/init.d/ssh status
配置
- 文件
先备份一下,然后编辑sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sudo vim /etc/ssh/sshd_config
- 修改的配置项
- 修改默认端口(不使用22端口,这里以123456为例)
- 禁止root登录
- 错误次数限制等
Port 123456 AddressFamily inet PermitRootLogin no StrictModes yes MaxAuthTries 4 MaxSessions 6 PasswordAuthentication yes PermitEmptyPasswords no
防火墙修改
初始查看状态(sudo ufw status
)因该是未激活状态 inactive
修改ufw配置
放行刚才修改的端口
sudo ufw allow 123456
启用ufw服务
sudo ufw enable
这时候查看状态(sudo ufw status
)因该是激活 active 了,且会列出刚才允许的端口
使用 fail2ban 防止暴力破解
安装
sudo apt install fail2ban
配置
文件
- 复制配置文件,后缀改为local,编辑这个新文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo vim /etc/fail2ban/jail.local
- 修改sshd相关
- 修改为之前配置的ssh端口(这里以123456为例)
- 设置禁用规则(10分钟内错误5次,禁ip1小时)
[sshd] port = 123456 logpath = %(sshd_log)s backend = %(sshd_backend)s maxretry = 5 findtime = 10m bantime = 1h
命令
服务相关
启动、停止、重启、查看状态
sudo systemctl start fail2ban.service
sudo systemctl stop fail2ban.service
sudo systemctl restart fail2ban.service
sudo systemctl status fail2ban.service
具体
- 查看 sshd 监狱的服务状态
sudo systemctl status fail2ban.service sshd
- 查看 fail2ban 的监狱情况
sudo fail2ban-client status
- 查看 sshd 监狱的禁用情况
sudo fail2ban-client status sshd