Łączenie się z Ubuntu przez ssh. Używanie SSH do łączenia się ze zdalnym serwerem Ubuntu. Zezwalaj na logowanie ssh tylko określonym użytkownikom.

Do obsługi serwera ssh, a także klienta ssh, użyjemy dobrze znanego pakietu OpenSSH

Instalacja

Zainstaluj OpenSSH za pomocą polecenia:

sudo apt install ssh

Dostrajanie serwerów

Podczas instalacji serwer SSH jest automatycznie rejestrowany podczas uruchamiania. Możesz kontrolować jego uruchamianie, zatrzymywanie lub restartowanie za pomocą poleceń:

usługa sudo ssh stop | start | restart

Zaloguj się z innych komputerów

Powinieneś regularnie otrzymywać monit o podanie hasła. Sprawdź, czy chcesz uwierzytelniać klucze, a nie hasła. Po uruchomieniu wystąpienia możesz się z nim połączyć i używać go tak, jakbyś używał komputera przed sobą.

Po uruchomieniu instancji przygotowanie instancji może potrwać kilka minut, aby można było się z nią połączyć. Upewnij się, że instancja przeszła kontrolę stanu - możesz wyświetlić te informacje w kolumnie „Sprawdzanie statusu” na stronie „Instancje”.

Głównym plikiem konfiguracyjnym serwera SSH jest plik / etc / ssh / sshd_config, który może być odczytany lub odczytany tylko przez administratora. Po każdej zmianie tego pliku należy ponownie uruchomić serwer ssh, aby zastosować takie zmiany.

Przykładowa konfiguracja serwera SSH w Ubuntu 16.04:

