A Linux / CentOS szerver biztonságának és védelmének javítása az interneten

Ebben a cikkben megvitatjuk azokat az alapvető fogalmakat és konkrét beállításokat, amelyek elősegítik a CentOS szerver biztonságának fokozását az interneten. Ezeknek a megközelítéseknek a használatával javul a kiszolgáló védelme a feltörések és a fertőzés ellen. A kézikönyv nagyrészt univerzális, és a fő pontok alkalmasak bármely Linux szerver biztonságának fokozására.

Tartalom:

  • A leválasztó meghajtók particionálási és beillesztési lehetőségei
  • Szoftver telepítése és frissítése Linuxon (CentOS)
  • SSH védelem, kulcs engedélyezése
  • A Linux jelszava rendszeresen megváltozik
  • A szerver biztonságának javítása a SELinux segítségével
  • Konfigurálja a tűzfalat
  • Távolítsa el az X Windows szoftvert
  • Linux kernel védelem
  • Linux fájl engedélyek
  • Webszerver biztonsága
  • Fizikai szervervédelem
  • Biztonsági mentés a Linux szerverről

A leválasztó meghajtók particionálási és beillesztési lehetőségei

A CentOS (és minden Linux disztribúció) telepítésekor a lemezpartíciós szakaszban ne hozzon létre egy partíciót, hanem külön háló-tér a fő partíciótól, hozzon létre rendszerpartíciókat is:

  • / gyökér
  • / boot
  • / var
  • / tmp
  • /

A partíciók elszigetelésekor a támadók nem tudnak emelkedni a könyvtár fölé háló amikor egy webhelyet feltörnek és rosszindulatú szkripteket vezetnek be.

Használjon speciális opciókat egyes partíciók biztonságos felszereléséhez:

  • noexec - nem engedélyezi a bináris fájlok futtatását (nem használható a gyökérkönyvtárban, mivel ez a rendszer működésképtelenségéhez vezet);
  • nodev - feltételezi, hogy az eszközfájlokat nem fogják létrehozni a csatolt fájlrendszeren / dev. A gyökérkönyvtárra sem alkalmazható;
  • nosuid - tiltja a suid és sgid bit.

Ezeket a paramétereket csak akkor lehet könyvtárba állítani, ha külön szakaszként létezik. Testreszabhatja / etc / fstab a következő ajánlások szerint, ha vannak partíciók a lemezen:

  • / otthon - felszerelés opcióval nodev, nosuid, usrquota (kvóták felvétele);
  • / boot - felszerelés opcióval nodev, nosuid, noexes - erre a szakaszra a rendszer indításához van szükség, tilos bármi megváltoztatása benne;
  • / var - nosuid - a root felhasználóként történő futtatás nem tilos;
  • / var / log - felszerelés opcióval nodev, nosuid, noexeс;
  • / var / www - felszerelés opcióval nodev, nosuid;
  • / tmp - felszerelés opcióval nodev, nosuid, noexe - erre a szakaszra csak ideiglenes fájlok tárolására és rögzítésére van szükség.
A fenti szakaszok mindegyike opcionálisan van felszerelve rw (Felvételi képességgel).

Szoftver telepítése és frissítése Linuxon (CentOS)

A szerver telepítésekor soha ne használjon ismeretlen személyek által összeállított operációs rendszer disztribúciókat. Töltse le a disztribúciókat csak a hivatalos tükrökből, és ne használjon mások kezdő fájljait a telepítéshez. Ha nem érti valaki másnak a kódját, akkor jobb, ha megszünteti ezt a vállalkozást, és mindent manuálisan telepít, vagy teljesen elemezte a kick-fájlt, hogy ne telepítsen rosszindulatú kiszolgálóra.

Csak a minimálisan szükséges szoftvert telepítse. Telepítés és beállítás csak az esetre és a telepítő segítségével yum és DNF. Ellenőrizze az összes telepített szoftvert és távolítsa el a felesleges csomagokat:

yum lista telepítve
yum list packageName
yum remove packName

Csak hivatalos és megbízható csomaglerakatot használjon..

Ne használjon titkosítatlan FTP-t, Telnet-t, Rlogin-t, Rsh-t.

Kapcsolja ki a nem használt szolgáltatásokat a szerveren, ha a szolgáltatás eltávolítása jelenleg nem felel meg Önnek.

Az összes szolgáltatás listájának ellenőrzéséhez használja a következő parancsot:

systemctl list-unit-files --type = service

