23 Sfaturi de securitate pentru consolidarea serverului CentOS - Partea 2


Continuând tutorialul anterior despre Cum să securizați și să întăriți serverul CentOS, în acest articol, vom discuta alte sfaturi de securitate care vor fi prezentate în lista de verificare de mai jos.

Cerințe

  1. 20 de sfaturi de securitate pentru consolidarea serverului CentOS - Partea 1

21. Dezactivați comenzile SUID și SGID inutile

Dacă biții setuid și setgid sunt setați pe programe binare, aceste comenzi pot rula sarcini cu alte drepturi de utilizator sau de grup, cum ar fi privilegiile de rădăcină care poate expune probleme serioase de securitate.

Adesea, atacurile de depășire a memoriei tampon pot exploata astfel de fișiere binare executabile pentru a rula cod neautorizat cu drepturile unui utilizator root.

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

Pentru a dezactiva bitul setuid, executați comanda de mai jos:

chmod u-s /path/to/binary_file

Pentru a dezactiva bitul setgid, rulați comanda de mai jos:

chmod g-s /path/to/binary_file

22. Verificați dacă există fișiere și directoare neproprietate

Fișierele sau directoarele care nu sunt deținute de un cont valid trebuie să fie șterse sau atribuite cu permisiuni de la un utilizator și un grup.

Lansați comanda find de mai jos pentru a lista fișiere sau directoare fără utilizator și grup.

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

23. Listați fișierele care pot fi scrise în lume

Păstrarea în sistem a unui fișier care poate fi scris în întreaga lume poate fi periculoasă din cauza faptului că oricine le poate modifica. Executați comanda de mai jos pentru a afișa fișiere care pot fi scrise prin cuvinte, cu excepția legăturilor simbolice, care pot fi întotdeauna scrise în întreaga lume.

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

24. Creați parole puternice

Creați o parolă de minim opt caractere. Parola trebuie să conțină cifre, caractere speciale și litere mari. Utilizați pwmake pentru a genera o parolă de 128 de biți din fișierul /dev/urandom.

pwmake 128

25. Aplicați o politică de parole puternice

Forțați sistemul să utilizeze parole puternice adăugând rândul de mai jos în fișierul /etc/pam.d/passwd.

password required pam_pwquality.so retry=3

Adăugând rândul de mai sus, parola introdusă nu poate conține mai mult de 3 caractere într-o secvență monotonă, cum ar fi abcd, și mai mult de 3 caractere consecutive identice, cum ar fi 1111.

Pentru a forța utilizatorii să folosească o parolă cu o lungime minimă de 8 caractere, inclusiv toate clasele de caractere, verificați puterea secvențelor de caractere și a caracterelor consecutive adăugați următoarele rânduri la /etc/security /pwquality.conf fișier.

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

26. Utilizați Password Aging

Comanda chage poate fi utilizată pentru îmbătrânirea parolei utilizatorului. Pentru a seta parola unui utilizator să expire în 45 zile, utilizați următoarea comandă:

chage -M 45 username

Pentru a dezactiva timpul de expirare a parolei, utilizați comanda:

chage -M -1 username

Forțați expirarea imediată a parolei (utilizatorul trebuie să schimbe parola la următoarea autentificare) executând următoarea comandă:

chage -d 0 username

27. Blocarea conturilor

Conturile de utilizator pot fi blocate prin executarea comenzii passwd sau usermod:

passwd -l username
usermod -L username

Pentru a debloca conturile, utilizați opțiunea -u pentru comanda passwd și opțiunea -U pentru usermod.

28. Preveniți accesul Shell la conturi

Pentru a împiedica accesul unui cont de sistem (cont obișnuit sau cont de serviciu) la un shell bash, schimbați shell-ul rădăcină în /usr/sbin/nologin sau /bin/false în fișierul /etc/passwd lansând comanda de mai jos:

usermod -s /bin/false username

Pentru a schimba shell-ul la crearea unui nou utilizator, lansați următoarea comandă:

useradd -s /usr/sbin/nologin username

29. Blocați Consola de utilizator virtuală cu vlock

