我在 Debian 系统上安装了 ufw,如下所示:
# aptitude install ufw
# ufw limit 22
# ufw allow 80
# ufw allow 443
# ufw enable
# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
20 LIMIT Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
一个简单的ping google.com
方法失败了,任何方法aptitude install
都会失败。我在 serverfault 上搜索答案。一个解决方案是允许 DNS 使用端口 53 - 没有帮助。或者ufw allow out 1024:65535/udp
与端口 53 一起使用 - 没有帮助。
有效的方法是允许我的 DNS 服务器ufw allow from [DNS IP]
;但是如果你问我,那不是解决方案。
apt-get 和 aptitude 都被 ufw 阻止了。找不到任何关于如何允许安装新东西的信息。ufw 日志条目示例:
Aug 12 17:31:08 host kernel: [535454.665168] [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=0.0.0.0 DST=0.0.0.0 LEN=60 TOS=0x00 PREC=0x00 TTL=52 ID=0 DF PROTO=TCP SPT=80 DPT=41343 WINDOW=14480 RES=0x00 ACK SYN URGP=0
有任何想法吗?
答案1
您需要将以下内容添加到中iptables
,因为ufw
只是与其接口。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
答案2
我使用 Ubuntu(撰写本文时为 14.04 和 14.10),参考了以下文章: http://rene.bz/securing-your-web-server-blocking-outbound-connections/
iptables -A ufw-before-output -m owner --uid-owner root -p tcp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A ufw-before-output -m owner --uid-owner root -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
这可能不是一个理想的解决方案。但它确实使我能够根据每个用户授权 apt 命令。
答案3
我在使用 pptpd + ufw 时遇到了问题 - 即使我允许 53 端口,对 DNS 的请求也会被阻止。您是否尝试过打开/etc/default/ufw
并将选项“DEFAULT_FORWARD_POLICY”从“DROP”更改为“ACCEPT”?它对我有用。
答案4
这些规则帮助我成功获得 SSH 的速率限制,允许进出 http 和 https,启用 git,并使 apt 和 aptitude 正常工作:
ufw default deny incoming
ufw default deny outgoing
ufw limit ssh
ufw allow svn
ufw allow git
ufw allow out http
ufw allow in http
ufw allow out https
ufw allow in https
ufw allow out 53
ufw logging on
ufw enable
笔记:我确实以 FIRST 制定了这些规则,ufw reset
以便重新开始。