知行迭代
导航
首页
最近更改
随机页面
常用
分类目录
Linux命令
Mediawiki常用
电脑技巧
工具
链入页面
相关更改
特殊页面
页面信息
登录
查看“UFW”的源代码
←
UFW
页面
讨论
阅读
查看源代码
查看历史
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:[
[1]
]
您可以查看和复制此页面的源代码。
UFW(Uncomplicated Firewall),是用于管理Linux内核[[netfilter]]防火墙的程序。传统使用强大的[[iptables]]操作netfilter, 但ufw提供少量简单命令管理,并基于[[iptables]]进行配置,更易于使用。从[[Ubuntu]] 8.04 LTS开始,ufw作为系统上默认的防火墙组件。 ==简介== ===时间轴=== ==快速入门== <syntaxhighlight lang="bash" > sudo ufw allow 80 sudo ufw allow 22 # 开启ssh端口,如果是其他修改为相应 # sudo ufw default deny incoming # 默认关闭所有进入端口,默认是deny incoming # sudo ufw default deny outgoing # 默认关闭所有出去端口,默认是allow outgoing sudo ufw enable # 开启ufw sudo ufw status verbose # 查看ufw状态和默认策略 # sudo ufw reload # 重启ufw </syntaxhighlight> ==列出规则== {| class="wikitable" ! 名称 ! 描述 ! 示例 |- | status | 检查UFW的状态,并列出所有规则 | <code>sudo ufw status</code> |- | status verbose | 获取更详细信息,包含有关日志记录状态,默认策略等。 | <code>sudo ufw status verbose</code> |- | status numbered | 获取所有规则和其编号 | <code>sudo ufw status numbered</code> |} ==删除规则== {| class="wikitable" ! 名称 ! 描述 ! 示例 |- | delete allow/deny 端口号 | 根据端口号,删除相应规则。 | <code>sudo ufw delete allow 2222</code> <br /> <code>sudo ufw delete deny 80</code> |- | delete 编号 | 按规则编号删除。先使用<code>sudo ufw status numbered</code>查看规则编号。 |<syntaxhighlight lang="bash" > # 查看编号 sudo ufw status numbered # 删除编号为4的规则 sudo ufw delete 4 </syntaxhighlight> |- |reset |重置删除所有规则,重置后默认是禁用ufw的。 |<code>sudo ufw reset</code> |} == docker失效 == ufw对docker容器不起作用,因为Docker和ufw使用iptables的方式使它们彼此不兼容。使用 Docker 开发的容器的端口时,进出该容器的流量在通过ufw防火墙设置之前被转移。 {{了解更多 |[https://docs.docker.com/network/packet-filtering-firewalls/ Docker文档:网络/数据包过滤和防火墙 ] |[https://github.com/chaifeng/ufw-docker GitHub:chaifeng/ufw-docker] }} === 修改 UFW 配置文件 === 一种方法是,修改 UFW 的配置文件 <code>sudo vim /etc/ufw/after.rules</code>,在最后添加上如下规则: <syntaxhighlight lang="text" > # BEGIN UFW AND DOCKER *filter :ufw-user-forward - [0:0] :ufw-docker-logging-deny - [0:0] :DOCKER-USER - [0:0] -A DOCKER-USER -j ufw-user-forward -A DOCKER-USER -j RETURN -s 10.0.0.0/8 -A DOCKER-USER -j RETURN -s 172.16.0.0/12 -A DOCKER-USER -j RETURN -s 192.168.0.0/16 -A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN -A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16 -A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8 -A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12 -A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16 -A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8 -A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12 -A DOCKER-USER -j RETURN -A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] " -A ufw-docker-logging-deny -j DROP COMMIT # END UFW AND DOCKER </syntaxhighlight> 然后重启 UFW, <code>sudo ufw reload</code>或<code>sudo systemctl restart ufw</code>,如果还是不生效,重启服务器。 如果容器端口80,注意这个端口不是对应的主机端口。那就可以用以下命令来允许外部网络访问这个服务: <syntaxhighlight lang="bash" > ufw route allow proto tcp from any to any port 80 </syntaxhighlight> 如果有多个容器的服务端口为 80,但只希望外部网络访问某个特定的容器。比如该容器的私有地址为 172.17.0.2,就用类似下面的命令: <syntaxhighlight lang="bash" > ufw route allow proto tcp from any to 172.17.0.2 port 80 </syntaxhighlight> {{了解更多 |[https://github.com/chaifeng/ufw-docker GitHub:chaifeng/ufw-docker] }} ==资源== ===官网=== *UFW 官网:https://launchpad.net/ufw *UFW 源代码:https://git.launchpad.net/ufw ===网站=== * [https://help.ubuntu.com/community/UFW Ubuntu 文档:UFW] * [https://wiki.ubuntu.com/UncomplicatedFirewall Ubuntu Wiki:Uncomplicated Firewall]
本页使用的模板:
模板:了解更多
(
查看源代码
)
返回至“
UFW
”。