vlock este un program folosit pentru blocarea unei sesiuni multiple pe consola Linux. Instalați programul și începeți să vă blocați sesiunea terminalului rulând comenzile de mai jos:

yum install vlock
vlock

30. Utilizați un sistem centralizat pentru a gestiona conturile și autentificarea

Utilizarea unui sistem de autentificare centralizat poate simplifica foarte mult gestionarea și controlul contului. Serviciile care pot oferi acest tip de gestionare a conturilor sunt IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS sau Winbind.

Unele dintre aceste servicii sunt în mod implicit foarte securizate cu protocoale criptografice și criptografie cu cheie simetrică, cum ar fi Kerberos.

31. Forțați montarea doar pentru citire a suportului USB

Folosind utilitarul blockdev, puteți forța ca toate mediile amovibile să fie montate ca doar pentru citire. De exemplu, creați un nou fișier de configurare udev numit 80-readonly-usb.rules în directorul /etc/udev/rules.d/ cu urmatorul continut:

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

Apoi, aplicați regula cu comanda de mai jos:

udevadm control -reload

32. Dezactivarea accesului rădăcină prin TTY

Pentru a împiedica contul rădăcină să efectueze autentificarea la sistem prin toate dispozitivele de consolă (TTY), ștergeți conținutul fișierului de securitate tastând următorul prompt de terminal de comandă ca root.

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

Rețineți că această regulă nu se aplică sesiunilor de conectare SSH
Pentru a preveni conectarea la root prin SSH, editați fișierul /etc/ssh/sshd_config și adăugați linia de mai jos:

PermitRootLogin no

33. Utilizați ACL-uri POSIX pentru a extinde permisiunile de sistem

Listele de control al accesului pot defini drepturi de acces pentru mai mult decât un singur utilizator sau grup și pot specifica drepturi pentru programe, procese, fișiere și directoare. Dacă setați ACL într-un director, descendenții acestuia vor moșteni automat aceleași drepturi.

De exemplu,

setfacl -m u:user:rw file
getfacl file

34. Configurați SELinux în modul Enforce

Îmbunătățirea SELinux a nucleului Linux implementează politica de control al accesului obligatoriu (MAC), permițând utilizatorilor să definească o politică de securitate care oferă permisiuni granulare pentru toți utilizatorii, programele, procesele, fișierele și dispozitivele.

Deciziile de control al accesului ale nucleului se bazează pe tot contextul relevant pentru securitate și nu pe identitatea utilizatorului autentificat.

Pentru a obține starea Selinux și pentru a aplica politica, rulați comenzile de mai jos:

getenforce
setenforce 1
sestatus

35. Instalați utilitare suplimentare SELinux

Instalați pachetul policycoreutils-python care oferă utilitare Python suplimentare pentru operarea SELinux: audit2allow, audit2why, chcat și semanage.

Pentru a afișa toate valorile booleene împreună cu o scurtă descriere, utilizați următoarea comandă:

semanage boolean -l

De exemplu, pentru a afișa și a seta valoarea httpd_enable_ftp_server, executați comanda de mai jos:

getsebool httpd_enable_ftp_server

Pentru ca valoarea unui boolean să persistă în timpul repornirilor, specificați opțiunea -P la setsebool, așa cum este ilustrat în exemplul următor:

setsebool -P httpd_enable_ftp_server on

36. Utilizați serverul de jurnal centralizat

Configurați demonul rsyslog pentru a trimite mesaje de jurnal de utilitare sensibile către un server de jurnal centralizat. De asemenea, monitorizați fișierele jurnal cu ajutorul utilitarului logwatch.

Trimiterea mesajelor de jurnal către un server la distanță asigură că, odată ce sistemul a fost compromis, utilizatorii rău intenționați nu își pot ascunde complet activitatea, lăsând întotdeauna urme pe fișierele jurnal de la distanță.

37. Activați Contabilitatea proceselor

Activați contabilizarea proceselor instalând utilitarul psacct și utilizați comanda lastcomm pentru a afișa informații despre comenzile executate anterior, așa cum sunt înregistrate în fișierul de contabilitate de sistem și sa pentru a rezuma informații despre comenzile executate anterior așa cum sunt înregistrate în dosarul contabil de sistem.

