Audyt dostępu do plików linux. Hartowanie Linuksa. Dobieramy narzędzia do kompleksowego audytu bezpieczeństwa. Uruchamianie testów indywidualnych w Lynis

Większość takich systemów korporacyjnych i wieloskładnikowych jak SOK ROŚLINNY , OracleDB wykorzystują na swojej platformie system operacyjny oparty na Linuks . W związku z tym audytorzy IT poświęcają im tak dużą uwagę. Dzisiaj w artykule przedstawimy Twojej uwadze kilka bezpłatnych narzędzi przedstawionych w formie skryptów i wykorzystujących zwykłe mechanizmy systemu operacyjnego do zapewnienia ekspresowego audytu konfiguracji bezpieczeństwa.

Następujące polecenia systemowe i skrypty używane do szybkiego audytu opcji zabezpieczeń systemów operacyjnych Linux są oparte na zaleceniach audytu bezpieczeństwa opublikowanych przez społeczność ISACA w podręczniku UNIX/LINUX Operating System Security Audit/Assurance Program.

1. Weryfikacja kont

1.1 Wyświetl listę wszystkich użytkowników
Lista użytkowników jest przechowywana w /etc/passwdfile. Aby uzyskać listę użytkowników, możesz użyć następującego skryptu:

  1. kosz/bash
  2. # userslistinthesystem.sh
  3. # zlicza i wyświetla listę istniejących „prawdziwych” użytkowników w systemie.
  4. echo „[*] Istniejący użytkownicy (posortowani alfabetycznie):”
  5. grep „/bin/bash” /etc/passwd | grep -v 'root' | cięcie-f1
  6. -d':' | sortować
  7. echo -n „[*] Liczba znalezionych rzeczywistych użytkowników: „
  8. grep „/bin/bash” /etc/passwd | grep -v 'root' | wc -l
1.2 Lista zablokowanych kont
Podczas audytu musisz sprawdzić listę zablokowanych i odblokowanych użytkowników ( Nazwa konta ). W tym celu zadziała następujące polecenie:
  1. #!/bin/bash
  2. # passwd –s NazwaKonta

