Networking
UFW/IPTables:如何通過 github 安全地允許經過身份驗證的 git 訪問
這就是我使用 UFW 設置 iptables 的方式:
sudo ufw default deny incoming
(拒絕所有傳入)sudo ufw default deny outgoing
(拒絕所有傳出)sudo ufw allow out 53
(接受傳出的DNS 流量,包括 tcp 和 udp)sudo ufw allow in 80/tcp
(接受所有從埠 80 傳入的 tcp)sudo ufw allow out 80/tcp
(接受所有到埠 80 的傳出 tcp)sudo ufw allow proto tcp from <admin_ip_addr> to <server_ip_addr> port 22
(接受來自管理員辦公室 IP 的 ssh 傳入 tcp 埠 22)sudo ufw allow out 9418/tcp
(接受傳出的 git 連接)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 命令時,它確實有效。所以,顯然有一些傳出的東西仍然被阻止。
誰能告訴我這可能是什麼,我應該添加什麼規則來允許它?
我也嘗試了以下規則,但沒有成功:
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