帮酷LOGO
  • 显示原文与译文双语对照的内容


問題:

我正在嘗試在我的Ubuntu虛擬機上只獲取埠 80,443和 SSH 。 我正在運行 Docker,我想這是導致埠 21和 5222可見的原因。

telnet HOST 21
Trying HOST...
Connected to HOST.
Escape character is '^]'.

sudo iptables --list --line-numbers -v

Chain INPUT (policy DROP 23 packets, 1878 bytes)
num pkts bytes target prot opt in out source destination 
1 2013 350K ACCEPT all -- lo any anywhere anywhere 
2 1063 614K ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
3 0 0 DROP all -- any any anywhere anywhere ctstate INVALID
4 1 60 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED
5 28 1644 ACCEPT tcp -- any any anywhere anywhere multiport dports http,https ctstate NEW,ESTABLISHED
Chain FORWARD (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination 
1 0 0 DOCKER-USER all -- any any anywhere anywhere 
Chain OUTPUT (policy ACCEPT 43 packets, 3082 bytes)
num pkts bytes target prot opt in out source destination 
1 2013 350K ACCEPT all -- any lo anywhere anywhere 
2 816 236K ACCEPT all -- any any anywhere anywhere ctstate ESTABLISHED
3 0 0 ACCEPT tcp -- any any anywhere anywhere tcp spt:ssh ctstate ESTABLISHED
4 0 0 ACCEPT tcp -- any any anywhere anywhere multiport dports http,https ctstate ESTABLISHED
Chain DOCKER-USER (1 references)
num pkts bytes target prot opt in out source destination 
1 0 0 RETURN all -- any any anywhere anywhere 

sudo iptables保存

# Generated by iptables-save v1.6.1 on Sun Mar 3 05:57:34 2019
*nat
:PREROUTING ACCEPT [286:14463]
:INPUT ACCEPT [29:1704]
:OUTPUT ACCEPT [273:16843]
:POSTROUTING ACCEPT [273:16843]
:DOCKER - [0:0]
COMMIT
# Completed on Sun Mar 3 05:57:34 2019
# Generated by iptables-save v1.6.1 on Sun Mar 3 05:57:34 2019
*filter
:INPUT DROP [23:1878]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [43:3082]
:DOCKER-USER - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A FORWARD -j DOCKER-USER
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Sun Mar 3 05:57:34 2019
# Generated by iptables-save v1.6.1 on Sun Mar 3 05:57:34 2019
*mangle
:PREROUTING ACCEPT [3829:1086443]
:INPUT ACCEPT [3617:1077407]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3380:702245]
:POSTROUTING ACCEPT [3380:702245]
COMMIT
# Completed on Sun Mar 3 05:57:34 2019

我在啟動時禁用了 Docker 服務並禁用了它來修改 iptables ( 但它仍然會插入docker用戶) 。

為什麼我仍然可以telnet到埠 21和 5222?


回答 1:

根據你的iframe規則,你不可以能在埠 21中建立一個會話,但是從你的localhost 。

關於你的轉發規則:

  • 你只有一個跳到docker用戶。
  • docker用戶沒有執行任何操作,然後返回前一步。
  • 轉發默認策略為 DROP 。

如果某個進程正在偵聽 21埠,則可以開始進行以下操作:

ss -antp | grep :21

然後,你可以嘗試監視通過規則的數據包:

watch iptables -L -n -v

然後重試,看看是否有一條規則包計數正在增加,如果你是 telneting 。 根據規則集,你應該增加默認的輸入策略:

Chain INPUT (policy DROP 23 packets, 1878 bytes)

如果另一條規則匹配你能告訴我們?

如果不是,一些愚蠢的問題:

  • 你確定你要打好伺服器?
  • 你可以使用 dig 或者 nslookup 解析主機的DNS,並查看它與伺服器上的ip a 是否相同?

回答 2:

就像 Docker 站點站點所描述的:

如果需要在 Docker 規則之前添加載入規則,請將它們添加到docker用戶鏈。 這些規則在 Docker 自動創建規則之前載入。

默認情況下,允許所有外部源ip連接到 Docker 守護進程。

所以你寫的那些規則必須添加到docker用戶鏈,沒有輸入作為輸入將過濾到主機的流量,而不是 Docker dameon 。





Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语