sudo grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
想要提升SSH连接的安全性吗?这里提供了一套切实可行的措施,这些方法能够显著减少遭受攻击的可能性。接下来,我将逐一为您详细阐述。
sudo grep "Failed password for invalid user" /var/log/auth.log | awk '{print $13}' | sort | uniq -c | sort -nr | more
修改默认端口
通常SSH的默认端口是22,这个端口很容易遭受攻击。您可以对/etc/ssh/sshd_config
文件进行修改,将Port 22
改为其他端口,例如Port 47832
。端口号的取值范围是从0到65535,但0到1024是知名端口,通常用于系统服务,所以不建议使用这些端口。修改完保存,重启SSH服务就可以使用新端口。
这种方式使得攻击者难以找到目标,提升了他们探测端口的不便。由于全面扫描所有端口费用昂贵,更改端口能够更好地保障服务器的安全。
密码管理要点
系统自动设定的管理员密码是随机的。切记不要将其修改为有规律的密码,例如生日或是简单的数字组合,这样很容易被破解。您可以将密码保存在手机里,这样既方便查阅又较为安全。
# vi /etc/ssh/sshd_config
RSAAuthentication yes #RSA认证
PubkeyAuthentication yes #开启公钥验证
AuthorizedKeysFile .ssh/authorized_keys #验证文件路径
PasswordAuthentication no #禁止密码认证
PermitEmptyPasswords no #禁止空密码
# 最后保存,重启sshd服务
sudo service sshd restart
若密码不慎外泄,需马上进行更换。在服务器端,执行相应指令以更改密码,并记下新的密码。采用复杂的密码可以有效增强服务器防护。
PermitRootLogin no
创建授权文件
在服务器用户目录中,首先创建一个名为.ssh
的文件夹。然后,通过执行chmod 700.ssh
命令,将此文件夹的权限设置为700。之后,再创建一个authorized_keys
文件,该文件是专门用来存放允许登录的密钥的。
建立的文件权限必须设定妥当,否则SSH服务可能无法识别。文件一旦创建成功,应将可登录的公钥加入其中,这样就可以实现基于密钥的验证,进而增强安全性。
新建管理用户
不建议直接用root身份来管理服务器,最好创建一个新的用户来进行操作。考虑到root权限很高,若密码被破解,服务器可能会面临风险。
[DEFAULT]
# 以空格分隔的列表,可以是 IP 地址、CIDR 前缀或者 DNS 主机名
# 用于指定哪些地址可以忽略 fail2ban 防御
ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24
# 客户端主机被禁止的时长(秒)
bantime = 86400
# 客户端主机被禁止前允许失败的次数
maxretry = 5
# 查找失败次数的时长(秒)
findtime = 600

mta = sendmail
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]
# Debian 系的发行版
logpath = /var/log/auth.log
# Red Hat 系的发行版
logpath = /var/log/secure
# ssh 服务的最大尝试次数
maxretry = 3
新用户应参考系统内的说明进行操作。操作完成后,应赋予相应的权限。之后,便可以利用该用户来管理服务器。即便密码出现泄露,也能有效减少损失。
配置fail2ban
$ sudo service fail2ban restart
安装fail2ban
可提升SSH服务器的安全性。需在配置文件中的[DEFAULT]
部分设定通用参数,同时针对不同服务在相应配置区域进行个别设置。
$ sudo systemctl restart fail2ban
监狱区内需设立 [ssh-iptables]
区域,并在此区域中特别设置与SSH相关的监禁策略。按照既定规则,fail2ban
系统将对过去10分钟内连续三次访问失败的IP地址实施禁止。即便系统重启,仍在禁止期限内的IP地址也将继续被禁止。
服务启动与权限
$ sudo fail2ban-client pingServer replied: pong
测试完毕fail2ban
后,需确保其能在系统启动时自动运行。在多数Linux系统中,iptables
通过/usr/sbin/iptables
进行操作,相关文档可在手册页中找到,通过man iptables
命令即可查阅。
$ sudo fail2ban-client status
iptables依赖内核模块支持,必须以超级用户身份进行操作。启用并维护这些服务,有助于确保服务器安全防护功能持续有效。
使用SSH连接时,你是否遇到过安全上的困扰?对于这些解决方法,你感觉如何?若觉得有帮助,请不要忘记点赞并转发这篇文章!
$ sudo fail2ban-client status ssh-iptables
$ sudo fail2ban-client set ssh-iptables unbanip 192.168.1.8