UFW/IPTables:如何安全地允许通过 github 进行经过身份验证的 git 访问

UFW/IPTables:如何安全地允许通过 github 进行经过身份验证的 git 访问

以下是我使用 UFW 设置 iptables 的方法:

  1. sudo ufw default deny incoming(拒绝所有传入)
  2. sudo ufw default deny outgoing(拒绝所有传出)
  3. sudo ufw allow out 53(接受传出DNS 流量(tcp 和 udp)
  4. sudo ufw allow in 80/tcp(接受来自端口 80 的所有传入 TCP)
  5. sudo ufw allow out 80/tcp(接受所有到端口 80 的传出 TCP)
  6. sudo ufw allow proto tcp from <admin_ip_addr> to <server_ip_addr> port 22(接受来自管理员办公室 IP 的传入 TCP 端口 22 以进行 ssh)
  7. sudo ufw allow out 9418/tcp(接受传出的 git 连接)
  8. sudo ufw allow proto tcp from <server_ip_addr> to any port 22(接受传出的 ssh 连接以连接 GitHub)

英文:阻止所有内容,但 HTTP、DNS、来自管理员 IP 的传入 SSH、传出 GIT 和传出 SSH 除外。

不幸的是,当我这样做时,它卡在git clone [email protected]:username/project.gitInitialized empty Git repository in /home/adminuser/exper/project/.git/

当我使用 启用所有传出流量sudo ufw default allow outgoing并重复 git clone 命令时,它确实有效。

因此,显然有一些传出的内容仍然受到阻碍。

谁能告诉我这可能是什么,我应该添加什么规则来允许它?

我也尝试过以下规则,但没有成功:

  1. sudo ufw allow out 1024:65535/udp

答案1

您正在尝试使用 SSH 进行连接,并且(似乎)允许这样做,因此是时候诊断问题了。我喜欢在丢弃任何数据包之前添加一条 LOG 规则,这样我就能确切地知道丢弃了什么。否则,只需执行一些 tcpdump 操作即可识别出不会去往任何地方的流量。一旦您知道丢弃了什么,添加必要的规则以允许它就变得轻而易举了。

答案2

经过多次尝试,我终于把自己锁在了 2 个服务器之外。下面的防火墙规则帮助我执行了“git clone”。希望它也能帮助到大家。

仅供参考:我在“eth0”上运行以下命令,这是我的服务器的私有接口。我从这里获取了 github 子网 IP:https://help.github.com/articles/github-s-ip-addresses/

sudo ufw reset
sudo ufw status verbose
sudo ufw default deny incoming
sudo ufw default deny outgoing
# For resolving DNS problem
sudo ufw allow out on eth0 to any port 53
# For allowing access to github.com
sudo ufw allow out on eth0 to 192.30.252.0/22 port 22
sudo ufw --force enable

相关内容