Ssh

IPTABLES 是否可以通過 NAME (如 ssh)或僅通過 PORT 接受服務?

  • August 26, 2022

我的網路中有一臺本地機器,我192.168.0.30sshport 12121sshd_config文件中設置。

我對以下內容進行了更改iptables

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 12121 -j ACCEPT

/sbin/iptables -P INPUT DROP

所以我的機器從現在開始只接受輸入port 12121,這個工作我可以通過 ssh 進入它

在這台機器上,我執行一個autossh scriptfrom a service,以便remote port forwarding從外部訪問。

我的腳本中的命令:

/usr/bin/autossh -f -NT -o "ExitOnForwardFailure=yes" -R 20000:localhost:12121 \
-l [REMOTE-USER] [REMOTE-IP] -p 11111 -i [REMOTE-KEY]

當我嘗試連接時它不起作用,正常我只接受12121iptables

所以我將它添加到我的 iptables 中:

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 20000 -j ACCEPT

即使我不需要這個,因為它是遠端機器的輸入埠:

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 11111 -j ACCEPT

本地 ssh 不能遠端 ssh。

當我檢查我的服務時:

systemctl status mysshservice

我看到了所有內容exited status codes,並且restart從服務中看到了我的autossh命令和我的選項,但我確實看到第二行帶有-L一個不同的埠,autossh就像48328我做的那樣。

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 48328 -j ACCEPT

現在我可以再次從外部 ssh。

我現在有 2 個關於iptables.

是否可以按名稱接受服務,而沒有像 ACCEPT ALL SSH CONNECTIONS?這樣的給定埠,所以只有 ssh 可以在沒有我需要的ACCEPT情況下工作。PORT

我的問題是遠端埠每天都在變化,所以我必須生成新的ACCEPT RULES every day.

當我使用 autossh 時,do i need a script to grep/awk/sed是否-R and -L ports every day有其他解決方案?

您可以使用服務名稱,/etc/services但在內部iptables使用port numbers, 只能從該文件翻譯,因為tcp/udp協議頭使用數字而不是字元串作為埠。

此外,所有埠號都沒有名稱,因為服務名稱只是慣例http://www.iana.org/assignments/port-numbers

此外,a 一次service name僅錨定到一個埠號。

它不能按您的意願工作。

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