Wzmacnianie SSH i uwierzytelnianie za pomocą kluczy
Wyłączać uwierzytelnianie hasłem, konfigurować pary kluczy, ograniczać dostęp za pomocą AllowUsers i używać fail2ban
Wzmacnianie SSH i uwierzytelnianie za pomocą kluczy to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Dlaczego bezpieczeństwo SSH ma znaczenie
SSH jest podstawowym protokołem zdalnej administracji serwerami Linux. Nieprawidłowo skonfigurowany serwer SSH jest jednym z najczęstszych punktów wejścia dla atakujących — jest wystawiony na działanie internetu i nieustannie atakowany przez boty brute force.
Generowanie pary kluczy SSH
Uwierzytelnianie za pomocą kluczy jest bezpieczniejsze niż używanie haseł. Należy wygenerować parę kluczy:
ssh-keygen -t ed25519 -C "your_email"
# Creates ~/.ssh/id_ed25519 (private) and id_ed25519.pub (public)
# Never share the private keyInstalowanie kluczy publicznych
Należy skopiować klucz publiczny na serwer:
ssh-copy-id user@server
# Or manually:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keysWyłączanie uwierzytelniania hasłem
Po pomyślnym skonfigurowaniu uwierzytelniania za pomocą klucza należy wyłączyć logowanie za pomocą hasła, aby wyeliminować ryzyko ataków brute force:
# In /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
sudo systemctl restart sshdZmiana domyślnego portu SSH
Przeniesienie SSH z portu 22 ogranicza szum generowany przez automatyczne skanowanie. Jest to security through obscurity — nie stanowi rzeczywistej ochrony, ale zmniejsza liczbę wpisów w logach. Zawsze należy odpowiednio zaktualizować reguły zapory.
# /etc/ssh/sshd_config
Port 2222
# Then update firewall:
ufw allow 2222/tcp
ufw delete allow 22/tcpOgraniczanie dostępu SSH według użytkownika i adresu IP
Należy ograniczyć użytkowników, którzy mogą łączyć się przez SSH, oraz miejsca, z których mogą to robić:
# /etc/ssh/sshd_config
AllowUsers alice bob
AllowGroups sshusers
# Or restrict by source IP in /etc/hosts.allow:
sshd: 192.168.1.0/24Limity czasu oczekiwania i logowania SSH
Zakres narażenia można ograniczyć za pomocą limitów sesji i prób:
# /etc/ssh/sshd_config
ClientAliveInterval 300 # disconnect idle sessions after 5 min
ClientAliveCountMax 2
MaxAuthTries 3 # max password attempts
LoginGraceTime 30 # seconds to authenticateUżywanie fail2ban
fail2ban monitoruje pliki logów i blokuje adresy IP wykazujące złośliwe wzorce, na przykład zbyt wiele nieudanych logowań SSH. Dynamicznie aktualizuje reguły zapory, aby blokować atakujących.
apt install fail2ban
# /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 3
bantime = 3600Agent SSH i przekazywanie kluczy
Agent SSH przechowuje odszyfrowany klucz prywatny w pamięci, dzięki czemu nie trzeba ponownie wpisywać hasła do klucza przy każdym logowaniu. Przekazywanie agenta (ssh -A) przekazuje klucz przez kolejne przeskoki — należy korzystać z tej funkcji ostrożnie, ponieważ zaatakowany serwer pośredni może wykraść klucz z gniazda agenta.
Uwierzytelnianie dwuskładnikowe dla SSH
Do SSH można dodać TOTP za pomocą modułu PAM Google Authenticator, aby zapewnić dodatkową ochronę nawet przy uwierzytelnianiu za pomocą klucza. Do zalogowania wymagane są zarówno klucz, jak i jednorazowe hasło zależne od czasu.
Audyt konfiguracji SSH
Konfigurację SSH należy zweryfikować za pomocą:
sshd -T | grep -E "passwordauth|permitroot|pubkeyauth|port"
# Check who is connected:
ss -tnp | grep :22
whoSzybki test: wzmacnianie SSH
Które ustawienie sshd_config należy ustawić na no, aby wyeliminować ataki brute force z użyciem haseł przeciwko SSH?
Podsumowanie lekcji
Wzmacnianie SSH obejmuje: używanie kluczy Ed25519, wyłączenie uwierzytelniania hasłem, wyłączenie logowania użytkownika root, zmianę portu 22, ograniczenie dyrektywy AllowUsers, ustawienie limitów bezczynności oraz instalację fail2ban. Nie należy nigdy udostępniać kluczy prywatnych. Konfigurację należy kontrolować za pomocą sshd -T. Przekazywanie agenta jest wygodne, ale ryzykowne na niezaufanych hostach.
Często zadawane pytania
Czy lekcja „Wzmacnianie SSH i uwierzytelnianie za pomocą kluczy” jest bezpłatna?
Tak — pełny tekst „Wzmacnianie SSH i uwierzytelnianie za pomocą kluczy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wzmacnianie SSH i uwierzytelnianie za pomocą kluczy”?
Wyłączać uwierzytelnianie hasłem, konfigurować pary kluczy, ograniczać dostęp za pomocą AllowUsers i używać fail2ban Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?
Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Wzmacnianie SSH i uwierzytelnianie za pomocą kluczy”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?
Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Uprawnienia i własność plików
- Zarządzanie użytkownikami i grupami
- Wzmacnianie SSH i uwierzytelnianie za pomocą kluczy
- Reguły zapory iptables i UFW