Egy szolgáltatás letiltásához és eltávolításához az induláskor a CentOS-ban használja a systemctl:

systemctl stop szolgáltatás
a systemctl szolgáltatás letiltása

Például a szolgáltatás letiltásához httpd a következő parancs kerül felhasználásra:

systemctl stop httpd.service
a systemctl letiltja a httpd.service szolgáltatást

A kiszolgálón telepített szoftvert mindig frissítse. Az időben frissített szoftver megvédi Önt az ismert sebezhetőségektől. Beállíthatja az automatikus rendszerfrissítéseket, így ezt nem minden alkalommal kell manuálisan elvégeznie.

yum frissítés - rendszerfrissítés

SSH védelem, kulcs engedélyezése

A biztonságos hitelesítéshez a kiszolgálón használja a privát kulcsot. Generálja a kulcsot az ssh-keygen segédprogrammal:

# ssh-keygen

Nyilvános / magán rsa kulcspár létrehozása. Írja be azt a fájlt, amelybe menti a kulcsot (/ root /.ssh/id_rsa): Írja be a jelmondatot (üres, ha nincs jelmondat): Írja be újra ugyanazt a jelmondatot: Azonosításait a /root/.ssh/id_rsa fájlba mentettük. A nyilvános kulcsot a /root/.ssh/id_rsa.pub mappába mentettük. A kulcs ujjlenyomata: SHA256: ffIDjWIfOgMZmOVbQmDWaOCADK4G3cYYy0dTIjqLkD8 [email protected] A kulcs véletlenszerű képe: + --- [RSA 2048] ---- + | * + .B = + | | oO @oO. | | *. *. B +. | | = + o *. o | | + .E + S * o | | ... o + * | | +. o | | o. | | | + ---- [SHA256]-----+ 

A generálás után ennek a kulcsnak a segítségével kapcsolódhat a kiszolgálóhoz ssh-az ügyfél.

Hozzon létre egy további felhasználót, és hajtsa végre a parancsokat a (z) keresztül sudo.

sudo groupadd sudo - csoport létrehozása sudo

adduser webmester - felhasználó létrehozása

passwd webmester - jelszó megváltoztatása

usermod -aG sudo webmester - felhasználó hozzáadása a csoporthoz sudo

Aktában / etc / sudoers sor hozzáadása:

% sudo ALL = (ALL: ALL) MINDEN

Letiltja a beállítást ssh-szerver engedélyezése a gyökér és bejelentkezés / jelszó:

nano / etc / ssh / sshd_config

És változtassa meg az alábbi sorok értékét:

PermitRootLogin nem JelszóHitelesítés nem KihívásVálaszpontHitelesítés nem HasználatPAM nem HitelesítésMódok publickey PubkeyHitelesítés igen 

Módosítsa az alapértelmezett portot ssh. Az alapértelmezett port a ssh, elsősorban hajlamos a repedésekre.

A standard port megváltoztatása ssh, a konfigurációs fájlban / etc / ssh / sshd_config cserélje ki az értéket a sorban:

22. kikötő

A Linux jelszava rendszeresen megváltozik

Ha továbbra is jelszavakat használ hitelesítéshez Linuxban, akkor konfigurálja a jelszó jelszavát a segédprogramon keresztül chage.

Annak ellenőrzéséhez, hogy hány napig érvényes egy jelszó bármely felhasználó számára, használja a következő parancsot:

chage -l gyökér

Alapértelmezés szerint 99999 napot állítottam be a root számára:

# chage -l gyökér

Utolsó jelszócsere: soha A jelszó nem jár le: soha a jelszó inaktív: soha a fiók nem jár le: soha A jelszócsere közötti minimális napok száma: 0 A jelszócsere közötti napok maximális száma: 99999 A jelszó lejárta előtti figyelmeztető napok száma: 7 

A jelszó érvényességi idejének (például 9 nap) megváltoztatásához használja a következő parancsot:

chage -M 9 gyökér

Most, amikor ellenőrizte a root felhasználó jelszavak érvényességi adatait, az információ megváltozott:

# chage -l gyökér

Utolsó jelszócsere: soha A jelszó nem jár le: soha a jelszó inaktív: soha a fiók nem jár le: soha a jelszócsere közötti minimális napok száma: 0 A jelszócsere közötti napok maximális száma: 9 A jelszó lejárta előtti figyelmeztető napok száma: 7 

A Chage segédprogram további lehetőségeit a súgóból szerezheti be:

ember chage

