Zabezpieczanie świeżego serwera Ubuntu [zamknięty]

Odpowiedzi:

25

Nie mogę wymyślić żadnych poprawek specyficznych dla Ubuntu, ale oto kilka, które dotyczą wszystkich dystrybucji:

  1. Odinstaluj wszystkie niepotrzebne pakiety
  2. Używaj uwierzytelniania tylko z kluczem publicznym w SSH
  3. Wyłącz logowanie roota przez SSH (nie dotyczy Ubuntu)
  4. Użyj ustawień produkcji dla PHP (zalecane php.ini)
  5. Skonfiguruj MySQL, aby używał tylko gniazd

Oczywiście ta lista nie jest kompletna i nigdy nie będziesz całkowicie bezpieczny, ale obejmuje wszystkie exploity , które widziałem w prawdziwym życiu.

Ponadto exploity, które widziałem, były prawie zawsze związane z niezabezpieczonym kodem użytkownika, a nie z niezabezpieczoną konfiguracją. Domyślne konfiguracje w minimalnej dystrybucji serwerów są zazwyczaj dość bezpieczne.

Czy Berk Güder
źródło
1
Zmień port dla usług takich jak MySQL (bezużyteczne, jeśli skonfigurujesz go do korzystania tylko z gniazd), FTP (chociaż, jeśli jesteś bezpieczny, nie powinieneś w ogóle używać FTP), SSH i wszelkiego rodzaju.
Josh Hunt
3
„Odinstaluj wszystkie niepotrzebne pakiety”. DOBRZE. To dość niejasne. Jakie „niepotrzebne” pakiety?
Luke
2
@Luke: Wszystko, czego nie używasz, jest niepotrzebne. Bardziej szczegółowe, działające usługi, których nie potrzebujesz, narażają maszyny na niepotrzebne ryzyko.
Andrioid
@Luke: cat / etc / services powinien dać ci kilka pomysłów.
jeshurun
17

Jedną szybką rzeczą, którą robię wcześnie, jest instalacja DenyHosts . Będzie regularnie przeglądał / var / log / secure, szukając nieudanych logowania, a po kilku błędach zablokuje adres IP. Ustawiłem go tak, aby blokował się po pierwszym braku takiego użytkownika, po drugiej próbie rootowania i po kilku próbach dla prawdziwych użytkowników (na wypadek, gdybyś się bałaganił, ale do logowania powinien być używany klucz publiczny SSH).

Alister Bulman
źródło
3
gdy link do strony głównej sourceforge - denyhosts jest również dostępny w repozytorium (wszechświecie) poprzez „sudo aptitude install denyhosts”
Olaf
dobry punkt @olaf. Większość serwerów, na których go zainstalowałem, to RHEL, gdzie znajduje się również w repozytorium DAG.
Alister Bulman
+1 dla denyhosts
wimvds
2
Wydaje się, że DenyHosts wykrywa i blokuje tylko ataki siłowe ssh. Lepszym wyborem byłby fail2ban (jest również dostępny w repozytoriach), który monitoruje różne rzeczy, w tym między innymi dzienniki Apache. Sprawdź wiki społeczności na help.ubuntu.com/community/Fail2ban
jeshurun
10

Ubuntu opiera się na Debianie i uważam, że Podręcznik Zabezpieczania Debiana jest bardzo przydatny w dystrybucjach opartych na Debianie, całkowicie przeprowadzając cię przez system i sprawdzając każdą część. Jest to w zasadzie naprawdę bardzo wyczerpująca odpowiedź na twoje pytanie.

Mike McQuaid
źródło
Czy masz do tego link?
Płomień
1
Przepraszamy, myślałem, że link był w poście. Jest na: debian.org/doc/manuals/securing-debian-howto
Mike McQuaid
5

Zwykle instaluję RKHunter, który skanuje w poszukiwaniu rootkitów i sprawdza integralność różnych ważnych plików binarnych systemu. Jest w standardowym repozytorium i będzie działał codziennie z crona. Nie jest doskonały, jeśli chodzi o bezpieczeństwo, ale można go dodawać bez wysiłku i zapewnia ochronę.

