Poboljšanje sigurnosti i zaštite Linux / CentOS poslužitelja na Internetu

U ovom ćemo članku razgovarati o osnovnim konceptima i specifičnim postavkama koje će pomoći povećati sigurnost vašeg CentOS poslužitelja na Internetu. Upotreba ovih pristupa povećava zaštitu poslužitelja od hakiranja i infekcije. Ovaj je priručnik većinom univerzalan, a glavne su točke pogodne za povećanje sigurnosti bilo kojeg Linux poslužitelja.

sadržaj:

  • Opcije particioniranja i ugradnje diskovnih pogona za izolaciju
  • Instaliranje i ažuriranje softvera na Linuxu (CentOS)
  • SSH zaštita, autorizacija ključa
  • Linux se redovito mijenja
  • Poboljšanje sigurnosti poslužitelja sa SELinuxom
  • Konfigurirajte Firewalld
  • Deinstalirajte X Windows
  • Zaštita jezgre Linuxa
  • Dopuštenja za Linux datoteke
  • Sigurnost web poslužitelja
  • Fizička zaštita poslužitelja
  • Sigurnosna kopija Linux poslužitelja

Opcije particioniranja i ugradnje diskovnih pogona za izolaciju

Kada instalirate CentOS (i bilo koju distribuciju Linuxa) u fazi particioniranja diska, ne stvarajte jednu particiju, već zasebnu tkanje-prostora s glavne particije, također stvorite sistemske particije:

  • / korijen
  • / boot
  • / var
  • / tmp
  • /

Kada izolirate particije, napadači se neće moći uzdići iznad imenika tkanje prilikom hakiranja web mjesta i uvođenja zlonamjernih skripti u nju.

Koristite posebne opcije za sigurno postavljanje nekih particija:

  • noexec - ne dopušta pokretanje binarnih datoteka (ne može se koristiti u korijenskom direktoriju jer će to dovesti do neoperabilnosti sustava);
  • nodev - pretpostavlja da datoteke uređaja neće biti kreirane na montiranom datotečnom sustavu / dev. Također se ne odnosi na korijenski direktorij;
  • nosuid - zabranjuje operacije sa suid i SGID bitovi.

Ovi se parametri mogu postaviti u mapu samo ako postoji kao poseban odjeljak. Možete prilagoditi / etc / fstab ako imate particije na disku, prema sljedećim preporukama:

  • / doma - nosač s opcijama nodev, nosuid, usrquota (uključivanje kvota);
  • / boot - nosač s opcijama nodev, nosuid, noexes - ovaj je odjeljak potreban za pokretanje sustava, zabranjujemo mu da se išta mijenja;
  • / var - nosuid - trčanje kao korijen nije zabranjeno;
  • / var / log - nosač s opcijama nodev, nosuid, noexes;
  • / var / www - nosač s opcijama nodev, nosuid;
  • / tmp - nosač s opcijama nodev, nosuid, noexe - ovaj je odjeljak potreban samo za pohranu i snimanje privremenih datoteka.
Svi gore navedeni odjeljci montirani su s opcijom rw (Mogućnost snimanja).

Instaliranje i ažuriranje softvera na Linuxu (CentOS)

Prilikom instaliranja poslužitelja nikada ne koristite distribucije OS-a koje su sastavile nepoznate osobe. Preuzmite distribucije samo sa službenih ogledala i ne upotrebljavajte tuđe datoteke kickstart za instalaciju. Ako ne razumijete tuđi kôd, bolje je otkazati taj pothvat i instalirati sve ručno ili u potpunosti analizirati datoteku kickstart kako ne biste instalirali nešto zlonamjerno na svoj poslužitelj.

Instalirajte samo minimalno potreban softver. Instalacija i postavljanje samo za slučaj i uz pomoć instalatera mljac i DNF. Provjerite sav instalirani softver i uklonite nepotrebne pakete:

popis yum instaliran
yum list packageName
yum uklonite paketName

Koristite samo službena i pouzdana spremišta paketa..

Ne koristite nešifrirani FTP, Telnet, Rlogin, Rsh.

Onemogućite neiskorištene usluge na vašem poslužitelju ako vam trenutačno uklanjanje usluge ne odgovara.

Za provjeru popisa svih usluga koristite naredbu:

systemctl popis-jedinica-datoteke --type = usluga

Da biste onemogućili i uklonili uslugu iz pokretanja u CentOS-u, koristite systemctl:

systemctl stop usluga
systemctl onesposobiti uslugu

Na primjer, da biste onemogućili uslugu httpd koristi se sljedeća naredba:

systemctl zaustaviti httpd.service
systemctl onesposobiti httpd.service

Uvijek ažurirajte instalirani softver na vašem poslužitelju. Pravovremeno ažurirani softver zaštitit će vas od poznatih ranjivosti. Možete postaviti automatska ažuriranja sustava tako da to ne morate raditi ručno svaki put.

yum update - ažuriranje sustava

SSH zaštita, autorizacija ključa

Za sigurnu autorizaciju na poslužitelju koristite privatni ključ. Generirajte ključ pomoću ssh-keygen uslužnog programa:

# ssh-keygen

Stvaranje parova ključeva javnog i privatnog rsa. Unesite datoteku u koju želite spremiti ključ (/root/.ssh/id_rsa): Unesite zaporku (prazna za nema lozinku): Ponovno unesite istu zaporku: Vaša je identifikacija spremljena u /root/.ssh/id_rsa. Vaš je javni ključ spremljen u /root/.ssh/id_rsa.pub. Otisak ključa je: SHA256: ffIDjWIfOgMZmOVbQmDWaOCADK4G3cYYy0dTIjqLkD8 [email protected] Slučajna slika ključa je: + --- [RSA 2048] ---- + | * + .B = + | | oO @oO. | | *. *. B +. | | = + o *. o | | + .E + S * o | | ... o + * | | +. o | | o. | | | + ---- [SHA256]-----+ 

Nakon generacije možete se pomoću ovog ključa povezati s poslužiteljem putem ssh-klijent.

Kreirajte dodatnog korisnika i izvršavajte naredbe do kraja sudo.

sudo groupadd sudo - stvoriti grupu sudo

adduser webmaster - stvoriti korisnika

passwd webmaster - promijenite lozinku

usermod -aG sudo webmaster - dodavanje korisnika u grupu sudo

U datoteci / itd. / sudoers dodaj liniju:

% sudo SVE = (SVE: SVE) SVE

Onemogućeno u postavljanju ssh-autorizacija poslužitelja putem korijen i prijava / lozinka:

nano / etc / ssh / sshd_config

I promijenite vrijednost linija ispod u:

PermitRootLogin no PasswordAuthentication no ChallengeResponseAuthentication no UsePAM ne AuthenticationMethods publickey PubkeyAuthentication yes 

Promijenite zadani port za ssh. Zadani priključak za ssh, bit će skloni pucanju u prvom redu.

Da biste promijenili standardni port u ssh, u konfiguracijskoj datoteci / etc / ssh / sshd_config zamijenite vrijednost u retku:

Luka 22

Linux se redovito mijenja

Ako i dalje koristite lozinke za autorizaciju u Linuxu, konfigurirajte lozinku za lozinku putem uslužnog programa chage.

Da biste provjerili koliko će dana lozinka vrijediti za bilo kojeg korisnika, upotrijebite naredbu:

chage -l korijen

Po zadanom sam za korijen imao 99999 dana:

# chage -l korijen

Zadnja promjena lozinke: nikad Lozinka istječe: nikad Lozinka je neaktivna: nikad Račun istječe: nikad Minimalni broj dana između promjene lozinke: 0 Maksimalni broj dana između promjene lozinke: 99999 Broj dana upozorenja prije isteka lozinke: 7 

Da biste promijenili razdoblje valjanosti lozinke (na primjer, 9 dana), koristite naredbu:

chage -M 9 korijen

Sada, prilikom provjere podataka o isteku lozinke za korijenskog korisnika, podaci su promijenjeni:

# chage -l korijen

Zadnja promjena lozinke: nikad Zaporka ne istekne: nikad Lozinka neaktivna: nikad Račun istječe: nikad Minimalni broj dana između promjene lozinke: 0 Maksimalni broj dana između promjene lozinke: 9 Broj dana upozorenja prije isteka lozinke: 7 

Iz pomoći možete dobiti više opcija za uslužni program Chage:

čedo čovjek

Da biste blokirali korisnike prilikom unosa pogrešne lozinke, upotrijebite uslužni program fail2ban (omogućuje vam primjenu analognih pravila grupe za zaključavanje računa u sustavu Windows). Fail2ban štiti Linux poslužitelj i usluge od nagađanja lozinke.