# Jakie porty, adresy IP i protokoły słuchamy Port 22 # „any” - any # # „inet” (tylko IPv4) # # „inet6” (tylko IPv6) # AddressFamily inet # Jakie interfejsy / sieci są dozwolone, jeśli # nie określaj, a następnie nasłuchuje na wszystkie adresy. #ListenAddress :: #ListenAddress 0.0.0.0 # Protokół, na którym będzie działać SSH (drugi zalecany) Protokół 2 # Określa plik zawierający prywatny klucz hosta dla wersji protokołu 2 HostKey / etc / ssh / ssh_host_rsa_key #HostKey / etc / ssh / ssh_host_dsa_key #HostKey / etc / ssh / ssh_host_ecdsa_key #HostKey / etc / ssh / ssh_host_ed25519_key # Udostępnianie bezpieczeństwa włączone AUTH # # LOCAL0 # # LOCAL1 # # LOCAL2 # # LOCAL3 # # LOCAL4 # # LOCAL5 # # LOCAL6 # # LOCAL7 # SyslogFacility AUTH # SILENT # # CICHY # # FATAL # # BŁĄD # # INFO # # VERBOSE # # DEBUG # DEBUG1 # # DEBUG2 # # DEBUG3 # LogLevel INFO # Uwierzytelnianie: LoginGraceTime 45 # Zezwalaj na dostęp użytkownika root lub nie. # „Tak” - administrator może się zalogować. # Zastosowano aktualny globalny schemat uwierzytelniania. # „Bez hasła” - administrator może się zalogować. # Uwierzytelnianie hasłem zostanie dla niego wyłączone. # „Tylko polecenia wymuszone” - superużytkownik będzie mógł się zalogować, # używając uwierzytelnienia opartego na kluczu publicznym i # tylko jeśli przekaże niezbędne polecenie do wykonania. # Wszystkie inne metody uwierzytelnienia dla administratora będą blokowane. # „Nie” - administrator nie może używać ssh do logowania. PermitRootLogin nie StrictModes tak # Wskazuje, czy dozwolone jest wyłącznie uwierzytelnianie RSA. # Rzeczywisty tylko dla wersji protokołu 1. RSAAuthentication tak # Użyj uwierzytelnienia klucza publicznego PubkeyAuthentication tak # Określa plik zawierający klucze publiczne używane # do uwierzytelnienia użytkownika. # AuthorizedKeysFile% h / .ssh / Author_keys # Zapobiega użyciu plików .rhosts i .shosts # # w procesie uwierzytelniania w oparciu o weryfikację hosta. IgnoreRhosts tak # Aby to zadziałało, będziesz także potrzebował kluczy hosta w / etc / ssh_known_hosts RhostsRSAAuthentication nie # podobny do protokołu wersja 2 HostbasedAuthentication no # Określa, czy sshd powinien ignorować użytkownika # "znane hosty" ~ / .ssh / znane_hosty dla RhostsRSAAuthentication # Ignorowanie tak tak Włącza uwierzytelnianie przy użyciu pustego hasła (NIE ZALECANE) PermitEmptyPasswords no # Wskazuje, czy zezwolić na uwierzytelnianie w odpowiedzi na pytanie ChallengeResponseAuthentication no # Wskazuje, czy dozwolone jest uwierzytelnianie hasłem PasswordAuthentication no # Opcja Kerberos # Wskazuje, czy hasło podane przez użytkownika # # dla uwierzytelnienia # wymaga KerberosAuthentication no # Jeśli AFS jest aktywny, a użytkownik otrzymał Kerberos 5 TGT, # czy próbować uzyskać token AFS, zanim użytkownik # uzyska dostęp do swojego folderu domowego. # Domyślne ustawienie to „nie”. #KerberosGetAFSToken no # Określa, co zrobić, gdy uwierzytelnienie # przez Kerberos zakończy się niepowodzeniem. Jeśli # wartość \u003d „tak” - hasło zostanie zweryfikowane przy użyciu # dowolnego dodatkowego lokalnego mechanizmu autoryzacji, # na przykład - / etc / passwd. # Domyślnie jest tak. #KerberosOrLocalPasswd tak # Wskazuje, czy automatycznie zniszczyć plik za pomocą # biletu biletu użytkownika na koniec sesji. # Domyślnie jest tak. #KerberosTicketCleanup tak # Opcje GSSAPI # Wskazuje, czy dozwolone jest uwierzytelnianie użytkownika oparte na GSSAPI. Domyślnie jest to „nie” #GSSAPIAuthentication no # Wskazuje, czy pamięć podręczna # poświadczeń uwierzytelnienia użytkownika powinna zostać automatycznie zniszczona na koniec sesji. # Wartość domyślna to „tak” #GSSAPICleanupCredentials tak # Wskazuje, czy dozwolone jest przekierowanie podsystemu graficznego X11. # X11 Przekazywanie tak # Wskazuje numer pierwszego wyświetlacza dostępnego dla sshd jako przekierowanie # X11. # X11DisplayOffset 10 # Określa, czy sshd powinien wyświetlać informacje / etc / motd #, gdy użytkownik loguje się interaktywnie. PrintMotd no # Wskazuje, czy sshd powinien wyświetlać datę i godzinę ostatniej sesji, gdy użytkownik logował się interaktywnie. # Domyślnie jest tak. PrintLastLog tak # # Wskazuje, czy system powinien wysyłać wiadomości TCP do klienta w celu # utrzymania połączenia. TCPKeepAlive tak # Ustawia liczbę wiadomości do klientów, które sshd # wysyła w rzędzie bez otrzymywania odpowiedzi od # klienta. Jeśli wartość progowa zostanie osiągnięta, a # klient nie odpowiedział, sshd rozłączy klienta, przerywając sesję # ssh. #ClientAliveCountMax # Ustawia odstęp czasu w sekundach. Jeśli podczas # tego okresu nie było wymiany danych z klientem, sshd # wysyła wiadomość przez zaszyfrowany kanał, # żądając odpowiedzi od klienta. Wartość domyślna to 0, tj. # nie wysyłaj takich wiadomości. Ta dyrektywa działa tylko w przypadku protokołu ssh2. #ClientAliveInterval # Wskazuje, czy należy użyć logowania dla # sesji interaktywnej. Wartość domyślna to „nie”. #UseLogin no # Wskazuje maksymalną liczbę równoczesnych # nieautoryzowanych połączeń z sshd. # Dodatkowo możesz ustawić wczesne resetowanie połączeń, # określając trzy parametry jako parametr, oddzielając je # dwukropkiem „start: rate: full” (na przykład: „3:30:30”). # sshd odrzuci próbę połączenia z prawdopodobieństwem równym # „rate / 100” (tj. w naszym przykładzie - 30%), jeśli # ma już „start” (3) nieautoryzowane połączenia. # Prawdopodobieństwo wzrasta liniowo, a wszelkie próby połączenia zostaną # odrzucone, jeśli liczba nieautoryzowanych połączeń osiągnie wartość „pełna” (30). # MaxStartups 3:30:30 # Wskazuje, który plik zawiera baner tekstowy, który # zostanie wyświetlony użytkownikowi PRZED # procedurą uwierzytelnienia. Ta opcja jest dostępna tylko dla protokołu ssh2. Baner /etc/issue.net # Zezwól klientowi na przesyłanie regionalnych zmiennych środowiskowych AcceptEnv LANG LC_ * # Definiuje i konfiguruje podsystem zewnętrzny (na przykład # demon transferu plików - demon transferu plików). Podsystem sftp / usr / lib / openssh / sftp-server # Włącza PAM (interfejs wtykowy Modułu uwierzytelniania #) Jeśli ustawione na tak, dla wszystkich typów uwierzytelniania #, oprócz przetwarzania modułu sesji i konta # PAM, uwierzytelnianie na podstawie # żądanie-odpowiedź (ChallengeResponseAuthentication i # PasswordAuthentication) Uwierzytelnianie # żądanie-odpowiedź w PAM zwykle pełni tę samą rolę co uwierzytelnianie za pomocą hasła, powinieneś wyłączyć # albo PasswordAuthentication lub # ChallengeResponseAuthentication. Warto zauważyć, że # jeśli włączona jest dyrektywa UsePAM, nie będzie można uruchomić # sshd jako użytkownik inny niż root. # Wartość domyślna to „nie”. UsePAM tak

