Zmiana portu SSH | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Zmiana portu SSH

Zmiana domyślnego portu SSH (22) zmniejsza narażenie na automatyczne skanowanie i podstawowe ataki brute-force, ale nie zastępuje odpowiednich środków bezpieczeństwa.

Warning

Przed wprowadzeniem jakichkolwiek zmian upewnij się, że masz otwartą aktywną sesję SSH. Nie zamykaj jej, dopóki nie sprawdzisz, czy nowy port działa. Jeśli coś pójdzie nie tak, utracisz dostęp do serwera.

Wybór numeru portu

Wybierz numer portu większy niż 1024. Porty z zakresu 49152–65535 rzadziej kolidują z innymi znanymi usługami. Unikaj często używanych alternatyw, takich jak 2222 lub 22222, ponieważ są one często celem automatycznych skanerów. W tym poradniku jako przykład używany jest port 22777.

Utworzenie kopii zapasowej pliku konfiguracyjnego

Przed wprowadzeniem jakichkolwiek zmian utwórz kopię zapasową pliku konfiguracyjnego SSH:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Zmiana portu SSH w Ubuntu i Debianie

Od wersji Debian 12 oraz w niektórych nowszych wersjach Ubuntu (22.04+) SSH może domyślnie korzystać z aktywacji gniazda systemd. W takim przypadku sama zmiana dyrektywy Port w pliku sshd_config często nie wystarcza.

Najpierw sprawdź, czy aktywacja gniazda jest włączona:

systemctl is-active ssh.socket

Jeśli polecenie zwróci active, skonfiguruj gniazdo SSH tak, aby korzystało z nowego portu.

Utwórz nadpisanie systemd dla gniazda SSH:

systemctl edit ssh.socket

Dodaj następującą zawartość:

[Socket] ListenStream= ListenStream=22777

Pusta linia ListenStream= usuwa domyślny port (22). Bez niej SSH może nasłuchiwać zarówno na porcie 22, jak i na nowym porcie.

Aby zwiększyć niezawodność, ustaw port również w konfiguracji SSH. Pomaga to generatorowi systemd i zachowuje ustawienie po aktualizacjach OpenSSH:

mkdir -p /etc/ssh/sshd_config.d echo "Port 22777" | tee /etc/ssh/sshd_config.d/10-port.conf

Info

Aby zapewnić lepszą kompatybilność, możesz również jawnie określić adresy:

[Socket] ListenStream= ListenStream=0.0.0.0:22777 ListenStream=[::]:22777

Zapisz konfigurację i zastosuj zmiany:

systemctl daemon-reload systemctl restart ssh.socket systemctl restart ssh

Sprawdź, czy usługa jest uruchomiona:

systemctl status ssh.socket

Info

W niektórych nowszych systemach, takich jak Ubuntu 24.04+, generator systemd może automatycznie odczytywać port z pliku sshd_config. W takim przypadku wystarczające może być bezpośrednie zmodyfikowanie Port, a następnie wykonanie polecenia systemctl daemon-reload i systemctl restart ssh.socket. Opisana powyżej metoda z nadpisaniem działa we wszystkich wersjach.

Starsze wersje Ubuntu i Debiana

W wersjach Ubuntu starszych niż 22.04 oraz Debian starszych niż 12 SSH nie jest zarządzany za pomocą aktywacji gniazda. Otwórz plik konfiguracyjny SSH:

nano /etc/ssh/sshd_config

Znajdź następującą linię:

Port 22

Usuń znak komentarza i zastąp 22 wybranym numerem portu:

Port 22777

Zapisz plik i sprawdź poprawność konfiguracji:

sshd -t

Jeśli polecenie nie zostanie znalezione, użyj:

/usr/sbin/sshd -t

Jeśli polecenie nie zwróci żadnego wyniku, konfiguracja jest prawidłowa. Uruchom ponownie usługę SSH:

systemctl restart ssh

Wyłączenie aktywacji gniazda

Jeśli wolisz zarządzać SSH za pomocą tradycyjnej usługi zamiast gniazda, możesz wyłączyć aktywację gniazda:

systemctl disable --now ssh.socket systemctl enable --now ssh

Następnie edytuj sshd_config zgodnie z powyższym opisem i uruchom ponownie SSH za pomocą:

systemctl restart ssh

Zmiana portu SSH w AlmaLinux, Rocky Linux i CentOS

Edycja pliku konfiguracyjnego SSH

Otwórz plik konfiguracyjny SSH:

nano /etc/ssh/sshd_config

Znajdź następującą linię:

Port 22

Usuń znak komentarza i zastąp 22 wybranym numerem portu:

Port 22777

Zapisz plik i sprawdź poprawność konfiguracji:

