25 Utrjevanje varnostnih nasvetov za strežnike Linux


Vsi pravijo, da je Linux privzeto varen in so se do neke mere strinjali (To so diskutabilne teme). Vendar ima Linux privzeto vgrajen varnostni model. Morate ga prilagoditi in prilagoditi po svoji potrebi, kar lahko pomaga narediti varnejši sistem. Linux je težje upravljati, vendar ponuja več prilagodljivosti in možnosti konfiguracije.

Zaščita sistema v proizvodnji izpod rok hekerjev in krekerjev je za sistemskega skrbnika zahtevna naloga. To je naš prvi članek, ki se nanaša na »Kako zavarovati Linux box« ali »Utrjevanje Linux Boxa«. V tej objavi vam bomo razložili 25 koristnih nasvetov in trikov za zaščito vašega sistema Linux. Upam, da vam bodo spodnji nasveti in triki pomagali pri varovanju sistema.

1. Fizična varnost sistema

Konfigurirajte BIOS tako, da onemogočite zagon s CD-ja/DVD-ja, zunanjih naprav, disketnega pogona v BIOS-u. Nato omogočite geslo za BIOS in zaščitite GRUB z geslom, da omejite fizični dostop do vašega sistema.

  1. Nastavite geslo GRUB za zaščito strežnikov Linux

2. particije diska

Pomembno je, da imate različne particije, da zagotovite večjo varnost podatkov, če se zgodi kakšna nesreča. Z ustvarjanjem različnih particij lahko podatke ločimo in razvrstimo v skupine. Ko se zgodi nepričakovana nesreča, bodo poškodovani samo podatki te particije, podatki na drugih particijah pa so preživeli. Prepričajte se, da imate naslednje ločene particije in da morajo biti programi neodvisnih proizvajalcev nameščeni v ločenih datotečnih sistemih pod/opt.

/
/boot
/usr
/var
/home
/tmp
/opt

3. Zmanjšajte pakete, da zmanjšate ranljivost

Ali res želite namestiti vse vrste storitev ?. Priporočljivo je, da se izognete nameščanju neuporabnih paketov, da se izognete ranljivostim paketov. To lahko zmanjša tveganje, da bi ogrožanje ene storitve privedlo do ogrožanja drugih storitev. Poiščite in odstranite ali onemogočite neželene storitve s strežnika, da zmanjšate ranljivost. Z ukazom ‘chkconfig’ poiščite storitve, ki se izvajajo na 3. stopnji.

# /sbin/chkconfig --list |grep '3:on'

Ko ugotovite, da se neželena storitev izvaja, jih onemogočite z naslednjim ukazom.

# chkconfig serviceName off

Z orodjem za upravljanje paketov RPM, kot sta orodji »yum« ali »apt-get«, poiščite vse nameščene pakete v sistemu in jih odstranite z naslednjim ukazom.

# yum -y remove package-name
# sudo apt-get remove package-name

  1. 5 primerov ukazov chkconfig
  2. 20 praktičnih primerov ukazov RPM
  3. 20 Linux YUM ukazov za upravljanje paketov Linux
  4. 25 ukazov APT-GET in APT-CACHE za upravljanje upravljanja paketov

4. Preverite vrata za poslušanje omrežja

S pomočjo mrežnega ukaza ‘netstat’ si lahko ogledate vsa odprta vrata in z njimi povezane programe. Kot sem že rekel, uporabite ukaz 'chkconfig', da onemogočite vse neželene omrežne storitve iz sistema.

# netstat -tulpn

  1. 20 ukazov Netstat za upravljanje omrežja v Linuxu

5. Uporabite varno lupino (SSH)

Protokoli Telnet in rlogin uporabljajo navadno besedilo in ne šifrirano obliko, ki predstavlja kršitve varnosti. SSH je varen protokol, ki uporablja tehnologijo šifriranja med komunikacijo s strežnikom.

Nikoli se ne prijavite neposredno kot root, razen če je to potrebno. Za izvajanje ukazov uporabite "sudo". sudo so določeni v datoteki/etc/sudoers, prav tako pa jo lahko urejate s pripomočkom “visudo”, ki se odpre v urejevalniku VI.

Priporočljivo je tudi, da privzeto številko vrat SSH 22 spremenite z drugo številko vrat višje ravni. Odprite glavno konfiguracijsko datoteko SSH in vnesite nekaj naslednjih parametrov, s katerimi boste uporabnikom omejili dostop.