A segédprogram segítségével blokkolja a felhasználókat, ha rossz jelszót ír be fail2ban (lehetővé teszi a csoportházirendek analógjának bevezetését a fiókok zárolásához Windows rendszeren). A Fail2ban megvédi a Linux szervert és a szolgáltatásokat a jelszó kitalálásától.

A fail2ban futtatás telepítéséhez:

yum install epel-release fail2ban -y

A fail2ban konfigurációs fájl az /etc/fail2ban/jail.conf fájlban található. Beállítások, amelyeket érintünk:

  • bantime = 600 - tiltási idő a blokkolásnál
  • maxretry = 3 - a jelszó helytelen beírására tett kísérletek száma, amely után a felhasználót letiltják
  • findtime = 600 - az az időszak, amely alatt a felhasználónak be kell jelentkeznie

Más beállításokat kívánunk használni. Ezenkívül konfigurálhatja a jelentések küldését az e-mailbe.

Hozzon létre fájlt /etc/fail2ban/jail.local és adjuk hozzá a következő sorokat:

A konfigurációs fájl megváltoztatása után indítsa újra a szolgáltatást.

[DEFAULT] ignoreip = 127.0.0.1/24 [ssh-iptables] engedélyezve = true port = ssh filter = sshd action = iptables [név = sshd, port = ssh, protokoll = tcp] logpath = / var / napló / biztonságos 

Ezután mentse el a fájlt, és indítsa újra a szolgáltatást fail2ban:

systemctl újraindítás fail2ban

Ezért beállítottuk az ssh felhasználói blokkolását:

Ha a jelszót helytelenül adták meg, tíz percre blokkoltam. Beállíthatja a fail2ban-t, hogy működjön bármilyen szolgáltatással, amely a felhasználókkal működik, például:

  • ProFTPD
  • EXIM
  • postfix

A szerver biztonságának javítása a SELinux segítségével

Általában a szerver beállításakor kikapcsolok SELinux, bár ez nem ajánlott. De beállítva SELinux nagyon specifikus és kiterjedt. A SELinux kiszolgálón történő konfigurálása több napot is igénybe vehet. Ha van ideje a SELinux rendszer konfigurálására és hibakeresésére, használja azt a szerver biztonságához.

SELinux 3 üzemmóddal rendelkezik:

  • érvényesítése
  • engedékeny
  • mozgássérült

Üzemmódban enforsing A SELinux házirendjét alkalmazza a rendszerre, és figyeli a felhasználók jogosulatlan hozzáférését. Minden kísérletet naplózunk.

Üzemmódban engedékeny A SELinux házirendet nem alkalmazzák, de az összes információt a naplókba rögzítik, majd elemezhetik azokat. Ez az üzemmód a rendszer beállításához és hibakereséséhez hasznos..

és mozgássérült ennek megfelelően teljesen letiltja a SELinux-et, és annak irányelve egyáltalán nem vonatkozik.

Konfigurációs fájl SELinux - / etc / selinux / config

Aprólékos környezetben SELinux több cikkre is írhat, ha részletes információra van szüksége, használhatja a hivatalos dokumentációt RedHat. Általában a szerver beállításakor minden teljesen működik, bekapcsolva vagyok SELinux észrevette, hogy vannak problémák a ftp-szerver, valamint néhány fizetett szoftver.

Állapot-ellenőrzés:
# sestatus

SELinux állapota: letiltva

A SELinux naplók kényelmesebb tanulmányozásához javasoljuk az aureport és a sealer segédprogramok használatát.

Konfigurálja a tűzfalat

Csak a minimálisan szükséges portokat nyissa meg a kiszolgálón, amelyek valóban szükségesek a munkához. Például dolgozni háló-elegendő a 80-as és a 443-as kiszolgálók megnyitásához mysql /MariaDB, letiltja a távoli kiszolgálókról a 3306-os porthoz történő kapcsolódás képességét (ha az adatbázis csak helyileg használatos, akkor nem tartozik a Galera-fürtbe, és a replikációs szkriptek nem használják).

Ha a számítógép / hozzáférési átjáró statikus IP címet, adja hozzá a megbízható címet a tűzfal kivételeihez, és csatlakozzon belőle a kiszolgálóhoz. További információ a tűzfalaknak a CentOS-on történő konfigurálásáról (ha megszokta az iptable-kat, lásd: A Linux tűzfal konfigurálása az iptable-kel).

A szerver nyitott portjainak ellenőrzéséhez használja a segédprogramot netstat:

netstat -tulpn

Távolítsa el az X Windows szoftvert

