Co należy zrobić, aby zabezpieczyć Raspberry Pi?

82

Posiadanie dziesiątek tysięcy Raspberry Pi podłączonych do Internetu ostatecznie przyciągnie zainteresowanie niektórych ludzi, którzy chcieliby robić niesmaczne rzeczy małym komputerom, szczególnie gdy wiele osób używa swojego Pi do robienia serwerów sieciowych. Linux to solidny system operacyjny od samego początku, jeśli chodzi o bezpieczeństwo, ale oprócz zmiany hasła, co należy zrobić, aby „zahartować” Raspberry Pi, jeśli mam zamiar hostować usługi skierowane do Internetu na urządzeniu?

Aby wesprzeć moją „dziesiątki tysięcy” żart, Eben Upton powiedział, że „Raspberry Pi sprzedał ponad 200 000 podstawowych modułów komputerowych i obecnie wysyła 4000 sztuk dziennie” . Prawdopodobnie bezpiecznie jest założyć, że dziesiątki tysięcy z tych 200 000 zostało podłączonych do Internetu. Założenie, że dziesiątki tysięcy podłączonych do Internetu Raspberry Pis hostuje publiczną usługę internetową, jest mniej bezpieczne, ale potencjał entuzjastów hakerów wciąż istnieje.

Dan B.
źródło
3
Należy pamiętać, że chociaż mogą być połączone „dziesiątki tysięcy”, istnieją (obecnie) 3 oddzielne dystrybucje Linuksa (o których jestem świadomy) i myślę, że istnieje nawet kilka projektów nie opartych na systemie Linux. Wpływa to na perspektywę hakera. Jednak jeśli bezpieczeństwo jest ważne, aktualizuj dystrybucję i, jeśli to konieczne, trzymaj urządzenie za zaporą ogniową.
RLH
Dobra uwaga RLH Dodam kilka dodatkowych informacji do pytania, które obsługuje liczbę Raspberry Pis w naturze, aby lepiej zrozumieć powierzchnię ataku Raspberry Pi, o której Steve wspomniał w swojej odpowiedzi.
Dan B
@DanB Powierzchnia ataku nie jest funkcją liczby Pi, ale raczej liczby systemów i usług dostępnych do ataku. en.wikipedia.org/wiki/Attack_surface
Steve Robillard
@ SteveRobillard Przepraszam, jeśli nie byłam jasna w komentarzu, ale w edycji zadałem pytanie, w którym próbowałem sprowadzić się w jakościowy sposób do liczby Pizów, które udostępniają usługi publiczne i dlatego przedstawiłyby usługę dostępną do ataku .
Dan B
Znalazłem krótki samouczek, jak zabezpieczyć Raspberry Pi podczas korzystania z SSH, wydaje się całkiem fajny. -> tutorial
Dominik St.

Odpowiedzi:

54

Zabezpieczanie komputera nie jest prostym procesem, całe książki są pisane na ten temat. Rozmiar Pi nie zmniejsza zagrożenia bezpieczeństwa ani powierzchni ataku przedstawionej potencjalnemu napastnikowi. W rezultacie opiszę związane z tym kroki i podam łącza do bardziej szczegółowych instrukcji i samouczków.

Ponieważ nie wspomniałeś o używanej dystrybucji, przyjmuję zalecaną dystrybucję Raspbian.

  1. Zmień domyślne hasło. Dystrybucja Raspbian zawiera tę opcję w początkowym skrypcie uruchamiania. Jeśli jeszcze tego nie zrobiłeś, możesz użyć polecenia passwd, aby to zmienić. Upewnij się, aby wybrać silne hasło .
  2. Wyłącz nieużywane usługi . Widziałem, że zalecana dystrybucja Raspbian obejmuje serwer WWW Apache i włącza go podczas uruchamiania (czy ktoś może to potwierdzić) . Czy naprawdę potrzebujesz działającego serwera WWW? Jeśli nie, wyłącz go. Jeśli musisz uruchomić Apache, pamiętaj, aby go zabezpieczyć i zrobić to samo z innymi usługami (np. FTP, NGINX, MySQL itp.), Wyszukiwarka Google powinna wyświetlić kilka zasobów.
  3. Zainstaluj i skonfiguruj iptables .
  4. Aktualizuj swój system. Możesz to zautomatyzować za pomocą cron lub cron-apt .
  5. Skonfiguruj rejestrowanie w celu monitorowania logowania i nieudanych prób logowania. Jeśli to możliwe, użyj zewnętrznego dysku twardego do hostowania partycji / var, zapewni to więcej miejsca, unikniesz zapełniania się plików dziennika kartą SD i przedłuży żywotność karty SD.

Kilka dodatkowych rzeczy, które możesz rozważyć:

Powinieneś także przeczytać to pokrewne pytanie Jak mogę chronić się przed włamaniami i złośliwym oprogramowaniem przed podłączeniem go do Internetu (szczególnie na publicznym adresie IP)? .

To tylko minimalne kroki do zabezpieczenia Twojego Pi. Aby uzyskać więcej informacji, możesz przeczytać Podręcznik Zabezpieczania Debiana .

