Jak zabezpieczyć połączenie SSH w CentOS 7

SSH jest głównym protokołem używanym do łączenia się z serwerami linuksowymi i administrowania nimi. Z tego powodu jest to jeden z najczęściej atakowanych portów, gdy niegodziwi aktorzy próbują uzyskać dostęp do twojego serwera. W tym artykule omówimy kilka metod, których możesz użyć, aby uczynić połączenie SSH bardziej bezpiecznym.

Uwaga: W zależności od produktu, który posiadasz z OVHcloud, niektóre z tych kroków mogą być już wykonane. Jeśli tak jest, przejdź do następnego kroku. Dodatkowo, kroki w tym artykule zakładają, że uwierzytelniasz się na serwerze za pomocą kluczy SSH. Jeśli zamiast tego użyjesz hasła, niektóre kroki w tym artykule nie będą działać.

Wymagania wstępne

  • Jak używać kluczy SSH
  • Serwer z systemem CentOS 7

Tematy

  • Tworzenie nowego użytkownika Sudo
  • Zmiana demona SSH Konfiguracja

Tworzenie nowego użytkownika Sudo

Zawsze najlepszą praktyką jest uniemożliwienie uwierzytelniania roota przez SSH, ponieważ jest to nazwa użytkownika, do której ludzie będą próbowali się włamać najczęściej. Dlatego pierwszą rzeczą, którą chcemy zrobić, aby zabezpieczyć nasz serwer, jest utworzenie nowego użytkownika sudo dla SSH. Aby to zrobić, wpisz następującą komendę, zastępując czerwoną nazwę użytkownika wybraną przez siebie nazwą użytkownika:

# adduser username

Następnie ustawimy hasło dla tego użytkownika:

# passwd username

Postępuj zgodnie z monitem, aby utworzyć i potwierdzić hasło. Teraz chcemy nadać naszemu nowemu użytkownikowi uprawnienia sudo, abyśmy mogli stać się rootem i uruchamiać polecenia, które wymagają uprawnień administracyjnych. Możemy to zrobić wpisując następujące polecenie.

# usermod -aG wheel username

Na koniec, chcemy umożliwić naszemu nowemu użytkownikowi uwierzytelnianie przy użyciu klucza publicznego SSH, który już dostarczyliśmy użytkownikowi root. Możemy użyć prostego polecenia rsync, aby skopiować klucz publiczny do pliku authorized_keys naszego nowego użytkownika.

# rsync --archive --chown=username:username ~/.ssh /home/username

Przed przejściem do następnego kroku, wyloguj się i upewnij się, że jesteś w stanie uwierzytelnić się na serwerze jako nowy użytkownik używając SSH. Jeśli nie jesteś w stanie zalogować się jako nowy użytkownik, nadal będziesz w stanie zalogować się jako root; potwierdź, że wszystkie polecenia zostały wpisane poprawnie i spróbuj zalogować się jako nowy użytkownik ponownie.

Zmiana konfiguracji demona SSH

Ponieważ używamy kluczy SSH i nowego użytkownika do uwierzytelniania się na naszym serwerze, nie chcemy, aby ktokolwiek uwierzytelniał się przy użyciu hasła lub nazwy użytkownika root. Aby to osiągnąć, musimy najpierw przejść do pliku konfiguracyjnego demona OpenSSH. Aby to zrobić, otwórz plik w edytorze tekstowym, używając następującego polecenia:

$ sudo vi /etc/ssh/sshd_config

W pliku tym chcemy dokonać trzech zmian. Po pierwsze, chcemy zmienić port, na którym OpenSSH nasłuchuje żądań.

Ostrzeżenie: Jeśli masz aktywne firewalle, musisz zezwolić na ruch przez wybrany port, w przeciwnym razie zablokujesz sobie dostęp do serwera. Jeśli zablokujesz się na serwerze, możesz odzyskać dostęp przez IPMI lub KVM. Aby dowiedzieć się więcej, zapoznaj się z artykułem Rozpoczęcie pracy z IPMI.

Na górze pliku zobaczysz sekcję, która domyślnie wygląda tak:

#Port 22#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::

Ukomentuj sekcję „Port” i wybierz dowolny prawidłowy numer portu, jak w poniższym przykładzie. W naszym przykładzie, używamy portu 12345.

Port 12345#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::

Następnie przewiń w dół do części # Authentication: pliku. Zobaczysz pięć opcji, które domyślnie będą wyglądały następująco:

#LoginGraceTime 2m#PermitRootLogin yes
PermitRootLogin yes#StrictModes#MaxAuthTries 6#MaxSessions 10

Tutaj chcemy zmienić „tak” obok „PermitRootLogin” na „nie”. Będzie to wyglądało następująco:

#LoginGraceTime 2m
#PermitRootLogin yesPermitRootLogin no#StrictModes#MaxAuthTries 6#MaxSessions 10

Teraz chcemy przewinąć plik sshd_config nieco dalej, aby dokonać naszej ostatniej zmiany – wyłączenia uwierzytelniania hasłem. Zobaczysz sekcję, która domyślnie wygląda tak:

# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication yes

Chcemy zmienić „yes” obok „PasswordAuthentication” na „no”. Będzie to wyglądało następująco:

# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication no

Zapisz i wyjdź z pliku. Na koniec musimy zrestartować OpenSSH, aby zmiany zaczęły obowiązywać. W tym celu wpisujemy następującą komendę:

$ sudo systemctl restart sshd.service

Poświęćmy chwilę na podsumowanie tego, co zrobiliśmy. Zmieniliśmy numer portu, który jest używany do nasłuchiwania żądań SSH. Następnie wyłączyliśmy dostęp do SSH dla użytkownika root lub każdego użytkownika próbującego uwierzytelnić się za pomocą hasła. Jeśli zrobiliśmy to poprawnie, poniższe polecenie nie będzie już działać, aby zalogować się do serwera.

$ ssh [email protected]

Aby zalogować się teraz, będziemy musieli określić numer portu, którego używamy do nasłuchiwania żądań SSH. Oznacza to, że od teraz będziemy musieli używać następującego polecenia, zastępując liczbę obok „-p” numerem portu, który wybraliśmy wcześniej:

$ ssh -p 12345 [email protected]

Upewnij się, że to polecenie działa, a poprzednie nie. Jeśli tak, jesteś gotowy do bezpiecznego dostępu do swojego serwera przez SSH.

Koniec

Przy tak wielu złych aktorach korzystających z Internetu, nigdy nie było ważniejsze, aby zabezpieczyć wszystkie potencjalne punkty wejścia na twój serwer. Postępując zgodnie z tym przewodnikiem, pomogłeś w zabezpieczeniu najbardziej powszechnego punktu wejścia na serwery Linux.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.