Wyszukiwanie w witrynie

23 Wskazówki dotyczące bezpieczeństwa wzmacniania serwerów CentOS — część 2


Kontynuując poprzedni samouczek na temat zabezpieczania i wzmacniania serwera CentOS, w tym artykule omówimy inne wskazówki dotyczące bezpieczeństwa, które zostaną przedstawione na poniższej liście kontrolnej.

Wymagania

  1. 20 wskazówek dotyczących bezpieczeństwa wzmacniania serwerów CentOS – część 1

21. Wyłącz niepotrzebne polecenia SUID i SGID

Jeśli bity setuid i setgid są ustawione w programach binarnych, polecenia te mogą uruchamiać zadania z innymi uprawnieniami użytkownika lub grupy, takimi jak uprawnienia root, które może ujawnić poważne problemy związane z bezpieczeństwem.

Często ataki polegające na przepełnieniu bufora mogą wykorzystywać takie pliki wykonywalne do uruchamiania nieautoryzowanego kodu z uprawnieniami roota.

find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Aby wyłączyć bit setuid, wykonaj poniższe polecenie:

chmod u-s /path/to/binary_file

Aby rozbroić bit setgid, uruchom poniższe polecenie:

chmod g-s /path/to/binary_file

22. Sprawdź, czy nie ma nieposiadanych plików i katalogów

Pliki lub katalogi, które nie są własnością ważnego konta, muszą zostać usunięte lub przypisane im uprawnienia użytkownika i grupy.

Wydaj poniższe polecenie find, aby wyświetlić listę plików lub katalogów bez użytkownika i grupy.

find / -nouser -o -nogroup -exec ls -l {} \;

23. Lista plików możliwych do zapisu na całym świecie

Trzymanie w systemie pliku, który można zapisywać na całym świecie, może być niebezpieczne, ponieważ każdy może je modyfikować. Wykonaj poniższe polecenie, aby wyświetlić pliki możliwe do zapisu w formacie Word, z wyjątkiem dowiązań symbolicznych, które zawsze można zapisywać na całym świecie.

find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Twórz silne hasła

Utwórz hasło składające się z co najmniej ośmiu znaków. Hasło musi zawierać cyfry, znaki specjalne i wielkie litery. Użyj pwmake, aby wygenerować 128-bitowe hasło z pliku /dev/urandom.

pwmake 128

25. Zastosuj politykę silnych haseł

Zmuś system do używania silnych haseł, dodając poniższą linię w pliku /etc/pam.d/passwd.

password required pam_pwquality.so retry=3

Dodając powyższą linię, wprowadzone hasło nie może zawierać więcej niż 3 znaków w monotonicznej sekwencji, np. abcd i więcej niż 3 jednakowych kolejnych znaków, np. 1111.

Aby zmusić użytkowników do używania hasła o minimalnej długości 8 znaków, obejmującego wszystkie klasy znaków, sprawdzania siły sekwencji znaków i kolejnych znaków, dodaj następujące wiersze do pliku /etc/security /pwquality.conf plik.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Użyj starzenia hasła

Komendy chage można używać do starzenia się hasła użytkownika. Aby ustawić, aby hasło użytkownika wygasało za 45 dni, użyj następującego polecenia:

chage -M 45 username

Aby wyłączyć czas ważności hasła użyj polecenia:

chage -M -1 username

Wymuś natychmiastowe wygaśnięcie hasła (użytkownik musi zmienić hasło przy następnym logowaniu), uruchamiając następującą komendę:

chage -d 0 username

27. Blokuj konta

Konta użytkowników można zablokować, wykonując polecenie passwd lub usermod:

passwd -l username
usermod -L username

Aby odblokować konta użyj opcji -u dla polecenia passwd i opcji -U dla usermod.

28. Zapobiegaj dostępowi do powłoki kont

Aby uniemożliwić kontu systemowemu (zwykłemu kontu lub kontu usługi) uzyskanie dostępu do powłoki bash, zmień powłokę root na /usr/sbin/nologin lub /bin/false w plik /etc/passwd, wydając poniższe polecenie:

usermod -s /bin/false username

Aby zmienić powłokę podczas tworzenia nowego użytkownika, wydaj następującą komendę:

useradd -s /usr/sbin/nologin username

29. Zablokuj wirtualną konsolę użytkownika za pomocą vlocka