38. Întărirea /etc/sysctl.conf

Utilizați următoarele reguli privind parametrii nucleului pentru a proteja sistemul:

Dezactivează rutarea sursei

net.ipv4.conf.all.accept_source_route=0

Dezactivați redirecționarea IPv4

ipv4.conf.all.forwarding=0

Dezactivați IPv6

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

Dezactivați acceptarea și trimiterea pachetelor redirecționate ICMP, cu excepția cazului în care este necesar în mod specific.

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

Dezactivați redirecționarea inversă a căii

net.ipv4.conf.all.rp_filter=2

Ignorați toate solicitările de eco ICMP (setate la 1 pentru a activa)

net.ipv4.icmp_echo_ignore_all = 0

39. Utilizați serviciile VPN pentru a vă accesa sediul prin rețele publice neprotejate

Utilizați întotdeauna serviciile VPN pentru ca operatorii să acceseze de la distanță sediile LAN prin Internet. Asemenea tipuri de servicii pot fi configurate folosind o soluție open source gratuită, cum ar fi OpenVPN, sau folosind o soluție proprietară, cum ar fi Cisco VPN (instalați utilitarul de linie de comandă vpnc furnizat de Epel Repositories).

40. Efectuați Scanarea sistemului extern

Evaluați securitatea sistemului dumneavoastră pentru vulnerabilități prin scanarea sistemului din puncte la distanță prin LAN folosind instrumente specifice, cum ar fi:

  1. Nmap – scaner de rețea 29 Exemple de comandă Nmap
  2. Nessus – scaner de securitate
  3. OpenVAS – folosit pentru a scana vulnerabilități și pentru gestionarea cuprinzătoare a vulnerabilităților.
  4. Nikto – un excelent scaner de scripturi de interfață comună de gateway (CGI) Scan Web Vulnerability în Linux

41. Protejați sistemul intern

Utilizați protecția internă a sistemului împotriva virușilor, rootkit-urilor, programelor malware și, ca bună practică, instalați sisteme de detectare a intruziunilor care pot detecta activități neautorizate (atacuri DDOS, scanări de porturi), cum ar fi:

  1. AIDE – Mediu avansat de detectare a intruziunilor – http://aide.sourceforge.net/
  2. ClamAV – Scanner antivirus https://www.clamav.net
  3. Rkhunter – Scaner de rootkit
  4. Lynis – Instrument de auditare și scanare a securității pentru Linux
  5. Tripwire – Securitate și integritate a datelor http://www.tripwire.com/
  6. Fail2Ban – Prevenirea intruziunilor în rețea
  7. OSSEC – Sistem de detectare a intruziunilor bazat pe gazdă (HIDS) http://ossec.github.io/
  8. Mod_Security – Protejează forța brută sau atacurile DDoS

42. Modificați variabilele de mediu utilizator

Adăugați formatul de dată și ora pentru a stoca executarea comenzilor lansând comanda de mai jos:

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

Forțați înregistrarea instantanee a HISTFILE de fiecare dată când se introduce o comandă (în loc de deconectare):

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

Limitați sesiunea de conectare timeout. Demontați automat carcasa atunci când nu este efectuată nicio activitate într-o perioadă de timp inactiv. Foarte util pentru a deconecta automat sesiunile SSH.

echo ‘TMOUT=120’ >> .bashrc

Aplicați toate regulile executând:

source .bashrc

43. Date de rezervă

Utilizați utilități de rezervă, cum ar fi tar, cat, rsync, scp, instantanee LVM etc. pentru a stoca o copie a sistemului dvs., de preferință offsite, în cazul unei defecțiuni a sistemului.

Dacă sistemul este compromis, puteți efectua restaurarea datelor din backup-urile anterioare.

În cele din urmă, nu uitați că, indiferent câte măsuri de securitate și contramăsuri ați lua pentru a vă menține sistemul în siguranță, nu veți fi niciodată 100% în siguranță atâta timp cât mașina dvs. este conectată și pornită.