此程序(ufw)是为了使linux防火墙更易于使用和管理。(通常已默认安装)ufw与其它linux类防火墙一样,使用iptable作为后台。
安装方法:
sudo apt-get install ufw
[]是代表可选内容。可能需要root权限,如无法运行,请使用 sudo ufw……的命令结构。“”中的内容不能照抄,要按需要更改。
ufw [--dry-run] enable|disable|reload 命令[--试运行]激活|关闭|重新载入
ufw [--dry-run] default allow|deny|reject [incoming|outgoing] 命令[--试运行]默认 允许|阻止|拒绝 [访问本机|向外访问]
ufw [--dry-run] logging on|off|LEVEL 命令[--试运行]日志 开启|关闭|“级别”
medium级别及更上级会记录许多内容,有可能短时间内撑爆你的硬盘。特别是用在服务器一类的机器上。
ufw [--dry-run] reset 命令[--试运行]复位
ufw [--dry-run] status [verbose|numbered] 命令[--试运行]状态 [详细|规则编号]
ufw [--dry-run] show REPORT 命令[--试运行]显示 “报告类型”
ufw [--dry-run] [delete] [insert NUM] allow|deny|reject|limit [in|out][log|log-all] PORT[/protocol] 命令[--试运行][删除] [插到“x号规则”之前] 允许|阻止|拒绝|限制 [进|出] [记录新连接|记录所有数据包] “端口” [/“协议”]
ufw [--dry-run] [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 [--dry-run] delete NUM 命令[--试运行] 删除 “第X号规则”
ufw status
ufw [--dry-run] app list|info|default|update 命令 [--试运行] 程序 清单|信息|默认|更新
命令方式:(如:ufw -h)
ufw 参数
--version 显示程序版本号
-h , --help 显示帮助信息
--dry-run 不实际运行,只是把涉及的更改显示出来。
enable 激活防火墙,开机时自动启动
disable 关闭防火墙,开机时不启动
reload 重新载入防火墙
reset [--force] 关闭防火墙,并复位至初始安装状态。如果使用--force选项,则忽略确认提示。
status 显示防火墙的状态和已经设定的规则。使用status verbose显示更详细的信息。‘anywhere’与‘any’、‘0.0.0.0/0’一个意思。
show “报告类型” 显示防火墙运行信息。详细内容看“报告类型”
limit “规则” 限制连接次数。通常用于登录端口,防止暴力破解。如果同一个IP地址在30秒之内进行了6次及6次以上的连接,ufw将阻止(deny)该连接。 此命令目前只能用于IPv4。还不支持IPv6.
ufw allow 53
允许其它机子访问本机53端口,协议包含tcp和udp。
ufw allow 25/tcp
允许其它机子使用tcp协议访问25端口。
ufw allow smtp
ufw allow in http
许可访问本机http端口(80)
ufw reject out smtp
禁止访问外部smtp端口,不告知“被防火墙阻止”。
ufw deny out to 192.168.1.1
禁止本机192.168.1.1对外访问。比如本机有多个IP时(通过虚拟网卡、多网卡等)。告知“被防火墙阻止”
ufw deny proto tcp to any port 80
阻止使用tcp协议向任何地址的80端口发送数据包。告知“被防火墙阻止”(以下略写)
ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25
阻止来源为10.0.0.0/8(255.0.0.0)这个网络段的数据包通过tcp协议发送到192.168.0.1的25端口。
ufw reject out on wlan0 to 119.75.217.56
禁止通过本机无线网卡wlan0联接到119.75.217.56(已测试)
sudo ufw deny out on wlan0 from 192.168.1.2 to 119.75.217.56
禁止通过本机192.168.1.2无限网卡wlan0发送数据包到119.75.217.56(已测试)。当IP被改为192.168.1.3或其它就能通过wlan0连接到119.75.217.56
ufw deny proto tcp from 2001:db8::/32 to any port 25
阻止IPv6为2001:db8::/32类型的地址,连接25端口
ufw allow proto tcp from any to any port 80,443,8080:8090
此例,“输入端口号”字符数为4个。命令意思是阻止通过tcp协议发送数据包到80,443,8080~8090端口
ufw limit ssh/tcp
ufw reject auth
ufw allow in on eth0 to any port 80 proto tcp
ufw deny 80/tcp 要删除这条命令建立的规则,使用: ufw delete deny 80/tcp
当然,也可以使用规则号来进行删除。比如要第3号规则 ufw delete 3
注意,如果你开启IPv6功能。要同时删除IPv4和IPv6的规则(比如:ufw allow 22/tcp),如果用规则号的方式删除可能只删除了一个。
ufw status numbered(也就是规则号)
ufw allow log 22/tcp
更多内容看“日志sudo ufw default deny”一节
特殊例子:允许RFC1918网络结构访问本机:
ufw allow from 10.0.0.0/8 ufw allow from 172.16.0.0/12 ufw allow from 192.168.0.0/16
其实这个就是用CIDR(无类别域间路由选择,Classless and Subnet Address Extensions and Supernetting)的形式表示的一个网段,或者说子网。
192.168.0.0/24”就表示,这个网段的IP地址从192.168.0.1开始,到192.168.0.254结束(192.168.0.0和192.168.0.255有特殊含义,不能用作IP地址);子网掩码是255.255.255.0。
上面的子网掩码怎么来的呢?其实关键就在“24”上。我们知道IP地址是四个十进制数组成的,相当于32位二进制。用CIDR表示形式,后一个数字将这32位进行了间隔(以24为例):前24位用"1"表示,后面8位用0表示,得到一个二进制数:
11111111 11111111 11111111 00000000。
将其转化为十进制,就是:255.255.255.0了。这个不就是子网掩码,netmask。
对应的:
/8 就是 255.0.0.0; /16就是 255.255.0.0
比如要把192.168.0.0/24分为两个网络。192.168.0.0对应2进制为
11000000 10101000.00000000 00000000
子网掩码原为255.255.255.0
11111111 11111111 11111111 00000000
11111111 11111111 11111111 10000000
CIDR表示就很简单了:192.168.0.0/25即192.168.0.0~192.168.0.127;192.168.0.128/25即192.168.0.128~192.168.0.255
怎么样比你换算半天二进制要好得多吧。
此章节还未被编辑
ufw app list
ufw allow <程序名字> ufw allow CUPS ufw allow from 192.168.0.0/16 to any app <程序名字> 注意,端口号已经被程序名所对应的策略所包括,不要再重新列举端口号。
ufw app into <程序名字> 注意:程序名字是清单上有的才行。程序名字改用用all,可以看全部策略。
ufw app update <程序名字> 程序名字改用用all,则更新整个清单。
ufw app update --add-new <程序名字>
注意:update --add-new参数的行为由此命令配置: ufw app default skip|allow|deny 默认是skip,也就是没有设定。
警告:如果程序规则设定为default allow ,将会引起很大的风险。请三思而后行!
ufw的报告是基于系统。使用形式是iptable格式:
完整报告,下面是该报告的细选。
显示系统对tcp的监听和udp的开放状态。同时显示被监听端口的地址。如果地址变为“*”,说明该端口对所有地址开放。接下来是显示可能影响该端口的规则。
查看ufw防火墙是否在工作,查看使用中的规则。
sudo ufw status
启动ufw防火墙
sudo ufw enable
启动默认防御(阻止外部联接,放行对外联接)。一般用户到这一步算是可以了。
sudo ufw default deny