Łączenie się z serwerem za pomocą protokołu SSH
Bezpieczny dostęp do serwera zapewnia nam protokół SSH. Jest to następca protokołu telnet, który oferuje szyfrowanie. Autoryzacja za pomocą klucza jest dużo bezpieczniejsza niż w przypadku korzystania z haseł. Całkowicie wyklucza to ataki brute-force. Zaczniemy od wygenerowania pary kluczy: prywatnego i publicznego. Klucz publiczny umieścimy na serwerze, a za pomocą klucza prywatnego będziemy się logować. Administrować serwerem będziemy mogli tylko z tego komputera, który posiada klucz prywatny. Dodatkowo możemy zabezpieczyć klucz prywatny hasłem.
Generowanie klucza SSH
Wygenerujmy 4096 bitowy klucz, który jest silniejszy, niż standardowy 2048 bitowy.
ssh-keygen -t rsa -b 4096
Zostaniesz poproszony o podanie hasła (koniecznie silne) i ścieżki, gdzie klucz ma zostać wygenerowany.
Dodanie klucza na serwerze
Wchodzimy do katalogu domowego (bądź miejsca, gdzie wygenerowałeś klucz)
cd /home/atastycookie/.ssh/
Kopiujemy plik klucza publicznego na serwer (ten z końcówką .pub)
ssh-copy-id -i klucz konto@serwer
putty
Aby korzystać z klucza wygenerowanego za pomocą ssh-keygen w programie putty musimy skonwertować klucz za pomocą puTTYgen.
Otwórz puTTYgen, wciśnij Conversions następnie Import key i wskaż mu lokalizację pliku klucza prywatnego. Zostaniesz poproszony o podanie hasła. Następnie wciśnij Save private key i gotowe.
Możesz również wygenerować klucz w programie putty. Po prostu wciśnij Generate, poczekaj na wygenerowanie klucza, nadaj mu hasło i go zapisz.
Jak zalogować się na serwer przez SSH z użyciem klucza?
W zależności od sytemu, z którego korzystasz na co dzień masz następujące możliwości:
Linux
W terminalu wpisz
ssh -i klucz konto@serwer
putty
Aby połączyć się z serwerem otwórz program, następnie w Connection -> SSH -> Auth podaj lokalizację klucza prywatnego, który chwilę temu zapisałeś. Później w Session w polu hostname podaj ip serwera (bądź domenę) i port. W Connection -> Data wpisz nazwę konta. Warto zapisać sesję, aby nie musieć ponownie jej konfigurować.
Błąd
Jeśli po dodaniu nowego klucza nie możesz się połączyć i widzisz ten błąd
Agent admitted failure to sign using the key.
Wystarczy, że wpiszesz w terminalu
ssh-add
Jeśli Twój klucz ma inną nazwę, bądź ścieżkę wtedy wpisz
ssh-add /sciezka/do/klucza/klucz
Zabezpieczenie serwera SSH
Wszystkie zmiany będziemy przeprowadzać w pliku sshd_config
nano /etc/ssh/sshd_config
Wyłączenie możliwości zalogowania za pomocą hasła
Znajdź linjkę
#PasswordAuthentication yes
Zmień ją na
PasswordAuthentication no
Protokół
Zmień wersję protokołu na 2, która jest bezpieczna
Protocol 2
Zmiana portu
Domyślnie łączymy się z serwerem za pomocą portu 22. Większość skanerów sieciowych domyślnie skanuje na portach do 1024. Dlatego zmieńmy port na dużo wyższy. Znajdź linijkę
Port 22
I zmień ją na np.
Port 6123
Określeni użytkownicy
Warto ograniczyć możliwość logowania się tylko dla konkretnych grup i kont
Przyznanie dostępu
AllowUsers konto1 konto2
AllowGroups grupa1 grupa2
Zablokowanie dostępu
DenyUsers konto1 konto2
DenyGroups grupa1 grupa2
Restart
Zapisz zmiany w pliku i zrestartuj usługę
service ssh restart
Warto jeszcze zainstalować fail2ban
„Generowanie klucza SSH
Wygenerujmy 4096 bitowy klucz, który jest silniejszy, niż standardowy 2048 bitowy.
ssh-keygen -t rsa -b 4096”
Nie, tak nie generujemy klucza. Klucz generujemy tak:
ssh-keygen -o -a 100 -t ed25519
Warto jeszcze wylaczyc wsparcie dla starych KexAlgorithms, Ciphers oraz MACs, oraz wylaczyc mozliwosc polaczenia sie przy uzyciu klucza innego niz ed25519. Ponadto w systemach typu Debian i jego klonach dodac opcje:
DebianBanner no
Plus kilka innych:
AllowTcpForwarding no
TCPKeepAlive yes
Subsystem sftp /usr/lib/openssh/sftp-server -f AUTHPRIV -l INF
Generujesz ed25519, który zawsze korzysta z nowego formatu więc -o jest niepotrzebne.