UFW是简单防火墙的意思(Uncomplicated Firewall), 而不是Ubuntu Firewall的意思。说它简单是相对功能强大而配置复杂的iptables而言, 在Ubuntu的发行版本中, ufw作为默认的防火墙配置工具. UFW 可以对进出的网络数据包进行过滤, 转发等的控制。
1. UFW Installation
sudo apt-get install ufw
2. Basic usage
启用/关闭ufw
$ sudo ufw enable|disable
查看防火墙状态:
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp ALLOW Anywhere (v6) 可以看到上面的规则说允许所有的外部IP(包括ipv4 and ipv6)访问本机的22/tcp (ssh)端口.
允许外部访问53端口(tcp/udp)
sudo ufw allow 53
允许IP192.168.1.100访问所有的本机端口
sudo ufw allow from 192.168.1.100
允许192.168.0.1访问192.168.0.2的22/tcp(ssh)端口
sudo ufw allow proto tcp from 192.168.0.1 to 192.168.0.2 port 22
加一条规则:禁止外部访问smtp服务
sudo ufw deny smtp
删除上面规则
sudo ufw delete allow smtp
还可以允许或禁止一个服务
sudo ufw allow ssh
sudo ufw deny ssh
设置日志开关
sudo ufw logging on|off
3. Troubleshooting
-
之前遇到无法ssh到Ubuntu host, 但network是通的, 最后发现端口没有开,把前面的规则加上就ok了,当前直接disable 也行,不建议。
sudo ufw allow 22/tcp
-
Ubuntu通过virt-manager 创建VM, 通过Bridge 模式上网,发现不管怎样都无法通过
dhclient
获得动态ip, 手动加上静态IP address, 还是没法ping 通外网, 但是可以ping 宿主机。sudo ufw disable
后ok了,原来又是ufw在作怪,转发功能是关闭的。$ sudo vim /etc/default/ufw set to DEFAULT_FORWARD_POLICY="ACCEPT", default is "DROP". $ sudo ufw reload
问题解决。