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
- 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:
- Nmap – mrežni skener 29 Primjeri naredbe Nmap
- Nessus – sigurnosni skener
- OpenVAS – koristi se za skeniranje ranjivosti i za sveobuhvatno upravljanje ranjivostima.
- 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:
- AIDE – Napredno okruženje za otkrivanje upada – http://aide.sourceforge.net/
- ClamAV – Antivirusni skener https://www.clamav.net
- Rkhunter – Rootkit skener
- Lynis – Alat za sigurnosnu reviziju i skeniranje za Linux
- Tripwire – Sigurnost i integritet podataka http://www.tripwire.com/
- Fail2Ban – Mrežna prevencija upada
- OSSEC – (HIDS) sustav za otkrivanje upada temeljen na hostu http://ossec.github.io/
- 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.