23 Sigurnosna savjeta za jačanje CentOS poslužitelja - 2. dio


Nastavljajući prethodni vodič o tome kako osigurati i očvrsnuti CentOS poslužitelj, u ovom članku ćemo raspravljati o drugim sigurnosnim savjetima koji će biti predstavljeni na donjem popisu za provjeru.

Zahtjevi

  1. 20 sigurnosnih savjeta za jačanje CentOS poslužitelja – 1. dio

21. Onemogućite beskorisne SUID i SGID naredbe

Ako su setuid i setgid bitovi postavljeni na binarne programe, ove naredbe mogu pokretati zadatke s drugim korisničkim ili grupnim pravima, kao što su root povlastice koje može otkriti ozbiljne sigurnosne probleme.

Često napadi prekoračenja međuspremnika mogu iskoristiti takve izvršne binarne datoteke za pokretanje neovlaštenog koda s pravima root naprednog korisnika.

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

Za poništavanje bita setuid izvršite naredbu ispod:

chmod u-s /path/to/binary_file

Da poništite setgid bit, pokrenite naredbu u nastavku:

chmod g-s /path/to/binary_file

22. Provjerite neposjedovane datoteke i direktorije

Datoteke ili direktoriji koji nisu u vlasništvu važećeg računa moraju se izbrisati ili im se moraju dodijeliti dopuštenja korisnika i grupe.

Izdajte donju naredbu za traženje za popis datoteka ili direktorija bez korisnika i grupe.

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

23. Navedite datoteke koje se mogu pisati u svijetu

Držanje datoteke u kojoj je moguće pisati u sustavu može biti opasno zbog činjenice da ih svatko može modificirati. Izvršite donju naredbu kako biste prikazali datoteke u koje se može pisati riječ, osim Simboličnih veza, koje su uvijek upisive u cijelom svijetu.

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

24. Stvorite jake lozinke

Napravite lozinku od najmanje osam znakova. Lozinka mora sadržavati znamenke, posebne znakove i velika slova. Koristite pwmake za generiranje lozinke od 128 bita iz datoteke /dev/urandom.

pwmake 128

25. Primijenite politiku jake lozinke

Prisilite sustav da koristi jake lozinke dodavanjem retka ispod u datoteku /etc/pam.d/passwd.

password required pam_pwquality.so retry=3

Dodavanjem gornjeg retka, unesena lozinka ne može sadržavati više od 3 znaka u monotonom nizu, kao što je abcd, i više od 3 identična uzastopna znaka, kao što je 1111.

Kako biste natjerali korisnike da koriste lozinku s minimalnom duljinom od 8 znakova, uključujući sve klase znakova, provjeru snage za sekvence znakova i uzastopne znakove dodajte sljedeće retke u /etc/security /pwquality.conf datoteku.

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

26. Koristite Password Aging

Naredba chage može se koristiti za starenje korisničke lozinke. Da biste postavili korisničku lozinku da istekne za 45 dana, koristite sljedeću naredbu:

chage -M 45 username

Da biste onemogućili vrijeme isteka lozinke koristite naredbu:

chage -M -1 username

Prisilite trenutni istek lozinke (korisnik mora promijeniti lozinku pri sljedećoj prijavi) pokretanjem sljedeće naredbe:

chage -d 0 username

27. Zaključajte račune

Korisnički računi mogu se zaključati izvršavanjem naredbe passwd ili usermod:

passwd -l username
usermod -L username

Za otključavanje računa koristite opciju -u za naredbu passwd i opciju -U za usermod.

28. Spriječite pristup ljusci računa

Kako biste spriječili sistemski račun (obični račun ili račun usluge) da dobije pristup bash ljusci, promijenite korijensku ljusku u /usr/sbin/nologin ili /bin/false u datoteku /etc/passwd izdavanjem naredbe ispod:

usermod -s /bin/false username

Za promjenu ljuske prilikom kreiranja novog korisnika izdajte sljedeću naredbu:

useradd -s /usr/sbin/nologin username

29. Zaključajte virtualnu korisničku konzolu pomoću vlock-a

vlock je program koji se koristi za zaključavanje jedne višestruke sesije na Linux konzoli. Instalirajte program i počnite zaključavati svoju terminalsku sesiju pokretanjem donjih naredbi:

yum install vlock
vlock

30. Koristite centralizirani sustav za upravljanje računima i autentifikaciju

Korištenje centraliziranog sustava provjere autentičnosti može uvelike pojednostaviti upravljanje računom i kontrolu. Servisi koji mogu ponuditi ovu vrstu upravljanja računima su IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS ili Winbind.

Neke od ovih usluga su prema zadanim postavkama visoko zaštićene kriptografskim protokolima i kriptografijom sa simetričnim ključem, kao što je Kerberos.

31. Prisilno montiranje USB medija samo za čitanje

Pomoću uslužnog programa blockdev možete natjerati sve prijenosne medije da budu montirani kao samo za čitanje. Na primjer, stvorite novu udev konfiguracijsku datoteku pod nazivom 80-readonly-usb.rules u direktoriju /etc/udev/rules.d/ sa sljedećim sadržajem:

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

Zatim primijenite pravilo s donjom naredbom:

udevadm control -reload

32. Onemogućavanje root pristupa putem TTY-ja

Kako biste spriječili root račun da izvrši prijavu u sustav putem svih uređaja konzole (TTY), izbrišite sadržaj sigurnosne datoteke upisivanjem sljedećeg terminalskog retka za naredbe kao root.

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

Upamtite da se ovo pravilo ne odnosi na SSH sesije prijave
Da biste spriječili root prijavu putem SSH uredite datoteku /etc/ssh/sshd_config i dodajte donji redak:

PermitRootLogin no

33. Koristite POSIX ACL-ove za proširenje dopuštenja sustava

Popisi kontrole pristupa mogu definirati prava pristupa za više od jednog korisnika ili grupe i mogu odrediti prava za programe, procese, datoteke i direktorije. Ako postavite ACL na direktorij, njegovi će potomci automatski naslijediti ista prava.

Na primjer,

setfacl -m u:user:rw file
getfacl file

34. Postavite SELinux u Enforce Mode

Poboljšanje SELinuxa za Linux kernel implementira politiku Obavezne kontrole pristupa (MAC), dopuštajući korisnicima da definiraju sigurnosnu politiku koja pruža precizna dopuštenja za sve korisnike, programe, procese, datoteke i uređaje.

Odluke o kontroli pristupa jezgre temelje se na cjelokupnom kontekstu koji je relevantan za sigurnost, a ne na autentificiranom korisničkom identitetu.

Da biste dobili status Selinux i nametnuli politiku, pokrenite donje naredbe:

getenforce
setenforce 1
sestatus

35. Instalirajte SELinux dodatne uslužne programe

Instalirajte paket policycoreutils-python koji pruža dodatne Python uslužne programe za rad sa SELinuxom: audit2allow, audit2why, chcat i upravljanje.

Za prikaz svih Booleovih vrijednosti zajedno s kratkim opisom upotrijebite sljedeću naredbu:

semanage boolean -l

Na primjer, za prikaz i postavljanje vrijednosti httpd_enable_ftp_server, pokrenite naredbu u nastavku:

getsebool httpd_enable_ftp_server

Kako bi vrijednost Booleove vrijednosti ostala prisutna tijekom ponovnih pokretanja, odredite opciju -P za setsebool, kao što je ilustrirano u sljedećem primjeru:

setsebool -P httpd_enable_ftp_server on

36. Koristite centralizirani log poslužitelj

Konfigurirajte rsyslog demon za slanje osjetljivih poruka dnevnika uslužnih programa centraliziranom poslužitelju dnevnika. Također, nadzirite zapisničke datoteke uz pomoć uslužnog programa logwatch.

Slanje poruka dnevnika na udaljeni poslužitelj jamči da, nakon što je sustav kompromitiran, zlonamjerni korisnici ne mogu u potpunosti sakriti svoju aktivnost, uvijek ostavljajući tragove na udaljenim datotekama dnevnika.

37. Omogućite računovodstvo procesa

Omogućite obračun procesa instaliranjem uslužnog programa psacct i koristite naredbu lastcomm za prikaz informacija o prethodno izvršenim naredbama kako su zabilježene u datoteci računovodstva sustava i sa za sažetak informacija o prethodno izvršenim naredbama kako su zabilježene u računovodstvenoj datoteci sustava.

