Continuarea tutorialului anterior pe Cum să securizați și să întăriți CentOS server, în acest articol, vom discuta despre alte sfaturi de securitate care vor fi prezentate în lista de verificare de mai jos.
Dacă setuid și setgid biții sunt setați pe programe binare, aceste comenzi pot rula sarcini cu alte drepturi de utilizator sau de grup, cum ar fi rădăcină privilegii care pot expune probleme grave de securitate.
Adesea, atacurile de depășire a buffer-ului pot exploata astfel de binare executabile pentru a rula cod neautorizat cu drepturile unui utilizator de root root.
# find / -path / proc -prune -o -type f \ (-perm -4000 -o -perm -2000 \) -exec ls -l {} \;
Pentru a anula setuid bit executați comanda de mai jos:
# chmod u-s / path / to / binary_file.
Pentru a anula bitul setgid, executați comanda de mai jos:
# chmod g-s / path / to / binary_file.
Fișierele sau directoarele care nu sunt deținute de un cont valid trebuie șterse sau atribuite cu permisiunile unui utilizator și grup.
Emiteți cele de mai jos găsi comanda pentru a lista fișiere sau directoare fără utilizator și grup.
# find / -nouser -o -nogroup -exec ls -l {} \;
Păstrarea unui fișier care poate fi scris în întreaga lume pe sistem poate fi periculoasă datorită faptului că oricine le poate modifica. Executați comanda de mai jos pentru a afișa fișiere care pot fi scrise în cuvinte, cu excepția Link-uri simulare, care sunt întotdeauna scrise în lume.
# find / -path / proc -prune -o -perm -2! -tipul l –ls.
Creați o parolă de minimum opt caractere. Parola trebuie să conțină cifre, caractere speciale și litere mari. Utilizare pwmake pentru a genera o parolă de 128 biți din /dev/urandom fişier.
# pwmake 128.
Forțați sistemul să utilizeze parole puternice adăugând linia de mai jos /etc/pam.d/passwd fişier.
parola necesară pam_pwquality.so reîncercați = 3.
Adăugând linia de mai sus, parola introdusă nu poate conține mai mult de 3 personaje dintr-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ă utilizeze o parolă cu o lungime minimă de 8 caractere, inclusiv toate clasele de caractere, verificarea puterii pentru secvențe de caractere și caractere consecutive adaugă următoarele rânduri la /etc/security/pwquality.conf fişier.
minlen = 8. minclass = 4. maxsequence = 3. maxrepeat = 3.
comanda chage poate fi folosit pentru îmbătrânirea parolei utilizatorului. Pentru a seta parola unui utilizator să expire 45 zile, utilizați următoarea comandă:
# chage -M 45 nume de utilizator.
Pentru a dezactiva timpul de expirare a parolei utilizați comanda:
# chage -M -1 nume de utilizator.
Forțați expirarea imediată a parolei (utilizatorul trebuie să schimbe parola la următoarea autentificare) executând următoarea comandă:
# chage -d 0 nume de utilizator.
Conturile de utilizator pot fi blocate executând fișierul passwd sau comanda usermod:
# passwd -l nume de utilizator. # usermod -L nume de utilizator.
Pentru a debloca conturi utilizați -u
opțiune pentru passwd comanda si -U
opțiune pentru usermod.
Pentru a împiedica un cont de sistem (cont obișnuit sau cont de serviciu) să obțină acces la un shell bash, schimbați shell-ul rădăcină în /usr/sbin/nologin sau /bin/false în /etc/passwd fișier prin emiterea comenzii de mai jos:
# usermod -s / bin / nume de utilizator fals.
Pentru a schimba shell-ul la crearea unui nou utilizator, lansați următoarea comandă:
# useradd -s / usr / sbin / nume de utilizator nologin.
vlock este un program folosit pentru blocarea unei sesiuni multiple pe consola Linux. Instalați programul și începeți să blocați sesiunea terminalului executând comenzile de mai jos:
# yum instalați vlock. # vlock.
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.
Folosind blockdev utilitar puteți forța ca toate suporturile amovibile să fie montate ca numai în citire. De exemplu, creați un nou udev fișier de configurare numit 80-readonly-usb.rules în /etc/udev/rules.d/ director cu următorul conținut:
SUBSYSTEM == "block", ATTRS {removable} == "1", RUN {program} = "/ sbin / blockdev --setro% N"
Apoi, aplicați regula cu comanda de mai jos:
# udevadm control -reload.
Pentru a împiedica contul root să efectueze conectarea sistemului prin toate dispozitivele de consolă (TTY), ștergeți conținutul fișierului securetty tastând următoarea linie de comandă a terminalului ca root.
# cp / etc / securetty /etc/securetty.bak. # cat / dev / null> / etc / securetty.
Amintiți-vă că această regulă nu se aplică sesiunilor de conectare SSH
Pentru a preveni autentificarea root prin SSH editați fișierul /etc/ssh/sshd_config și adăugați rândul de mai jos:
PermitRootLogin nr.
Liste de control acces poate defini drepturi de acces pentru mai mult decât un singur utilizator sau grup și poate specifica drepturi pentru programe, procese, fișiere și directoare. Dacă setați ACL pe un director, descendenții acestuia vor moșteni automat aceleași drepturi.
De exemplu,
# setfacl -m u: user: fișier rw. # fișier getfacl.
SELinux îmbunătățirea kernel-ului Linux implementează Politica obligatorie de control al accesului (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 kernelului se bazează pe tot contextul relevant pentru securitate și nu pe identitatea utilizatorului autentificat.
A obține Selinux status și aplică politica execută comenzile de mai jos:
# getenforce. # setenforce 1. # sestatus.
Instalare policycoreutils-python pachet care oferă utilități Python suplimentare pentru operare SELinux: audit2allow, audit2de ce, 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 seta valoarea httpd_enable_ftp_server, executați comanda de mai jos:
# getsebool httpd_enable_ftp_server.
Pentru a face ca valoarea unui boolean să persiste la reporniri, specificați -P
opțiune pentru setsebool, așa cum este ilustrat în următorul exemplu:
# setsebool -P httpd_enable_ftp_server activat.
Configurați rsyslog daemon pentru a trimite mesaje de jurnal utilitare sensibile la un server de jurnal centralizat. De asemenea, monitorizați fișierele jurnal cu ajutorul utilitarului logwatch.
Trimiterea mesajelor 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 în fișierele jurnal la distanță.
Activați contabilitatea proceselor prin instalare utilitate psacct si foloseste lastcomm comanda pentru a afișa informații despre comenzile executate anterior, așa cum sunt înregistrate în fișierul contabil al sistemului și sa pentru a rezuma informații despre comenzile executate anterior așa cum sunt înregistrate în fișierul contabil al sistemului.
Utilizați următoarele reguli ale parametrilor kernelului pentru a proteja sistemul:
net.ipv4.conf.all.accept_source_route = 0.
ipv4.conf.all.forwarding = 0.
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.
net.ipv4.conf.all.rp_filter = 2.
Ignorați toate cererile de ecou ICMP (setați la 1 pentru a activa)
net.ipv4.icmp_echo_ignore_all = 0.
Folosiți întotdeauna VPN servicii pentru transportatori pentru a accesa de la distanță spațiile LAN prin Internet. Astfel de tipuri de servicii pot fi configurate folosind o soluție gratuită open source, cum ar fi OpenVPN, sau folosind o soluție proprietară, cum ar fi VPN Cisco (instalare vpnc utilitar de linie de comandă furnizat de Depozite Epel).
Evaluați securitatea sistemului în ceea ce privește vulnerabilitățile scanând sistemul din puncte la distanță prin LAN folosind instrumente specifice, cum ar fi:
Folosiți protecția internă a sistemului împotriva virușilor, rootkiturilor, programelor malware și, ca o bună practică, instalați sisteme de detectare a intruziunilor care pot detecta activități neautorizate (atacuri DDOS, scanări de port), precum la fel de:
Adăuga Data și timp format pentru a stoca executarea comenzilor prin emiterea comenzii de mai jos:
# echo 'HISTTIMEFORMAT = "% d /% m /% y% T"' >> .bashrc '
Forța de a înregistra instantaneu HISTFILE de fiecare dată când este tastată o comandă (în loc de deconectare):
# echo ‘PROMPT_COMMAND =" history -a "'>> .bashrc.
Limitați sesiunea de conectare la expirare. Dărâmați automat shell-ul atunci când nu se efectuează 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:
# sursă .bashrc.
Utilizare utilitare de rezervă, precum gudron, pisică, rsync, scp, Instantanee LVM, etc pentru a stoca o copie a sistemului dvs., de preferință în afara site-ului, în cazul unei defecțiuni a sistemului.
Dacă sistemul este compromis, puteți efectua restaurarea datelor din copiile de rezervă anterioare.
În cele din urmă, nu uitați că, indiferent de câte măsuri de securitate și contra-măsuri luați pentru a le păstra sistemul dvs. în siguranță, nu veți fi niciodată 100% complet securizat atâta timp cât aparatul este conectat și pornit.