个人工具

Ufw使用指南

来自Ubuntu中文

Cat650讨论 | 贡献2010年9月5日 (日) 13:08的版本

跳转至: 导航, 搜索

描述

此程序(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]
 命令[--试运行]默认 允许|阻止|拒绝 [访问本机的规则|向外访问的规则]

注:reject让访问者知道数据被拒绝(回馈拒绝信息)。deny则直接丢弃访问数据,访问者不知道是访问被拒绝还是不存在该主机。

 ufw [--dry-run] logging on|off|LEVEL
 命令[--试运行]日志 开启|关闭|“级别”
 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 [--dry-run] app list|info|default|update
 命令 [--试运行] 程序 清单|信息|默认|更新

参数

 --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.

规则示例

  • 规则可以简写也可以完整表达。简写的规则只能指定端口和(或)协议被允许或阻止。默认是访问本机的规则(incoming)。例如:
 ufw allow 53
 允许其它机子访问本机53端口,协议包含tcp和udp。
  • 如果要控制协议,只要加入“/协议”在端口后面就行了。例如:
 ufw allow 25/tcp
 允许其它机子使用tcp协议访问25端口。
  • UFW也可以检查 /etc/services文件,明白服务的名字及对应的端口和协议。我们使用服务的名称即可。
 ufw allow smtp
  • UFW同时支持出入口过滤。用户可以使用in或out来指定向内还是向外。如果未指定,默认是in。例如:
 ufw allow in http
 ufw reject out smtp
 ufw deny out to 192.168.1.1
 阻止向192.168.1.1发送信息
  • 用户也可使用完整的规则来指定来源与目的地,还有端口。书写规则基于OpenBSD PF。举例:
 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
 This will deny all traffic from the RFC1918 Class A network to tcp port 25 with the address 192.168.0.1.(这条命令目前无法翻译 from 和 to的关系,希望后来者更改)
  • ufw也可以使用IPv6协议。但要事先在/etc/default/ufw 中设定IPv6为启动状态。举例:
 ufw deny proto tcp from 2001:db8::/32 to any port 25
 阻止IPv6为2001:db8::/32类型的地址,连接本机25端口
  • ufw可以连续例举端口号。端口号间必须使用逗号或分号,不能使用空格。“输入端口号”字符数最多不能超过15过(8080:8090算两个字符)。比如允许80,443,8080~8090这几个端口接受tcp传入连接。
 ufw allow proto tcp from any to any port 80,443,8080:8090
 此例,“输入端口号”字符数为4个。
  • ufw可以对连接数率进行限制,以防范暴力登录攻击。如果同一个IP地址在30秒之内进行了6次及6次以上的连接,ufw将阻止(deny)该连接。可以查看更多信息
 ufw limit ssh/tcp
  • 当然有些时候我们想让访问者知道他的访问被拒绝了,而不是保持沉默让他不知道哪出了问题。就使用reject代替deny
 ufw reject auth
  • 默认情况下ufw的所有规则针对所有网络设备(比如网卡1,网卡2,无线网卡1,虚拟网卡1……)。但是我们可以特别指定,某规则在什么网络设备上生效。注意只能使用设备号,不能用别名。比如有线网卡:eth0(你可以使用ifconfig命令查看你现有的网络设备)
 ufw allow in on eth0 to any port 80 proto tcp
  • 要删除规则,只要在命令中加入delete就行了。比如:
 ufw deny 80/tcp
 要删除这条命令建立的规则,使用:
 ufw delete deny 80/tcp
 当然,也可以使用规则号来进行删除。比如要第3号规则
 ufw delete 3
 注意,如果你开启IPv6功能。要同时删除IPv4和IPv6的规则(比如:ufw allow 22/tcp),如果用规则号的方式删除可能只删除了一个。
  • 显示第几号规则,可以使用这样的命令
 ufw status numbered(也就是规则号)
  • 日志功能。如果使用log将记录所有符合规则的新连接,如果使用log-all将记录所有符合规则的数据包。例如,要允许并记录shh(22/tcp)上的新连接:
 ufw allow log 22/tcp
 更多内容看“日志”一节

特殊例子: 允许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

最后一条经过测试,范围大约是192.168.0.0~192.168.225.225。当然,涉及很多专业知识,希望有人补充。