Da biste instalirali fail2ban run:

yum instalirati epel-release fail2ban -y

Konfiguracijska datoteka fail2ban nalazi se u /etc/fail2ban/jail.conf. Postavke kojih ćemo se dotaknuti:

  • bantime = 600 - vrijeme zabrane pri blokiranju
  • maxretry = 3 - broj pokušaja pogrešne unošenja lozinke, nakon čega će korisnik biti blokiran
  • findtime = 600 - vremensko razdoblje u kojem se korisnik treba prijaviti

Ostale postavke upotrebljavaju se po želji. Uz to možete konfigurirati slanje izvještaja na svoju e-poštu.

Stvorite datoteku /etc/fail2ban/jail.local i tamo dodajte sljedeće retke:

Nakon promjene konfiguracijske datoteke ponovno pokrenite uslugu.

[DEFAULT] ignoreip = 127.0.0.1/24 [ssh-iptables] omogućen = istinski port = ssh filter = sshd action = iptables [ime = sshd, port = ssh, protokol = tcp] logpath = / var / log / secure 

Zatim spremite datoteku i ponovno pokrenite uslugu fail2ban:

restart sustava start2 fail2ban

Dakle, postavili smo blokiranje korisnika za ssh:

Ako sam lozinku upisao pogrešno, blokiran sam 10 minuta. Fajl2ban možete konfigurirati za rad s bilo kojom uslugom koja radi s korisnicima, na primjer:

  • ProFTPD
  • Exim
  • postfix

Poboljšanje sigurnosti poslužitelja sa SELinuxom

Obično se pri postavljanju poslužitelja isključim SELinuxa, iako se to ne preporučuje. Ali postavljanje SELinuxa vrlo specifičan i opsežan. Konfiguriranje SELinux-a na poslužitelju može potrajati nekoliko dana. Ako imate vremena za konfiguriranje i uklanjanje pogrešaka vašeg SELinux sustava, iskoristite ga za osiguranje vašeg poslužitelja.

SELinuxa ima 3 načina rada:

  • izvršenje
  • popustljiv
  • onesposobljen

U modu enforsing SELinux primjenjuje svoju politiku na sustav i nadzire neovlašteni pristup od strane korisnika. Svi pokušaji su zabilježeni.

U modu popustljiv SELinux pravila se ne primjenjuju, ali se svi podaci bilježe u zapisnike, nakon čega ih možete analizirati. Ovaj je način koristan pri postavljanju i uklanjanju pogrešaka u sustavu..

i onesposobljen prema tome u potpunosti onemogućuje SELinux i njegova se politika uopće ne primjenjuje.

Konfiguracijska datoteka SELinuxa - / etc / selinux / config

Pomno postavljeno SELinuxa možete pisati u nekoliko članaka, a ako su vam potrebne detaljne informacije, možete koristiti službenu dokumentaciju RedHat. Obično kod postavljanja poslužitelja sve funkcionira u potpunosti, ja sam uključen SELinuxa primijetio da postoje problemi sa FTP-poslužitelju, kao i neki plaćeni softver.

Provjera statusa:
# sestatus

SELinux status: onemogućeno

Za pogodnije proučavanje SELinux dnevnika preporučujem korištenje aureport i alata za zavarivanje.

Konfigurirajte Firewalld

Otvorite samo minimalno potrebni set portova na poslužitelju koji su stvarno potrebni za rad. Na primjer, raditi tkanje-dovoljno je otvoriti poslužitelje 80 i 443. Ako koristite mysql /mariadb, onemogućivanje mogućnosti povezivanja s udaljenih poslužitelja na port 3306 (ako se vaša baza podataka koristi samo lokalno, nije uključena u klaster Galera i ne koristi se u skriptama replikacije).

Ako je vaše računalo / pristupni kanal postavljen na statički IP adresu, dodajte pouzdanu adresu iznimkama vatrozida i povežite se s poslužiteljem. Saznajte više o konfiguriranju firewalld-a na CentOS-u (ako ste navikli na iptables pogledajte članak Konfiguriranje Linux vatrozida pomoću iptable-a).

Za provjeru otvorenih portova na poslužitelju koristite uslužni program netstat:

netstat -tulpn

Deinstalirajte X Windows

Nemojte koristiti sustav na vašem poslužitelju X prozori. Uklonite sav softver koji je povezan s ovim sustavom, nema ga potrebe koristiti Linux poslužitelj:

yum group ukloni "GNOME Desktop"
yum group ukloni "KDE plazma radne prostore"
yum group ukloni "Poslužitelj s GUI"
yum group ukloni "MATE Desktop"

Zaštita jezgre Linuxa

Koristite postavke u datoteci /etc/sysctl.conf za dodatnu sigurnost tijekom pokretanja Linux kernel-a.

Uključi execshield:

kernel.exec-štit = 1

Onemogućite usmjeravanje IP adrese (ako se vaš poslužitelj ne koristi kao internetski pristupnik putem LAN-a):

net.ipv4.conf.all.accept_source_route = 0

Omogući zaštitu od izoliranja

net.ipv4.conf.all.rp_filter = 1

Omogući zanemarivanje zahtjeva za emitiranje

net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_messages = 1

Omogući registraciju sumnjivih paketa

net.ipv4.conf.all.log_martians = 1

Dopuštenja za Linux datoteke

Pokrenite pretraživanje datoteka bez korisnika i grupe, takve su datoteke potencijalno opasne i cyber-kriminalci mogu ih koristiti. Da biste pronašli takve datoteke, koristite naredbu:

find / directory -xdev \ (-nouser -o -nogrupa \) -print

Ako su pronađene datoteke, promijenite vlasnika i grupu.

Postavite zastavu chattr na potrebne datoteke kako bi ih se zaštitilo od modifikacija. Nijedan korisnik ne može mijenjati datoteku dok je postavljena ova zastava. Na primjer:

chattr + i /etc/mysript.sh

Ne postavljajte previsoka dopuštenja na mape i datoteke, na primjer, standardna prava za tkanje:

  • 755 za imenike
  • 644 za datoteke

U nekim slučajevima mogu biti izuzeci, ali uvijek pažljivo pristupite ovom pitanju. Zabranite korisnicima da postavljaju dopuštenje 777. Možete pronaći takve datoteke:

find / home -tip f -perm 777

Sigurnost web poslužitelja

Ako koristite poslužitelj pod tkanje, brine se za postavljanje web usluga. Sadržaj direktorija zatvorite putem Opcije -Indexes, također dodati X okvir.

Zaglavlje uvijek dodaje opcije X-Frame SAMEORIGIN

Ovaj će parametar zabraniti otvaranje stranice u okviru, što će spriječiti umetanje sadržaja vaše web stranice na druge stranice.

Onemogući prikazivanje verzije vašeg tkanje-poslužitelj. za apaš u konfiguracijsku datoteku napišite:

Ispis isključen

za Nginx u konfiguracijskoj datoteci do odjeljka http zapiši:

server_tokens isključen;

Ako koristite php, onemogućite nesigurne funkcije putem php.ini:

expose_php = Isključeno

- zabraniti prikazivanje php verzije

onesposobiti_funkcije = exec, passthru, shell_exec, sustav, proc_open, popen

- zabranjuje uporabu tih funkcija

Također konfigurirajte ograničenja za izvršavanje skripti i njihovu veličinu, to će vas zaštititi od manjih napada.

Na svoje web mjesto i poštu instalirajte SSL certifikat tako da je veza u pregledniku i prilikom slanja pošte šifrirana. Možete koristiti besplatni certifikat tvrtke Let's Encrypt ili kupiti jeftin plaćeni certifikat.

Fizička zaštita poslužitelja

Ako vaš poslužitelj ima konzolu za daljinski pristup ILO/IPMI/ BMC, zatvorite mu pristup izvana, ostavite samo pouzdanog IP, to će vas ograničiti od nepotrebnih problema.

Ako se vaš fizički poslužitelj nalazi izvan ureda / kuće, zatvorite BIOS / UEFI lozinka.

I glavna stvar, postavite svoje poslužitelje s pouzdanim davateljima usluga.

Sigurnosna kopija Linux poslužitelja

Naravno, ne zaboravite na sigurnosno kopiranje poslužitelja. Možete izraditi sigurnosne kopije cijelog poslužitelja, kao i pojedinačnih datoteka ili direktorija (možete konfigurirati sigurnosnu kopiju za besplatne skripte za pohranu u oblaku). U slučaju incidenta, uvijek ćete imati pri ruci trenutnu sigurnosnu kopiju iz koje možete razmjestiti poslužitelj ili zamijeniti konfiguracijske datoteke.