Ne használja a rendszert a szerveren X ablakok. Távolítson el minden, a rendszerhez társított szoftvert, nincs rá szükség Linux szerver:

yum group eltávolítani a "GNOME Desktop"
yum group eltávolítani a "KDE plazma munkaterületeket"
yum group eltávolítás "Server with GUI"
yum group eltávolítani a "MATE Desktop"

Linux kernel védelem

Használja a fájl beállításait /etc/sysctl.conf a biztonság fokozása érdekében a Linux kernel indításakor.

Kapcsolja be execshield:

kernel.exec-pajzs = 1

Az IP-útválasztás letiltása (ha a szervert nem használják internet-hozzáférési átjáróként a LAN-tól):

net.ipv4.conf.all.accept_source_route = 0

Engedélyezze a hamisítás védelmét

net.ipv4.conf.all.rp_filter = 1

Engedélyezze a sugárzási kérelmek figyelmen kívül hagyását

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

Engedélyezze a gyanús csomag regisztrációt

net.ipv4.conf.all.log_martians = 1

Linux fájl engedélyek

Fájlt kereshet felhasználó és csoport nélkül, ezek az fájlok potenciálisan veszélyesek, és a számítógépes bűnözők használhatják azokat. Az ilyen fájlok megtalálásához használja a következő parancsot:

find / könyvtár -xdev \ (-felhasználó -o -nogroup \) -print

Ha a fájlok megtalálhatók, cserélje ki a tulajdonosot és a csoportot.

Állítsa be a zászlót chattr a szükséges fájlokhoz, hogy megóvja őket a módosításoktól. Senki sem módosíthatja a fájlt, amíg ez a jelző be van állítva. Például:

chattr + i /etc/mysript.sh

Ne állítson túl magas engedélyeket a könyvtárakhoz és a fájlokhoz, például a szokásos jogokhoz háló:

  • 755 könyvtárakhoz
  • 644 fájlok esetén

Bizonyos esetekben vannak kivételek, de mindig körültekintően keresse ezt a kérdést. Tilos a felhasználókat engedélyezni 777. Az ilyen fájlokat megtalálja:

keresési / otthoni f-perm 777

Webszerver biztonsága

Ha szervert használ a háló, vigyázzon a webszolgáltatások beállítására. Zárja be a könyvtár tartalmának megtekintését a Opciók -Indexek, is hozzá X-frame.

A fejléc mindig csatolja az X-Frame-Options SAMEORIGIN elemet

Ez a paraméter megtiltja az oldal keretben történő megnyitását, ez megakadályozza webhelye tartalmának beágyazását más webhelyekre.

Letiltja a (z) verziójának megjelenítését háló-szerver. mert apache a konfigurációs fájlba írja:

serverSignature ki

mert nginx a konfigurációs fájlban a szakaszhoz http írja le:

server_tokens ki;

Php használata esetén tiltsa le a nem biztonságos funkciókat php.ini:

expose_php = Ki

- tiltsa a php verzió megjelenítését

Disable_functions = exec, passthru, shell_exec, system, proc_open, popen

- tiltja ezen funkciók használatát

Állítsa be a szkriptek végrehajtásának korlátozásait és méretét is, ez megvédi a kisebb támadásoktól.

Telepítse az SSL tanúsítványt a webhelyére és az e-mailbe úgy, hogy a böngészőben és az e-mailek küldése során a kapcsolat titkosítva legyen. Használhat egy ingyenes igazolást a Let's Encrypt-től, vagy megfizethet egy olcsó, fizetett tanúsítványt.

Fizikai szervervédelem

Ha a szerver rendelkezik konzollal a távoli eléréshez ILO/IPMI/ BMC, zárja be kívülről, csak a megbízhatókat hagyja el IP, ez korlátozza magát a szükségtelen problémáktól.

Ha a fizikai kiszolgálója az irodán / otthonon kívül található, zárja be BIOS / UEFI jelszó.

És a lényeg: helyezze el kiszolgálóit megbízható szolgáltatókkal.

Biztonsági mentés a Linux szerverről

Természetesen ne felejtsük el a szerver biztonsági mentését. Biztonsági másolatot készíthet a teljes szerverről, valamint az egyes fájlokról vagy könyvtárakról (konfigurálhat biztonsági mentést a felhőalapú tároló szkriptek ingyen). Baleset esetén mindig kéznél lesz az aktuális biztonsági másolat, ahonnan telepítheti a kiszolgálót, vagy kicserélheti a konfigurációs fájlokat.