Sprawdź, czy instancja działa i nie jest bezczynna. W wiersz poleceń zmień katalogi na lokalizację pliku klucza prywatnego, który został utworzony podczas uruchamiania instancji. W powłoka poleceń zmień katalogi na lokalizację pliku klucza prywatnego podanego podczas uruchamiania instancji. Jeśli pasują, przejdź do następnego kroku. Wpisz tak.

  • Jeśli wolisz, możesz użyć polecenia lub.
  • Znajdź klucz prywatny.
Najbardziej podstawowa forma zespołu.

To polecenie zakłada, że \u200b\u200bnazwa użytkownika w systemie zdalnym jest zgodna z nazwą użytkownika w systemie lokalnym. Jeśli nazwa użytkownika jest inna niż system zdalny, możesz ją podać przy użyciu tej składni. Po połączeniu z serwerem możesz zostać poproszony o potwierdzenie swojej tożsamości poprzez podanie hasła.

Możesz skopiować powyższy tekst do własnego sshd_config i użyć go później.

Sam niepoprawnie skonfigurowany serwer SSH stanowi ogromną lukę w zabezpieczeniach systemu, ponieważ potencjalny atakujący ma możliwość uzyskania prawie nieograniczonego dostępu do systemu. Ponadto sshd ma wiele dodatkowych przydatnych opcji, które warto uwzględnić w celu poprawy użyteczności i bezpieczeństwa).

Teraz skonfiguruj ssh na serwerze

Później przyjrzymy się, jak wygenerować klucze do użycia zamiast haseł. Aby powrócić do sesji lokalnej, wystarczy wejść. Zostanie wyświetlony ekran logowania. Stwórz utworzyć kopię zapasową obecna wersja ten plik przed edycją. Będziesz chciał pozostawić większość opcji tylko w tym pliku. Istnieje jednak kilka, na które można zwrócić uwagę.

Limit czasu w przypadku braku aktywności połączenia

Prawdopodobnie powinieneś zostawić tę opcję w spokoju, jeśli nie masz konkretnego powodu. Jeśli zmienisz port, pokażemy Ci, jak później połączyć się z nowym portem. Deklaracje kluczy hosta wskazują, gdzie szukać globalnych kluczy hosta. Omówimy, który klucz hosta będzie później.

Port, ListenAddress i AddressFamily

Te trzy parametry określają, które porty i adresy serwer będzie oczekiwał na połączenia przychodzące. Po pierwsze, jeśli to możliwe, sensowne jest ograniczenie rodziny przetwarzanych adresów do naprawdę użytecznego, to znaczy, jeśli używasz tylko IPv4, wyłącz IPv6 i odwrotnie. Można to zrobić za pomocą parametru AddressFamily, na przykład (dla rozdzielczości IPv4 i zakazu IPv6):

Te dwa elementy wskazują poziom rejestrowania, który powinien nastąpić. Te parametry określają niektóre dane logowania. Dobrym pomysłem może być ustawienie tego czasu nieco dłużej niż czas potrzebny do normalnego logowania.

