🢂SSH ‑ Cheatsheet (ściąga)
Ściąga z SSH (ang. Secure Shell) - to protokół komunikacyjny służący do bezpiecznego zdalnego zarządzania komputerami.
SSH (ang. Secure Shell) to protokół komunikacyjny służący do bezpiecznego zdalnego zarządzania komputerami. Zapewnia szyfrowane połączenie między klientem a serwerem, co chroni dane przed podsłuchem i manipulacją. Jest to niezbędne narzędzie dla administratorów systemów, programistów i użytkowników domowych, którzy chcą bezpiecznie łączyć się z komputerami zdalnymi. Podsumowując, SSH jest potężnym narzędziem oferującym bezpieczny sposób na komunikację i zarządzanie systemami przez sieć. Jednak jego skuteczność zależy od właściwej konfiguracji, zarządzania kluczami i ciągłego monitorowania zagrożeń bezpieczeństwa.
Analiza SWOT SSH
Mocne Strony SSH (Strengths)
- Bezpieczeństwo: SSH oferuje silne szyfrowanie danych, co zapewnia bezpieczny sposób na zdalny dostęp do serwerów i transfer plików.
- Uniwersalność: Możliwość wykorzystania w różnych scenariuszach, takich jak zarządzanie serwerami, bezpieczny transfer plików (SFTP) oraz przekierowanie portów.
- Szerokie Akceptowanie: Jest standardem de facto dla bezpiecznej komunikacji w systemach Unix i Linux, a także dostępny na platformach Windows.
- Autoryzacja wieloskładnikowa: SSH wspiera zaawansowane metody uwierzytelniania, w tym klucze publiczne, hasła i uwierzytelnianie wieloskładnikowe.
Słabe Strony SSH (Weaknesses)
- Konfiguracja: Niewłaściwa konfiguracja (np. słabe hasła, zbyt szerokie uprawnienia) może obniżyć poziom bezpieczeństwa.
- Zarządzanie Kluczami: Wymaga efektywnego zarządzania kluczami publicznymi i prywatnymi, co może być skomplikowane w dużych organizacjach.
- Kompleksowość: Dla początkujących użytkowników, nauka i zrozumienie różnych opcji i konfiguracji SSH może być trudne.
Szanse SSH (Opportunities)
- Rozwój technologii kryptograficznych: Wprowadzenie nowszych, bardziej zaawansowanych algorytmów szyfrowania może jeszcze bardziej zwiększyć bezpieczeństwo SSH.
- Automatyzacja i zarządzanie konfiguracją: Integracja z narzędziami do automatyzacji, jak Ansible, Puppet czy Chef, otwiera nowe możliwości dla zarządzania konfiguracją i automatyzacji zadań administracyjnych.
- Rozwój IoT: SSH może służyć jako bezpieczny mechanizm dla komunikacji i zarządzania urządzeniami IoT.
Zagrożenia SSH (Threats)
- Zaawansowane Ataki Cybernetyczne: Techniki takie jak ataki typu "man-in-the-middle" mogą stanowić zagrożenie, jeśli nie zostaną podjęte odpowiednie środki bezpieczeństwa.
- Wyciek Kluczy Prywatnych: Utrata klucza prywatnego do rąk niepowołanych osób może narazić systemy na nieautoryzowany dostęp.
- Regulacje Prawne: W niektórych jurysdykcjach, regulacje dotyczące szyfrowania mogą wpłynąć na użycie i rozpowszechnianie technologii SSH.
Cheatsheet - Logowanie za pomocą klucza
Generowanie kluczy SSH:
- Otwórz terminal.
- Wpisz polecenie:
ssh-keygen -t rsa -b 4096
- Naciśnij Enter i zaakceptuj domyślną lokalizację pliku.
- Wprowadź hasło do klucza (opcjonalnie).
- Powtórz kroki 3 i 4, aby wygenerować klucz dla innego użytkownika.
Kopiowanie klucza publicznego:
- Wpisz polecenie:
cat ~/.ssh/id_rsa.pub
- Skopiuj wyświetlony tekst.
- Zaloguj się na serwer, do którego chcesz się logować bez hasła.
- Wpisz polecenie:
vim ~/.ssh/authorized_keys
- Wklej skopiowany tekst na końcu pliku.
- Zapisz i zamknij plik.
Logowanie za pomocą klucza:
- Wpisz polecenie:
ssh uzytkownik@adres_ip
- Zostaniesz poproszony o podanie hasła do klucza.
- Po wprowadzeniu hasła zalogujesz się na serwer bez konieczności podawania hasła użytkownika.
Dodatkowe informacje:
- Możesz użyć różnych typów kluczy, np. RSA, DSA, ECDSA.
- Możesz ustawić różne opcje dla kluczy, np. czas wygaśnięcia.
- Możesz użyć agenta SSH do przechowywania kluczy w pamięci.
- Możesz używać kluczy SSH do logowania się do innych usług, np. GitLab, GitHub.
Przydatne polecenia:
ssh-keygen
: generowanie kluczy SSHssh-copy-id
: kopiowanie klucza publicznego na serwerssh
: logowanie za pomocą kluczassh-add
: dodanie klucza do agenta SSHssh-agent
: zarządzanie agentem SSHssh-config
: konfiguracja klienta SSH
Cheatsheet SSH dla administratora Debiana
1. Podłączenie do serwera:
ssh uzytkownik@adres_ip
Opis: Podłącza się do serwera o podanym adresie IP jako użytkownik o podanej nazwie.
2. Podłączenie z użyciem klucza SSH:
ssh -i klucz.pem uzytkownik@adres_ip
Opis: Podłącza się do serwera o podanym adresie IP jako użytkownik o podanej nazwie, używając klucza SSH o nazwie klucz.pem
3. Kopiowanie plików na serwer:
scp plik.txt uzytkownik@adres_ip:/sciezka/na/serwerze
Opis: Kopiuje plik plik.txt
na serwer do katalogu o podanej ścieżce jako użytkownik o podanej nazwie.
4. Pobieranie plików z serwera:
scp uzytkownik@adres_ip:/sciezka/na/serwerze plik.txt
Opis: Pobiera plik o nazwie plik.txt
z serwera z katalogu o podanej ścieżce jako użytkownik o podanej nazwie.
5. Wykonywanie poleceń na serwerze:
ssh uzytkownik@adres_ip 'polecenie'
Opis: Wykonuje podane polecenie na serwerze jako użytkownik o podanej nazwie.
6. Uruchamianie skryptu na serwerze:
ssh uzytkownik@adres_ip 'bash skrypt.sh'
Opis: Uruchamia skrypt o nazwie skrypt.sh
na serwerze jako użytkownik o podanej nazwie.
7. Przekazywanie portów:
ssh -L port_lokalny:port_zdalny uzytkownik@adres_ip
Opis: Przekazuje port lokalny o numerze port_lokalny na port zdalny o numerze port_zdalny na serwerze.
8. Tworzenie tunelu SSH:
ssh -L 8080:localhost:80 uzytkownik@adres_ip
Opis: Tworzy tunel SSH, który przekierowuje ruch na porcie 8080 na lokalny port 80.
9. Podłączenie do serwera przez proxy:
ssh -o 'ProxyCommand=ssh proxy_user@proxy_address:proxy_port nc %h %p' uzytkownik@adres_ip
Opis: Podłącza się do serwera przez proxy o podanym adresie IP i porcie, używając użytkownika o podanej nazwie.
10. Logowanie do serwera z użyciem sudo:
ssh -i klucz.pem uzytkownik@adres_ip 'sudo su -'
Opis: Podłącza się do serwera o podanym adresie IP jako użytkownik o podanej nazwie, używając klucza SSH o nazwie klucz.pem
11. Wyświetlanie listy użytkowników:
ssh uzytkownik@adres_ip 'cat /etc/passwd'
Opis: Wyświetla listę użytkowników na serwerze.
12. Wyświetlanie informacji o systemie:
ssh uzytkownik@adres_ip 'lsb_release -a'
Opis: Wyświetla informacje o systemie operacyjnym na serwerze.
*13. Aktualizacja pakietów:
ssh uzytkownik@adres_ip 'sudo apt update && sudo apt upgrade'
Opis: Aktualizuje pakiety na serwerze.
14. Uruchamianie usługi:
ssh uzytkownik@adres_ip 'sudo systemctl start nazwa_usługi'
Opis: Uruchamia usługę o podanej nazwie na serwerze.
15. Zatrzymywanie usługi:
ssh uzytkownik@adres_ip 'sudo systemctl stop nazwa_usługi'
Opis: Zatrzymuje usługę o podanej nazwie na serwerze.
16. Zmiana portu SSH (konfiguracja)
Port 2222
Opis: Ustawienie niestandardowego portu SSH w pliku /etc/ssh/sshd_config
.
17. Wyłączenie logowania hasłem (konfiguracja)
PasswordAuthentication no
Opis: Wymuszenie logowania kluczem SSH w /etc/ssh/sshd_config
.
18. Ograniczenie użytkowników SSH (konfiguracja)
AllowUsers uzytkownik
Opis: Zezwolenie tylko wybranym użytkownikom na logowanie przez SSH.
19. Uruchomienie SSH na niestandardowym porcie
ssh -p port uzytkownik@adres_serwera
Opis: Logowanie do serwera SSH na niestandardowym porcie.
20 Wygenerowanie nowego klucza SSH
ssh-keygen -t rsa -b 4096
Opis: Utworzenie nowego klucza RSA o długości 4096 bitów.
21. Użycie wersji protokołu SSH 2
Protocol 2
Opis: Wymuszenie użycia bezpieczniejszej wersji protokołu w /etc/ssh/sshd_config
.
22. Włączenie KeepAlive
ClientAliveInterval 300
ClientAliveCountMax 2
Opis: Utrzymanie aktywności połączenia SSH przez serwer.
23. Ograniczenie liczby prób logowania
MaxAuthTries 3
Opis: Ograniczenie do 3 prób autentykacji na połączenie.