Linux 2.4内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,它免费且功能强大,可以对流入、流出的信息进行细化控制,它可以实现防火墙、NAT和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。

但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是 iptables。ufw 即uncomplicated firewall的简称,一些复杂的设定还是要去iptables。

查看ufw防火墙状态(返回 inactive为未启用),查看使用中的规则:

sudo ufw status

开启/关闭ufw防火墙 (默认设置是'disable'):

sudo ufw enable|disable

设置默认策略 (外来访问默认允许/拒绝):

sudo ufw default allow|deny

允许其它主机访问本机21端口,协议包含tcp和udp:

sudo ufw allow 21

禁止 (非删除)外部从该端口访问本机:

sudo ufw deny 80

仅允许/拒绝其它主机使用tcp协议访问本机80端口(/udp协议同理):

sudo ufw allow/deny 80/tcp

删除以前定义的‘允许/拒绝访问 80端口’的规则 (端口号后可跟/tcp或/udp,表示tcp或udp封包):

ufw delete allow|deny 80

检查 /etc/services文件,查看服务的名字及对应的端口和协议,使用命令启用相应端口:

sudo ufw allow ftp

删除 ftp 端口的许可:

sudo ufw delete allow ftp

允许某特定 IP 访问本机:

sudo ufw allow from 192.168.1.10

删除上面的规则:

sudo ufw delete allow from 192.168.1.10

转换日志状态 (on/off):

sudo ufw logging on|off

修改后记得重载ufw配置使新规则生效(重启主机也可以):

sudo ufw reload

许可或者屏蔽端口 (可以在 'status' 中查看到服务列表)。可以用“协议:端口”的方式指定一个存在于 /etc/services中的服务名称,也可以通过包的 meta-data。 'allow' 参数将把条目加入 /etc/ufw/maps,而 'deny' 则相反。

ufw相关的文件和文件夹有:
  /etc/ufw/:里面是一些ufw的环境设定文件,如 before.rules, after.rules, sysctl.conf, ufw.conf,及 for ip6 的 before6.rule 及 after6.rules。这些文件一般按照默认的设置进行就ok。

  若开启ufw之后, /etc/ufw/sysctl.conf会覆盖默认的 /etc/sysctl.conf文件,若你原来的 /etc/sysctl.conf做了修 改,启动ufw后,若 /etc/ufw/sysctl.conf中有新赋值,则会覆盖 /etc/sysctl.conf的,否则还以 /etc /sysctl.conf为准。当然你可以通过修改 /etc/default/ufw中的“IPT_SYSCTL=”条目来设置使用哪个 sysctrl.conf.

  /var/lib/ufw/user.rules 这个文件中是我们设置的一些防火墙规则,打开大概就能看明白,有时我们可以直接修改这个文件,不用使用命令来设定。修改后记得ufw reload重启ufw使得新规则生效