Linux (乌班图)防火墙配置 ufw-iptables

Ubuntu的防火墙配置-ufw-iptables

防火墙的概念

防火墙是计算机中一款应用软件或基于硬件的网络安全系统。它根据应用配置的规则,分析数据包,然后决定是否允许此数据包通过,来控制整个系统的网络数据进出访问权限。

UFW简介

自打2.4版本以后的Linux内核中, 提供了一个非常优秀的防火墙工具。这个工具可以对出入服务的网络数据进行分割、过滤、转发等等细微的控制,进而实现诸如防火墙、NAT等功能。

一般来说, 我们会使用名气比较的大iptables等程序对这个防火墙的规则进行管理。iptables可以灵活的定义防火墙规则, 功能非常强大。但是由此产生的副作用便是配置过于复杂。

一向以简单易用著称Ubuntu在它的发行版中,附带了一个相对iptables简单很多的防火墙配置工具:UFW。

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

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

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

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


Ubuntu下UFW的安装与防火墙的配置

防火墙的开启与关闭

参考资料1

 参考资料2

打开Linux终端 (管他三七二十一,我们先对软件源列表更新下,防止安装软件的时候出现无法定位软件包的问题)

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

安装ufw

扫描二维码关注公众号,回复: 2736170 查看本文章
执行安装ufw命令: sudo apt-get install ufw  (注:Ubuntu下默认已经安装了ufw了)

开启防火墙

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

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

关闭防火墙

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

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

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

查看防火墙状态

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

例如:我开放了192.168.31.143这个IP,并只为这个IP开放了11211端口,执行sudo ufw status命令后,会显示如下信息


查看UFW状态和配置规则

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

配置防火墙规则

当你需要开始配置你的防火墙规则时,首先,你需要设置默认规则:拒绝所有流入连接,允许流出连接。意思是,不允许任何人连接你的主机,允许主机内的任何应用访问外部网络。

sudo ufw default deny incoming
sudo ufw default allow outgoing

开启一个端口

(开启端口的意思就是:如果一个端口打开了,那么外部网络就可以通过这个端口来访问我们的服务

例如:我在Linux上安装了Memcached服务,它的默认端口号是11211。(我这台Linux服务器的IP地址是192.168.31.165) 现在我在这台Linux服务器中开启防火墙,并打开了这个11211端口,那么外部网络就可以通过192.168.31.165:11211这个地址来请求这个Memcached服务。如果我关闭了这个11211端口,那么外部网络再想通过192.168.31.165:11211这个地址来请求Memcached服务,就会被防火墙拦截,这样外网就无法请求成功了。

执行开启11211端口命令: sudo ufw allow 11211           (即:允许外部访问11211端口)

禁用端口

执行禁用11211端口命令: sudo ufw delete allow 11211        (即:禁止外部访问11211端口)

开放指定IP访问

执行开放IP命令: sudo ufw allow from 192.168.31.1  (即:允许192.168.31.1这个IP访问所有的本机端口)

禁用指定IP访问

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

删除规则

(例如:上面定义了一个开放指定IP访问的规则,我们通过下面语句就可以将这条规则删除)

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

开放指定IP指定端口

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

指定端口范围  【指定端口范围时,你必须指定协议类型(TCP 或 UDP)】

你可以指定一个端口范围,来配置防火墙策略,当有些服务需要使用多个端口时,这个就起到了作用。
如,为了允许所有 X11 连接,他们使用的端口范围是 6000 ~ 6007,你可以这样配置:

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

配置子网

当你需要允许子网内所有的 IP,你可以 CIDR 的格式来配置,例如:当你需要允许 IP 地址从 192.168.1.1 到 192.168.1.254 内所有 IP 的连接时,你可以这样配置:

sudo ufw allow from 192.168.1.1/24

配置子网,并指定端口号

当你需要允许子网内所有的 IP来访问服务器中的11211这个端口的时候,你可以 CIDR 的格式来配置,例如:当你需要允许 IP 地址从 192.168.1.1 到 192.168.1.254 内所有 IP 的连接访问11211这个端口时,你可以这样配置:

sudo ufw allow from 192.168.1.1/24 to any port 11211

使用IPv6

如果你的 Ubuntu 服务器已启用 IPv6,为了确保 UFW 能支持 IPv6 协议。

打开 UFW 的相关配置,使用你最喜欢的编辑器,这里我使用 vi :

sudo vi /etc/default/ufw

然后,确认 IPv6 是否设置成 yes,如果没有则设置为 yes,大致如下:

...
IPV6=yes
...

指定网络接口

ifconfig、route、ip route、ip addr、 ip link 用法与区别

如果您想创建只适用于特定网络接口的防火墙规则,您可以通过指定 allow in on 加上网络接口的名称 来配置规则。

在配置之前你可以先查找所有的网络接口,再配置:

执行查看所有网络接口命令:sudo ip addr          (也可以用 sudo ifconfig -a查看)

查询结果一般如下(假设eth0 为公网地址,eth1为内网地址)

# Output Excerpt:
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
...
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default 
...
上面列举了网络接口的一些信息,他们通常叫做 eth0,eth1 或 enp0s0,enp0s1 之类的名字。

假如你的 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





猜你喜欢

转载自blog.csdn.net/Fanbin168/article/details/80890485