Zainstaluj i skonfiguruj klienta OpenSSH na Ubuntu

Zapobiega to próbom logowania, gdy pliki konfiguracyjne nie są chronione. Umożliwia to przeglądanie graficznego interfejsu użytkownika systemu zdalnego w systemie lokalnym. Musisz dokładnie przetestować zmiany, aby upewnić się, że działają zgodnie z oczekiwaniami.

Po drugie, wskazana jest zmiana standardowego portu (22), na którym nasłuchuje sshd. Wynika to z faktu, że wiele skanerów sieciowych nieustannie próbuje połączyć się z 22. portem i przynajmniej uzyskać dostęp poprzez sortowanie loginów / haseł z ich bazy danych. Nawet jeśli uwierzytelnianie hasłem jest wyłączone, próby te znacznie zablokują dzienniki i (w dużych liczbach) mogą negatywnie wpłynąć na szybkość serwera ssh. Jeśli z jakiegoś powodu nie chcesz zmieniać standardowego portu, możesz użyć różnych zewnętrznych narzędzi do walki z brutalną siłą, na przykład fail2ban, i wbudowanych, takich jak MaxStartups.
Można określić port jako wartość bezwzględną dla wszystkich interfejsów za pomocą dyrektywy Port lub określoną wartość dla każdego interfejsu za pomocą dyrektywy ListenAddress.

Przydałoby się mieć wiele sesji podczas wprowadzania zmian. Umożliwi to zmianę konfiguracji w razie potrzeby. Jeśli masz jakiekolwiek problemy, pamiętaj, że możesz zalogować się za pomocą łącza konsoli na stronie Krople. Chociaż warto zalogować się do zdalnego systemu za pomocą haseł, o wiele lepiej jest utworzyć uwierzytelnianie oparte na kluczach.

Jak działa uwierzytelnianie oparte na kluczu?

Uwierzytelnianie oparte na kluczach polega na utworzeniu pary kluczy: klucz prywatny i klucz publiczny. Klucz prywatny znajduje się na komputerze klienta i jest chroniony i utrzymywany w tajemnicy. Klucz publiczny można udostępnić każdemu lub hostować na dowolnym serwerze, do którego chcesz uzyskać dostęp.

Zakaz zdalny dostęp dla superużytkownika

Domyślnie dostęp do konta root jest zabroniony hasłem (kluczem - możesz) - opcja PermitRootLogin jest ustawiona na bez hasła4). Ale pod warunkiem, że domyślnie w Użytkownik Ubuntudodane podczas instalacji systemu ma możliwość rozwiązania wszystkich zadań administracyjnych za pośrednictwem sudo, aby stworzyć możliwość rootowania dostępu do systemu za pośrednictwem ssh - wygląda to nieracjonalnie (nawet przy uwierzytelnianiu klucza). Zaleca się całkowite wyłączenie. ta opcja lub zastosuj ją tylko w trybie wymuszonych poleceń.

Podczas próby połączenia za pomocą pary kluczy serwer użyje klucza publicznego, aby utworzyć wiadomość dla komputera klienckiego, którą można odczytać tylko za pomocą klucza prywatnego. Komputer kliencki następnie wysyła odpowiednią odpowiedź z powrotem do serwera, a serwer będzie wiedział, że klient jest legalny.

Jak przenieść swój klucz publiczny na serwer

Cały proces jest wykonywany automatycznie w tle po skonfigurowaniu kluczy. Zwykle jest twój komputer lokalny. Wpisz następujące polecenie w wierszu polecenia. Spójrz na uprawnienia do plików. Oto jak powinno być, aby zachować to w tajemnicy. Możesz skopiować klucz publiczny na zdalny serwer, uruchamiając następujące polecenie.

Uwierzytelnianie hasła

Uwierzytelnianie za pomocą hasła domyślnie jest praktycznie najbardziej prymitywnym sposobem autoryzacji w sshd. Z jednej strony upraszcza to konfigurację i podłączanie nowych użytkowników (wystarczy, że użytkownik zna ich login / hasło systemowe), z drugiej strony zawsze można odebrać hasło, a użytkownicy często zaniedbują tworzenie złożonych i długich haseł. Specjalne boty nieustannie skanują serwery ssh dostępne w Internecie i próbują się do nich zalogować, sortując loginy / hasła z ich bazy danych. Korzystanie z uwierzytelniania za pomocą hasła jest zdecydowanie odradzane.

