如何在Ubuntu Linux上使用ufw限制SSH(TCP端口22)连接
时间:2020-01-09 10:40:24 来源:igfitidea点击:
如何在Ubuntu或Debian Linux服务器上使用UFW(不复杂的防火墙)限制ssh连接尝试?
UFW表示不复杂的防火墙(Uncomplicated Firewall) 。
它是Ubuntu上的默认防火墙。
但是,可以在其他Linux发行版上安装ufw。
例如Arch Linux,Debian,CentOS等。
换句话说,ufw只是用于管理Netfilter防火墙的前端。
它提供了一个命令行界面,旨在使开发人员和新Linux用户变得简单易用。
让我们看看如何在Ubuntu或Debian Linux上限制与ufw的SSH连接。
UFW的速率限制
您可以添加限制规则。
当前仅支持IPv4(Internet协议版本4)。
使用此语法,您可以拒绝来自最近30秒内尝试启动6个或更多连接的IP地址的连接。
此选项对于sshd之类的服务非常有用,因为它们是由僵尸程序和其他不良行为者攻击的。
因此,我们使用防火墙来保护服务器免受暴力攻击。
限制与ufw的SSH(TCP端口22)连接的语法
语法非常简单:
## ufw limit ssh various usage ## ufw limit ssh ufw limit ssh/tcp ufw limit ssh comment 'Rate limit for openssh server' ### if sshd is running on tcp port 2022 add #### ufw limit 2022/tcp comment 'SSH port rate limit'
上述规则对于防止暴力登录攻击很有用。
使用限制规则时,ufw通常将允许连接,但是如果IP地址尝试在30秒内启动六个或更多连接,则ufw将拒绝连接。
设置完成后,您可以使用以下命令进行验证:
$ sudo ufw limit ssh/tcp comment 'Rate limit for openssh serer' $ sudo ufw status
输出示例:
Status: active To Action From -- ------ --- 22/tcp LIMIT Anywhere # Rate limit for openssh serer 22/tcp (v6) LIMIT Anywhere (v6) # Rate limit for openssh serer
iptables中的实际规则如下:
-A ufw-user-input -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource -A ufw-user-input -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 --name DEFAULT --mask 255.255.255.255 --rsource -j ufw-user-limit -A ufw-user-input -p tcp -m tcp --dport 22 -j ufw-user-limit-accept
请注意,新的ssh规则将取代以前的ssh规则。
您也可以限制其他服务:
ufw limit {service} ## be careful with http/https limits as many users might be behind a large proxy server ## ufw limit 25/tcp ufw limit http ufw limit https