Ubuntu防火墙设置

Page content

About防火墙

防火墙是用于监控和过滤传入和传出网络流量的工具。 它通过定义一组确定是允许还是阻止特定流量的安全规则来工作。 Linux原始的防火墙工具iptables可用于Ubuntu下开启/关闭防火墙及端口。

但是iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw,以简化iptables的某些设定,其后台仍然是 iptables。

ufw 即uncomplicated firewall的简称,它的主要目标是使防火墙的管理变得更容易,一些复杂的设定还是要使用iptables。

安装 ufw

sudo apt-get install ufw

启用 ufw

sudo ufw enable
sudo ufw default deny

这两条命令的作用:开启防火墙,并在系统启动时自动开启。关闭所有外部对本机的访问,但本机访问外部正常。

开启/禁用 服务或端口

sudo ufw allow|deny [service]

打开或关闭某个端口,例如:

  • sudo ufw allow smtp 允许所有的外部IP访问本机的25/tcp (smtp)端口
  • sudo ufw allow 22/tcp 允许所有的外部IP访问本机的22/tcp (ssh)端口
  • sudo ufw allow 53 允许外部访问53端口(tcp/udp)
  • sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口
  • sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53
  • sudo ufw deny smtp 禁止外部访问smtp服务
  • sudo ufw delete allow smtp 删除上面建立的某条规则
  • sudo ufw allow proto tcp from 10.0.1.0/10 to 本机ip port 25:允许自10.0.1.0/10的tcp封包访问本机的25端口。

查看防火墙状态

sudo ufw status

一台常见的web server只需开启 443/80 22 53端口:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
53                         ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
53 (v6)                    ALLOW       Anywhere (v6)
  • 22: SSH登陆机器用
  • 443/80: http服务使用
  • 53: DNS使用 - DNS uses Port 53 which is nearly always open on systems, firewalls, and clients to transmit DNS queries.

重启防火墙

sudo ufw reload

小结

一般用户,只需如下设置:

sudo apt update
sudo apt install ufw
sudo ufw enable
sudo ufw default deny

以上三条命令已经足够安全了,如果你需要开放某些服务和端口,再使用sudo ufw allow开启。