Steve Robillard
źródło
6
Pamiętaj, aby wygenerować własne klucze ssh. Myślę, że niektóre obrazy miały już klucze.
John La Rooy,
2
Apache domyślnie nie jest instalowany w języku raspbian (użytkownik zainstalował coś takiego jak php5-mysql IIRC). W przypadku filtra pakietów, który jest nieco bardziej przyjazny niż nagie iptables, może powinniśmy polecić ufw, a może nawet jego GUI frontend GUI?
elmicha
1
Czy ma sens instalowanie iptables, nawet jeśli jesteś za routerem?
keiki
2
@ otakun85 Tak, nazywa się to obroną w głębi. Całkowite poleganie na routerze, jeśli ktoś przejdzie obok routera, a uruchomienie iptables spowoduje, że dalsze exploity będą trudniejsze.
Steve Robillard
2
Wyłączenie nieużywanych usług pomaga również w czasie uruchamiania i oszczędza (małą) ilość pamięci i procesora.
TomG
11

Po obejrzeniu RPi wygląda na dość bezpieczne urządzenie, o ile robisz kilka rzeczy.

Domyślne potrzeby użytkownika / przepustki uległy zmianie. Przynajmniej zmień hasło. Aby ponownie zwiększyć bezpieczeństwo, zmień również nazwę użytkownika. (Dodaj nowego użytkownika, a następnie wyłącz PI. Sprawdź, czy ROOT jest również wyłączony z logowania SSH, chociaż myślę, że i tak jest domyślnie.)

Skanowanie RPi zwraca tylko jeden otwarty port, 22, który jest połączeniem SSH, i nawet to musi być włączone, zanim się pojawi (chociaż większość ludzi będzie go używać zamiast monitora, klawiatury i myszy, spodziewam się, szczególnie na serwer {web})

Możesz zmienić numer portu SSH, ale to niewiele zdziała, ponieważ można go łatwo zeskanować. Zamiast tego włącz uwierzytelnianie za pomocą klucza SSH.

Teraz nie masz możliwości, aby ktokolwiek dostał się do twojego komputera bez prawidłowego klucza SSH, nazwy użytkownika i hasła.

Następnie skonfiguruj swój serwer internetowy. Apache jest właściwie tam, gdzie jest. To domyślnie ustawi i monitoruje port 80 i automatycznie reaguje na połączenia z przeglądarek, obsługując twoje strony internetowe.

Jeśli masz zaporę ogniową lub router, możesz zmienić porty RPi i router może kierować ruchem z jednego portu do drugiego. Na przykład ruch z portu 80 do routera jest przekierowywany do portu 75 na RPi, a SSH na 22 jest przekierowywany do portu 72. To dodałoby kolejną warstwę ochrony, ale jest nieco bardziej złożone.

Oczywiście wszystko aktualizuj i załataj.

To nie ochroni cię przed atakami wykorzystującymi Javę, Flash, serwery SQL itp., Które możesz dodać później, ale tak naprawdę to wszystko.

Możesz także dodać zaporę ogniową, która spowolni dostęp każdego użytkownika do twojego systemu z innego portu, jeśli zainstaluje on nową usługę. Router powinien sobie z tym poradzić, ale jeśli jest podłączony bezpośrednio, to skonfiguruj go i, jak długo to zajmie, równie dobrze możesz go uruchomić - nie doda to zbyt wiele zasobów systemowych.

Inną rzeczą, którą możesz chcieć dodać, jest fail2ban ( http://www.fail2ban.org/wiki/index.php/Main_Page ), która dodaje regułę zapory sieciowej do blokowania wielu prób logowania, zapobiegając atakom słownikowym. Chociaż nie mogą one działać w systemie, jeśli postępujesz zgodnie z powyższym, jeśli z jakiegoś powodu musisz pozostawić tylko hasło SSH auth (np. Zdalne logowanie z wielu różnych komputerów), zapobiegnie to atakowi słownikowemu z pracy. Po określonej liczbie prób będzie blokować na jakiś czas kolejne próby z tego adresu IP. (Uważaj tylko, aby nie widział routera / lokalnego adresu IP i zablokuj to za wcześnie lub na zbyt długo!)

Edytowano w celu dodania: Po prawidłowym skonfigurowaniu wszystkiego skorzystaj z narzędzia takiego jak dd lub Win32DiskImager, aby wykonać pełną bitową kopię zapasową karty SD. W ten sposób, jeśli coś pójdzie nie tak, możesz przywrócić go na tej samej karcie lub zapisać na nowej karcie i kontynuować niezależnie. (Ale jeśli zostaniesz zhakowany, możesz dowiedzieć się, która dziura została znaleziona i być może najpierw ją zamknąć!)

Nigel Tolley
źródło
1
Czy możesz wyjaśnić, w jaki sposób zmiana portów RPi w routerze dodaje kolejną warstwę ochrony?
Andrei
-1

Oprócz zaostrzenia systemu operacyjnego możesz również rozważyć skorzystanie z usługi monitorowania bezpieczeństwa opartej na chmurze, aby monitorować aktywność do / z / na twoim urządzeniu i otrzymywać powiadomienia, jeśli coś nieoczekiwanego zostanie wykryte. Obecnie dostępnych jest kilka narzędzi SIEM opartych na chmurze, a niektóre (jak siemless) obsługują model freemium, więc użytkownicy domowi nie muszą płacić ani grosza. Aby skorzystać z takiej usługi, musisz zapoznać się z takimi rzeczami, jak rsyslog / syslog, który jest standardową częścią wszystkich dystrybucji systemu operacyjnego Linux.

pająki
źródło
1
Narzędzia chmurowe zwiększają powierzchnię ataku, monitorowanie bezpieczeństwa lokalnego (logwarn / check) to dobre narzędzia, ale ta odpowiedź jest niepełna i jest raczej komentarzem.
user1133275