UFW / IPTables:如何安全地允许使用github进行身份validation的git访问

这就是我如何使用UFW设置我的iptables

  1. sudo ufw default deny incoming (拒绝所有传入)
  2. sudo ufw default deny outgoing (拒绝所有传出)
  3. sudo ufw allow out 53 (接受传出的DNSstream量 ,包括tcp和udp)
  4. sudo ufw allow in 80/tcp (接受来自端口80的所有传入的tcp)
  5. sudo ufw allow out 80/tcp (接受所有的输出tcp到端口80)
  6. sudo ufw allow proto tcp from <admin_ip_addr> to <server_ip_addr> port 22 (从pipe理员办公室的IP为ssh接受传入的TCP端口22)
  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,来自pipe理IP的传入SSH,传出的GIT和传出的SSH。

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

当我然后启用sudo ufw default allow outgoing所有传出stream量,并重复git克隆命令,它确实工作。

所以,显然有一些传出仍然被阻止。

任何人都可以告诉我这可能是什么,我应该添加什么规则来允许它?

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

  1. sudo ufw allow out 1024:65535/udp

你正在尝试连接SSH,并且(似乎是)允许的,所以现在是时候来诊断问题了。 我喜欢在丢弃任何数据包之前添加一条LOG规则,所以我确切地知道丢弃了什么。 否则,一些tcpdump动作应该识别不在任何地方的stream量。 一旦你知道什么被放弃,添加必要的规则来允许它是一件微不足道的事情。

经过了很长的一段时间,我把自己从2台服务器中解放出来。 下面的防火墙规则为我做了一个'git克隆'。 希望它也能帮助你。

仅供参考:我正在我的服务器的专用接口“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