# vi /etc/ssh/sshd_config
PermitRootLogin no
AllowUsers username
Protocol 2

  1. 5 najboljših postopkov za zaščito in zaščito SSH strežnika

6. Redno posodabljajte sistem

Ko so na voljo, sistem vedno posodabljajte z najnovejšimi popravki, varnostnimi popravki in jedrom.

# yum updates
# yum check-update

7. Zaklepanje Cronjobs

Cron ima lastno vgrajeno funkcijo, kjer omogoča določanje, kdo sme in kdo ne želi izvajati opravil. To nadzira uporaba datotek, imenovanih /etc/cron.allow in /etc/cron.deny. Če želite uporabnika zakleniti s pomočjo cron, preprosto dodajte uporabniška imena v cron.deny in omogočite uporabniku, da zažene cron add v datoteki cron.allow. Če želite vsem uporabnikom onemogočiti uporabo crona, dodajte vrstico »VSE« v datoteko cron.deny.

# echo ALL >>/etc/cron.deny

  1. 11 primerov razporejanja Cron v Linuxu

8. Onemogočite USB ključek za zaznavanje

Velikokrat se zgodi, da želimo uporabnikom omejiti uporabo USB ključa v sistemih za zaščito in zaščito podatkov pred krajo. Ustvarite datoteko ‘/etc/modprobe.d/no-usb’ in dodajanje spodnje vrstice ne bo zaznalo pomnilnika USB.

install usb-storage /bin/true

9. Vklopite SELinux

Varnostno izboljšani Linux (SELinux) je obvezen varnostni mehanizem za nadzor dostopa, ki je na voljo v jedru. Onemogočanje SELinux pomeni odstranitev varnostnega mehanizma iz sistema. Pred odstranitvijo dobro premislite, če je vaš sistem priključen na internet in je do njega dostopen v javnosti, potem še malo razmislite o tem.

SELinux ponuja tri osnovne načine delovanja in to so.

  1. Uveljavljanje: to je privzeti način, ki omogoča in uveljavlja varnostni pravilnik SELinux na računalniku.
  2. Dovoljeno: V tem načinu SELinux ne bo uveljavljal varnostne politike v sistemu, ampak bo samo opozoril in zapisoval ukrepe. Ta način je zelo koristen pri odpravljanju težav, povezanih s SELinuxom.
  3. Onemogočeno: SELinux je izklopljen.

Trenutno stanje načina SELinux si lahko ogledate v ukazni vrstici z ukazi 'system-config-selinux', 'getenforce' ali 'sestatus'.

# sestatus

Če je onemogočen, omogočite SELinux z naslednjim ukazom.

# setenforce enforcing

Prav tako ga je mogoče upravljati iz datoteke '/ etc/selinux/config', kjer ga lahko omogočite ali onemogočite.

10. Odstranite namizja KDE/GNOME

Na namenskem strežniku LAMP ni treba zagnati namizja X Window, kot je KDE ali GNOME. Lahko jih odstranite ali onemogočite, da povečate varnost strežnika in zmogljivosti. Če želite preprosto onemogočiti, odprite datoteko "/ etc/inittab" in nastavite nivo izvajanja na 3. Če jo želite popolnoma odstraniti iz sistema, uporabite spodnji ukaz.

# yum groupremove "X Window System"

11. Izklopite IPv6

Če ne uporabljate protokola IPv6, ga morate onemogočiti, ker za večino aplikacij ali pravilnikov protokol IPv6 ni potreben in trenutno na strežniku ni potreben. Pojdite v omrežno konfiguracijsko datoteko in dodajte naslednje vrstice, da jo onemogočite.

# vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. Uporabnikom omejite uporabo starih gesel

To je zelo koristno, če želite uporabnikom prepovedati uporabo istih starih gesel. Datoteka s starim geslom se nahaja na/etc/security/opasswd. To lahko dosežemo z uporabo modula PAM.

Odprite datoteko '/etc/pam.d/system-auth' pod RHEL/CentOS/Fedora.

# vi /etc/pam.d/system-auth

Odprite datoteko ‘/etc/pam.d/common-password’ v Ubuntu/Debian/Linux Mint.

# vi /etc/pam.d/common-password

V odsek "auth" dodajte naslednjo vrstico.

auth        sufficient    pam_unix.so likeauth nullok