1.3 Wyświetlanie statystyk dla wszystkich użytkowników

  • Audytor musi upewnić się, że zespół ak zawarte w systemie, w celu przeglądu działań użytkownika:
    1. #!/bin/bash
    Aby wyświetlić aktywność sesji połączenia użytkownika z sumami dla każdego dnia, użyj polecenia:
    1. #!/bin/bash
    2. # ac -d
    Wyświetlenia informacji o aktywności sesji (w godzinach) połączenia użytkownika "użytkownik" :
    1. #!/bin/bash
    2. # ac użytkownik
    1.4 Wyświetl aktywność użytkownika
    Aplikacje systemowe psacct lub acct działają w tle i śledzą aktywność każdego użytkownika w systemie, a także zużywane przez niego zasoby. Aby sprawdzić aktywność użytkowników w systemie, uruchom następujący skrypt:
    1. #!/usr/bin/envksh
    2. ostatni -Fa|awk ‘
    3. /rozpoczyna się wtmp/ (następny;)
    4. /wciąż zalogowany/ ( następny; )
    5. 0 $ == restart ( następny; )
    6. NF > 0 (
    7. jeśli (NR > 1)
    8. printf("
      ”);
    9. printf("Uzytkownik:t%s
      ”, 1 $); # użytkownik
    10. printf(" Start:t%s %s %s %s
      ”, $3, $4, $5, $6);
    11. if($9 == "w dół")
    12. printf("Koniec:wyłączenie
      ”);
    13. printf(" Koniec:t%s %s %s %s
      ”, $9, $10, $11, $12);
    14. if(substr ($NF, 1, 1) == „(”)
    15. t = $NF;
    16. h = "lokalny host";
    17. t = $(NF-1);
    18. h = $NF;
    19. gsub("[()]", "", t);
    20. printf("Czas włączony:t%s
      ", T);
    21. printf("Zdalny host:t%s
      ", H);
  • 2. Sprawdzenie polityki haseł

    2.1 Konta z pustym hasłem
    W trakcie audytu należy upewnić się, że w systemie nie ma lub zablokowano konta, które umożliwiają zalogowanie się do systemu bez podawania hasła. Tę regułę można sprawdzić za pomocą polecenia:

    # kot /etc/cień | awk -F: ($2==””)(print $1)’

    2.2 Sprawdzanie złożoności hasła
    Podczas audytu konieczne jest sprawdzenie ustawień złożoności hasła, aby zmniejszyć ryzyko ataków brute-force (brute-force) lub słownikowych na hasło. Aby ustawić tę zasadę w systemie, należy użyć modułów uwierzytelniania typu Pluggable Authentication Modules (PAM).
    Audytor może sprawdzić odpowiednie ustawienie w pliku konfiguracyjnym:

    # vi /etc/pam.d/system-auth

    2.3 Sprawdzanie ważności hasła

    W ramach audytu należy sprawdzić ustawienie wygaśnięcia hasła. Aby sprawdzić czas wygaśnięcia hasła, użyj polecenia zmiana. To polecenie wyprowadza dokładna informacja datę wygaśnięcia hasła i datę jego ostatniej zmiany.
    Poniższe polecenie służy do przeglądania informacji o „wieku” haseł:

    #chage -l nazwa użytkownika

    Aby zmienić czas wygaśnięcia hasła dla określonego użytkownika, możesz użyć poniższych poleceń:

    #chage -M 60 nazwa użytkownika
    #chage -M 60 -m 7 -W 7 nazwaużytkownika

    Opcje (aby ustawić datę ważności hasła):
    -M - maksymalna data wygaśnięcia w dniach.
    -m to minimalna data wygaśnięcia w dniach.
    -W - ustawienie ostrzeżenia w dniach.

    2.4 Używanie powtarzających się haseł
    Ustawienia uprawnień w systemie muszą być zgodne z polityką haseł. Plik zawierający historię haseł znajduje się w /etc/security/opasswd. Aby to sprawdzić, wykonaj następujące kroki:

    dla RHEL: otwórz plik „/etc/pam.d/system-auth”:

    # vi /etc/pam.d/system-auth

    dla Ubuntu/Debian/Linux Mint: otwórz plik „/etc/pam.d/common-password”:

    # vi /etc/pam.d/common-password

    Dodaj następujący wiersz do sekcji „auth”:

    auth wystarczy pam_unix.so likeauthnullok

    Aby wyłączyć używanie ostatnich sześciu haseł, dodaj następujący wiersz:

    Hasło wystarczające pam_unix.so nullokuse_authtok md5 shadow Remember=6

    Po wykonaniu polecenia system zachowa historię poprzednich sześciu haseł, a jeśli jakikolwiek użytkownik spróbuje zaktualizować hasło przy użyciu któregokolwiek z ostatnich sześciu, otrzyma komunikat o błędzie.

    3. Bezpieczne ustawienia połączenia
    Protokoły połączeń zdalnych Telnet i Rlogin są bardzo stare i podatne na ataki ze względu na przesyłanie hasła przez sieć w postaci niezaszyfrowanej. Do zdalnego i bezpiecznego połączenia musi być używany bezpieczny protokół Bezpieczna powłoka (SSH). Audytor musi również upewnić się, że opcja logowanie roota wyłączone, domyślny port SSH zmieniony, dostęp zdalny dozwolony tylko dla określonych uprawnionych użytkowników. Ustawienia do sprawdzenia znajdują się w pliku konfiguracyjnym SSH:

    1. #vi /etc/ssh/sshd_config

    3.1 Zaloguj się jako superużytkownik (login root)

    W trakcie audytu audytor powinien zweryfikować, czy zdalne logowanie z uprawnieniami superużytkownika root jest zabronione.

    # PermitRootLogin = tak
    3.2 Zweryfikuj konto usługi Logowanie SSH

    Podczas audytu audytor powinien sprawdzić konto usługi z bezhasłowym logowaniem SSH. Zazwyczaj administratorzy systemu używają tej funkcji do programowania kopie zapasowe, przesyłanie plików i uruchamianie skryptów w trybie zdalnego sterowania.

    Sprawdź po raz ostatni, czy ustawienia sshd_config (/etc/ssh/sshd_config) są poprawne.

    # PermitRootLogin bez hasła

    # RSAAuthentication = tak

    #PubkeyAuthentication=tak

    3.3 Sprawdzanie list dostępu w DenyHosts i Fail2ban
    Podczas audytu konieczne jest sprawdzenie ustawień list dostępu Odmów hostów I Faul2ban . Są to skrypty używane do monitorowania i analizowania dzienników dostępu SSH oraz ochrony przed atakami typu brute force.

    Funkcje DenyHost:

    • zapisuje i śledzi dzienniki z pliku /var/log/bezpieczne , zaznaczając wszystkie udane i nieudane próby logowania i filtrując je.
    • monitoruje nieudane próby logowania
    • wysyła powiadomienia e-mail o zablokowanych hostach i podejrzanych próbach logowania
    Funkcje Fail2ban:
    • Zapisuje i śledzi dzienniki z plików /var/log/bezpieczne I /var/log/auth.log , /var/log/pwdfail
    • wysoce konfigurowalny i wielowątkowy
    • regularnie monitoruje pliki dziennika

    4. Sprawdzanie dzienników systemowych
    Podczas audytu należy upewnić się, że demon SysLog działa, a wszystkie istotne zdarzenia występujące w systemie są rejestrowane w dziennikach zdarzeń. Audyt powinien również zapewnić, że polityka przechowywania dziennika zdarzeń uwzględnia wymagania obowiązującego prawa i polityki bezpieczeństwa.

    4.1 Dzienniki zdarzeń w systemie Linux:

    /var/log/auth.log – log systemu autoryzacji (loginy i mechanizm uwierzytelniania).
    /var/log/dpkg.log - dziennik instalowania/usuwania pakietów za pomocą dpkg.
    /var/log/yum.log - dziennik instalowania/usuwania pakietów przy użyciu yum.
    /var/log/faillog — Dziennik nieudanych prób logowania i ich limit dla każdego konta.
    /var/log/kern.log – dziennik jądra, (szczegółowy dziennik komunikatów z jądra Linuksa).
    /var/log/maillog lub /var/log/mail.log – dziennik serwera pocztowego.
    /var/log/wtmp – log logowania (czas logowania i czas trwania wszystkich użytkowników systemu).
    /var/run/utmp - informacje o użytkownikach aktualnie zalogowanych do systemu.
    /var/log/lastlog - zapisy poprzednich logowań.
    /var/log/boot — informacje rejestrowane podczas uruchamiania systemu

    5. Ochrona plików systemowych

    5.1 Ochrona programu ładującego GRUB

    Aby chronić program ładujący GRUB, administrator musi użyć szyfrowania hasła w formacie MD5 :

    # grub-md5-crypt

    Po wykonaniu polecenia administrator musi otworzyć plik /boot/grub/menu.lst Lub /boot/grub/grub.conf i dodaj hasło MD5:

    # vi /boot/grub/menu.lst

    #vi /boot/grub/grub.conf

    Nowo utworzone hasło MD5 można dodać do pliku konfiguracyjnego GRUB.

    5.2 Ochrona katalogu startowego /BOOT

    Podczas audytu należy sprawdzić stan katalogu /uruchomić, ponieważ rdzeń systemu i powiązane pliki znajdują się w katalogu /uruchomić. Musisz upewnić się, że ten katalog ma dostęp tylko do odczytu, co zapobiega nieautoryzowanym zmianom ważnych plików w systemie. Aby to sprawdzić, otwórz plik /etc/fstab i sprawdź konfigurację:

    Plik musi zawierać linię:

    LABEL=/boot /boot ext2 defaults,ro 1 2

    5.3 Sprawdzanie otwartych portów i aktywnych połączeń

    Poniższego skryptu można użyć do sprawdzenia usług działających w systemie:

    #!/bin/bash
    if (($(ps -ef | grep -v grep | grep $usługa | wc -l) > 0))
    Następnie
    echo "Usługa $ działa!!!"
    w przeciwnym razie
    /etc/init.d/$ uruchomienie usługi
    fi

    Pogląd połączenia sieciowe

    # netstat -anop
    Lub
    # lsof -i(lsof -ni)
    Lub
    # iptraf

    Porty nasłuchowe
    Za pomocą polecenia Netstat możesz wyświetlić wszystkie otwarte porty i powiązane polecenia. Przykład skryptu:

    # netstat-tulpn
    Skrypt do skanowania portów to:
    skanowanie() (
    jeśli [[ -z $1 || -z$2]]; Następnie
    echo „Użycie: 0 USD
    powrót
    fi
    host lokalny = 1 USD
    porty lokalne=()
    etui za 2 dolary
    *-*)
    IFS=- czytaj początek koniec<<< “$2”
    dla ((port=początek; port<= end; port++)); do
    porty+=($port)
    zrobione
    ;;
    *,*)
    IFS=, czytaj porty -ra<<< “$2”
    ;; *)
    porty+=($2);;
    esac
    dla portu w „$(porty[@])”; Do
    alarm 1 „echo >/dev/tcp/$host/$port” &&
    echo "port $port jest otwarty" ||
    echo "port $port jest zamknięty"
    zrobione
    }

    firewall iptables

    Podczas audytu należy sprawdzić konfigurację firewalla systemu Linux, aby zapobiec nieautoryzowanemu dostępowi. Aby kontrolować ruch, należy utworzyć reguły w iptables, które będą filtrować przychodzące, wychodzące i przekazywane pakiety na podstawie adresu IP i numeru portu TCP/UDP.

    # iptables -n -L -v --numery-linii

    Żądania ICMP/rozgłaszania

    Podczas audytu należy sprawdzić, czy systemy są skonfigurowane tak, aby ignorować polecenia ping i żądania emisji. Aby to zrobić, upewnij się, że plik „/etc/sysctl.conf” dodano następujące wiersze:

    # ignoruj ​​żądania ICMP:
    net.ipv4.icmp_echo_ignore_all = 1
    # ignoruj ​​​​żądania transmisji:
    net.ipv4.icmp_echo_ignore_broadcasts = 1

    5.4 Sprawdzanie zainstalowanych aktualizacji

    Systemy muszą mieć zainstalowane najnowsze aktualizacje:

    # mniam aktualizacje
    # mniam sprawdzanie aktualizacji

    6. Sprawdzanie automatycznie wykonywanych zadań CRON

    Audytor powinien sprawdzić, kto może, a kto nie może wykonywać zadań w cronie. Dostęp cron jest kontrolowany za pomocą plików /etc/cron.allow I /etc/cron.deny.

    # echo ALL >>/etc/cron.deny

    7. Wymuszona kontrola bezpieczeństwa SELINUX

    Podczas audytu ważne jest sprawdzenie statusu SELinux . Mechanizm ten musi być włączony w systemie.
    Dostępne są trzy tryby SELinux :

    • Egzekwowanie: Zasady SELinux są egzekwowane. SELinux odmawia dostępu na podstawie zasad polityki SELinux.
    • Permissive: Zasady SELinux nie są egzekwowane. SELinux nie odmawia dostępu, ale odmowy są rejestrowane jako działania, które zostałyby odrzucone, gdyby polityka była ustawiona na wymuszanie.
    • Wyłączony: SELinux jest wyłączony. Stosowane są tylko dyskretne reguły DAC.

    Podczas audytu możesz użyć następującego skryptu, aby sprawdzić status SELinux lub użyć poleceń system-configselinux, getenforce lub sestatus:

    ENABLED=`cat /selinux/enforce`
    jeśli [ „$ WŁĄCZONE” == 1 ]; Następnie
    echo „SELinux jest włączony, wyłączyć? (tak nie):"
    czytaj wyłącz
    if [ $wyłącz == "tak" ]; Następnie
    echo "wyłączanie Selinux"
    ustaw siłę 0
    fi
    fi

    Skrypt LBSA do sprawdzania podstawowych opcji bezpieczeństwa

    LBSA (podstawowy skrypt audytu bezpieczeństwa systemu Linux) to podstawowy skrypt audytu konfiguracji zabezpieczeń systemu Linux. Skrypt należy uruchomić z wiersza poleceń z uprawnieniami źródło, lub najlepiej zaplanowane do regularnego uruchamiania przy użyciu crona do systematycznego sprawdzania zmian w konfiguracji.

    Celem tego skryptu jest szybki audyt ustawień bezpieczeństwa i pobranie raportu opisującego możliwe ustawienia, które można zmienić, aby zapewnić wyższy stopień bezpieczeństwa. W przypadku, gdy nie ma zaleceń dla żadnej opcji, skrypt po prostu wyświetla jedną linię z przetwarzaniem czeku, a ostateczna decyzja zawsze należy do administratora. Przed uruchomieniem testu programiści zdecydowanie zalecają przeczytanie instrukcji i zapoznanie się z zalecanymi sekcjami, aby uzyskać więcej informacji.

    W bieżącej edycji (wersja 1.0.49) skrypt skanuje następujące opcje:

    • luki w ustawieniach konta
    • luki w ustawieniach SSH
    • luki w katalogach tymczasowych i katalogach systemu plików ładowanych do pamięci RAM (na przykład w /tmp, /var/tmp /dev/)
    • uprawnienia do plików, stan katalogów systemowych
    • -konfiguracja usług DRBD i Hearbeat

    Skrypt jest dość duży, więc nie umieściliśmy go na stronie.

    Raz w miesiącu przeprowadzaj audyt bezpieczeństwa serwera, aby w porę wykryć ewentualne problemy związane z penetracją intruzów na serwer.

    Jeśli nie widzisz żadnych oznak aktywności osób trzecich na serwerze VPS lub w witrynie, wykonaj następującą serię kontroli i regulacji, aby chronić serwer przed włamaniem.

    Ustawienia warstwy aplikacji

    Jeśli na serwerze jest zainstalowany CMS, sprawdź, czy są zainstalowane wszystkie najnowsze aktualizacje.

    Joomla

    Odszukaj plik changelog.txt w katalogu głównym serwisu, w którym znajdziesz informacje o wersji CMS. Jeśli jest nieaktualny, zaktualizuj Joomla.

    Wordpress

    Wyszukaj plik wp-includes/version.php, aby uzyskać informacje o wersji CMS. Jeśli jest nieaktualny, zaktualizuj Wordpress.

    DLE

    Wyszukaj plik engine/data/config.php, poszukaj wiersza version_id i upewnij się, że wersja jest aktualna.

    Sprawdź również pliki engine/ajax/updates.php i upgrade/index.php (parametr $dle_version).

    1C-Bitrix

    Odszukaj plik /bitrix/modules/main/classes/general/version.php, w którym znajdziesz informacje o wersji CMS. Sprawdź także plik /bitrix/admin/update_system.php. Jeśli wersja jest nieaktualna, zaktualizuj 1C-Bitrix.

    Drupala

    Odszukaj plik changelog.txt w katalogu głównym serwisu, w którym znajdziesz informacje o wersji CMS. Jeśli jest nieaktualny, zaktualizuj Drupala.

    Sprawdź wersję jądra w pliku /modules/system/system.info.

    Możesz także wykryć wersję CMS za pomocą panelu sterowania.

    Sprawdzać serwer internetowy.

    Apache

    Otwórz plik konfiguracyjny Apache (w zależności od wersji mogą to być pliki httpd.conf, httpd2.conf, apache.conf, apache2.conf) i sprawdź, czy zawiera on dyrektywę wyłączającą wyświetlanie informacji o wersji strony internetowej serwer:

    ServerTokensProd

    Jeśli ta dyrektywa nie jest obecna, dodaj i zapisz plik.

    Wyszukaj plik secure.conf, otwórz go do przeglądania i porównaj jego zawartość z następującym przykładem:

    Opcje +Zawiera -FollowSymLinks +SymLinksIfOwnerMatch AllowOverride FileInfo AuthConfig Limit Indeksy Opcje Kolejność Zezwól, Odmów Zezwól ze wszystkich php_admin_value open_basedir "." Indeksy opcji Akcja php-cgi /php-bin/php

    Twój plik secure.conf nie powinien znacząco różnić się od powyższego przykładu.

    Sprawdź zainstalowany MPM za pomocą polecenia

    Apachectl -V

    Aby uzyskać większe bezpieczeństwo, użyj mpm_itk, chyba że absolutnie potrzebujesz mpm_prefork.

    Jeśli chcesz zmienić MPM, wykonaj ponowną instalację po wykonaniu kopii zapasowych plików konfiguracyjnych. Po ponownej instalacji sprawdź, czy właścicielem witryny i wszystkich jej katalogów jest użytkownik.

    Nginx

    Otwórz plik konfiguracyjny serwera WWW (nginx.conf), przejdź do sekcji http i sprawdź, czy zawiera dyrektywy ograniczające liczbę połączeń z jednego adresu IP:

    Limit_zone ogranicza $binary_remote_addr 5m; limit_conn slimits 10; lub (dla najnowszych wersji) limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn adres 10;

    Jeśli te dyrektywy nie są obecne, dodaj i zapisz plik.

    Zablokuj niektóre programy użytkownika, aby zablokować niechciany ruch. W sekcji http pliku konfiguracyjnego Nginx dodaj dyrektywę

    If ($http_user_agent ~* LWP::Simple|BBBike|wget|msnbot) (zwróć 403;)

    Zablokuj spam polecający, dodając dyrektywę do sekcji http pliku konfiguracyjnego Nginx

    If($http_referer ~*(laski|sprzedaż|dziewczyna|biżuteria|miłość|nudit|organic|poker|porn|seks|nastolatek))(zwróć 403;)

    Menedżer usług internetowych

    Wykonaj następujące kontrole w panelu sterowania ISPmanager.

    Sprawdź, czy dostęp do centrali nie jest ograniczony przez adres IP.

    Skonfiguruj kopię zapasową danych, jeśli nie jest włączona. Zalecamy użycie dysku zewnętrznego do tworzenia kopii zapasowych, aby zapobiec utracie danych wraz z archiwum.

    PHP

    Otwórz plik konfiguracyjny php.ini i dodaj następujące dyrektywy.

    Expose_php=Off - wyłącza przesyłanie informacji o wersji PHP w nagłówku HTTP; sql.safe_mode=On - włącz tryb awaryjny SQL; post_max_size=8M - limit wielkości danych przesyłanych metodą POST; disable_functions exec, system, passthru, proc_open, shell_exec - wyłącza niektóre funkcje ze względów bezpieczeństwa.

    NTP

    W pliku konfiguracyjnym NTP (domyślnie /etc/ntp.conf) dodaj wiersze, aby wyłączyć żądania rekurencyjne:

    Ogranicz domyślny kod ograniczony nomodify notrap nopeer noquery ograniczenia -6 domyślny kod ograniczony nomodify notrap nopeer noquery ograniczenia 127.0.0.1 ograniczenia -6::1

    Wiązać

    Umieść następujące wiersze w pliku named.conf, aby wyłączyć zapytania rekurencyjne:

    Zezwalaj na rekurencję ( 127.0.0.1; 82.146.32.0/19; 78.24.216.0/21; 92.63.96.0/20; 62.109.0.0/19; 188.120.224.0/19; 149.154.64.0/21; 37.230.114.15; 248.0/21;);

    Sprawdzanie właściciela katalogu witryny

    Sprawdź, kto jest właścicielem głównego katalogu witryny i wszystkich jego podkatalogów.

    Na pasku narzędzi ISPmanager przejdź do sekcji „System” -> „Menedżer plików” i otwórz katalog witryny. Upewnij się, że kolumny Właściciel i Grupa dotyczą użytkownika, który jest właścicielem witryny. Aby zmienić te atrybuty, kliknij przycisk Atrybuty na pasku narzędzi.

    Prawidłowe nazwy właścicieli witryn to apache, www, www-data, jeśli używasz mpm_prefork. Zalecamy użycie mpm_itk w celu poprawy bezpieczeństwa.

    Jeśli witryna zawiera foldery współdzielone (na przykład przesyłanie, tmp), obowiązuje dla nich nazwa właściciela 777. Upewnij się, że ten użytkownik ma ustawione tylko niezbędne katalogi, uruchamiając polecenie

    Znajdź ./ -perm 0777

    Znajdzie wszystkie foldery i pliki należące do 777.

    Ustawienia na poziomie systemu operacyjnego

    łowca

    Użyj narzędzia rkhunter, aby zidentyfikować potencjalne luki w zabezpieczeniach serwera.

    Aby zainstalować narzędzie, użyj polecenia:

    Yum install rkhunter - CentOS OS apt-get install rkhunter - Debian/Ubuntu OS make all install clean -C /usr/ports/security/rkhunter lub pkg install rkhunter - FreeBSD OS

    Aby zaktualizować bazę danych tego narzędzia, uruchom polecenia

    Rkhunter — aktualizacja

    Rkhunter --propupd

    Uruchom sprawdzanie systemu za pomocą polecenia

    Rkhunter -c --cs2

    Podczas procesu weryfikacji musisz kilka razy nacisnąć klawisz Enter, aby kontynuować. Po zakończeniu pojawi się podsumowanie wyniku testu.

    Wyniki sprawdzenia są umieszczane w pliku dziennika /var/log/rkhunter/rkhunter.log, przejrzyj go pod kątem ostrzeżeń i błędów.

    sysctl

    Użyj narzędzia sysctl do zarządzania parametrami jądra systemu. Otwórz plik konfiguracyjny narzędzia /etc/sysctl.conf i wprowadź następujące wiersze.

    Wyłącz możliwość kierowania ruchu przychodzącego, ponieważ osoba atakująca może wykorzystać tę możliwość do fałszowania adresów IP:

    net.ipv4.conf.all.accept_source_route = 0

    Wyłącz odpowiedzi na żądania ICMP przez kanał rozgłoszeniowy - pomoże to zapobiec atakom smurf:

    Net.ipv4.icmp_echo_ignore_broadcasts = 1

    Wyłącz rejestrowanie nieprawidłowych komunikatów o błędach:

    Net.ipv4.icmp_ignore_bogus_error_responses = 1

    Włącz ochronę przed przepełnieniem pamięci:

    Kernel.exec-shield=1 (CentOS)

    Włącz użycie pamięci ASLR:

    kernel.randomize_va_space = 2

    Wyłącz możliwość przekazywania wiadomości ICMP:

    net.ipv4.conf.all.accept_redirects=0 net.ipv4.conf.default.accept_redirects=0

    Jeśli nie korzystasz z VPN lub innych specjalnych aplikacji na serwerze, wyłącz przekazywanie:

    Net.ipv4.conf.all.forwarding=0

    Włącz ochronę przeciwpowodziową SYN - wykorzystanie plików cookie SYN:

    Net.ipv4.tcp_syncookies=1

    Ustaw liczbę prób wysłania pakietów SYN-ACK:

    Net.ipv4.tcp_synack_retries = 3

    Ustaw czas, po którym serwer sprawdzi połączenie, jeśli nie było używane przez dłuższy czas (domyślnie 2 godziny):

    Net.ipv4.tcp_keepalive_time=1800

    Ustaw liczbę kontroli połączenia przed jego zakończeniem:

    Net.ipv4.tcp_keepalive_probes=3

    Ustaw limit czasu gniazda w stanie FIN-WAIT-2:

    net.ipv4.tcp_fin_timeout=30

    fstab

    Sprawdź plik konfiguracyjny fstab (/etc/fstab), który zawiera informacje o dyskach, partycjach i urządzeniach pamięci masowej oraz o tym, jak są one montowane w systemie.

    Zobacz /etc/fstab

    Zauważ, że partycje inne niż root muszą mieć opcję nodev. Jeśli /tmp jest zamontowany na osobnej partycji, dodaj nodev, noexec, nosuid dla tej partycji.

    rslog

    Sprawdź plik dziennika systemu /etc/rsyslog.conf.

    Zobacz /etc/rsyslog.conf

    Zwróć uwagę na następujące linie, które powinny wyglądać następująco:

    Upewnij się również, że plik dziennika nie jest pusty, tj. logowanie jest poprawne.

    Sudo

    Sprawdź, czy narzędzie sudo (lub su) jest poprawnie skonfigurowane, co pozwala użytkownikowi uruchamiać określone polecenia i programy jako root. Ustawienia tego narzędzia znajdują się w pliku konfiguracyjnym /etc/sudoers lub /usr/local/etc/sudoers. Otwórz go do edycji

    Zobacz /etc/sudoers

    Znajdź wiersz, który jest napisany domyślnie i pozwala superużytkownikowi root na uruchamianie dowolnych poleceń.

    Aby dać wszystkim użytkownikom uprawnienia do uruchamiania poleceń jako root, dodaj następujący wiersz:

    ALL ALL=/bin/su lub ALL ALL=/usr/bin/su

    Aby nadać określonemu użytkownikowi uprawnienia do uruchamiania tylko niektórych poleceń jako root, dodaj wiersz:

    %users ALL=/sbin/mount - grupa użytkowników będzie mogła używać sudo tylko z poleceniem mount user ALL=/sbin/mount - użytkownik użytkownik będzie mógł używać sudo tylko z poleceniem mount

    Ustawienia na poziomie sieci

    Sprawdź, które porty są otwarte na serwerze i które usługi z nich korzystają, uruchamiając polecenie

    Netstat -tuplnw | awk "(print $4, $NF)" | sortować | unikalny

    Na przykład wpis 127.0.0.1:53 748/named oznacza, że ​​nazwana usługa korzysta z portu 53. Sprawdź, czy tylko te niezbędne znajdują się wśród uruchomionych usług, wyłącz wszystkie inne.

    FTP

    Ustaw zakres portów do wykorzystania w trybie pasywnego FTP. Aby to zrobić, otwórz plik konfiguracyjny swojego serwera FTP do edycji i dodaj wiersze:

    dla pliku vsftpd.conf:

    pasv_min_port=1028 pasv_max_port=1048

    dla proftpd.conf:

    Porty pasywne 1028 1048

    Nie używaj protokołu FTP, jeśli nie jest to absolutnie konieczne, zamiast tego użyj SFTP. Jeśli FTP jest nadal wymagany, dodaj następujące wiersze do pliku konfiguracyjnego:

    dla pliku vsftpd.conf:

    Xferlog_enable=TAK (logowanie ftp) anonimowy_enable=NIE (odmowa połączeń użytkowników anonimowych) anon_upload_enable=NIE anon_mkdir_write_enable=NIE

    dla proftpd.conf:

    w sekcji ... usuń wszystkie sekcje i dodaj linie

    Zaprzeczać wszystkiemu Zaprzeczać wszystkiemu

    iptables

    Sprawdź, czy zapora sieciowa jest poprawnie skonfigurowana. W przypadku iptables uruchom polecenie

    Iptables-nL

    To polecenie wyświetla wszystkie reguły zapory iptables w wierszu poleceń. Reguły te można również przeglądać i edytować w pliku konfiguracyjnym zapory /etc/sysconfig/iptables — dla systemu operacyjnego CentOS, /etc/network/if-up.d/ispmgrfw — dla systemu operacyjnego Debian/Ubuntu.

    W regułach zapory zamknij wszystkie porty z wyjątkiem tych używanych przez usługi działające na serwerze. Aby to zrobić, zmień linie

    :WEJŚCIE AKCEPTUJ :DO PRZODU AKCEPTUJ :WYJŚCIE AKCEPTUJ do :WEJŚCIE DROP :DO PRZODU DROP :WYJŚCIE DROP

    Aby otworzyć niezbędne porty, dodaj linie takie jak

    A WEJŚCIE -p tcp -m tcp --dport 53 -j AKCEPTUJ -A WEJŚCIE -p udp -m udp --dport 53 -j AKCEPTUJ -A WEJŚCIE -p tcp -m multiport --sports 53,80,25,443,953 -j ZAAKCEPTOWAĆ

    gdzie 53 to numer portu do otwarcia.

    Przed wprowadzeniem zmian w pliku konfiguracyjnym zapory wykonaj kopię pliku roboczego.

    Reguły zapory można skonfigurować z poziomu panelu sterowania ISPmanager.

    SSH

    Otwórz plik konfiguracyjny SSH:

    Zobacz /etc/ssh/sshd_config

    Sprawdź, czy następujące wiersze nie są skomentowane:

    Protokół 2 (aby użyć drugiej wersji protokołu) IgnoreRhosts tak (nie używaj pliku .rhost) HostbasedAuthentication nie (nie uwierzytelniaj hosta) PermitRootLogin nie (odmowa dostępu administratora) PermitEmptyPasswords nie (nie używaj pustych haseł) PermitUserEnvironment nie (zabronić użytkownikowi ustawiania zmiennych środowiskowych) PasswordAuthentication tak (zezwalaj na uwierzytelnianie hasłem)

    Włącz SFTP, dodając następujący wiersz do sshd_config:

    Podsystem sftp /usr/lib/openssh/sftp-server

    Sprawdź, czy kolejka poczty nie jest przepełniona i upewnij się, że nie ma wśród nich spamu.

    Uruchom komendę mailq i przejrzyj listę wiadomości. Jeśli lista jest bardzo duża, wybiórczo sprawdzaj wiadomości, które mogą być spamem. Na podstawie identyfikatora (na przykład BD65F10DEE4) określ nadawcę listu. Zespół

    Exim -Mvh identyfikator_wiadomości

    wyświetla nagłówek wiadomości e-mail i polecenie

    Exim -Mvb identyfikator_wiadomości

    wyświetli treść wiadomości.

    Wśród nagłówków wiadomości pole Od: zawiera nadawcę, a X-PHP-Originating-Script zawiera skrypt, do którego wiadomość została wysłana.

    Oprogramowanie

    Sprawdź oprogramowanie serwera pod kątem luk w zabezpieczeniach.

    System operacyjny CentOS

    Uruchom polecenie, które zawiera listę ostatnio zmodyfikowanych plików zainstalowanego oprogramowania:

    Rpm -qVa - aby wyświetlić wszystkie pliki, rpm -qVa | awk "$2!="c" (print $0)" - aby wydrukować pliki oprócz logów.

    Przeanalizuj, które pliki zostały zmienione iw jaki sposób, korzystając z następujących wartości parametrów:

    S - modyfikacja rozmiaru pliku M - modyfikacja domyślnych uprawnień 5 - modyfikacja sumy kontrolnej MD5 D - modyfikacja głównych/podrzędnych numerów urządzenia L - modyfikacja dowiązania symbolicznego U - modyfikacja właściciela pliku G - modyfikacja grupy T - data modyfikacji pliku (mtime) modyfikacja ) c - plik konfiguracyjny d - plik dokumentacji g - plik nie zawarty w paczce l - plik licencji r - plik README

    Na przykład linia S.5.....T. c /etc/httpd/conf/httpd.conf oznacza, że ​​httpd.conf jest plikiem konfiguracyjnym, jego rozmiar, suma kontrolna i data ostatniej modyfikacji zostały zmienione. Ponieważ jest to plik konfiguracyjny, zmiany te nie są podejrzane.

    Zwróć uwagę na pliki, które mają zmienione wartości sum kontrolnych bez wyraźnego powodu. W przypadku takich plików uruchom polecenie:

    Stat /usr/sbin/sshd && file /usr/sbin/sshd gdzie usr/sbin/sshd jest ścieżką do pliku.

    W wyniku polecenia na ekranie wyświetlana jest szczegółowa informacja o zmianie tego pliku.

    Wykonaj polecenie:

    Mniam — aktualizacja zabezpieczeń

    zainstalować aktualizację zabezpieczeń.

    System operacyjny Debiana

    Uruchom polecenia, które sprawdzają sumy kontrolne MD5 dla zainstalowanych programów:

    # apt-get install debsums # debsums -c

    Uruchom następujące polecenia, aby sprawdzić aktualizację zabezpieczeń:

    # echo 'deb http://security.debian.org wheezy/updates main contrib non-free' >> /etc/apt/sources.list # grep security /etc/apt/sources.list > /etc/apt/secsrc .list # apt-get -s -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" aktualizacja

    Aby zainstalować aktualizację zabezpieczeń, uruchom polecenie:

    # apt-get -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" aktualizacja

    Sprawdź, czy wszystkie repozytoria mają uzgodnienie gpg, uruchamiając polecenia:

    # grep -ri gpgcheck /etc/yum.conf # grep -ri gpgcheck /etc/yum.repos.d/ Upewnij się, że linie wyglądają tak: gpgcheck=1 # grep -ri AllowUnauthenticated /etc/apt/

    Rzędy formularza

    APT::Get::AllowUnauthenticated "true";

    nie powinien być.

    Niewykorzystane usługi

    System operacyjny CentOS

    chkconfig -- lista

    Chkconfig --del nazwa_usługi gdzie nazwa_usługi to nazwa usługi.

    System operacyjny Debiana

    Uruchom polecenie, które wyświetla listę nieużywanych usług:

    sysv-rc-conf

    Aby wyłączyć uruchamianie nieużywanej usługi, uruchom polecenie:

    Sysv-rc-conf off nazwa_usługi gdzie nazwa_usługi to nazwa usługi.

    Bezpieczeństwo serwera Linux jest bardzo ważne dla ochrony Twoich danych, własność intelektualna, a także czas w rękach krakersów. Dla ochrony system operacyjny Linuksowe odpowiedzi Administrator systemu. W tym artykule przyjrzymy się dwudziestu rzeczom, które musisz zrobić ze swoim systemem operacyjnym Linux, aby był zawsze bezpieczny. Jeśli to komputer domowy, to o bezpieczeństwie być może nie ma sensu się tak martwić, wystarczą silne hasła i blokowanie dostępu do portów z Internetu. Jednak w przypadku serwera publicznego należy zwrócić uwagę na zapewnienie jego ochrony.

    Te instrukcje będą działać dla dowolnej dystrybucji, niezależnie od tego, czy używasz CentOS, Red Hat, czy Ubuntu, Debian.

    1. Szyfrowanie komunikacji

    Wszystkie dane przesyłane przez sieć są otwarte do monitorowania. Dlatego konieczne jest szyfrowanie przesyłanych danych, w miarę możliwości za pomocą haseł, kluczy lub certyfikatów.

    Użyj scp, ssh , rsync lub sftp do przesyłania plików. Możesz także zamontować zdalny system plików w swoim katalogu domowym za pomocą narzędzi takich jak shhfs.

    GnuPG umożliwia szyfrowanie i podpisywanie danych specjalnym kluczem prywatnym. Dostępne są również funkcje zarządzania kluczami i dostępu do kluczy publicznych.

    Fugu to graficzne narzędzie do przesyłania plików SFTP. SFTP jest bardzo podobny do FTP, ale cała sesja jest szyfrowana. Oznacza to, że żadne hasła ani polecenia nie są przesyłane w sposób jawny. W związku z tym takie transfery są mniej podatne na ataki osób trzecich. Możesz także użyć FileZilla, jest wieloplatformowy Klient FTP z obsługą FTS przez SSH / TLS i SSH File Transfer Protocol (SFTP).

    OpenVPN to wydajny i lekki klient VPN z obsługą szyfrowania SSH.

    2. Staraj się nie używać FTP, Telnet, Rlogin i RSH

    W większości sieci nazwy użytkowników, hasła z poleceń FTP, Telnet, RSH mogą zostać przechwycone przez kogoś w tej samej sieci za pomocą sniffera pakietów. Ogólnym rozwiązaniem tego problemu jest użycie OpenSSH, SFTP lub SFTP, które dodaje SSL lub TLS do zwykłego FTP. Uruchom następującą komendę, aby usunąć NIS, RSH i inne przestarzałe usługi:

    mniam usuń inetd xinetd ypserv serwer tftp serwer telnet rsh-serve

    3. Zmniejsz ilość oprogramowania

    Czy naprawdę potrzebujesz wszystkich zainstalowanych usług internetowych? Nie instaluj niepotrzebnych oprogramowanie aby uniknąć luk w tych programach. Użyj menedżera pakietów, aby zobaczyć zainstalowane programy i usuń wszystkie niepotrzebne:

    lista yum zainstalowana
    Pakiet listy mniam $
    $ mniam usuń pakiet

    dpkg --lista
    $ dpkg --pakiet informacyjny
    $ apt-get usuń pakiet

    4. Jedna maszyna - jeden serwis

    Uruchamiaj różne usługi na oddzielnych serwerach lub wirtualne maszyny. Ogranicza to liczbę usług, które mogą zostać naruszone. Na przykład, jeśli atakujący może włamać się do Apache, uzyska dostęp do całego serwera. W tym usługi takie jak MySQL, serwer E-mail i tak dalej. Do wirtualizacji można użyć oprogramowania takiego jak XEN lub OpenVZ.

    5. Dbaj o aktualność jądra i oprogramowania Linuksa

    Stosowanie poprawek bezpieczeństwa jest bardzo ważną częścią utrzymywania bezpieczeństwa serwera z systemem Linux. System operacyjny zapewnia wszystkie narzędzia do aktualizowania systemu i aktualizacji do nowych wersji. Wszystkie aktualizacje zabezpieczeń należy zastosować jak najszybciej. Tutaj również musisz użyć menedżera pakietów. Na przykład:

    Lub dla systemów opartych na Debianie:

    sudo apt aktualizacja && sudo apt aktualizacja

    Możesz skonfigurować Red Hat lub Fedorę, aby wysyłały Ci powiadomienia e-mail, gdy dostępne są nowe aktualizacje zabezpieczeń. Możesz także dostosować automatyczna aktualizacja przez cron lub możesz użyć aptcron Debiana, aby powiadomić cię o konieczności aktualizacji systemu.

    6. Używaj rozszerzeń bezpieczeństwa w systemie Linux

    System operacyjny Linux jest dostarczany z różnymi poprawkami bezpieczeństwa, których można użyć do ochrony przed błędną konfiguracją lub złośliwe oprogramowanie. Ale możesz także użyć dodatkowych systemów kontroli dostępu do aplikacji, takich jak SELinux lub AppArrmor.

    SELinux zapewnia różne zasady bezpieczeństwa dla jądra Linuksa. Tutaj można kontrolować dostęp do dowolnych zasobów systemowych za pomocą ról. Dostęp do określonego zasobu może uzyskać tylko program, którego rola na to pozwala, a nawet uprawnienia superużytkownika nie mają znaczenia. SELinux znacznie zwiększa bezpieczeństwo systemu Linux, ponieważ nawet root jest tutaj uważany za zwykłego użytkownika. Więcej szczegółów opisano w osobnym artykule.

    7. Konta użytkowników i silne hasła

    Użyj poleceń useradd i usermod do tworzenia i obsługi kont użytkowników. Upewnij się, że masz dobre i silne hasło, powinno zawierać co najmniej osiem znaków, najlepiej w innym przypadku, wśród których powinny znaleźć się znaki specjalne lub cyfry. Na przykład 8 znaków, z których siedem to litery, a jeden znak lub cyfra. Użyj narzędzi takich jak John the ripper, aby znaleźć słabe hasła użytkowników na serwerze i skonfiguruj pam_cracklib.so, aby wymusić politykę haseł.

    8. Od czasu do czasu zmieniaj hasła

    Polecenie zmiany pozwala określić liczbę dni przed datą wymuszonej zmiany hasła. Informacje te są wykorzystywane przez system do określenia, kiedy użytkownik powinien je zmienić. Te ustawienia znajdują się w /etc/login.defs. Aby wyłączyć starzenie się hasła, wprowadź następujące polecenie:

    zmień -l nazwę użytkownika

    Aby uzyskać informację o dacie wygaśnięcia hasła wpisz komendę:

    Możesz także skonfigurować wszystko ręcznie, w pliku /etc/shadow:

    (hasło użytkownika): (ostatnio zmodyfikowany):(maks_dni): (minimum_dni): (Ostrzeżenie):(dezaktywować):(linie_wygaśnięcia):

    • Minimalne dni- minimalny odstęp między zmianami hasła, czyli jak często użytkownik może zmieniać hasło.
    • Maksymalna liczba dni- ile dni hasło będzie ważne, po tym okresie użytkownik będzie zmuszony do zmiany hasła.
    • Ostrzeżenie- po ilu dniach użytkownik zostanie ostrzeżony o konieczności zmiany hasła.
    • ciąg_wygaśnięcia- liczba dni od 1 stycznia 1970 roku, kiedy konto zostanie całkowicie wyłączone.

    chage -M 60 -m 7 -W 7 nazwa użytkownika

    Pożądane jest również uniemożliwienie użytkownikom używania starych haseł, w przeciwnym razie wszelkie próby zmuszenia ich do zmiany hasła zostaną zniweczone.

    9. Blokuj konta po nieudanych próbach logowania

    W systemie operacyjnym Linux możesz użyć polecenia faillog, aby wyświetlić nieudane próby zalogowania użytkownika. Możesz go również użyć do ustawienia limitu nieudanych prób logowania. Wszystkie informacje o nieudanych próbach logowania są przechowywane w pliku /var/log/faillog. Aby go wyświetlić, wpisz:

    Aby ustawić limit prób logowania do określonego konta, użyj:

    dziennik awarii -r -u użytkownik

    Możesz także ręcznie blokować lub odblokowywać konta za pomocą polecenia passwd. Aby zablokować użycie:

    passwd -l użytkownik

    A do odblokowania:

    passwd -u użytkownik

    Warto również sprawdzić, czy w systemie nie ma kont z pustymi hasłami. Aby to zrobić, uruchom:

    awk -F: "($2 == "") (drukuj)" /etc/shadow

    Sprawdź również, czy są jacyś użytkownicy z grupą lub id 0. Powinien być tylko jeden taki użytkownik i jest nim root. Możesz sprawdzić za pomocą tego polecenia:

    awk -F: "($3 == "0") (wydrukuj)" /etc/passwd

    Powinna być tylko jedna linia:

    root:x:0:0:root:/root:/bin/bash

    Jeśli są inne, usuń je. Użytkownicy, a zwłaszcza ich słabe hasła, są jedną z najbardziej wrażliwych rzeczy, które mogą złamać zabezpieczenia w Linuksie.

    10. Wyłącz logowanie superużytkownika

    Aby zapewnić bezpieczeństwo systemu Linux, nigdy nie loguj się jako root. Możesz użyć sudo, aby uzyskać niezbędne uprawnienia i uruchomić żądane polecenie jako root. To polecenie pozwala nie ujawniać hasła superużytkownika innym administratorom, a także zawiera narzędzia do monitorowania, ograniczania i śledzenia działań.

    11. Fizyczne bezpieczeństwo serwera

    Zabezpieczenia serwera Linux muszą obejmować zabezpieczenia fizyczne. Należy ograniczyć fizyczny dostęp do konsoli serwera. Ustaw BIOS tak, aby nie obsługiwał rozruchu z nośników zewnętrznych, takich jak DVD, CD, USB. Ustaw także hasło w programie ładującym BIOS i GRUB, aby chronić ich ustawienia.

    12. Wyłącz niepotrzebne usługi

    Wyłącz wszystkie nieużywane usługi i demony. Nie zapomnij również usunąć tych usług ze startu. Możesz wyświetlić listę wszystkich aktywnych usług w systemach Red Hat za pomocą polecenia:

    chkconfig --lista | grep "3:włączone"

    Aby wyłączyć usługę, użyj:

    przystanek serwisowy
    Usługa $ chkconfig wyłączona

    Znajdź wszystko otwarte programy porty:

    To samo można zrobić ze skanerem nmap:

    nmap -sT -O host lokalny

    Użyj iptables, aby zamknąć wszystkie porty, które nie powinny być dostępne z sieci. Albo przestań zbędne usługi jak opisano powyżej.

    13. Usuń serwer X

    Serwer X na serwerze jest całkowicie opcjonalny. Nie musisz uruchamiać środowiska graficznego na dedykowanym serwerze Apache lub Email. Usuń to oprogramowanie, aby poprawić bezpieczeństwo i wydajność.

    14. Skonfiguruj Iptables

    iptables to program w przestrzeni użytkownika do konfigurowania zapory sieciowej Netfilter wbudowanej w jądro. Pozwala filtrować cały ruch i zezwalać tylko na określone rodzaje ruchu. Użyj także TCPWrappers - systemu ACL do filtrowania dostępu do Internetu. Możesz zapobiec wielu typom ataków DOS za pomocą iptables. Bezpieczeństwo sieci w systemie Linux jest bardzo ważnym aspektem ogólnego bezpieczeństwa systemu.

    15. Skonfiguruj jądro

    Plik /etc/sysctl.conf przechowuje ustawienia jądra, które są ładowane i stosowane podczas uruchamiania systemu.

    Włącz ochronę przed przepełnieniem bufora execshield:

    kernel.exec-shield=1
    kernel.randomize_va_space=1

    Włącz ochronę przed fałszowaniem adresów IP:

    net.ipv4.conf.all.rp_filter=1

    Wyłącz przekazywanie adresów IP:

    net.ipv4.conf.all.accept_source_route=0

    Ignoruj ​​żądania transmisji:

    net.ipv4.icmp_echo_ignore_broadcasts=1
    net.ipv4.icmp_ignore_bogus_error_messages=1

    Zaloguj wszystkie sfałszowane paczki:

    net.ipv4.conf.all.log_martians=1

    16. Podziel dysk twardy na partycje

    Separacja twardy dysk na partycje w zależności od przeznaczenia plików poprawia bezpieczeństwo systemu operacyjnego Linux. Zaleca się utworzenie osobnych sekcji dla takich katalogów:

    • /dom
    • /var i /var/tmp

    Utwórz osobne partycje dla katalogów głównych Apache i serwerów FTP. Otwórz plik /etc/fstab i ustaw specjalne opcje dla żądanych partycji:

    • noexec- nie uruchamiaj żadnych programów ani plików wykonywalnych na tej partycji, dozwolone są tylko skrypty
    • węzełv- nie zezwalaj na symboliczne lub specjalne urządzenia na tej partycji.
    • nosuid- nie zezwalaj na dostęp SUID / SGID dla programów z tej sekcji.

    17. Użyj ograniczenia miejsca na dysku

    Ogranicz dostępne miejsce na dysku dla użytkowników. Aby to zrobić, utwórz przydział dyskowy w /etc/fstab, ponownie podłącz systemy plików i utwórz bazę danych przydziałów dyskowych. Poprawi to bezpieczeństwo w systemie Linux.

    18. Wyłącz IPv6

    Protokół internetowy nowej generacji IPv6 zastąpi w przyszłości używany już IPv4. Ale w tej chwili nie ma narzędzi, które pozwalają sprawdzić bezpieczeństwo sieci opartej na protokole IPv6. Wiele dystrybucji Linuksa domyślnie dopuszcza protokół IPv6. Hakerzy mogą wysyłać niechciany ruch, a administratorzy nie będą mogli go śledzić. Więc jeśli nie potrzebujesz tej usługi, wyłącz ją.

    19. Wyłącz nieużywane pliki binarne SUID i SGID

    Wszystkie pliki wykonywalne, dla których włączona jest flaga SUID lub SGID, są potencjalnie niebezpieczne. Ta flaga oznacza, że ​​program zostanie uruchomiony z uprawnieniami superużytkownika. A to oznacza, że ​​jeśli program ma jakąś lukę lub błąd, to lokalny lub zdalny użytkownik może użyć tego pliku. Znajdź wszystkie takie pliki za pomocą następującego polecenia:

    znajdź / -perm +4000

    Znajdź pliki z ustawioną flagą SGID:

    znajdź / -perm +2000

    Lub możemy połączyć to wszystko w jednym poleceniu:

    znajdź / \(-perm -4000 -o -perm -2000 \) -print
    $ find / -path -prune -o -type f -perm +6000 -ls

    Będziesz musiał szczegółowo przestudiować każdy znaleziony plik, aby zrozumieć, ile ten lub inny plik jest potrzebny.

    20. Akta publiczne

    Pożądane jest również znalezienie plików, które mogą być modyfikowane przez wszystkich użytkowników w systemie. Aby to zrobić, użyj następującego polecenia:

    znajdź /dir -xdev -type d \(-perm -0002 -a! -perm -1000 \) -print

    Teraz musisz sprawdzić, czy prawa dla grupy i właściciela tego każdego pliku są ustawione poprawnie i czy stwarza to zagrożenie bezpieczeństwa.

    Pożądane jest również znalezienie wszystkich plików, które nie należą do nikogo:

    znajdź /dir -xdev \(-nouser -o -nogroup \) -print

    21. Korzystaj ze scentralizowanego systemu uwierzytelniania

    Bez scentralizowanego systemu uwierzytelniania dane użytkowników stają się niespójne, co może prowadzić do nieaktualnych poświadczeń i zapomnianych kont, które powinny zostać usunięte dawno temu. Scentralizowana usługa pozwoli zachować kontrolę nad kontami użytkowników i danymi uwierzytelniającymi na różnych systemy linuksowe i Uniksa. Możesz synchronizować dane uwierzytelniające między serwerami. Ale nie używaj usługi NIS, lepiej spójrz w stronę Open DAP.

    Jedną z ciekawych implementacji takiego systemu jest Kerberos. Umożliwia uwierzytelnianie użytkowników za pomocą tajnego klucza w sieciach, w których pakiety mogą być przechwytywane i modyfikowane. Kerberos używa klucza symetrycznego do szyfrowania danych i wymaga do działania Centrum zarządzania kluczami. Możesz skonfigurować zdalne logowanie, zdalną kopię, bezpieczną kopię plików między systemami i inne zadania o wysokim poziomie bezpieczeństwa.

    22. Logowanie i audyt

    Skonfiguruj rejestrowanie i inspekcję, aby zbierać i zapisywać wszystkie nieudane próby logowania i próby włamań. Domyślnie wszystkie dzienniki, a przynajmniej większość z nich, znajdują się w folderze /var/log/. Bardziej szczegółowo rozmawialiśmy o tym, za co niektórzy są odpowiedzialni w osobnym artykule.

    Dzienniki można przeglądać za pomocą narzędzi, takich jak logwatch lub logcheck. Znacznie upraszczają odczytywanie logów. Możesz zobaczyć nie cały plik, a tylko interesujące Cię wydarzenia, a także wysłać sobie powiadomienie na swój adres e-mail.

    Monitoruj system za pomocą usługi auditd. Program zapisuje na dysku wszystkie interesujące Cię zdarzenia audytu. Wszystkie ustawienia audytu są przechowywane w pliku /etc/audit.rules Podczas uruchamiania systemu usługa odczytuje wszystkie reguły z tego pliku. Możesz go otworzyć i skonfigurować wszystko zgodnie z potrzebami lub użyć osobnego narzędzia - auditctl. Możesz ustawić następujące punkty:

    • Zdarzenia uruchamiania i zamykania systemu
    • Data i godzina wydarzenia
    • Zdarzenia użytkownika (na przykład dostęp do określonego pliku)
    • Typ zdarzenia (edycja, dostęp, usuwanie, zapis, aktualizacja itp.)
    • Sukces lub niepowodzenie podczas wykonywania zdarzenia
    • Nagrywanie ustawień sieciowych Zmień zdarzenia
    • Rejestrowanie zmian użytkowników i grup
    • Monitoruj zmiany plików

    23. Chroń swój serwer OpenSSH

    Zezwalaj tylko na użycie protokołu 2:

    Wyłącz logowanie jako superużytkownik:

    24. Zainstaluj IDS

    IDS lub Intrusion Detection System próbuje wykryć podejrzane, złośliwe działania, takie jak Atak DOS, skanowanie portów, a nawet próby włamania się do komputera poprzez monitorowanie ruchu sieciowego.

    Dobrą praktyką jest wdrożenie takiego oprogramowania przed udostępnieniem systemu z Internetu. Możesz zainstalować AIDE, to HIDS (IDS oparty na hoście), który może kontrolować wszystkie aspekty urządzenie wewnętrzne Twój system.

    Snort to oprogramowanie do wykrywania włamań do sieci. Jest w stanie analizować i rejestrować pakiety oraz analizować ruch sieciowy w czasie rzeczywistym.

    25. Chroń swoje pliki i katalogi

    Linux ma doskonałe zabezpieczenia przed nieautoryzowanym dostępem do plików. Jednak uprawnienia ustawione przez Linux i system plików nic nie znaczą, gdy atakujący ma fizyczny dostęp do komputera i może się po prostu połączyć Dysk twardy komputera do innego systemu w celu skopiowania danych. Ale możesz łatwo chronić swoje pliki za pomocą szyfrowania:

    • Aby zaszyfrować i odszyfrować plik za pomocą hasła, użyj GPG
    • Możesz także chronić pliki za pomocą OpenSSL
    • Szyfrowanie katalogów odbywa się za pomocą ecryptfs
    • TrueCrypt to darmowe narzędzie do szyfrowania dysku dla systemów Windows i Linux

    wnioski

    Teraz bezpieczeństwo systemu operacyjnego Linux na twoim komputerze zostanie znacznie zwiększone. Nie zapomnij od czasu do czasu ustawić skomplikowanych haseł. Wpisz swoje ulubione narzędzie bezpieczeństwa systemu w komentarzach.

    W tym artykule zapoznamy się z głównymi narzędziami do hartowania Linuksa. Po rosyjsku nazywa się to czymś w rodzaju „sprawdzania poziomu bezpieczeństwa systemów Linux i oceny poprawności konfiguracji pod kątem bezpieczeństwa informacji”. Oczywiście nie tylko przejrzymy programy, ale także podamy przykłady ich użycia.

    Własny audytor lub ochrona we własnym zakresie

    Administratorzy, a tym bardziej audytorzy SI często stają przed zadaniem sprawdzenia bezpieczeństwa duża liczba gospodarzy w bardzo krótkim czasie. I oczywiście istnieją wyspecjalizowane narzędzia w segmencie Enterprise, które rozwiązują te problemy, na przykład skanery bezpieczeństwa sieci. Jestem pewien, że wszystkie z nich – od otwartych źródeł silnika OpenVAS po komercyjne produkty jak Nessus czy Nexpose – są naszym czytelnikom znane. Jednak to oprogramowanie jest zwykle używane do wyszukiwania przestarzałego, a zatem podatnego na ataki oprogramowania, a następnie do uruchamiania zarządzania poprawkami. Ponadto nie wszystkie skanery uwzględniają niektóre specyficzne cechy wbudowanych mechanizmów bezpieczeństwa Linuksa i innych produktów open source. No i wreszcie cena emisji ma znaczenie, bo tylko firmy, które przeznaczają budżety na ten biznes, mogą sobie pozwolić na komercyjne produkty.

    Dlatego dzisiaj porozmawiamy o wyspecjalizowanym zestawie swobodnie dystrybuowanych narzędzi, które potrafią zdiagnozować aktualny poziom bezpieczeństwa systemu, ocenić potencjalne zagrożenia, na przykład wystające w Internecie „dodatkowe usługi” czy niebezpieczną domyślną konfigurację, a nawet zaproponować opcje naprawy stwierdzonych niedociągnięć. Kolejną zaletą korzystania z tych narzędzi jest możliwość replikacji typowych skryptów testów farmy z dowolnej liczby systemów Linux i tworzenia udokumentowanej bazy testów w postaci logów i oddzielnych raportów.

    Praktyczne aspekty audytu bezpieczeństwa

    Jeśli spojrzeć oczami audytora, to podejście do testowania można podzielić na dwa rodzaje.

    Pierwszy- jest to zgodność z tak zwanymi wymogami zgodności, tutaj sprawdzana jest obecność obowiązkowych elementów bezpieczeństwa określonych w dowolnej międzynarodowej normie lub „najlepszej praktyce”. Klasycznym przykładem są wymagania PCI DSS dla płatniczych systemów informatycznych, seria SOX404, NIST-800, .

    Drugi- jest to czysto racjonalne podejście oparte na pytaniu „Co jeszcze można zrobić, aby zwiększyć bezpieczeństwo?”. Nie ma obowiązkowych wymagań - tylko twoja wiedza, bystra głowa i zręczne ręce. Na przykład jest to aktualizacja wersji jądra i/lub pakietów aplikacji, włączanie, wymuszanie, ustawianie zapory.

    Wszystko, co dotyczy drugiego podejścia, nazywa się zwykle terminem specjalnym. utwardzanie, które można również określić jako „działania mające na celu wzmocnienie poziomu początkowego bezpieczeństwa systemu operacyjnego (lub programu) głównie zwykłymi środkami”.

    Zgodność z wymaganiami zgodności jest zwykle sprawdzana w ramach przygotowań do przejścia obowiązkowego audytu, takiego jak PCI DSS lub inny audyt certyfikujący. Zwrócimy większą uwagę na komponent Utwardzanie. Wszyscy główni programiści oferują swoje produkty Wytyczne dotyczące utwardzania- poradniki zawierające wskazówki i rekomendacje, jak zwiększyć bezpieczeństwo z uwzględnieniem zwykłych mechanizmów bezpieczeństwa oraz specyfiki oprogramowania. Tak więc Red Hat, Debian, Oracle, Cisco mają podobne instrukcje.

    INFORMACJE

    Hardening to termin ze świata bezpieczeństwa informacji, który odnosi się do procesu zapewniania bezpieczeństwa systemu (programu) poprzez zmniejszanie jego podatności i z reguły przy użyciu tylko standardowych narzędzi lub mechanizmów ochronnych.

    sudo apt-get update sudo apt-get install lynis

    A dla dystrybucji zorientowanych na RPM (po dodaniu odpowiednich repozytoriów):

    Mniam zainstaluj linus -y

    Instalacja na macOS:

    $ napar szukaj lynis $ napar zainstaluj lynis

    Aby uruchomić Lynis, wystarczy określić co najmniej jeden klucz. Na przykład, aby uruchomić wszystkie dostępne testy, należy podać przełącznik -c (zaznacz wszystko, zaznacz wszystko):

    # Typowy zestaw testów systemu audytu sudo lynis # Kompletny system audytu sudo lynis -c zestaw testów # Zeskanuj zdalny system audytu hosta zdalny







    Przed audytem zawsze dobrze jest sprawdzić, czy nowa wersja Lynis:

    Informacje o aktualizacji Lynis i sprawdzanie aktualizacji Lynis

    Narzędzie Lynis, oprócz standardowego, ma jeszcze jeden tryb - nieuprzywilejowany bieg:

    Audyt Lynisa — ostatni test

    Jeśli chcesz umieścić nazwisko audytora, który rozpoczął test, po prostu dodaj parametr -auditor :

    Sudo lynis system audytu -c -auditor Tato

    Na każdym etapie audytu proces weryfikacji można kontynuować (Enter) lub wymusić zakończenie (Ctrl+C). Wyniki przeprowadzonych testów zostaną zapisane w dzienniku Lynis w /var/log/lynis.log . Należy pamiętać, że dziennik zostanie nadpisany przy każdym uruchomieniu narzędzia.

    Aby systematycznie testować w trybie automatycznym, możesz przypisać odpowiednie zadanie do harmonogramu Cron za pomocą przełącznika -cronjob. W takim przypadku narzędzie będzie działać zgodnie z określonym szablonem (config) i nie będzie wyświetlać żadnych interaktywnych komunikatów, pytań ani ostrzeżeń. Wszystkie wyniki zostaną zapisane w dzienniku. Oto na przykład skrypt uruchamiania narzędzia z domyślną konfiguracją raz w miesiącu:

    #!/bin/sh AUDITOR="automatyczne" DATE=$(data +%Y%m%d) HOST=$(nazwa hosta) LOG_DIR="/var/log/lynis" REPORT="$KATALOG_LOGU/raport-$( HOST).$(DATA)" DATA="$KATALOG_LOGU/dane-raportu-$(HOST).$(DATA).txt" cd /usr/local/lynis ./lynis -c –auditor "$(AUDYTOR)" --cronjob > $(RAPORT) mv /var/log/lynis-report.dat $(DANE) # Koniec

    Zapisz ten skrypt w katalogu /etc/cron.monthly/lynis. I nie zapomnij dodać ścieżek do zapisywania logów (/usr/local/lynis i /var/log/lynis), w przeciwnym razie może nie działać poprawnie.

    Możesz zobaczyć listę wszystkich poleceń dostępnych do wywołania:

    Polecenia programu Lynis

    Szczególnie ciekawi mogą zajrzeć ustawienia z domyślnej konfiguracji:

    Ustawienia programu Lynis

    Krótka instrukcja pracy z narzędziem:

    człowiek lynis

    Opcje możliwych statusów na podstawie wyników kontroli są ograniczone do następującej listy: BRAK, SŁABY, GOTOWE, ZNALEZIONO, NIE_ZNALEZIONO, OK, OSTRZEŻENIE.


    Uruchamianie testów indywidualnych w Lynis

    W praktyce może być konieczne wykonanie tylko kilku testów. Na przykład, jeśli Twój serwer pełni tylko funkcje Mail Server lub Apache. Możemy do tego użyć opcji -tests. Składnia polecenia jest następująca:

    Lynis -testuje „Test-ID”

    Jeśli masz trudności ze zrozumieniem ze względu na dużą liczbę identyfikatorów testów, możesz użyć parametru grupy -test-category . Dzięki tej opcji Lynis uruchamia tylko te identyfikatory, które należą do określonej kategorii. Na przykład planujemy przeprowadzić testy zapory i jądra:

    ./lynis -tests-category "jądro zapory ogniowej"

    Ponadto funkcjonalność Lynis jest rozszerzona o różne wtyczki, które możesz dodać samodzielnie lub możesz umieścić nowe w istniejącym katalogu.

    Sugestie dotyczące korekty

    Wszystkie ostrzeżenia zostaną wyświetlone po wynikach. Każdy zaczyna się od tekstu ostrzeżenia, następnie test, który go wygenerował, jest wskazany w nawiasach obok niego. Następny wiersz sugeruje rozwiązanie problemu, jeśli taki istnieje. W rzeczywistości ostatni wiersz to adres URL, pod którym można zobaczyć szczegóły i znaleźć dodatkowe zalecenia dotyczące rozwiązania problemu.

    Profile

    Profile zarządzające audytem są zdefiniowane w plikach z rozszerzeniem .prf znajduje się w katalogu /etc/lynis. Domyślny profil nosi przewidywalną nazwę: default.prf . Twórcy nie zalecają edytowania go bezpośrednio: wszelkie zmiany, które chcesz wprowadzić w audycie, najlepiej dodawać do pliku custom.prf znajdującego się w tym samym katalogu.

    Ciąg dalszy dostępny tylko dla członków

    Opcja 1. Dołącz do społeczności „witryny”, aby przeczytać wszystkie materiały na stronie

    Członkostwo w społeczności w określonym czasie da ci dostęp do WSZYSTKICH materiałów hakerskich, zwiększy twoją osobistą kumulatywną zniżkę i pozwoli ci zgromadzić profesjonalną ocenę Xakep Score!