Po wprowadzeniu hasła skopiuje on swój klucz publiczny do pliku klucza autoryzowanego na serwerze, co pozwoli ci zalogować się bez hasła następnym razem. Jeśli chcesz wykonać tylko jedno polecenie w systemie zdalnym, możesz określić je po hoście w następujący sposób.

Łączysz się z komputer zdalny, uwierzytelnij się, a polecenie zostanie wykonane. Korzystając z różnych opcji, znajdziesz bardziej zaawansowane funkcje, które ułatwią Ci życie. Uwaga. Wiele poleceń w tym artykule musi być uruchomionych na komputerze lokalnym.

Jeśli z jakiegoś powodu nadal chcesz korzystać z uwierzytelniania za pomocą hasła, upewnij się, że nikt nie może się zalogować przy użyciu pustego hasła. Aby to zrobić, ustaw dyrektywę PermitEmptyPasswords no

Protokoły SSH1 i SSH2

Jak już wspomniano, sshd może współpracować z protokołami SSH1 i SSH2. Jednak korzystanie z niebezpiecznego SSH1 jest wysoce odradzane. Spraw, aby sshd działał tylko z SSH2

Jeśli przebudowałeś serwer w chmurze, możesz otrzymać następujący komunikat. Podczas odbudowywania serwera w chmurze ten klucz zdalnego hosta ulega zmianie, więc komputer ostrzega o podejrzanej aktywności. Otrzymasz następujący komunikat, ponieważ próbujesz połączyć się z serwerem po raz pierwszy.

Nie można ustalić tożsamości hosta 1. Czy na pewno chcesz kontynuować połączenie? Następnie musisz się uwierzytelnić, aby móc połączyć się z serwerem. Wprowadź hasło, naciśnij „Enter” i gotowe. Umożliwia to bezpieczny sposób odczytu i zapisu konfiguracji urządzeń, dzienników dostępu, rozwiązywania problemów i przesyłania plików. Jeśli w dowolnym momencie procesu logowania jesteś bezczynny przez dłuższy czas, może pojawić się okno dialogowe z następującym komunikatem: Nieoczekiwanie zamknięte połączenie internetowe serwer. Wpisz „tak” i naciśnij „Enter”, aby klucz pamięci podręcznej klienta „Klucz hosta” był uważany za zaufany. Wiersz poleceń z nazwą użytkownika i nazwą urządzenia wskaże udane połączenie i to zdalne urządzenie będzie gotowy na przyjęcie twoich poleceń. Wpisz „Tak” i naciśnij „Enter”, aby klucz pamięci podręcznej klienta „Klucz hosta” był uważany za zaufany. Po wprowadzeniu hasła podczas wprowadzania hasła ze względów bezpieczeństwa na ekranie nie są wyświetlane żadne znaki. Udane połączenie zostanie wskazane w wierszu polecenia wraz z nazwą użytkownika i nazwą urządzenia, a urządzenie zdalne będzie gotowe do przyjęcia poleceń. Po wejściu ze względów bezpieczeństwa na ekranie nie będą wyświetlane żadne znaki. . To ostrzeżenie zobaczysz tylko przy pierwszym połączeniu.

Uwierzytelnianie klucza SSH2 RSA

Najbardziej preferowaną metodą autoryzacji jest uwierzytelnianie na podstawie kluczy RSA SSH2. Dzięki tej metodzie użytkownik generuje po swojej stronie parę kluczy, z których jeden klucz jest tajny, a drugi publiczny. Klucz publiczny jest kopiowany na serwer i służy do weryfikacji tożsamości użytkownika. Aby uzyskać więcej informacji na temat tworzenia pary kluczy i sposobu umieszczania ich na serwerze, zobacz opis klienta SSH.

Teraz powinieneś zobaczyć monit Raspberry Pi, który będzie identyczny z tym, który znajduje się na samej malinie. Jesteś teraz w wierszu poleceń, jak poprzednio, ale masz możliwość otwierania okien graficznych. Dowiesz się, jak połączyć się ze zdalnym hostem i jak kopiować między hostami. Ten samouczek zawiera również kilka ważnych różnic między zespołami.

Jest to protokół, który umożliwia bezpieczne połączenia między komputerami. Uwaga: należy to zrobić w terminalu. W tym przewodniku założono, że masz podstawową wiedzę na temat terminali, na przykład, jak rozpocząć sesję terminala w systemie i zapoznać się z podstawowymi poleceniami i składniami.

