Jak dostosować ustawienia SSH, aby zapewnić maksymalne bezpieczeństwo

Plik konfiguracyjny SSH w systemie Unix kontroluje działanie bezpiecznej powłoki. Można go użyć do uproszczenia korzystania z polecenia ssh, do skonfigurowania określonych funkcji pożądanych przez użytkownika lub do zwiększenia bezpieczeństwa przed możliwymi atakami. Chociaż stosunkowo proste czynności, takie jak zmiana portu SSH na urządzeniach, często mogą wyeliminować dużą liczbę zimnych wywołań SSH na komputerze, plik konfiguracyjny SSH może zrobić znacznie więcej.

Indeks

Gdzie jest plik konfiguracyjny SSH?

W systemach Linux plik konfiguracyjny ssh dla całego systemu znajduje się w katalogu „/ etc / ssh / ssh / ssh_config”.

W systemach macOS ten sam plik znajduje się w „/ private / etc / ssh / ssh_config”, który jest symbolicznie powiązany z „/ etc / ssh / ssh_config” ze względu na kompatybilność.

Drugi plik ssh_config specyficzny dla użytkownika znajduje się w „~ / .ssh / ssh_config” (symbol „~” oznacza katalog domowy). Ten plik zastępuje ogólnosystemowy plik konfiguracyjny, dzięki czemu można skonfigurować opcje specyficzne dla użytkownika bez zmiany ustawień systemowych. Systemy nie zawsze zawierają plik „~ / .ssh / ssh_config”, ale można go łatwo utworzyć.

W dalszej części ten plik konfiguracyjny jest określany jako „ssh_config” ze względu na przejrzystość i prostotę.

połączony Jak włączyć logowanie SSH bez hasła w systemie Linux

Edytuj plik ssh_config

Aby edytować plik ssh_config, otwórz okno terminala i edytuj plik za pomocą ulubionego edytora tekstu. Będziemy używać Nano w tym demo, ale możesz zamiast tego użyć vi lub emacs.

sudo nano /etc/ssh/ssh_config

Spowoduje to otwarcie pliku z dziesiątkami skomentowanych linii wyjaśniających, jak działa plik. Nie jest to jednak pełne wyjaśnienie.

Co to jest plik ssh_config i co robi ssh_config?

Plik ssh_config służy do kontrolowania działania bezpiecznej powłoki, lepiej znanej jako polecenie terminalu ssh, w systemie. Plik ssh_config jest zorganizowany według hostów. Każdy host zawiera określone ustawienia dla tego hosta. Znaki wieloznaczne, takie jak *, mogą być używane do dopasowania wielu nazw hostów w jednej deklaracji.

Opcje są deklarowane za pomocą pary klucz / definicja. Dostępnych jest wiele kluczy. Szczegółowe wyjaśnienie funkcjonalności poszczególnych klawiszy można znaleźć na stronie podręcznika ssh_config .

Wzmocnienie konfiguracji SSH

Blokowanie plików: przed edycją pliku upewnij się, że pliki ssh_config i sshd_config należą do administratora i są przez niego obsługiwane. W większości przypadków chcesz odmówić uprawnień komukolwiek innemu niż root.

sudo chown root: root / etc / ssh / sshd_config
sudo chmod og-rwx / etc / ssh / sshd_config

Potwierdź protokół SSH 2

Upewnij się, że używasz nowego, nowoczesnego protokołu 2 zamiast protokołu 1. Stary protokół używa słabszej kontroli integralności i jest ogólnie mniej bezpieczny.

Użyj następujących elementów w swoim ssh_config, aby jawnie ustawić protokół:

Protocolo 2

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> »>>>>>> >>> >>>>>>>>>.

Możesz także ustawić swój protokół niejawnie za pomocą szyfrów, co automatycznie ustawi protokół na 2, aby używać nowoczesnych szyfrów.

Liczby aes128-ctr, aes192-ctr, aes256-ctr

Dezaktywuj puste hasło

Upewnij się, że każde konto SSH używa hasła podczas logowania, blokując puste hasła.

PermitEmptyPasswords no> PermitEmptyPasswords

Wyłącz logowanie roota

Root powinien być używany rzadko w przypadku większości aplikacji systemu Linux. Uniemożliwiając dostęp roota, możesz zablokować konta specjalnie do potrzeb, których potrzebujesz i zabronić używania w całym systemie. To również konto jest atakowane. Opcje PermitRootLogin obejmują Tak, Brak hasła, Tylko wymuszone polecenia lub Nie. Wartość domyślna to tak. Kliknij wiersz poniżej, aby całkowicie wyjść z logowania roota.

PermitRootLogin no

Zmień numer portu

Możesz zmienić numer portu z 22 (domyślny), aby ograniczyć połączenia z serwerem na tym porcie. Ogranicza to większość użytkowników, którzy mogą za pomocą skryptów uzyskać dostęp do tego portu lub ręcznie zaatakować ten port. Nie ogranicza to jednak tych, którzy skanują otwarte drzwi i atakują to, co jest otwarte. Musisz również upewnić się, że każdy, kto uzyskuje dostęp do tego portu, zna nowy numer i że nowy numer portu jest używany przez dowolnego klienta lub oprogramowanie.

