
我有這個 iptable 規則列表
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 127.0.0.1 0.0.0.0/0 tcp dpt:3306
acctboth all -- 0.0.0.0/0 0.0.0.0/0
VZ_INPUT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
ACCEPT tcp -- 94.101.25.40 0.0.0.0/0 state NEW tcp dpt:3306
Chain FORWARD (policy DROP)
target prot opt source destination
VZ_FORWARD all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP)
target prot opt source destination
acctboth all -- 0.0.0.0/0 0.0.0.0/0
VZ_OUTPUT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 94.101.25.40 0.0.0.0/0 state NEW tcp dpt:3306
我只想 localhost 和我的 ip 存取 tcp 3306。我不知道我是否要保留其中任何一個
答案1
acctboth 目標可能是由 bandmin 自動放置在那裡的。如果你刪除它,它可能會回來。您可以使用“chkconfig bandmin off”來停用 bandmin,但它除了計算資料包之外實際上不會執行任何操作。
VZ_INPUT 看起來像是我不熟悉的防火牆包。
除此之外,你似乎有三個接受的條目全部連接埠 3306 的流量,並且只允許來自我假設是您的 IP 的新連線。
我建議您刪除 INPUT 上的最後 4 條規則並替換它們:
iptables -A INPUT -p tcp --dport 3306 -s 94.101.25.40 -j ACCEPT
iptables -A INPUT -p tcp -i l0 --dport 3306 -j ACCEPT
擁有 DROP 的 OUTPUT 策略有點棘手,並且可能會搞亂一堆東西,所以如果我是你,我會將其更改為 ACCEPT:
iptables -p OUTPUT ACCEPT
如果你堅持保持現有的東西,你只是讓新的SQL連線斷開,因此刪除規則並新增:
iptables -A OUTPUT -p tcp -s 94.101.25.40 --sport 3306 -j ACCEPT
iptables -A OUTPUT -p tcp -i l0 -sport 3306 -j ACCEPT
這裡假設 94.101.25.40 是機器自己的 IP 位址之一,而不是某些遠端 IP。
您如何存取您的伺服器?除非你的其他鏈之一有它,否則我什至沒有看到允許 SSH 流量進入這裡的規則。您確實應該發布完整的 iptables -L 輸出。您仍然可以訪問您的盒子的唯一原因很可能是因為其他鏈中的規則。
如果您再次發帖,請使用 iptables -L -v。這添加了一些有用的額外信息,例如規則在哪個介面上運行。