Skonfiguruj klienta SSH

Wpisanie klucza jest uważane za najbezpieczniejsze, aw większości przypadków po stronie serwera ta funkcja jest włączona, więc do korzystania z niej nie są wymagane uprawnienia administratora. Na komputerze klienckim generujemy klucz:

Ssh-keygen

Otrzymujemy ofertę wprowadzenia hasła w celu ochrony pliku klucza (okazuje się ono przydatne, gdy plik wpadnie w niepowołane ręce). Przekazujemy klucz publiczny do serwera za pomocą polecenia

Jeśli wyświetla coś takiego. Oznacza to, że jeśli chcesz połączyć się ze zdalnym hostem z ustawieniami domyślnymi, musisz upewnić się, że w razie potrzeby port 22 jest przekierowany na serwer, z którym próbujesz się połączyć. Wracając do zespołu, którym biegliśmy. Jeśli wpiszesz tutaj hasło, nie zobaczysz gwiazdek. Po wprowadzeniu hasła, jeśli nazwa użytkownika i hasło są prawidłowe, powinieneś uruchomić powłokę na serwerze.

Jeśli nie, upewnij się, że łączysz się z serwerem, o którym wiesz, że możesz zalogować się przy użyciu nazwy użytkownika i hasła. Możesz spróbować połączyć się z komputerem lub przeczytać go, aby dowiedzieć się, jak określić inną nazwę użytkownika. Określenie innej nazwy użytkownika jest dość proste. Być może już go znasz.

Ssh-copy-id -i ~ / .ssh / id_rsa.pub użytkownik_serwera @ adres_serwera

Wszystko, możesz iść.

Gdy ssh działa na niestandardowym porcie:

Ssh-copy-id -i ~ / .ssh / id_rsa.pub -p twój_port serwer_użytkownik @ adres_serwera

Ustaliliśmy, co jest Ssh i jakie są jego zalety, wdrożyliśmy również najprostszy przykład Sshserwer i klient.

Ta składnia jest również używana przez wiele innych protokołów, więc zawsze warto o tym wiedzieć. Nawiasem mówiąc, nadal będziesz proszony o podanie hasła. Ze względów bezpieczeństwa w składni nie można określić tylko hasła. Zawsze będziesz proszony online, jeśli nie zaczniesz konfigurować serwera w trybie zaawansowanym. Jeden z nich unika prób wprowadzenia brutalnej siły. Chociaż jest bardzo mało prawdopodobne, że hakerzy kiedykolwiek uzyskają dostęp do systemu, istnieje jeszcze jeden aspekt ataków siłowych, którego zwykle chcesz uniknąć: uruchomienie systemu i połączenie.

Dzisiaj porozmawiam o więcej szczegółowa konfiguracja Sshserwer.

Jak głosi słynne zdanie, „w Linux wszystko jest plikiem ”, dlatego należy go skonfigurować Sshserwer jest niezbędny i wystarczający do edycji jednego pliku konfiguracyjnego. Jego pełna ścieżka to / etc / ssh / sshd_config. Aby edytować, otwórz ten plik z uprawnieniami administratora w dowolnym edytorze tekstu.

Uruchomienie polecenia na zdalnym serwerze

Ataki typu brute force są zwykle przeprowadzane z dziesiątkami, a nawet tysiącami prób na sekundę, a to nieuzasadnione spowalnia serwer i wymaga pewnej przepustowości, którą można by wykorzystać znacznie lepiej. Po zmianie portu na niestandardowe skrypty hakerskie zostaną po prostu odrzucone, a większość przepustowości zostanie zapisana. Czasami, szczególnie w skryptach, chcesz się połączyć zdalny serwer, uruchom jedno polecenie i wyjdź ponownie. Możesz po prostu podać polecenie po parametrach, nazwie użytkownika i nazwie hosta.

Przed edycją zróbmy to na wszelki wypadek utworzyć kopię zapasową plik:

Sudo cp /etc/ssh/sshd_config(,.bak)

Zobaczmy teraz jego zawartość:

Sudo nano / etc / ssh / sshd_config

Po każdej zmianie tego pliku należy ponownie uruchomić ssh-serwer do stosowania naszych zmian.

Jak widzimy, jest tu całkiem sporo parametrów, z każdym z nich poradzimy sobie stopniowo.

