Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

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 

Komentarze

0 nowych
XeonBloomfield   5 #1 18.01.2011 16:34

Prosto i prawidłowo napisane co trzeba.

Wielki PLUS.

Każdy kto ceni sobie bezpieczeństwo swojego serwera SSH coś tu znajdzie.

#WireBoot   5 #2 18.01.2011 17:59

Bardzo dobry artykuł odnośnie openSSH. Nie mam żadnych zastrzeżeń. Pewne informacje odnośnie konfiguracji /etc/sshd/... przydadzą mi się do konfiguracji własnego serwera.
Apropo: czy można się dostać z zewnątrz do serwera SSH gdy ma się wewnętrzne ip bez "wyjścia na świat" ?

webnull   9 #3 18.01.2011 18:11

@#WireBoot
Z za natu raczej się nie dostaniesz do serwera SSH, chyba, że postawisz tunel.

eth0   4 #4 18.01.2011 18:57

@webnull

A słyszałeś o tunelu zwrotnym z wykorzystaniem ssh? Jesli nie to doczytaj, a dowiesz się że można dostać się do serwera ukrytego za NAT-em. Przy opcji kiedy dwa hosty są ukryte za NAT-em można skorzystać z serwera ssh pośredniczącego, wtedy dwa hosty łączą się do serwera pośredniczącego, a on zestawia tunel na jakiś wybranym porcie, tu też wykorzystuje się niestandardowe cechy ssh. Ciekawe możliwości daje też port knocking, jest to metoda ukrywania serwera ssh, w ten sposób, że port na którym słucha serwer wygląda na zamknięty i otwiera się dopiero po odebraniu pewnej sekwencji pakietów.

  #5 18.01.2011 19:04

Ciekawy wpis, z pewnością wykorzystam informacje tu zawarte.
Względem łańcucha, niektórzy spekulują, że to co wygląda jak plastikowa opaska tak naprawdę jest ucharakteryzowanym tytanem, albo włóknami węglowymi, by złodziej zamiast otwierać kłódkę męczył się z niby słabym plastikiem.

Pigmej   5 #6 18.01.2011 19:53

@eth

ale -R akurat nie jest domyślnie włączone.

webnull   9 #7 18.01.2011 21:03

@eth0
Słyszałem o tym, i to chciałem powiedzieć WireBootowi ;-)

Winters4TW   6 #8 18.01.2011 21:49

Pytanko, jeżeli wyłączymy root'a to czy będziemy mogli logować się przez sudo? Musi być chyba jakiś sposób np do aktualizacji czy instalacji innego oprogramowania.

Pigmej   5 #9 19.01.2011 02:32

@Winters4TW

Wyłączasz tylko dostęp bezpośredni używając loginu root. W żadnym wypadku nie oznacza to "wyłączenia roota w systemie".

Czyli aby uzyskać uprawnienia root musisz najpierw zalogować się na konto normalnego usera, a dopiero potem su ;-)

  #10 23.01.2011 23:17

Eee tam. A gdzie logowanie za pomocą kluczy (bez [możliwości] wpisywania hasła)? To jest najbezpieczniejsza metoda!