我在 Linux 上僅使用 iptables 規則和遵循本教程的「最近」模組,為 SSH 建立了一個有效的連接埠敲門設定:https://wiki.archlinux.org/index.php/Port_knocking#Port_knoking_with_iptables_only。
現在我的問題是,像我的工作網路這樣的幾個網路會阻止到非標準連接埠(如 22、80、443)的流量,因此我無法發送敲門封包。另一方面,我的行動互聯網允許他們。
作為一種解決方法,我想在發送正確的敲擊序列時打開 SSH 端口任何主機,而不僅僅是同一台主機。
有沒有辦法用 iptables 來實現這一點?例如,我可以想像一個“狀態開關”或全域變量,可以由一個規則打開並由另一個規則檢查。逾時後它會回到“關閉”狀態。
答案1
我建議走敲門路線。這樣就比較簡單了。僅代替使用此預設配置
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
您將使用這個(注意 -s %IP% 已刪除)
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -p tcp --dport 22 -j ACCEPT