Zmusi to serwer do aktualizacji bazy wyszukiwania. Oczywiście jest to bardzo proste polecenie bez argumentów. Co jeśli chcesz powiedzieć komuś o najnowszych wiadomościach, które czytasz w Internecie? Nie zapominaj, że pojedyncze cytaty powinny znajdować się w całym zespole, a nie nigdzie indziej. Jest to bardzo przydatne, jeśli chcesz przenieść pliki między komputerami, na przykład w celu wykonania kopii zapasowej.

Istnieją jednak pewne ważne różnice. W trzecim przypadku dane są przesyłane bezpośrednio między serwerami; twój komputer powie tylko serwerom, co ma robić. Te opcje są bardzo przydatne w przypadku wielu rzeczy wymagających transferu plików, więc spójrzmy na składnię tego polecenia.

Port

Określa port, na którym nasz serwer będzie nasłuchiwał. Domyślnie nasłuchuje 22 Port TCP / IP. Ciekawym faktem jest to, że można określić wiele portów. Na przykład:

Listenaddress

Ograniczenie autoryzacji interfejsu (ListenAddress)

Ogólny widok ustawienia można zapisać w następujący sposób:

ListenAddress host | IPv4_addr | IPv6_addr ListenAddress: port

Wskazuje adres sieciowyna którym serwer będzie „nasłuchiwał”.
Jeśli serwer ma kilka interfejsów sieciowych skonfigurowanych do używania różnych IPadresy, możesz ograniczyć dostęp za pomocą tego parametru.
Na przykład na serwerze następujące 4 interfejsy sieciowe:

Eth0 - 192.168.0.1 eth1 - 192.168.0.2 eth2 - 192.168.0.3 eth3 - 192.168.0.4

Domyślna ssh-serwer jest bezczynny IPadresy. Jeśli chcesz, aby użytkownicy mogli logować się tylko na interfejsach 2 i 3 , powinieneś to zrobić:

ListenAddress 192.168.0.2 ListenAddress 192.168.0.3

Możesz również określić port tutaj. Na przykład:

ListenAddress 192.168.0.2:222

Jeśli nie określono portu, ssh wysłucha pod tym adresem i
na porcie określonym w opcji Port Jeśli użyjesz Listenaddress bez określania portu, a następnie opcję Port musi być poprzedzona opcją ListenAddress. Jeśli w ogóle nie określono ListenAddress, następnie serwer domyślnie nasłuchuje na wszystkich lokalnych adresach.

Adres rodziny

Wskazuje, która rodzina IP adresy muszą być używane przez usługę ssh. Możliwe opcje:
"Każdy" - dowolny
„Inet” (tylko IPv4)
„Inet6” (tylko IPv6)
Domyślna - "Każdy."

Jeśli to możliwe, sensowne jest ograniczenie rodziny przetwarzanych adresów do faktycznego wykorzystania, to znaczy, jeśli używasz tylko IPv4 - rozłączyć się IPv6, i wzajemnie.

Na przykład, aby rozwiązać IPv4 i zakaz IPv6:

AddressFamily inet

Protokół

ssh może pracować z protokołami Ssh1 i SSH2. W takim przypadku użycie niebezpiecznych Ssh1 bardzo zniechęcony. Robić ssh działa tylko z protokołem Ssh2 jest to możliwe:

Protokół 2

PermitRootLogin

Możliwość zalogowania się jako superużytkownik

Domyślnie zaloguj się na zdalnym serwerze jako użytkownik korzeń nikt nie zabrania. Ale to nie jest całkowicie bezpieczne. Zamiast tego będzie bardziej poprawnie autoryzowany przez użytkownika konto i podnieś swoje przywileje za pomocą polecenia „Su -”, albo użyć „Sudo”.

Jeśli Twoja organizacja ma kilku administratorów systemu i wszyscy łączą się z serwerem pod nadzorem administratora, nie zawsze jest możliwe ustalenie, który z administratorów jest na serwerze. Dlatego po wyłączeniu możliwości autoryzacji bezpośrednio pod użytkownikiem korzeń administratorzy systemu najpierw zalogują się na swoim koncie, a dopiero potem otrzymają uprawnienia administratora; ułatwi to audyt serwera i działania podejmowane przez administratorów systemu.
Aby wyłączyć powyższą funkcję, wyłącz parametr PermitRootLoginwartość ustawienia "Nie".

PermitRootLogin no

PermitEmptyPasswords

