在Ubuntu系统中,我一直用ufw命令来管理防火墙。当有人攻击我的服务器时,我会使用ufw屏蔽攻击者IP。
UFW (Uncomplicated Firewall) 是iptables的前端,它是Ubuntu防火墙默认配置工具。
使用ufw屏蔽IP地址
语法
sudo ufw deny from {要屏蔽的ip地址} to any
例如要屏蔽220.181.111.188的命令:
$ sudo ufw deny from 220.181.111.188 to any
显示防火墙状态和规则
$ sudo ufw status
使用ufw屏蔽IP地址(限制在某个端口)
语法
ufw deny from {要屏蔽的ip} to any port {端口}
例如,禁止220.181.111.189访问80端口:
$ sudo ufw deny from 220.181.111.189 to any port 80
使用ufw屏蔽IP地址(限制在某个端口和协议(tcp、utp))
语法
sudo ufw deny proto {tcp|udp} from {要屏蔽的ip} to any port {端口}
例如,禁止220.181.111.200使用tcp访问22端口:
$ sudo ufw deny proto tcp from 220.181.111.200 to any port 22
使用ufw屏蔽子网
语法
sudo ufw deny proto tcp from sub/net to any port 22
示例:
$ sudo ufw deny proto tcp from 202.222.222.0/24 to any port 22
取消屏蔽
$ sudo ufw status
$ sudo ufw delete NUM // NUM代表序号
遇到的问题:屏蔽IP规则没起作用
UFW (iptables)规则的是按顺序执行的。例如,如果有一个规则允许访问22的tcp端口(sudo ufw allow 22),在它之后有一个规则屏蔽一个IP地址(ufw deny proto tcp from 202.54.1.1 to any port 22)。前一个规则起作用了,屏蔽IP地址202.54.1.1没有起作用。为了避免这个问题,你需要编辑/etc/ufw/before.rules文件:
$ sudo vim /etc/ufw/before.rules
找到
# End required lines
在下面添加
保存退出文件,重新加载firewall:
$ sudo ufw reload