UFW简介和使用建议

2015年07月02日

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

  1. 之前遇到无法ssh到Ubuntu host, 但network是通的, 最后发现端口没有开,把前面的规则加上就ok了,当前直接disable 也行,不建议。

    sudo ufw allow 22/tcp
    
  2. 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
    

问题解决。