上周我遭受了来自中国电信浙江的严重 SSH 登录攻击。我的 IP 范围是:122.224.216.0 - 122.225.191.255 但我不知道如何在防火墙 - csf v7.56 中阻止这样的 IP 范围?!我使用 centos6 和防火墙 - csf v7.56。如果可能的话请帮助我,谢谢。
答案1
要使用配置服务器防火墙阻止 IP 范围,请使用:
csf -d 122.224.216.0/21
csf -d 122.224.224.0/19
csf -d 122.225.0.0/17
csf -d 122.225.128.0/18
如果您希望阻止任何进一步的 IP(范围),那么我建议您查看此工具: http://ip2cidr.com/
进一步详细地说,如果您希望保护您的服务器免受暴力 SSH 攻击,您可以使用以下方法:
1-如果您总是从同一个 IP 地址连接到您的服务器,那么您可以关闭端口 22 的防火墙,以关闭除您自己的 IP 地址之外的所有端口。
iptables -A INPUT -p tcp -d 0/0 -s YOUR.IP.GOES.HERE --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -d 0/0 --dport 22 -j DROP
然后运行'iptables-save'
笔记:如果您以这种方式设置 IP 表,那么当您的 IP 发生变化时,可能会导致您失去对服务器的 ssh 访问权限。
2- 在非标准端口上运行 sshd。由于大多数自动攻击仅尝试连接端口 22,因此这可能是一种躲避自动攻击者的有效方法。要配置此功能,只需更改 Port 行/etc/ssh/sshd_config
并重新启动 ssh
端口 1022
3- 使用 ssh 配置中的 AllowUsers 指令仅允许某些用户或 IP。在 中/etc/ssh/sshd_config
,您可以指定允许的用户列表,如下所示:
AllowUsers bob john [email protected] [email protected]
这将允许用户“bob”和“john”从任何地方登录,并且root只允许从这两个IP地址登录。
4- 使用强密码!暴力破解会尝试常用密码,如字典中的单词(或单词组合)、姓名和常用密码。强密码通常使用大小写字符、数字和非字母数字字符的组合。
5- 更好的办法是,根本不要使用密码。相反,在服务器上安装公钥并使用它来登录。如果所有用户都使用公钥,则可以将 PasswordAuthentication 设置为“no”。要仅为 root 禁用密码验证,请使用“PermitRootLogin without-password”。对于 Debian/Ubuntu,您还需要关闭“UsePam”和“ChallengeResponseAuthentication”。
6- 如果您需要允许从任意地址登录,请考虑使用 DenyHosts 或 Fail2ban 等程序。它们会监视失败的登录,并将攻击者的 IP 地址添加到 /etc/hosts.deny 和/或更新防火墙规则以将其路由为空。DenyHosts 还可以配置为与全局数据库同步,以便您可以主动拒绝其他用户列入黑名单的主机。请记住,当您尝试登录时输入错误的密码可能会导致您无法使用 VPS。
7- 在‘iptables’中使用‘hashlimit’:
iptables -I INPUT -m hashlimit -m tcp -p tcp --dport 22 --hashlimit 1/min
--hashlimit-mode srcip --hashlimit-name ssh -m state --state NEW -j ACCEPT
此规则限制每分钟一个 IP 地址与 SSH 端口建立一次连接。
有关更多信息,请参阅“man iptables”和“iptables -m hashlimit --help”。
(信息来自:http://rimuhosting.com/knowledgebase/linux/misc/preventing-brute-force-ssh-attacks)