UFW (简单的防火墙) 是广泛使用的 iptables 防火墙 的前端应用 , 是一个主机端的iptables类防火墙配置工具,这是非常适合于基于主机的防火墙。UFW 即提供了一套管理网络过滤器的框架,又提供了控制防火墙的命令行界面接口。它给那些不熟悉防火墙概念的 Linux 新用户提供了友好、易使用的用户界面。

同时,另一方面,它也提供了命令行界面,为系统管理员准备了一套复杂的命令,用来设置复杂的防火墙规则。

UFW 对像 Debian、Ubuntu 和 Linux Mint 这些发布版本来说也是上上之选。

注明:ufw并不是一个防火墙,尽管它叫做Ubuntu firewall,但它本身并没有防火墙的功能,它只是一个管理netfilter防火墙的工具,其核心还是netfilter的iptables
 



执行更新软件源列表命令:sudo apt-get udpate



 

安装ufw



执行安装ufw命令: sudo apt-get install ufw (注:Ubuntu下默认已经安装了ufw了)



开启防火墙

注意:在开启防火墙之前,你需要确保你允许了 SSH 连接,否则当你关闭远程连接后,你就无法再连上了。博主自己就曾用这招坑了自己!



执行开启防火墙命令: sudo ufw enable



关闭防火墙



执行关闭防火墙命令: sudo ufw disable



 

重启防火墙(编辑或新增规则后需要重启防火墙才能生效)



执行重启防火墙命令: sudo ufw reload



查看防火墙状态



执行查看防火墙状态命令: sudo ufw status



 

查看UFW状态和配置规则



执行查看防火墙状态和配置规则命令: sudo ufw status verbose



开启一个端口



sudo ufw allow 11211 (即:允许外部访问11211端口)



ufw allow 25/tcp # 允许其它主机使用tcp协议访问本机25端口



ufw delete deny 80/tcp # 要删除规则,只要在命令中加入delete就行了



设置允许访问 http



sudo ufw allow 80/tcp



 



禁用端口



sudo ufw delete allow 11211 (即:禁止外部访问11211端口)





开放指定IP访问



sudo ufw allow from 192.168.31.1  (即:允许192.168.31.1这个IP访问所有的本机端口)





禁用指定IP访问



sudo ufw deny allow from 192.168.31.1  (即:禁止192.168.31.1这个IP访问所有的本机端口)



sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 要拒绝所有的流量从TCP的10.0.0.0/8 到端口22的地址192.168.0.1



 



删除规则



执行删除规则命令: sudo ufw delete allow from 192.168.31.1  (即:删除“允许192.168.31.1这个IP访问所有的本机端口的规则”)



删除 smtp 端口的许可 $ sudo ufw delete allow smtp 允许某特定 IP



删除条命令建立的规则,使用: ufw delete deny 80/tcp



 



开放指定IP指定端口



sudo ufw allow from 192.168.31.1 to any port 11211 (即:允许192.168.31.1这个IP访问11211这个端口)



为了允许所有 X11 连接,他们使用的端口范围是 6000 ~ 6007,你可以这样配置:



sudo ufw allow 6000:6007/tcp sudo ufw allow 6000:6007/udp





配置子网

当你需要允许 IP 地址从 192.168.1.1 到 192.168.1.254 内所有 IP 的连接时,你可以这样配置:



sudo ufw allow from 192.168.1.1/24



配置子网,并指定端口号

允许 IP 地址从 192.168.1.1 到 192.168.1.254 内所有 IP 的连接访问11211这个端口时,你可以这样配置:



sudo ufw allow from 192.168.1.1/24 to any port 11211



 eth0 为公网地址,需要向外开放 80 端口



sudo ufw allow in on eth0 to any port 80



上面配置中,服务器将会接受来自于公网的 HTTP 请求。

 

MySQL 服务器(监听 3306)只接受通过内网网卡 eth1 的请求,你可以这样:



sudo ufw allow in on eth1 to any port 3306



重置所有规则



执行重置所有规则命令:sudo ufw reset