Ubuntu的SSH安全配置

查看登录日志文件:

1
sudo vim /var/log/auth.log

修改SSH的默认端口

1
iptables -A INPUT -p tcp -m tcp --dport 6022 -j ACCEPT

保存并重启iptables防火墙

1
2
service iptables save
service iptables restart

修改SSH的默认端口

1
sudo vim /etc/ssh/sshd_config

把 # Port 22 修改为 Port 6022

最好使用1024到65535之间的一个别人猜不到的端口号

重启ssh服务

1
sudo service sshd restart 

1
sudo /etc/init.d/ssh restart

可以用iptables检查端口是否开启

禁止SSH的root登录

修改 /etc/ssh/sshd_config 文件

1
PermitRootLogin no

重启ssh服务

1
sudo service sshd restart

禁用密码登陆,使用RSA私钥登录

1
2
ssh-keygen #在客户端生成密钥
ssh-copy-id myserver1 #将公钥添加至服务端

还需要配置服务端

1
2
3
sudo vim /etc/ssh/sshd_config
PasswordAuthentication no #禁止密码认证
PermitEmptyPasswords no #禁止空密码用户登录

重启ssh服务

1
sudo service sshd restart

使用 Fail2ban

Ubuntu 16.04 系统源里带有 denyhosts ,到了Ubuntu 20.04默认不再包含。DenyHosts现在几乎不再更新了,所以来使用Fail2ban

检查是否安装了特定软件包

1
2
sudo apt list --installed | grep denyhosts
sudo apt list --installed | grep fail2ban

安装fail2ban

1
sudo apt-get install fail2ban

配置fail2ban

配置文件在 /etc/fail2ban/jail.conf 。 在配置文件的[DEFAULT]区,可以在此定义所有受监控的服务的默认参数

1
2
3
4
5
6
7
8
9
10
11
12
13
[DEFAULT]
# 以空格分隔的列表,可以是 IP 地址、CIDR 前缀或者 DNS 主机名
# 用于指定哪些地址可以忽略 fail2ban 防御
ignoreip = 127.0.0.1/8 ::1

# 客户端主机被禁止的时长
bantime = 60m

# 查找失败次数的时长
findtime = 10m

# 客户端主机被禁止前允许失败的次数
maxretry = 5

根据上述配置,fail2ban会自动禁止在最近10分钟内有超过5次访问尝试失败的任意IP地址。一旦被禁,这个IP地址将会在1小时内一直被禁止访问 SSH 服务

保存配置后重启服务

1
sudo service fail2ban restart

查看fail2ban运行状态

验证fail2ban成功运行:

1
2
$ sudo fail2ban-client ping
Server replied: pong

检验fail2ban状态

1
2
3
4
$ sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

检验一个特定监狱的状态

1
sudo fail2ban-client status 

上面的命令会显示出被禁止IP地址列表

解锁特定的IP地址

1
sudo fail2ban-client set sshd unbanip 192.168.1.8
作者

redtux

发布于

2023-08-06

更新于

2023-08-06

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.