Networking

UFW/IPTables:如何通過 github 安全地允許經過身份驗證的 git 訪問

  • November 15, 2017

這就是我使用 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 的 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)

英文:block all,除了 HTTP、DNS、來自管理 IP 的傳入 SSH、傳出 GIT 和傳出 SSH。

不幸的是,當我這樣做時,git clone git@github.com:username/project.git它會卡在Initialized empty Git repository in /home/adminuser/exper/project/.git/

然後,當我使用 啟用所有傳出流量sudo ufw default allow outgoing並重複 git clone 命令時,它確實有效。

所以,顯然有一些傳出的東西仍然被阻止。

誰能告訴我這可能是什麼,我應該添加什麼規則來允許它?

我也嘗試了以下規則,但沒有成功:

  1. sudo ufw allow out 1024:65535/udp

您正在嘗試使用 SSH 連接,並且(似乎是)允許的,所以是時候診斷問題了。我喜歡在丟棄任何數據包之前添加一條 LOG 規則,這樣我就可以準確地知道丟棄了什麼。否則,一些 tcpdump 操作應該可以辨識出不會去任何地方的流量。一旦您知道要刪除什麼,添加必要的規則以允許它是一件小事。

經過一番敲打我的頭並將自己鎖定在 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

引用自:https://serverfault.com/questions/370743