树莓派使用教程4:防火墙(ufw)使用

1.引言

Linux系统下一般会使用iptables对防火墙的规则进行管理。iptables可以灵活的定义防火墙规则, 功能非常强大,但是由此产生的副作用便是配置过于复杂。在deepin系的系统里,附带了一个相对iptables简单很多的防火墙配置工具:ufw

2.安装

一般系统已经自带了ufw,如果意外卸载了,可以执行以下命令安装:

sudo apt install ufw

3.查看防火墙状态

sudo ufw status
sudo ufw status numbered  //按编号显示

4. 防火墙版本

sudo ufw version

5.开启/禁止端口

sudo ufw allow|deny [service]

6.开启/关闭防火墙 (默认设置是disable)

sudo ufw enable|disable

7.常见用法

7.1基本使用

sudo ufw enable
sudo default deny

运行以上两条命令后,开启了防火墙,并在系统启动时自动开启。关闭所有外部对本机的访问,但本机访问外部正常;此时系统已经足够安全了,如果你需要开放某些服务,再使用sudo ufw allow开启。

设置默认策略(默认策略即为拒绝所有传入连接,允许所有传出链接)

sudo ufw default deny incoming
sudo ufw default allow outgoing

允许SSH连接(重要!)否则你将无法连接云服务器…

sudo ufw allow ssh
sudo ufw allow 22

7.2启动端口

示例:

sudo ufw allow from 123.45.67.89           //允许从一个 IP 地址连接
sudo ufw allow from 123.45.67.89/24        //允许特定子网的连接:
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.100          //允许此IP访问所有的本机端口
sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53

sudo ufw allow www
sudo ufw allow 80/tcp

sudo ufw allow ftp
sudo ufw allow 21/tcp

sudo ufw allow 22/tcp             //允许所有的外部IP访问本机的22/tcp (ssh)端口
sudo ufw allow 53                 //允许外部访问53端口(tcp/udp)
sudo ufw allow 80                 //允许外部访问80端口 等价 sudo ufw allow http
sudo ufw allow http

sudo ufw allow from 192.168.1.1   //允许此IP访问所有的本机端口    
sudo ufw allow from 111.111.111.111 to any port 22    //允许特定IP特定端口的连接
sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53
sudo ufw allow smtp              //允许所有的外部IP访问本机的25/tcp (smtp)端口

允许特定 IP/端口的组合:

sudo ufw allow from 123.45.67.89 to any port 22 proto tcp
//proto tcp 可以删除或者根据你的需求改成 proto udp,所有例子的 allow 都可以根据需要变成 deny。

允许特定端口范围连接

sudo ufw allow 1000:2000/tcp
sudo ufw allow 2001:3000/udp

//拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口
sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22

//可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16

7.3禁用端口

示例:

sudo ufw deny http                      //拒绝http连接
sudo ufw deny smtp                      //禁止外部访问smtp服务

sudo ufw deny from 111.111.111.111      //拒绝特定IP连接
sudo ufw deny from 192.168.1.5 to any   //拦截或拒绝来自192.168.1.5的所有数据包

除了基于端口的允许或阻止,UFW 还允许您按照 IP 地址、子网和 IP 地址/子网/端口的组合来允许/阻止:

ufw deny from {ip-address-here} to any port {port-number-here}

//例子:
sudo ufw deny from 202.54.1.5 to any port 80    //阻断或拒绝IP地址202.54.1.5访问80端口的请求

拦截特定IP、端口以及协议:

sudo ufw deny proto {tcp|udp} from {ip-address-here} to any port {port-number-here}

//例如:阻断IP地址202.54.1.1访问tcp 22端口(FTP协议),可以输入
sudo ufw deny proto tcp from 202.54.1.1 to any port 22
sudo ufw status numbered

拦截子网

sudo ufw deny proto tcp from sub/net to any port 22
sudo ufw deny proto tcp from 202.54.1.0/24 to any port 22

7.4删除规则

sudo ufw delete allow ssh
sudo ufw delete allow 22

sudo ufw delete allow http        
sudo ufw delete allow 80
sudo ufw delete allow 80/tcp

sudo ufw delete allow 1000:2000/tcp

如果规则又长又复杂,问题就比较棘手了。这里有一个更简单的方法,需要分成两个步骤:

sudo ufw status numbered    //按规则来编号防火墙规则。命令会将所有防火墙规则以数字列表形式列出来
# 请将 [number] 替换成规则列表对应的数字序号。
sudo ufw delete 1           //按规则编号删除防火墙规则 sudo ufw delete [number]
sudo ufw delete 4           //删除编号为4的规则

8.详细说明

//[]内的为选配项
//命令激活|关闭|重新载入
ufw enable|disable|reload

//命令默认 允许|阻止|拒绝 [访问本机的规则|向外访问的规则
//注:reject让访问者知道数据被拒绝(回馈拒绝信息)。deny则直接丢弃访问数据,访问者不知道是访问被拒绝还是不存在该主机。
ufw default allow|deny|reject [incoming|outgoing]

//命令日志 开启|关闭|“级别”
ufw logging on|off|LEVEL

//命令复位
ufw reset

//命令状态 [详细|被编号的规则]
ufw status [verbose|numbered]

//命令显示 “报告类型”
ufw show REPORT

//命令[删除][插到“x号规则”之前] 允许|阻止|拒绝|限制 [进|出] [记录新连接|记录所有数据包] “端口” [/“协议”]
ufw [delete] [insert NUM] allow|deny|reject|limit  [in|out][log|log-all] PORT[/protocol]

//命令[删除][插到x号规则之前] 允许|阻止|拒绝|限制 [进|出 基于“什么网络设备”] [协议 “协议”] [来源 “地址” [端口 “端口”]] [目标 “地址” [端口 “端口”]]
ufw [delete] [insert NUM] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]

//命令删除 “第X号规则”
ufw delete NUM

//命令程序 清单|信息|默认|更新
ufw [--dry-run] app list|info|default|update

9.参数

–version
显示程序版本号

-h , –help
显示帮助信息

–dry-run
不实际运行,只是把涉及的更改显示出来。

enable
激活防火墙,开机时自动启动

disable
关闭防火墙,开机时不启动

reload
重新载入防火墙

default allow|deny|reject 方向
方向是指:向内(incoming)|向外(outgoing)。如果更改了默认策略,一些已经存在的规则可能需要手动修改。更多内容看“规则示例”一节。

logging on|off|“级别”
切换日志状态。日志记录包使用的是系统日志。“级别”有好几个,默认是低级(low)。详细内容看“日志”一节。

reset [--force]
关闭防火墙,并复位至初始安装状态。如果使用–force选项,则忽略确认提示。

status
显示防火墙的状态和已经设定的规则。使用status verbose显示更详细的信息。‘anywhere’与‘any’、‘0.0.0.0/0’一个意思。

show “报告类型”
显示防火墙运行信息。详细内容看“报告类型”

limit “规则”
此命令目前只能用于IPv4。还不支持IPv6.
学习更多知识,加QQ群:1098090823
威武网 » 树莓派使用教程4:防火墙(ufw)使用

提供最优质的资源集合

立即查看 了解详情