Aby ustawić port, zmień głównego demona ssh na "/ etc / ssh / sshd_config". Musisz dodać nową linię określającą port zgodnie ze składnią portu XXXXX.

Ograniczony dostęp

Jeśli na serwerze loguje się wiele osób, możesz całkowicie ograniczyć używanie SSH. W takich przypadkach możesz zezwolić i odmówić zarówno użytkownikom, jak i grupom. Aby to zrobić, musisz użyć jednego z następujących kluczy, a następnie wartości, które chcesz zezwolić lub zabronić: DenyUsers, AllowUsers, DenyGroups i AllowGroups. Odbywa się to w tej kolejności. Nawet jeśli zezwolisz na znalezienie użytkownika w sekcji Odmów użytkownika, zostanie on odrzucony.

Zezwalaj użytkownikom Ramesh John Jason
AllowGroups sysadmin dba
Odmów użytkownika Apache CVS Jane
DenyGroups developer qa>

Zaktualizuj LoginGraceTime

Domyślnie czas, po jakim dana osoba pozostaje nieaktywna bez logowania, wynosi dwie minuty. Ograniczając to, możesz zapobiec nieautoryzowanym połączeniom. Typowa wskazówka to minuta lub mniej. Ustaw czas za pomocą LoginGraceTime.

ZalogujGraceTime 1m

Dostosowywanie ustawień SSH

Twórz aliasy

Opcje wiersza poleceń ssh można określić za pomocą aliasu w ssh_config. Poniższy alias umożliwia użytkownikowi połączenie się z serwerem deweloperskim za pomocą opcji udostępnionych po prostu wpisując ssh dev w wierszu poleceń.

Rozwój hosta
Nazwa hosta dev.example.com
Port 22222
User Foobar

Spowoduje to uruchomienie następującego polecenia po uruchomieniu:

ssh [email protected] -p 22222

Zwróć uwagę, że port SSH został zmieniony na 22222, aby uniknąć zimnych połączeń. W przeciwnym razie jest to bardzo proste połączenie SSH, które jest skracane przez wiele znaków dla uproszczenia.

Uwierzytelnianie za pomocą bezpiecznych par kluczy

ssh jest bezpieczniejsze i wygodniejsze, gdy jest używane z parami kluczy publiczny / prywatny do uwierzytelniania niż z hasłami. Plik ssh_config może używać klucza IdentityFile do zadeklarowania określonego klucza dla określonego hosta.

Rozwój hosta
Nazwa hosta dev.example.com
Port 22222
User Foobar
Plik tożsamości ~ / .ssh / dev.example.key

Podobnie jak w poprzednich przykładach, to polecenie ssh jest uruchamiane z ssh dev, uruchamiając następujące równoważne polecenie w wierszu poleceń:

ssh -i ~/.ssh/dev.example.key [email protected] -p 22222

Ustaw inne opcje ssh

Poniższe opcje ssh są jednymi z najczęściej używanych kluczy w plikach ssh_config.

Kompresja: ten klucz przyjmuje argumenty „tak” lub „nie” i służy do włączania wyłączenia kompresji dla hosta. Zwykle nie jest to konieczne, chyba że połączenie jest niewiarygodnie wolne.

LogLevel: ustaw poziom szczegółowości w dziennikach ssh po stronie klienta. Dostępne opcje, od najmniej do najbardziej szczegółowych, to QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2 i DEBUG3.

StrictHostKeyChecking: Ustaw preferencje dotyczące dodawania hostów do znanych hostów. „Tak” nigdy nie dodaje znanych hostów. „Nie” jest zawsze dołączane do znanych hostów. „Zapytaj”, opcja domyślna, pyta użytkownika przed dodaniem go do pliku „unknown_hosts”. „Tak” zapewnia najlepszą ochronę przed atakami koni trojańskich, ale może być denerwujące, jeśli plik „unknown_hosts” jest źle zarządzany. „Nie” jest najmniej pewne, ale może sprawić, że łączenie się z dużą liczbą tymczasowych hostów będzie mniej bolesne.

UserKnownHostsFile - określa ścieżkę do pliku specyficznego dla użytkownika „unknown_hosts”.

Przekazywanie połączeń

ssh jest często używany do przekazywania połączeń, aby umożliwić połączenie lokalne do tunelu przez połączenie zdalne. Do skonfigurowania przekazywania połączeń można użyć następujących opcji.

LocalForward: Zdefiniuj połączenie w celu przekazywania ruchu z portu lokalnego do komputera zdalnego. Spowoduje to nawiązanie połączenia w sieci zdalnej.

RemoteForward - definiuje zdalny port, który ma zostać wyodrębniony z portu lokalnego. To jest odwrotność poprzedniej opcji.

DynamicForward - Skonfiguruj port lokalny do użytku z protokołem dynamicznego przekazywania.

Wniosek

Większość opcji ssh_config ma na celu zapewnienie wygodniejszych sposobów wykonywania niektórych zadań za pomocą polecenia ssh. Można to wykorzystać do skonfigurowania złożonych aliasów i skrótów, które pomagają zwiększyć bezpieczeństwo, ułatwiając korzystanie z bezpieczniejszych części ssh.

Możesz być zainteresowany

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Go up