Ograniczenie SSH do konkretnego portu źródłowego klienta
Napisał: Patryk Krawaczyński
17/07/2025 (4 dni temu) w Administracja, Bezpieczeństwo Brak komentarzy. (artykuł nr 928, ilość słów: 308)
N
aszym zadaniem jest wystawienie usługi SSH do internetu, ale nie chcemy by ktoś oprócz naszej wiedzy tajemnej mógł się do niej połączyć. Nie będziemy używali rozwiązań typu VPN, port knocking, czy zmiany portu nasłuchu z 22 na inny. Secure Shell będzie nasłuchiwać na standardowym porcie i umożliwiała połączenie z dowolnego adresu IP. Jedynym warunkiem, jaki musi spełnić klient SSH to nawiązanie połączenia z konkretnego, tylko nam znanego portu źródłowego – w przeciwnym wypadku firewall nie dopuści do połączenia:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 --sport 31337 -m state --state NEW -j ACCEPT iptables -A INPUT -j DROP
Jeśli spróbujemy teraz połączyć się ze standardowej puli źródłowych portów (1024:65535
) klientem SSH – nasze połączenie zostanie odrzucone:
heavyarms:~ agresor$ ssh 192.168.254.2 -v OpenSSH_9.9p2, LibreSSL 3.3.6 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files debug1: /etc/ssh/ssh_config line 54: Applying options for * debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling debug1: Connecting to 192.168.254.2 [192.168.254.2] port 22.
Zupełnie inaczej będzie to wyglądało kiedy wykorzystamy opcję klienta SSH o nazwie ProxyCommand
, która wykorzysta pośrednie połączenie przez program netcat, który będzie miał ustawiony port źródłowy połączenia na stały numer 31337:
heavyarms:~ agresor$ ssh -o ProxyCommand="nc -p 31337 %h %p" 192.168.254.2 -v OpenSSH_9.9p2, LibreSSL 3.3.6 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files debug1: /etc/ssh/ssh_config line 54: Applying options for * debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling debug1: Executing proxy command: exec nc -p 31337 192.168.254.2 22 debug1: Next authentication method: password agresor@192.168.254.2's password:
Ten prosty mechanizm Security Through Obscurity pozwala nam na zdalny dostęp do serwera z dowolnego adresu IP jednocześnie trzymając zautomatyzowane boty atakujące SSH z daleka.
Więcej informacji: How can I set the source port for an SSH command-line client?, How does SSH’s ProxyCommand actually work?
Poprzedni wpis Brak nowszych postów