vlock to program służący do blokowania jednej wielokrotnej sesji na konsoli Linux. Zainstaluj program i rozpocznij blokowanie sesji terminala, uruchamiając poniższe polecenia:

yum install vlock
vlock

30. Użyj scentralizowanego systemu do zarządzania kontami i uwierzytelnianiem

Korzystanie ze scentralizowanego systemu uwierzytelniania może znacznie uprościć zarządzanie kontem i kontrolę. Usługi oferujące tego typu zarządzanie kontami to IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS lub Winbind.

Niektóre z tych usług są domyślnie wysoce zabezpieczone protokołami kryptograficznymi i kryptografią z kluczem symetrycznym, np. Kerberos.

31. Wymuś podłączenie nośnika USB w trybie tylko do odczytu

Za pomocą narzędzia blockdev możesz wymusić zamontowanie wszystkich nośników wymiennych w trybie tylko do odczytu. Na przykład utwórz nowy plik konfiguracyjny udev o nazwie 80-readonly-usb.rules w katalogu /etc/udev/rules.d/ o następującej treści:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Następnie zastosuj regułę za pomocą poniższego polecenia:

udevadm control -reload

32. Wyłączanie dostępu roota przez TTY

Aby uniemożliwić kontu root logowanie się do systemu za pośrednictwem wszystkich urządzeń konsolowych (TTY), usuń zawartość pliku zabezpieczeń, wpisując jako root następujący wiersz poleceń terminala.

cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty

Pamiętaj, że ta zasada nie dotyczy sesji logowania SSH
Aby uniemożliwić logowanie roota przez SSH, edytuj plik /etc/ssh/sshd_config i dodaj poniższą linię:

PermitRootLogin no

33. Użyj list ACL POSIX, aby rozszerzyć uprawnienia systemowe

Listy kontroli dostępu mogą definiować prawa dostępu dla więcej niż jednego użytkownika lub grupy i mogą określać uprawnienia do programów, procesów, plików i katalogów. Jeśli ustawisz listę ACL dla katalogu, jego potomkowie automatycznie odziedziczą te same prawa.

Na przykład,

setfacl -m u:user:rw file
getfacl file

34. Skonfiguruj SELinux w trybie wymuszania

Udoskonalenie SELinux w jądrze Linuksa implementuje politykę obowiązkowej kontroli dostępu (MAC), umożliwiając użytkownikom zdefiniowanie polityki bezpieczeństwa zapewniającej szczegółowe uprawnienia wszystkim użytkownikom, programom, procesom, plikom i urządzeniom.

Decyzje jądra dotyczące kontroli dostępu opierają się na całym kontekście istotnym dla bezpieczeństwa, a nie na tożsamości uwierzytelnionego użytkownika.

Aby uzyskać status Selinux i wymusić zasady, uruchom poniższe polecenia:

getenforce
setenforce 1
sestatus

35. Zainstaluj dodatkowe narzędzia SELinux

Zainstaluj pakiet policycoreutils-python, który zapewnia dodatkowe narzędzia Pythona do obsługi SELinux: audit2allow, audit2why, chcat i zarządzanie.

Aby wyświetlić wszystkie wartości logiczne wraz z krótkim opisem należy użyć następującego polecenia:

semanage boolean -l

Na przykład, aby wyświetlić i ustawić wartość httpd_enable_ftp_server, uruchom poniższe polecenie:

getsebool httpd_enable_ftp_server

Aby wartość logiczna pozostała zachowana po ponownym uruchomieniu, określ opcję -P na setsebool, jak pokazano w poniższym przykładzie:

setsebool -P httpd_enable_ftp_server on

36. Użyj scentralizowanego serwera dzienników

Skonfiguruj demona rsyslog, aby wysyłał komunikaty dziennika poufnych narzędzi do scentralizowanego serwera dzienników. Monitoruj także pliki dziennika za pomocą narzędzia logwatch.

Wysyłanie komunikatów dziennika na zdalny serwer gwarantuje, że po włamaniu do systemu szkodliwi użytkownicy nie będą mogli całkowicie ukryć swojej aktywności, zawsze pozostawiając ślady w zdalnych plikach dziennika.

37. Włącz rozliczanie procesów

Włącz rozliczanie procesów, instalując narzędzie psacct i użyj polecenia lastcomm, aby wyświetlić informacje o wcześniej wykonanych poleceniach zapisane w systemowym pliku rozliczeniowym, oraz polecenia sa, aby podsumować zapisane informacje o wcześniej wykonanych poleceniach w pliku księgowym systemu.