Blokuj puste hasła

PermitEmptyPasswords no

AllowUsers, AllowGroups

Domyślnie każdy użytkownik serwera może się zalogować. Lepiej jest ograniczyć liczbę użytkowników, którzy mają dostęp ssh.
Może to być przydatne, gdy tworzysz określoną liczbę użytkowników w systemie, ale zezwalasz na dostęp przez ssh chcę tylko trochę.

Aby to zrobić, w pliku konfiguracyjnym sshd_config Musisz dodać określonych użytkowników, którzy istnieją na serwerze. W poniższym przykładzie są to użytkownicy john Peter i michał którzy mogą wejść na serwer. Nazwy użytkowników są oddzielone spacjami.

AllowUsers John Peter Michael

Podczas dodawania wszystkich użytkowników, którzy są obecni w określonej grupie, należy wskazać, jak pokazano w poniższym przykładzie. Grupy użytkowników, którzy mogą wejść na serwer, są również oddzielone spacją.

Administratorzy programistów AllowGroups

DenyUsers, DenyGroups

W przeciwieństwie do ustawienia, które umożliwia dostęp do niektórych użytkowników lub grup, możesz także określić użytkowników lub grupy, którym odmówiono dostępu do serwera.
Aby to zrobić, dodaj do pliku konfiguracyjnego sshd_config parametr Odmawiający, w którym poprzez spację należy określić użytkowników, którym odmówiono dostępu do serwera. Poniższy przykład to system apacz jak również całkiem realne boris.

DenyUsers apache boris

Istnieje również parametr, za pomocą którego można ograniczyć dostęp nie do poszczególnych użytkowników, ale do całych grup użytkowników. Ten parametr Denygroups a grupy są również oznaczone spacją.

Denygroups marketingowi hakerzy

Pamiętaj, że możesz użyć kombinacji parametrów zakazu i włączenia: Odmawiający, Allowusers, Denygroups, i AllowGroups.

LoginGraceTime

Podczas próby zalogowania się ssh na serwerze, który masz 2 minuty na wprowadzenie nazwy użytkownika i hasła. Jeśli tego nie zrobisz, połączenie z serwerem zostanie rozłączone. 2 minuty oczekiwania na dane autoryzacyjne to całkiem sporo. Powinien być ograniczony do 1 minut lub nawet wcześniej 30 sekundy.

Aby to zrobić, zmień parametr LoginGraceTime edytując plik sshd_config, i wskaż tam wymagany czas. W poniższym przykładzie to 1 minuta.

LoginGraceTime 1m

ClientAliveInterval

Rozłączenie przy braku aktywności w powłoce

Po pomyślnym zalogowaniu się na serwerze możesz chcieć to zrobić, abyś mógł automatycznie się rozłączyć po upływie pewnego czasu, podczas którego nie wykonałeś żadnych działań w konsoli. Jest to powszechnie określane jako czas bezczynności.

Za pomocą Grzmotnąć, możesz to osiągnąć zmieniając zmienną środowiskową TMOUT.

W Openssh osiąga się to dzięki kombinacji parametrów ClientAliveCountMax i ClientAliveInterval w pliku konfiguracyjnym sshd_config.

  • ClientAliveCountMax - wskazuje maksymalną kwotę checkalive wysłane wiadomości ssh-serwer, na który nie otrzymuje żadnej odpowiedzi ssh-klient. Domyślnie tak jest 3.
  • ClientAliveInterval - wskazuje limit czasu (limit czasu) w sekundach. Po określonym czasie ssh-serwer wyśle checkalive wiadomość do klienta, czekająca na odpowiedź od niego (odpowiedź). Domyślnie jest to 0, oznacza to, że serwer nie wyśle \u200b\u200bwiadomości do weryfikacji.

Dla Twojej ssh-klient został automatycznie rozłączony po 10 minuty ( 600 sekund), należy wprowadzić zmiany w pliku konfiguracyjnym sshd_config w następujący sposób:

ClientAliveInterval 600 ClientAliveCountMax 0

To wszystko na teraz. Zasadniczo myślę, że to wystarczy do dobrej konfiguracji i większego bezpieczeństwa ssh.W następnej części przeanalizujemy kilka innych parametrów ssh-serwer i być może uda nam się omówić uwierzytelnianie oparte na kluczach.

Powodzenia wszystkim i do zobaczenia wkrótce na naszym blogu!