Zabezpieczanie serwera SSH

Konrad Kowalski
VPS

W dzisiejszym odcinku serii artykułów poświęconym konfiguracji serwera VPS zajmiemy się zabezpieczaniem serwera SSH. Jak wiemy nie od dziś w internecie istnieją rozmaite robaki internetowe i boty, które próbują zalogować się na serwer nasz serwer poprzez SSH, próbując przejąć nad nim kontrolę aby rozsyłać SPAM czy dokonywać ataków na inne komputery.

Aby utrudnić im życie i zminimalizować możliwość włamania na nasz serwer warto poświęcić chwilę aby odpowiednio zabezpieczyć serwer SSH.

Plik konfiguracyjny serwera SSH możemy znaleźć w /etc/ssh/sshd_config

Otwieramy plik jakimś edytorem (w tym przypadku ja używam nano) i przystępujemy do jego edycji:

nano /etc/ssh/sshd_config

Ustaw odpowiednią wersje protokołu dla SSH

Pierwszą, rzeczą na która warto zwrócić uwagę w pliku konfiguracyjnym jest wersja protokołu obsługiwana przez serwer SSH. Istnieją dwie. Ze względów bezpieczeństwa należy używać wersji nr 2, która została przeprojektowana od zera ze względu na ujawnione w wersji 1.5 podatności na ataki krypto analityczne, umożliwiające wstrzykiwanie komend do zaszyfrowanego strumienia SSH.

Jeżeli używasz Debiana to domyślnie masz już ustawioną odpowiednia wersje protokołu (nr 2). Jeśli używasz innych dystrybucji możesz spotkać się z taką linijka:

Protocol 2,1

należy ją zmieniać na:

Protocol 2

Zablokuj zdalne logowanie dla konta root’a

Dużym zagrożeniem dla naszego serwera są różnego typu boty, które w większości przypadków próbują złamać hasło root’a. Aby tego uniknąć należy wyłączyć możliwość bezpośredniego logowania użytkownika root poprzez SSH na serwer.

Uwaga: Przed wyłączeniem logowania na konto root należy utworzyć konto nowego użytkownika, którego dane wykorzystamy do późniejszego logowania. Jeśli tego nie zrobimy a mimo tego zablokujemy dostęp dla roota uniemożliwimy sobie możliwość zalogowania na nasz serwer. Jak utworzyć konto użytkownika znajdziesz w artykule: Własny VPS – pierwsze kroki

Aby to zrobić należy zmienić linijkę:

PermitRootLogin yes 
na
PermitRootLogin no

Zmiana portu SSH

Domyślnie serwer SSH oczekuje połączeń na porcie 22. Często wykorzystują to boty które próbują dokonać ataku na tym właśnie porcie. Kolejnym zagrożeniem są skanery portów które mogą dostarczyć atakującym informacji jakie usługi są uruchomione na jakiś portach. Skanują one zazwyczaj domyślnie tylko do portu 1024 (gdzie jak widzimy łapie się port 22 – z naszym serwerem SSH). Warto by to zmienić na port jakiś powyżej 1024 a najlepiej na 5000+.

Znajdujemy linię:

Port 22

i zamieniamy ją na np.

Port 5123

restartujemy serwer

/etc/init.d/ssh restart

teraz aby połączyć się z naszym serwerem należy wydać polecenie:

ssh [email protected] -p 5123
gdzie 5123 oznacza nr ustawionego portu

Kontrola dostępu

Kolejnym krokiem jaki można wykonać jest ograniczenie dostępu do SSH dla określonych użytkowników lub grup użytkowników.

Odpowiadają za to opcje:

AllowUsers user1_zSSH user2
DenyUsers user3_bezSSH user4
AllowGroups nazwa_grupy_z_SSH
DenyGroups grupa_bez_ssh

Dodatkowe opcje

PermintEmpty no - Zabrania logowania się na konto bez podania hasła
StrictModes yes  - Tryb rygorystyczny

Dodatkowym zabezpieczeniem może być umożliwienie logowania się na serwer tylko z określonych adresów IP. Jeśli posiadamy stałe IP (neostrada np takiego nie posiada). W pliku /etc/hosts.allow możemy wpisać:

sshd : 127.0.0.1 : allow
sshd : Twoj-adres-IP : allow

a w pliku /etc/hosts.deny

sshd: ALL

To by było na tyle w sprawie SSH. Tymczasem za do kolejnej części:
Instalacja serwera WWW (lighttpd)

1 komentarz

Możesz dodawać komentarze do tego artykułu.


  • kurna, nalezy oczywiscie pamietac zeby, nowo powstaly port ssh byl puszczony w zapoze

    barpat 4 lata temu Odpowiedz


Dodaj komentarz