38. Stvrdnjavanje /etc/sysctl.conf

Koristite sljedeća pravila za parametre jezgre da zaštitite sustav:

Onemogućavanje izvornog usmjeravanja

net.ipv4.conf.all.accept_source_route=0

Onemogući IPv4 prosljeđivanje

ipv4.conf.all.forwarding=0

Onemogući IPv6

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

Onemogućite prihvaćanje i slanje ICMP preusmjerenih paketa osim ako to nije posebno potrebno.

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

Onemogući prosljeđivanje obrnutim putem

net.ipv4.conf.all.rp_filter=2

Ignoriraj sve ICMP echo zahtjeve (postavi na 1 da omogućiš)

net.ipv4.icmp_echo_ignore_all = 0

39. Koristite VPN usluge za pristup svojim prostorijama preko nezaštićenih javnih mreža

Uvijek koristite VPN usluge za operatere za udaljeni pristup LAN prostorijama preko Interneta. Takve vrste usluga mogu se konfigurirati korištenjem besplatnog rješenja otvorenog koda, kao što je OpenVPN, ili korištenjem vlasničkog rješenja, kao što je Cisco VPN (instalirajte vpnc pomoćni program naredbenog retka koji pruža Epel Repositories).

40. Izvršite skeniranje vanjskog sustava

Procijenite sigurnost vašeg sustava za ranjivosti skeniranjem sustava s udaljenih točaka preko vašeg LAN-a pomoću posebnih alata kao što su:

  1. Nmap – mrežni skener 29 Primjeri naredbe Nmap
  2. Nessus – sigurnosni skener
  3. OpenVAS – koristi se za skeniranje ranjivosti i za sveobuhvatno upravljanje ranjivostima.
  4. Nikto – izvrstan skener skripti zajedničkog sučelja pristupnika (CGI) Skeniraj web ranjivost u Linuxu

41. Zaštitite sustav interno

Koristite unutarnju zaštitu sustava od virusa, rootkita, zlonamjernog softvera i, kao dobru praksu, instalirajte sustave za otkrivanje upada koji mogu otkriti neovlaštene aktivnosti (DDOS napadi, skeniranje portova), kao što su:

  1. AIDE – Napredno okruženje za otkrivanje upada – http://aide.sourceforge.net/
  2. ClamAV – Antivirusni skener https://www.clamav.net
  3. Rkhunter – Rootkit skener
  4. Lynis – Alat za sigurnosnu reviziju i skeniranje za Linux
  5. Tripwire – Sigurnost i integritet podataka http://www.tripwire.com/
  6. Fail2Ban – Mrežna prevencija upada
  7. OSSEC – (HIDS) sustav za otkrivanje upada temeljen na hostu http://ossec.github.io/
  8. Mod_Security – Zaštitite napade Brute Force ili DDoS

42. Izmijenite varijable korisničkog okruženja

Dodajte format datuma i vremena za pohranu izvršenja naredbi izdavanjem naredbe u nastavku:

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

Prisilno trenutno snimanje HISTFILE svaki put kada se upiše naredba (umjesto odjave):

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

Ograničite vremensko ograničenje sesije prijave. Automatski sruši ljusku kada se tijekom razdoblja mirovanja ne izvrši nikakva aktivnost. Vrlo korisno za automatsko prekidanje SSH sesija.

echo ‘TMOUT=120’ >> .bashrc

Primijenite sva pravila izvršavanjem:

source .bashrc

43. Sigurnosna kopija podataka

Koristite pomoćne programe za izradu sigurnosnih kopija, kao što su tar, cat, rsync, scp, LVM snimke itd. kako biste pohranili kopiju vašeg sustava, po mogućnosti izvan mjesta, u slučaju kvara sustava.

Ako sustav bude ugrožen, možete izvršiti vraćanje podataka iz prethodnih sigurnosnih kopija.

Na kraju, ne zaboravite da bez obzira na to koliko sigurnosnih mjera i kontra-mjera poduzmete kako biste zaštitili svoj sustav, nikada nećete biti 100% potpuno sigurni sve dok je vaš stroj priključen na struju i uključen.