V odsek „geslo“ dodajte naslednjo vrstico, da uporabniku onemogočite ponovno uporabo zadnjih 5 svojih geslov.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

Strežnik si zapomni le zadnjih 5 gesel. Če ste poskušali uporabiti katero od zadnjih 5 starih gesel, boste dobili napako, kot je.

Password has been already used. Choose another.

13. Kako preveriti veljavnost gesla uporabnika

V Linuxu so uporabniška gesla shranjena v datoteki '/ etc/shadow' v šifrirani obliki. Če želite preveriti potek uporabniškega gesla, morate uporabiti ukaz "chage". Prikaže informacije o podrobnostih veljavnosti gesla skupaj z datumom zadnje spremembe gesla. Te podrobnosti sistem uporablja za odločanje, kdaj mora uporabnik spremeniti svoje geslo.

Če si želite ogledati podatke o staranju obstoječega uporabnika, kot sta datum in čas poteka, uporabite naslednji ukaz.

#chage -l username

Če želite spremeniti staranje gesel katerega koli uporabnika, uporabite naslednji ukaz.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName

  1. -M Nastavite največje število dni
  2. -m Nastavite najmanjše število dni
  3. -W Nastavite število dni opozorila

14. Ročno zaklenite in odklenite račun

Funkcije zaklepanja in odklepanja so zelo koristne, namesto da odstranite račun iz sistema, ga lahko zaklenete za en teden ali mesec. Če želite zakleniti določenega uporabnika, lahko uporabite ukaz za sledenje.

# passwd -l accountName

Opomba: Zaklenjeni uporabnik je še vedno na voljo samo za korenskega uporabnika. Zaklepanje se izvede z zamenjavo šifriranega gesla z (!) Nizom. Če nekdo poskuša dostopati do sistema s tem računom, bo dobil napako, podobno spodnji.

# su - accountName
This account is currently not available.

Če želite odkleniti ali omogočiti dostop do zaklenjenega računa, uporabite ukaz kot. S tem boste odstranili (!) Niz s šifriranim geslom.

# passwd -u accountName

15. Uveljavljanje močnejših gesel

Številni uporabniki uporabljajo mehka ali šibka gesla in njihova gesla bodo morda vdrla s slovarskimi napadi. Modul ‘pam_cracklib’ je na voljo v naboru modulov PAM (Pluggable Authentication Modules), ki bo uporabnika prisilil, da nastavi močna gesla. Odprite naslednjo datoteko z urejevalnikom.

Preberite tudi:

# vi /etc/pam.d/system-auth

In dodajte vrstico z uporabo kreditnih parametrov kot (lcredit, ucredit, dcredit in/ali ocredit, torej mala, velika, številčna in drugo)

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. Omogoči Iptables (požarni zid)

Zelo priporočljivo je, da požarnemu zidu Linux omogočite nepooblaščen dostop do vaših strežnikov. Uporabite pravila v iptables za filtriranje dohodnih, odhodnih in posredniških paketov. Za določeno številko vrat udp/tcp lahko določimo izvorni in ciljni naslov, ki ga bomo dovolili in zavrnili.

  1. Osnovni vodniki in nasveti za IPTables

17. Onemogočite Ctrl + Alt + Delete v Inittab

V večini distribucij Linuxa s pritiskom na tipko CTRL-ALT-DELETE sistem zažene postopek ponovnega zagona. Zato ni dobro, če bi to možnost omogočili vsaj na produkcijskih strežnikih, če kdo to pomotoma stori.

To je določeno v datoteki '/ etc/inittab', če natančno pogledate to datoteko, boste videli vrstico, podobno spodnji. Privzeto vrstica ni komentirana. To moramo komentirati. To posebno signaliziranje zaporedja tipk bo zaustavilo sistem.

# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Preverjanje računov za prazna gesla

Vsak račun s praznim geslom pomeni, da je odprt za nepooblaščen dostop do kogar koli v spletu in je del varnosti znotraj strežnika Linux. Torej, prepričajte se, da imajo vsi računi močna gesla in da nihče nima pooblaščenega dostopa. Prazni računi za gesla so varnostna tveganja in jih je mogoče zlahka vdreti. Če želite preveriti, ali obstajajo računi s praznim geslom, uporabite naslednji ukaz.

# cat /etc/shadow | awk -F: '($2==""){print $1}'

19. Prikaži SSH pasico pred prijavo

