SSH szerver biztonsági beállításai

Linux 4 perc olvasás

Egy internetre kapcsolt szerver SSH portjára az üzembe helyezés után perceken belül megérkeznek az első automatizált bejelentkezési kísérletek. Ez a cikk sorra veszi a legfontosabb védelmi lépéseket, és azt is, hogyan ellenőrizheti, hogy a beállítás valóban érvényes-e. Az SSH alapjairól a Linux Secure Shell (SSH) cikk szól.

A lépéseket AlmaLinux 10.2, Ubuntu 24.04 és Debian 12 rendszeren próbáltuk ki, a disztribúciók saját cloud image-éből telepített virtuális gépeken. A parancsokat root felhasználóként vagy sudo-val futtassa.

Mielőtt bármit módosít

  • Hagyjon nyitva egy működő SSH-kapcsolatot, amíg egy új kapcsolatban ki nem próbálta az új beállítást. Az sshd újraindítása a már felépült kapcsolatokat nem bontja, így ha valami elromlik, abból javíthat.
  • Ellenőrizze a szintaxist minden újraindítás előtt: sudo sshd -t. Ha nincs kimenete, a fájl rendben van.
  • Tudja, hogyan éri el a szervert SSH nélkül (VPS-en a vezérlőpult konzolja), arra az esetre, ha mégis kizárná magát.

Hova írja a beállításokat?

