Istnieje wiele sposobów usunięcia luk w zabezpieczeniach, jednak pierwszą rzeczą, którą powinieneś wiedzieć jest to, że Linux nie jest tak podatny na włamanie, jak inne systemy operacyjne. Wynika to głównie z braku złośliwego oprogramowania atakującego * NIX. Niemniej jednak chcesz wiedzieć, w jaki sposób można uzyskać dostęp do twojego systemu.
Hasła
Po pierwsze, należy zmienić domyślne hasła dla wszystkich użytkowników, którzy mogą się zalogować. W przypadku Debiana jest to tylko domyślny użytkownik Pi . W przypadku Arch Linux jest to superużytkownik root . Hasła są zmieniane po zalogowaniu jako użytkownik, wpisując passwd
w wierszu polecenia.
Zaleca się stosowanie bezpiecznych haseł, ponieważ przeprowadzanie ataków słownikowych na domyślnego użytkownika byłoby dość proste. Wybierz przyzwoite hasło o średniej długości.
Zapomnienie
Zdalny dostęp jest prawdopodobnie najważniejszą luką bezpieczeństwa. To, czego możemy tutaj użyć, nazywa się bezpieczeństwem przez zaciemnienie . Powszechną metodą ataku jest skanowanie zakresu adresów IP w poszukiwaniu otwartych portów. Jednym z najprostszych środków zaradczych, jakie możemy podjąć, jest bycie użytkownikiem, który nie korzysta z domyślnych portów .
Wszystko, co należy tutaj zrobić, to zmienić domyślne porty dla często używanych protokołów. Na przykład domyślny port SSH to 22, a FTP to 21. W moim systemie SSH używa 222 i FTP 221, co powinno ukrywać te protokoły przed jakimkolwiek zautomatyzowanym atakiem.
Bezpieczeństwo połączenia
Po pierwsze, najważniejszym problemem związanym z bezpieczeństwem jest to, że konto root nie powinno być w stanie zalogować się przez SSH. Możesz wyłączyć logowanie użytkownika root w /etc/ssh/sshd_config
pliku, komentując lub usuwając ten wiersz:
PermitRootLogin yes
Domyślnie powinna być ustawiona na no, ale najlepiej się upewnić.
Jeśli często korzystasz z SSH i martwisz się atakami typu „mężczyzna w środku”, atakami słownikowymi na hasło, możesz użyć SSH Keys
.
Uwierzytelnianie oparte na kluczach ma kilka zalet w porównaniu z uwierzytelnianiem za pomocą hasła, na przykład wartości kluczy są znacznie trudniejsze do użycia z użyciem siły, niż zwykłe hasła.
Aby skonfigurować uwierzytelnianie klucza SSH, musisz najpierw utworzyć parę kluczy. Najłatwiej to zrobić na komputerze klienckim (maszynie, z którą chcesz uzyskać dostęp do Pi).
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.
Jak widać, utworzono dwa pliki, klucz prywatny id_rsa
i klucz publiczny id_rsa.pub
.
Klucz prywatny jest znany tylko tobie i należy go bezpiecznie chronić . Natomiast klucz publiczny może być swobodnie współdzielony z dowolnym serwerem SSH, z którym chcesz się połączyć.
Chcielibyśmy więc skopiować klucz publiczny na Raspberry Pi. Możemy to zrobić bardzo łatwo:
ssh-copy-id pi@address
Gdzie pi
jest nazwa użytkownika Raspberry Pi i address
adres IP Pi.
Powtarzam, dystrybuujemy klucz publiczny . Klucz prywatny jest twój. Trzymaj się mocno, aby zwolnić ten klucz, narusza bezpieczeństwo systemu.
Arch wiki ma doskonały opis tego, jak to działa:
Gdy serwer SSH ma zapisany klucz publiczny i widzi, że żądasz połączenia, używa klucza publicznego do skonstruowania i wysłania wyzwania. To wyzwanie jest jak zakodowana wiadomość i musi zostać spełnione odpowiednią odpowiedź, zanim serwer udzieli ci dostępu. To, co sprawia, że ta zakodowana wiadomość jest szczególnie bezpieczna, polega na tym, że może ją zrozumieć tylko osoba posiadająca klucz prywatny. Chociaż klucza publicznego można użyć do zaszyfrowania wiadomości, nie można go użyć do odszyfrowania tej samej wiadomości. Tylko Ty, posiadacz klucza prywatnego, będziesz w stanie poprawnie zrozumieć wyzwanie i uzyskać prawidłową odpowiedź.
Aby uzyskać więcej informacji na temat bezpieczeństwa uwierzytelniania za pomocą klucza publicznego, Wikipedia zawiera dokładne wyjaśnienie .
Dzięki zastosowanym zabezpieczeniom SSH możesz wykonać ogromną ilość zaszyfrowanych, bezpiecznych transferów danych. W razie potrzeby praktycznie każde inne połączenie z portem może być kierowane przez SSH. Możesz nawet przesłać sesję X przez SSH, aby pojawiła się na innym komputerze.
Jako interesujący przykład, wczoraj uruchomiłem Eclipse na moim pulpicie, przeglądałem go na moim Raspberry Pi oraz kontrolowałem mysz i klawiaturę z mojego Netbooka. Taka jest siła SSH.
Uprawnienia
Uprawnienia do plików stanowią sedno systemu bezpieczeństwa Linux. Wpływają na to, kto może zobaczyć twoje pliki i foldery, i mogą być bardzo ważne w ochronie twoich danych. Na przykład zaloguj się do Raspberry Pi jako zwykły użytkownik i uruchom:
cat /etc/shadow
shadow
Plik zawiera zaszyfrowane hasła dla użytkowników systemu, więc nie chcemy po prostu o nikogo spojrzeć na to! Powinieneś zobaczyć tę odpowiedź:
cat: /etc/shadow: Permission denied
Możemy zrozumieć, dlaczego dzieje się tak, patrząc na uprawnienia do pliku:
ls -l /etc/shadow
-rw------- 1 root root 821 Jun 11 22:13 /etc/shadow
To mówi nam, że plik jest własnością root, a tylko właściciel ma uprawnienia do odczytu / zapisu. Podzielmy ten wynik.
-rw-------
To jest stan uprawnień. Pierwszy bit mówi nam o typie pliku ( -
oznacza zwykły plik). Następne trzy bity reprezentują akcje dostępne dla właściciela pliku. Pozostałe trzy bity reprezentują grupę , a ostatnie trzy są dla innych lub dla wszystkich innych. Tak więc katalog z pełnymi uprawnieniami wyglądałby tak:
drwxrwxrwx 10 root root 280 Jun 20 11:40 tmp/
To uprawnienia do odczytu, zapisu i wykonywania dla właściciela, grupy i wszystkich innych.
Kolejną ważną częścią są te dwa nazwiska. W naszym przypadku root root
. Pierwszy użytkownik jest właścicielem pliku. Druga to grupa użytkowników . Na przykład często można zobaczyć:
drwxr-xr-x 10 pi users 280 Jun 20 11:40 home/pi
Umożliwiłoby to dostęp do odczytu / zapisu użytkownikowi pi
w jego katalogu domowym oraz dostęp do odczytu dla wszystkich innych użytkowników.
Uprawnienia najczęściej przywoływane i kontrolowane przy użyciu wartości ósemkowych. Na przykład, jeśli chcemy ustawić rw tylko dla właściciela, wpiszemy:
chmod 600 /path/to/file
To jest podstawowe omówienie, aby uzyskać więcej informacji na temat uprawnień do plików w systemie Linux, oto dobry artykuł.
To zrozumienie jest ważne przy zabezpieczaniu plików i folderów. Powiedzmy, że właśnie skonfigurowaliśmy klucze SSH. Zdecydowanie nie chcemy, aby inni użytkownicy widzieli w naszym ~/.ssh
katalogu, w przeciwnym razie mogliby wziąć nasz klucz prywatny. W ten sposób usuwamy ich uprawnienia do odczytu:
chmod 700 ~/.ssh
ls -la ~/.ssh
drwx------ 2 james users 4096 Jun 18 03:05 .
Mam nadzieję, że rozwiąże to niektóre z twoich obaw związanych z zabezpieczeniem Linuksa. Z tego powodu powinieneś zobaczyć, że jest to dość bezpieczny system i jeśli jesteś ostrożny, nie powinieneś mieć problemów z bezpieczeństwem.
su
do nich podejść.