/usr/sbin/sshd -t

Jeśli polecenie nie zwróci żadnego wyniku, konfiguracja jest prawidłowa. Uruchom ponownie usługę SSH:

systemctl restart sshd

Sprawdź, czy usługa jest uruchomiona:

systemctl status sshd

Zezwolenie na port w SELinux

W systemach z włączonym SELinux należy również zezwolić na używanie nowego portu w polityce SELinux. Aby sprawdzić, które porty są obecnie dozwolone dla SSH, uruchom:

semanage port -l | grep ssh

Następnie dodaj lub zmodyfikuj nowy port:

semanage port -a -t ssh_port_t -p tcp 22777 || semanage port -m -t ssh_port_t -p tcp 22777

Jeśli semanage nie jest zainstalowany, zainstaluj wymagany pakiet:

dnf install policycoreutils-python-utils

Konfiguracja zapory sieciowej

Zawsze zezwalaj na nowy port w zaporze przed ponownym uruchomieniem SSH. Jeśli najpierw zrestartujesz SSH, możesz utracić dostęp do serwera.

UFW

ufw allow 22777/tcp ufw reload ufw status

firewalld

firewall-cmd --permanent --zone=public --add-port=22777/tcp firewall-cmd --reload

iptables

iptables -I INPUT -p tcp --dport 22777 -j ACCEPT iptables-save > /etc/iptables/rules.v4

Info

Polecenie iptables-save zapisuje reguły do pliku tylko wtedy, gdy pakiet iptables-persistent jest zainstalowany i skonfigurowany w systemie. Aby go zainstalować, uruchom:

apt install -y iptables-persistent

Przed poleganiem na tym pliku w celu zachowania reguł po restarcie sprawdź, czy Twoja dystrybucja korzysta z tego pliku. Pamiętaj, że współczesne systemy mogą używać nftables zamiast iptables. Jeśli korzystasz z nftables, dodaj regułę zezwalającą na nowy port w konfiguracji nftables.

Konfiguracja Fail2Ban

Jeśli Fail2Ban jest skonfigurowany na serwerze, zaktualizuj port SSH w jego konfiguracji. Otwórz /etc/fail2ban/jail.local lub odpowiedni plik w katalogu /etc/fail2ban/jail.d/ i ustaw:

port = 22777

Po zaktualizowaniu konfiguracji uruchom ponownie Fail2Ban:

systemctl restart fail2ban

Weryfikacja nowego portu

Sprawdź, czy SSH nasłuchuje na nowym porcie:

ss -tlnp | grep :22777

Alternatywnie możesz wyświetlić wszystkie nasłuchujące usługi związane z SSH:

ss -tlnp | grep ssh

Na starszych systemach użyj zamiast tego netstat:

netstat -tlnp | grep :22777

Możesz również bezpośrednio sprawdzić stan usługi.

W Ubuntu i Debianie:

systemctl status ssh.socket

W AlmaLinux, Rocky Linux i CentOS:

systemctl status sshd

Nie zamykając bieżącej sesji SSH, otwórz nowe okno terminala i połącz się przy użyciu nowego portu:

ssh root@YOUR_SERVER_IP -p 22777

Jeśli połączenie zakończy się powodzeniem, możesz zamknąć starą sesję. Następnie usuń port 22 z reguł zapory, jeśli nie jest już potrzebny.

Dla UFW:

ufw delete allow 22/tcp ufw reload

Dla firewalld:

firewall-cmd --permanent --zone=public --remove-port=22/tcp firewall-cmd --reload

Warning

Nie usuwaj portu 22 z zapory przed sprawdzeniem, czy nowy port działa. Jeśli nowe połączenie nie powiedzie się, użyj otwartej sesji SSH, aby rozwiązać problem lub cofnąć zmiany:

systemctl revert ssh.socket cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config rm -f /etc/ssh/sshd_config.d/10-port.conf systemctl daemon-reload systemctl restart ssh.socket

Jeśli aktywacja gniazda jest wyłączona, zastąp dwa ostatnie polecenia poleceniem:

systemctl restart ssh

Podsumowanie

Zmiana domyślnego portu SSH z 22 na niestandardowy port może zmniejszyć narażenie na automatyczne skanowanie i podstawowe próby ataków brute-force. Zmianę portu należy jednak traktować jako dodatkowy środek bezpieczeństwa, a nie jako zamiennik odpowiedniego zabezpieczenia SSH.

Zawsze pozostawiaj bieżącą sesję SSH otwartą do momentu pomyślnego nawiązania połączenia przy użyciu nowego portu. Po zweryfikowaniu nowego połączenia możesz bezpiecznie zamknąć starą sesję i usunąć port 22 z zapory, jeśli nie jest już wymagany.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA