UFW 规则允许特定行为

UFW 规则允许特定行为

我是 UFW 的新手。我们的一台服务器遭到入侵,我必须立即:

  • 拒绝所有入站。
  • 拒绝所有出站。
  • 允许所有 SSH。
  • 允许出站 DNS。
  • 允许 Git 克隆、推送、拉取等。
  • 仅允许入站 HTTP/S(80 和 8081、443)。应阻止源自服务器的出站 HTTP/S。
  • 允许MySQL仅连接到127.0.0.1或localhost并阻止所有传入的MySQL。

我意识到其中一些规则很奇怪,但这就是我被要求做的。我意识到我实际上不知道如何在 UFW 中完成其中一些任务。

这是我所拥有的:

# Deny all outgoing.
ufw default deny incoming

# Deny all outgoing.
ufw default deny outgoing

# Allow outgoing DNS.
ufw allow out 53

# Allow SSH.
ufw allow 22

# Allow outbound Git (I need to be able to clone, pull, push, etc).
ufw allow out 9418/tcp

# Allow only incoming HTTP on port 80 and 8081 without outbound.
# Allow only incoming HTTPS on port 443 without outbound.
ufw allow in to any port 80 proto tcp

# Allow MySQL to connect to localhost only.
ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp

运行上述命令后,我可以:

  1. 用于curl --request GET 'http://foo.bar'向另一个站点发送 HTTP 请求。我需要拒绝源自服务器内部的 HTTP 请求。
  2. 不使用 Git 克隆。它只是挂着。

我还没有测试过 MySQL,但不应该允许它连接到除 和 之外的任何127.0.0.1东西localhost

我需要改变什么才能让它按照我想要的方式运行?

答案1

您需要允许您打开的端口传入,而不仅仅是传出。否则目标服务器将无法向您发送响应。如果您注意到,您的 ssh 可以正常工作,因为您允许传入和传出。 GIT 不起作用,因为您阻止了来自远程服务器的响应。 DNS 可能也被破坏了。

MySQL:默认情况下,您的 my.cnf 不应允许远程连接;您通常必须在绑定地址中明确允许它。

相关内容