Tim Howland
źródło
4

Zainstaluj dziennik, ale popraw, aby nigdy nie otrzymywać wiadomości z regularnych wydarzeń, w przeciwnym razie będziesz miał zwyczaj ignorowania wiadomości e-mail.

Sprawdź, które procesy nasłuchują za pomocą netstat, i upewnij się, że nic nie działa, co nie wymaga uruchomienia. Wiele demonów można skonfigurować tylko do nasłuchiwania na wewnętrznym IP (lub localhost) zamiast na wszystkich interfejsach.

Mikeage
źródło
3

Rób, co sugeruje Can ...

Nmap hosta i wyłącz wszystkie nieistotne usługi. W razie potrzeby użyj iptables.

Jauder Ho
źródło
2
Na każdym serwerze, który jest dostępny przez Internet, iptables jest zawsze konieczne. ;-)
Christopher Cashell
3

Jeśli korzystasz z serwera w pobliżu Internetu, zainstaluj system wykrywania włamań, np. Snort.

Timo Geusch
źródło
3

Użyj osobnych partycji dla różnych katalogów, takich jak /tmplub, /vari zamontuj je nosuid, nodevi noexecjeśli to możliwe.

Cristian Ciupitu
źródło
3

Kilka sugestii zapory ogniowej.

Naucz się korzystać z zapory i koncepcji prawidłowego blokowania skrzynki. Zmiana domyślnych portów jest w dużej mierze bezużyteczna; ważniejsza jest odpowiednia konfiguracja aplikacji i zapory ogniowej.

Oba są w repozytoriach Ubuntu:

FireHOL

ma świetną dokumentację i bardzo łatwą do nauczenia się składnię. Byłem w stanie skonfigurować bramę / firewall w ciągu dwudziestu minut. Jedynym powodem, dla którego odeszłam od tego, jest to, że wydaje się, że nie jest utrzymywane (ostatnie wydanie 2 lata temu). To nie znaczy, że to nie działa, ale ...

Ferm

jest inny. Więcej składni podobnej do iptables, ale ta sama koncepcja. Więcej społeczności utrzymywanych niż FireHOL, ale odbiór trwa dłużej.

Shorewall

obecnie używam. Jego dokumentacja jest obszerna, a format konfiguracji tabelaryczny. Około półtorej godziny zajęło mi zrozumienie wszystkich potrzebnych plików (6), aby uruchomić działającą konfigurację zapory / bramy. Jest dość potężny. WSKAZÓWKA: Strony podręcznika dla różnych plików konfiguracyjnych są NAPRAWDĘ pomocne!

Wszystkie te ładują konfiguracje zapory z pliku konfiguracyjnego. Bardzo skuteczny, łatwiejszy w obsłudze niż iptables od razu i (moim zdaniem) łatwiejszy w użyciu i zarządzaniu niż ufw.

Inny:

  • Popieram zalecenia dotyczące użycia klucza SSH.

  • Skonfiguruj IDS.

  • Dowiedz się więcej o AppArmor. Ogranicza dostęp do plików wykonywalnych tylko do określonych katalogów i plików, których potrzebuje. Podobne do SELinux w świecie RHEL. Jest zainstalowany i włączony ze wstępnie skonfigurowanymi „profilami” dla wielu dobrze używanych programów.

Luke nie ma imienia
źródło
2

Oprócz innych sugestii tutaj wymienię trzy, które są oczywiste, ale być może warte wspomnienia dla kompletności:

  1. Jeśli nie uważasz, że potrzebujesz zapory, pomyśl jeszcze raz. ufw jest prosty, ale zaprojektowany dla Ubuntu i oparty na iptables
  2. Zaktualizuj pakiety: zastosuj co najmniej wszystkie poprawki bezpieczeństwa
  3. Udokumentuj, co zrobiłeś, aby zabezpieczyć serwer i dlaczego. Obejmują konfigurowanie (zautomatyzowane) procesów do monitorowania dzienników, testowania konfiguracji i raportowania wymaganych aktualizacji zabezpieczeń.
mas
źródło