Vedno je boljša ideja, da imate pred preverjanjem pristnosti SSH legalno pasico ali varnostne pasice z nekaj varnostnimi opozorili. Če želite nastaviti takšne pasice, preberite naslednji članek.

  1. Prikažite uporabnikom opozorilno sporočilo SSH

20. Spremljanje uporabniških dejavnosti

Če imate opravka z veliko uporabniki, je pomembno, da zberete podatke o posameznih uporabniških dejavnostih in procesih, ki jih porabijo, in jih analizirate pozneje ali v primeru kakršne koli zmogljivosti, varnostnih težav. Toda kako lahko spremljamo in zbiramo informacije o dejavnostih uporabnikov.

Obstajata dve uporabni orodji, imenovani "psacct" in "acct", ki se uporabljata za spremljanje uporabnikovih dejavnosti in procesov v sistemu. Ta orodja delujejo v sistemskem ozadju in neprekinjeno spremljajo vsako uporabniško aktivnost v sistemu in vire, ki jih porabijo storitve, kot so Apache, MySQL, SSH, FTP itd. Za več informacij o namestitvi, konfiguraciji in uporabi obiščite spodnji url.

  1. Nadzirajte dejavnost uporabnika z ukazi psacct ali acct

21. Redno pregledujte dnevnike

Premaknite dnevnike v namenski dnevniški strežnik, kar lahko vsiljivcem prepreči enostavno spreminjanje lokalnih dnevnikov. Spodaj so navedena privzeta imena privzetih dnevniških datotek za Linux in njihova uporaba:

  1. /var/log/message - če so na voljo celotni sistemski dnevniki ali dnevniki trenutne dejavnosti.
  2. /var/log/auth.log - dnevniki overjanja.
  3. /var/log/kern.log - Dnevniki jedra.
  4. /var/log/cron.log - dnevniki Crond (opravilo cron).
  5. /var/log/maillog - Dnevniki poštnega strežnika.
  6. /var/log/boot.log - Sistemski dnevnik zagona.
  7. /var/log/mysqld.log - dnevniška datoteka strežnika baz podatkov MySQL.
  8. /var/log/secure - dnevnik overjanja.
  9. /var/log/utmp ali/var/log/wtmp: datoteka zapisov o prijavi.
  10. /var/log/yum.log: Datoteke dnevnika Yum.

22. Pomembna varnostna kopija datoteke

V produkcijskem sistemu je treba varnostno kopirati pomembne datoteke in jih hraniti v varnostnem trezorju, na oddaljenem mestu ali zunaj njega za obnovo po katastrofah.

23. NIC vezava

Obstajajo dve vrsti načinov vezave NIC, ki jih je treba omeniti v vmesniku za vezavo.

  1. mode = 0 - Round Robin
  2. način = 1 - Aktivno in varnostno kopiranje

NIC Bonding nam pomaga, da se izognemo posamezni točki napake. Pri NIC povezovanju povežemo dve ali več omrežnih Ethernet kartic in izdelamo en sam navidezni vmesnik, kjer lahko damo naslov IP za pogovor z drugimi strežniki. Naše omrežje bo na voljo, če ena kartica NIC ne bo delovala ali bo iz kakršnega koli razloga nedostopna.

24. Ohrani/zaženi kot samo za branje

Jedro Linuxa in z njim povezane datoteke so v imeniku/boot, ki je privzeto kot branje-pisanje. Če ga spremenite v samo za branje, zmanjšate tveganje nepooblaščenega spreminjanja kritičnih zagonskih datotek. Če želite to narediti, odprite datoteko “/ etc/fstab”.

# vi /etc/fstab

Na dnu dodajte naslednjo vrstico, jo shranite in zaprite.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

Prosimo, upoštevajte, da morate spremembo ponastaviti na branje in pisanje, če boste v prihodnje morali nadgraditi jedro.

25. Prezri ICMP ali zahtevo za oddajanje

Dodajte naslednjo vrstico v datoteko “/etc/sysctl.conf”, če želite prezreti zahtevo za ping ali oddajanje.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Naložite nove nastavitve ali spremembe, tako da zaženete naslednji ukaz

#sysctl -p

Če ste na zgornjem seznamu zamudili kakšen pomemben namig o varnosti ali utrjevanju ali pa imate na seznamu kakšen drug namig. Spustite svoje komentarje v naše polje za komentarje. TecMint je vedno zainteresiran za prejemanje komentarjev, predlogov in razprav za izboljšave.