OpenSSH - Zabezpieczamy serwer
Witam, jako, że bardzo spodobał Wam się poprzedni artykuł o bezpieczeństwie tak więc postaram się jeszcze nieco napisać.
Fot: openssh.com
OpenSSH jest serwerem udostępniającym zdalny dostęp do powłoki systemowej. Użytkownik logując się z drugiego końca świata do Swojego serwera lub komputera może czuć się jak by właśnie przy nim siedział. Istnieją dwie wersje protokołu SSH - pierwsza i druga, dziś raczej używa się tej drugiej ponieważ jest dużo bezpieczniejsza.
W artykule przedstawię Wam kilka sposobów na zabezpieczenie serwera SSH by nie był on tak dziurawy jak zabezpieczenie pokazane na obrazku poniżej ;‑)
Fot: http://thereifixedit.failblog.org/
Odpowiednia wersja protokołu
Pierwszą rzeczą którą należałoby wykonać to zablokowanie starszego protokołu SSHv1 w którym zostały odkryte podatności na ataki kryptoanalityczne umożliwiające wstrzykiwanie poleceń do zaszyfrowanego strumienia danych (patrz. man in the middle ).
W tym celu ustawiamy odpowiednią zmienną w /etc/ssh/sshd_config:
Protocol 2
Zmiana domyślnego portu
Zmiana portu to dodatkowa kłoda pod nogi potencjalnego włamywacza, będzie musiał on najpierw znaleźć na jakim porcie mamy serwer SSH aby dopiero wtedy mógł zacząć próbować się do niego włamać.
Port 9317
Najlepiej aby port był z wysokiej póli liczbowej, nie poleca się także ustawiania popularnej liczby jako numer portu np. 666 ponieważ potencjalny włamywaczowi może ta liczba jako pierwszy przyjść na myśl ;‑)
W ten sposób można także uniknąć niektórych botów atakujących serwery SSH.
Automatyczne banowanie po kilku nieudanych próbach logowania
Przy pomocy programu denyhosts bądź fail2ban można teoretycznie zapobiec atakom typu brute force na serwer SSH ponieważ zbanuje on potencjalnego włamywacza/bota po kilku nieudanych próbach.
Po zainstalowaniu denyhosts należy dodać go do startu razem z systemem, w Ubuntu sam się doda, w [color=#ad77f9]Gentoo przy pomocy [color=#ad77f9]rc-update add denyhosts default, w [color=#2d9dd5]Arch Linux w [color=#2d9dd5]/etc/rc.conf.
Konfiguracja denyhosts dzieli się głównie na pliki:
/etc/hosts.allow - biała lista, należy tam dodać zaufane maszyny /etc/hosts.deny - lista zablokowanych maszyn, denyhosts ją automatycznie uzupełnia
Format plików konfiguracyjnych hosts.{allow,deny}:
usługa: ad.r.es.ip sshd: 10.0.0.10
Ograniczenie dostępu dla poszczególnych użytkowników
W /etc/ssh/sshd_config można utworzyć listę użytkowników lub grup które będą mogły używać SSH (na ich konto będzie można się zalogować).
AllowUsers webnull DenyUsers wewnetrzny_uzytkownik AllowGroups - grupa_webnulla DenyGroups - lighttpd
Logowanie na konto root
Oczywiście warto zablokować dostęp do konta root wprost przez SSH tak aby móc się zalogować najpierw na zwykłego użytkownika a następnie na konto root.
Większość botów i włamywaczy - można śmiało powiedzieć, że 99% próbuje się uzyskać dostęp do konta root.
Zatem aby wyłączyć logowanie na konto root należy ustawić:
PermitRootLogin no
Zablokowanie możliwości logowania bez użycia hasła
Zmienna konfiguracyjna PermitEmpty określa czy użytkownik może logować się bez hasła, zaleca się ustawić wartość no.
PermintEmpty no