Spreminjanje vrat SSH
Sprememba privzetih vrat SSH (22) zmanjša izpostavljenost avtomatiziranemu pregledovanju in osnovnim napadom z metodo brute-force, vendar ne nadomešča ustreznih varnostnih ukrepov.
Pred kakršnimi koli spremembami se prepričajte, da imate odprto aktivno sejo SSH. Ne zapirajte je, dokler ne preverite, ali nova vrata delujejo. Če gre kaj narobe, boste izgubili dostop do strežnika.
Izbira številke vrat
Izberite številko vrat, višjo od 1024. Pri vratih v območju 49152–65535 je manj verjetno, da bodo v konfliktu z drugimi znanimi storitvami. Izogibajte se pogosto uporabljenim alternativam, kot sta 2222 ali 22222, saj so pogosto tarča avtomatiziranih pregledovalnikov. V tem priročniku je kot primer uporabljena številka 22777.
Ustvarjanje varnostne kopije konfiguracijske datoteke
Pred kakršnimi koli spremembami ustvarite varnostno kopijo konfiguracijske datoteke SSH:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
Sprememba vrat SSH v Ubuntuju in Debianu
Od Debiana 12 in nekaterih novejših različic Ubuntuja (22.04+) lahko SSH privzeto uporablja aktivacijo vtičnice systemd. V tem primeru samo sprememba direktive Port v datoteki sshd_config pogosto ni dovolj.
Najprej preverite, ali je aktivacija vtičnice omogočena:
systemctl is-active ssh.socket
Če ukaz vrne active, konfigurirajte vtičnico SSH za uporabo novih vrat.
Ustvarite preglasitev systemd za vtičnico SSH:
systemctl edit ssh.socket
Dodajte naslednjo vsebino:
[Socket] ListenStream= ListenStream=22777
Prazna vrstica ListenStream= odstrani privzeta vrata (22). Brez nje lahko SSH posluša tako na vratih 22 kot na novih vratih.
Za večjo zanesljivost nastavite vrata tudi v konfiguraciji SSH. To pomaga generatorju systemd in ohrani nastavitev tudi po posodobitvah OpenSSH:
mkdir -p /etc/ssh/sshd_config.d echo "Port 22777" | tee /etc/ssh/sshd_config.d/10-port.conf
Za boljšo združljivost lahko namesto tega naslove določite izrecno:
[Socket] ListenStream= ListenStream=0.0.0.0:22777 ListenStream=[::]:22777
Shranite konfiguracijo in uveljavite spremembe:
systemctl daemon-reload systemctl restart ssh.socket systemctl restart ssh
Preverite, ali storitev deluje:
systemctl status ssh.socket
V nekaterih novejših sistemih, kot je Ubuntu 24.04+, lahko generator systemd samodejno prebere vrata iz datoteke sshd_config. V tem primeru lahko zadostuje neposredna sprememba direktive Port ter nato izvedba ukaza systemctl daemon-reload, ki ji sledi systemctl restart ssh.socket. Zgoraj opisana metoda s preglasitvijo deluje v vseh različicah.
Starejše različice Ubuntuja in Debiana
V različicah Ubuntuja pred 22.04 in Debiana pred 12 SSH ni upravljan prek aktivacije vtičnice. Odprite konfiguracijsko datoteko SSH:
nano /etc/ssh/sshd_config
Poiščite naslednjo vrstico:
Port 22
Odstranite znak za komentar in zamenjajte 22 z izbrano številko vrat:
Port 22777
Shranite datoteko in preverite konfiguracijo:
sshd -t
Če ukaz ni najden, uporabite:
/usr/sbin/sshd -t
Če ukaz ne vrne nobenega izhoda, je konfiguracija veljavna. Znova zaženite storitev SSH:
systemctl restart ssh
Onemogočanje aktivacije vtičnice
Če želite SSH upravljati prek tradicionalne storitve namesto prek vtičnice, lahko aktivacijo vtičnice onemogočite:
systemctl disable --now ssh.socket systemctl enable --now ssh
Nato uredite sshd_config, kot je opisano zgoraj, in znova zaženite SSH z ukazom:
systemctl restart ssh
Sprememba vrat SSH v AlmaLinuxu, Rocky Linuxu in CentOS-u
Urejanje konfiguracijske datoteke SSH
Odprite konfiguracijsko datoteko SSH:
nano /etc/ssh/sshd_config
Poiščite naslednjo vrstico:
Port 22
Odstranite znak za komentar in zamenjajte 22 z izbrano številko vrat:
Port 22777
Shranite datoteko in preverite konfiguracijo:
/usr/sbin/sshd -t
Če ukaz ne vrne nobenega izhoda, je konfiguracija veljavna. Znova zaženite storitev SSH:
systemctl restart sshd
Preverite, ali storitev deluje:
systemctl status sshd
Dovolitev vrat v SELinuxu
V sistemih z omogočenim SELinuxom morate nova vrata dovoliti tudi v pravilniku SELinux. Če želite preveriti, katera vrata so trenutno dovoljena za SSH, zaženite:
semanage port -l | grep ssh
Nato dodajte ali spremenite nova vrata:
semanage port -a -t ssh_port_t -p tcp 22777 || semanage port -m -t ssh_port_t -p tcp 22777
Če semanage ni nameščen, namestite zahtevani paket:
dnf install policycoreutils-python-utils
Konfiguracija požarnega zidu
Nova vrata vedno dovolite v požarnem zidu pred ponovnim zagonom SSH. Če najprej znova zaženete SSH, lahko izgubite dostop do strežnika.
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
Ukaz iptables-save shrani pravila v datoteko samo, če je iptables-persistent nameščen in konfiguriran v sistemu. Za namestitev zaženite:
apt install -y iptables-persistent
Preden se zanesete na to datoteko za trajno shranjevanje pravil, preverite, ali vaša distribucija uporablja to datoteko. Upoštevajte, da lahko sodobni sistemi namesto iptables uporabljajo nftables. Če uporabljate nftables, dodajte pravilo, ki dovoljuje nova vrata, v konfiguracijo nftables.
Konfiguracija Fail2Ban
Če je Fail2Ban konfiguriran na strežniku, posodobite vrata SSH v njegovi konfiguraciji. Odprite /etc/fail2ban/jail.local ali ustrezno datoteko v imeniku /etc/fail2ban/jail.d/ in nastavite:
port = 22777
Po posodobitvi konfiguracije znova zaženite Fail2Ban:
systemctl restart fail2ban
Preverjanje novih vrat
Preverite, ali SSH posluša na novih vratih:
ss -tlnp | grep :22777
Lahko pa prikažete vse poslušalce, povezane s SSH:
ss -tlnp | grep ssh
V starejših sistemih namesto tega uporabite netstat:
netstat -tlnp | grep :22777
Stanje storitve lahko preverite tudi neposredno.
V Ubuntuju in Debianu:
systemctl status ssh.socket
V AlmaLinuxu, Rocky Linuxu in CentOS-u:
systemctl status sshd
Ne da bi zaprli trenutno sejo SSH, odprite novo terminalsko okno in se povežite z uporabo novih vrat:
ssh root@YOUR_SERVER_IP -p 22777
Če je povezava uspešna, lahko staro sejo zaprete. Nato odstranite vrata 22 iz pravil požarnega zidu, če jih ne potrebujete več.
Za UFW:
ufw delete allow 22/tcp ufw reload
Za firewalld:
firewall-cmd --permanent --zone=public --remove-port=22/tcp firewall-cmd --reload
Vrata 22 ne odstranite iz požarnega zidu, dokler ne preverite, ali nova vrata delujejo. Če nova povezava ne uspe, uporabite odprto sejo SSH za odpravljanje težave ali razveljavitev sprememb:
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
Če je aktivacija vtičnice onemogočena, zadnja dva ukaza zamenjajte z:
systemctl restart ssh
Zaključek
Sprememba privzetih vrat SSH z 22 na vrata po meri lahko zmanjša izpostavljenost avtomatiziranemu pregledovanju in osnovnim poskusom napadov z metodo brute-force. Vendar je treba spremembo vrat obravnavati kot dodaten varnostni ukrep in ne kot nadomestilo za ustrezno zaščito SSH.
Trenutno sejo SSH vedno pustite odprto, dokler se ne prepričate, da ste se uspešno povezali prek novih vrat. Ko je nova povezava preverjena, lahko staro sejo varno zaprete in odstranite vrata 22 iz požarnega zidu, če niso več potrebna.