A fő beállításfájl a /etc/ssh/sshd_config, de mindhárom tesztrendszeren ennek elején egy Include /etc/ssh/sshd_config.d/*.conf sor áll. Az sshd egy beállításnál az első előfordulást veszi figyelembe, ezért a könyvtárban lévő fájlok felülírják a fő fájlt.

Ez meglepetést okozhat: a cloud image-ekből telepített gépeken a cloud-init egy 50-cloud-init.conf fájlt tesz ide, például PasswordAuthentication no sorral. A teszten a fő sshd_config végére írt PasswordAuthentication yes hatástalan maradt, mert a drop-in fájl előbb állította be.

Ezért a saját beállításait tegye egy külön fájlba a könyvtárban, a cloud-init fájljánál előbbre rendeződő névvel, például:

sudo nano /etc/ssh/sshd_config.d/10-biztonsag.conf

Hogy végül mi érvényes, azt nem a fájlokból kell kitalálni: a sshd -T kiírja a ténylegesen használt értékeket.

sudo sshd -T | grep -E '^(port|permitrootlogin|passwordauthentication|pubkeyauthentication) '

A teszten az alapértékek AlmaLinux 10-en és Ubuntu 24.04-en: port 22, permitrootlogin without-password (a root csak kulccsal léphet be), passwordauthentication no (ezt a cloud-init állította be).

1. Kulcsos belépés, jelszó tiltása

A legfontosabb lépés: jelszó helyett kulccsal lépjen be, és a jelszavas belépést tiltsa le. A saját gépén:

ssh-keygen -t ed25519
ssh-copy-id felhasznalo@szervercime

Próbálja ki egy új terminálban, hogy jelszó nélkül belép. Ha igen, a szerveren a 10-biztonsag.conf fájlba:

PasswordAuthentication no
KbdInteractiveAuthentication no

Ezután:

sudo sshd -t && sudo systemctl restart sshd     # Ubuntu, Debian: ssh

Jelszavas próbálkozásra a szerver ezután ezt válaszolja: Permission denied (publickey…). A kulcskezelésről Windows alól is a VPS SSH-csatlakozási útmutatója ír.

2. A root belépés tiltása

Előbb hozzon létre egy saját felhasználót sudo joggal, és próbálja ki vele a belépést (lásd: Felhasználó létrehozása és sudo jog adása). Ezután:

PermitRootLogin no

A teszten a 10-biztonsag.conf fájlba írt sor után a sshd -T már permitrootlogin no értéket mutatott. Ha a root belépés tiltása helyett csak a jelszavas root belépést szeretné kizárni, a PermitRootLogin prohibit-password (más néven without-password) a megfelelő, ez a tesztrendszerek alapértéke is.

3. Az SSH port módosítása

A port megváltoztatása nem tesz biztonságosabbá egy gyenge jelszót, de a naplókban sokkal kevesebb lesz az automatizált próbálkozás. Az új portot írja a drop-in fájlba, és amíg ki nem próbálta, hagyja meg a 22-est is:

Port 22
Port 2255

A további teendő disztribúciónként eltér.

AlmaLinux, Rocky Linux: SELinux és firewalld

A SELinux csak az ssh_port_t típusú portokon engedi figyelni az sshd-t. Ha ezt kihagyja, az sshd elindul, de az új porton nem figyel; a naplóban Bind to port 2255 … failed: Permission denied áll. A semanage parancs a policycoreutils-python-utils csomagban van, amely a cloud image-en nem volt telepítve:

sudo dnf install policycoreutils-python-utils
sudo semanage port -a -t ssh_port_t -p tcp 2255
sudo systemctl restart sshd

Az SSH port módosítása AlmaLinux 10 rendszeren: a journalctl szerint a 2255-ös porton a bind Permission denied hibával meghiúsult, az ss csak a 22-es portot mutatja; a semanage port -a parancs és az sshd újraindítása után a 22-es és a 2255-ös porton is figyel

Ha a firewalld fut (sudo firewall-cmd --state), engedélyezze az új portot is:

sudo firewall-cmd --permanent --add-port=2255/tcp
sudo firewall-cmd --reload

Ubuntu 24.04: socket-aktiválás

Ubuntu 24.04-en a 22-es porton nem az ssh szolgáltatás, hanem a ssh.socket figyel. A teszten a portváltás után a systemctl restart ssh hatástalan volt, továbbra is csak a 22-es port élt. A port a daemon-reload és a socket újraindítása után változik:

sudo systemctl daemon-reload
sudo systemctl restart ssh.socket

Ha az ufw be van kapcsolva (a teszten alapból nem volt), engedélyezze a portot: sudo ufw allow 2255/tcp.

Debian

Debianon elég az újraindítás: sudo systemctl restart ssh.

Ellenőrzés

sudo ss -tlnp | grep sshd

Csatlakozzon egy új terminálból az új portra (ssh -p 2255 felhasznalo@szervercime). Ha működik, a Port 22 sor törölhető, és a tűzfalon is lezárható a 22-es port.

4. A próbálkozások korlátozása

A Fail2ban a naplókat figyeli, és a sok hibás belépést küldő IP-címeket egy időre kitiltja a tűzfalon. Telepítését és a csapdáit (például hogy AlmaLinuxon a firewalld-nak futnia kell, különben a tiltás hatástalan) a Fail2ban telepítése és beállítása cikk írja le. cPanel szerveren a cPHulk és a CSF/LFD látja el ugyanezt.

Az egy kapcsolaton belüli próbálkozások számát a MaxAuthTries korlátozza (alapértéke a teszten 6 volt), például MaxAuthTries 3.

5. Frissítések

Az OpenSSH biztonsági javításai a rendszerfrissítésekkel érkeznek (a teszten AlmaLinux 10-en az OpenSSH 9.9, Ubuntu 24.04-en a 9.6 volt). Kapcsolja be az automatikus biztonsági frissítéseket, lásd: Rendszerfrissítés: dnf, apt és automatikus frissítések.

aWh szerverek

A KVM VPS-eken a fenti beállítások mindegyike az Ön kezében van. A cPanel tárhelyeinken az SSH a 4231-es porton fut, és csak kulccsal lehet belépni; a kulcs feltöltéséről a SSH kulcs létrehozása vagy feltöltése cPanel szerverre cikk szól.

Vissza: Linux leírások (62)