38. Hartowanie /etc/sysctl.conf

Aby chronić system, użyj następujących reguł parametrów jądra:

Wyłączanie routingu źródłowego

net.ipv4.conf.all.accept_source_route=0

Wyłącz przekazywanie IPv4

ipv4.conf.all.forwarding=0

Wyłącz IPv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Wyłącz akceptację i wysyłanie przekierowanych pakietów ICMP, chyba że jest to wyraźnie wymagane.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0

Wyłącz przekazywanie ścieżki zwrotnej

net.ipv4.conf.all.rp_filter=2

Ignoruj wszystkie żądania echa ICMP (ustaw na 1, aby włączyć)

net.ipv4.icmp_echo_ignore_all = 0

39. Korzystaj z usług VPN, aby uzyskać dostęp do swojej lokalizacji za pośrednictwem niechronionych sieci publicznych

Zawsze korzystaj z usług VPN oferowanych przez operatorów, aby uzyskać zdalny dostęp do sieci LAN przez Internet. Tego typu usługi można skonfigurować za pomocą bezpłatnego rozwiązania open source, takiego jak OpenVPN, lub korzystając z autorskiego rozwiązania, takiego jak Cisco VPN (zainstaluj narzędzie wiersza poleceń vpnc dostarczane przez Epel Repositories).

40. Wykonaj skanowanie systemu zewnętrznego

Oceń bezpieczeństwo swojego systemu pod kątem luk, skanując system ze zdalnych punktów za pośrednictwem sieci LAN przy użyciu określonych narzędzi, takich jak:

  1. Nmap – skaner sieciowy 29 Przykłady poleceń Nmap
  2. Nessus – skaner bezpieczeństwa
  3. OpenVAS – używany do skanowania w poszukiwaniu luk i kompleksowego zarządzania lukami w zabezpieczeniach.
  4. Nikto – doskonały skaner skryptów Common Gateway Interface (CGI) Skanuj luki w zabezpieczeniach sieci Web w systemie Linux

41. Chroń system wewnętrznie

Stosuj wewnętrzną ochronę systemu przed wirusami, rootkitami, złośliwym oprogramowaniem i jako dobrą praktykę instaluj systemy wykrywania włamań, które potrafią wykryć nieautoryzowaną aktywność (ataki DDOS, skanowanie portów), takie jak:

  1. AIDE – zaawansowane środowisko wykrywania włamań – http://aide.sourceforge.net/
  2. ClamAV – skaner antywirusowy https://www.clamav.net
  3. Rkhunter – skaner rootkitów
  4. Lynis – narzędzie do audytu i skanowania bezpieczeństwa dla systemu Linux
  5. Tripwire – bezpieczeństwo i integralność danych http://www.tripwire.com/
  6. Fail2Ban – zapobieganie włamaniom do sieci
  7. OSSEC – (HIDS) oparty na hoście system wykrywania włamań http://ossec.github.io/
  8. Mod_Security – Chroń ataki Brute Force lub DDoS

42. Zmodyfikuj zmienne środowiskowe użytkownika

Dołącz format data i godzina do przechowywania wykonania poleceń, wydając poniższe polecenie:

echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Wymuś natychmiastowe nagrywanie HISTFILE za każdym razem, gdy zostanie wpisane polecenie (zamiast wylogowania):

echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Ogranicz limit czasu sesji logowania. Automatycznie niszcz powłokę, gdy w okresie bezczynności nie jest wykonywana żadna czynność. Bardzo przydatne do automatycznego rozłączania sesji SSH.

echo ‘TMOUT=120’ >> .bashrc

Zastosuj wszystkie reguły, wykonując:

source .bashrc

43. Dane kopii zapasowej

Użyj narzędzi do tworzenia kopii zapasowych, takich jak tar, cat, rsync, scp, migawki LVM itp., aby przechowywać kopię systemu, najlepiej poza siedzibą, na wypadek awarii systemu.

Jeśli system zostanie naruszony, możesz przywrócić dane z poprzednich kopii zapasowych.

Na koniec, nie zapominaj, że niezależnie od tego, ile środków bezpieczeństwa i przeciwdziałań podejmiesz, aby zapewnić bezpieczeństwo swojego systemu, nigdy nie będziesz w 100% całkowicie bezpieczny, dopóki Twoja maszyna będzie podłączona do prądu i włączona.