Linux sigurnosni vodič. Opasne ranjivosti Linuxa Šifrirajte sistem datoteka u Linuxu za potpuniju sigurnost Linuxa

Na godišnjoj LinuxCon konferenciji 2015. tvorac GNU/Linuks kernela Linus Torvalds iznio je svoje mišljenje o sigurnosti sistema. Naglasio je potrebu da se kompetentnom zaštitom ublaži efekat prisustva određenih grešaka, tako da ako jedna komponenta pokvari, sljedeći sloj pokriva problem.

U ovom članku pokušat ćemo otkriti ovu temu sa praktične tačke gledišta:

7. Instalirajte zaštitne zidove

Nedavno se pojavila nova ranjivost koja omogućava DDoS napade na servere koji koriste Linux. Greška u jezgru sistema pojavila se od verzije 3.6 krajem 2012. godine. Ranjivost omogućava hakerima da ubace viruse u datoteke za preuzimanje, web stranice i razotkriju Tor konekcije, a za hakiranje nije potrebno mnogo truda - metoda IP lažiranja će raditi.

Maksimalna šteta za šifrovane HTTPS ili SSH veze je prekid veze, ali napadač može staviti novi sadržaj, uključujući malver, u nezaštićeni saobraćaj. Za zaštitu od takvih napada prikladan je zaštitni zid.

Blokirajte pristup sa Firewall-om

Firewall je jedan od najvažnijih alata za blokiranje neželjenog dolaznog saobraćaja. Preporučujemo da dozvolite samo promet koji vam je zaista potreban i potpuno blokirate sav drugi promet.

Za filtriranje paketa, većina Linux distribucija ima iptables kontroler. Obično ga koriste napredni korisnici, a za pojednostavljenu konfiguraciju možete koristiti UFW uslužne programe na Debian/Ubuntu ili FirewallD na Fedori.

8. Onemogućite nepotrebne usluge

Stručnjaci sa Univerziteta Virginia preporučuju da isključite sve usluge koje ne koristite. Neki pozadinski procesi su postavljeni da se automatski učitavaju i rade dok se sistem ne isključi. Da biste konfigurirali ove programe, morate provjeriti inicijalizacijske skripte. Usluge se mogu pokrenuti preko inetd ili xinetd.

Ako je vaš sistem konfigurisan preko inetd-a, tada u datoteci /etc/inetd.conf možete urediti listu pozadinskih programa "demona", da biste onemogućili učitavanje servisa, samo stavite znak "#" na početak liniju, pretvarajući ga iz izvršne datoteke u komentar.

Ako sistem koristi xinetd, tada će njegova konfiguracija biti u direktoriju /etc/xinetd.d. Svaka datoteka direktorija definira uslugu koja se može onemogućiti navođenjem klauzule disable = yes, kao u ovom primjeru:

Servisni prst ( socket_type = čekanje toka = nema korisnika = niko server = /usr/sbin/in.fingerd disable = da)
Također je vrijedno provjeriti da li postoje trajni procesi kojima ne upravlja inetd ili xinetd. Možete konfigurirati skripte za pokretanje u direktorijima /etc/init.d ili /etc/inittab. Nakon što su promjene napravljene, pokrenite naredbu pod root računom.

/etc/rc.d/init.d/inet restart

9. Zaštitite server fizički

Nije moguće u potpunosti zaštititi od napada napadača sa fizičkim pristupom serveru. Stoga je neophodno osigurati prostoriju u kojoj se nalazi vaš sistem. Data centri ozbiljno shvataju bezbednost, ograničavajući pristup serverima, instalirajući sigurnosne kamere i postavljajući stalno čuvare.

Da bi ušli u data centar, svi posjetitelji moraju proći određene korake autentifikacije. Također se preporučuje korištenje senzora pokreta u svim dijelovima centra.

10. Zaštitite server od neovlaštenog pristupa

Sistem za neovlašćeni pristup ili IDS, prikuplja podatke o konfiguraciji sistema i datotekama, a zatim upoređuje te podatke sa novim promjenama kako bi utvrdio da li su štetne za sistem.

Na primjer, alati Tripwire i Aide prikupljaju bazu podataka sistemskih datoteka i štite ih skupom ključeva. Psad se koristi za praćenje sumnjivih aktivnosti putem prijavljivanja zaštitnog zida.

Bro je dizajniran da nadgleda mrežu, prati obrasce sumnjivih aktivnosti, prikuplja statistiku, izvršava sistemske komande i generiše upozorenja. RKHunter se može koristiti za zaštitu od virusa, najčešće rootkita. Ovaj uslužni program skenira vaš sistem u odnosu na bazu podataka poznatih ranjivosti i može otkriti nesigurna podešavanja u aplikacijama.

Zaključak

Gore navedeni alati i postavke pomoći će vam da djelimično zaštitite sistem, ali sigurnost ovisi o vašem ponašanju i razumijevanju situacije. Bez pažnje, opreza i stalnog samoučenja, sve zaštitne mjere možda neće raditi.

To se svakako može reći linux više sigurno(zaštićeno) nego Windows. Sigurnost V linux ugrađena, a ne zašrafljena negdje sa strane, kao što je implementirano u Windows-u. Sigurnost sistemima linux pokriva područje od kernela do radne površine, ali postoje šanse da hakeri oštete vaš početni direktorij (/home).

Vaši bajtovi fotografija, kućni video, dokumenti i podaci o kreditnoj kartici ili novčaniku najvredniji su dio informacija na računaru. Naravno, Linux nije podložan svim vrstama internetskih crva i virusa za Windows. Ali napadači mogu pronaći način da pristupe vašim podacima u vašem kućnom direktoriju.

Kada ste pripremili svoj stari računar ili hard disk prije prodaje, formatiranja, mislite li da će to biti dovoljno? Postoji mnogo modernih alata za oporavak podataka. Haker će lako oporaviti vaše podatke sa vašeg tvrdog diska, bez obzira na operativni sistem na kojem ste radili.

Na ovu temu, prisjećam se iskustva jedne kompanije koja je otkupljivala rabljene računare i diskove. U toku svojih aktivnosti donijeli su presudu da 90% prethodnih vlasnika svog kompjutera nije dobro pazilo na čišćenje medija za skladištenje podataka prije prodaje. I izvlačili su vrlo osjetljive bajtove podataka. Čak je i zastrašujuće zamisliti da se negdje u kutijama vašeg tvrdog diska nalaze informacije za ulazak u vašu internet banku ili online novčanik.

Počnite s osnovama sigurnosti Linuxa

Zakoračimo u osnove (), koje će odgovarati gotovo svakom
Linux distribucije.

Šifriranje sistema datoteka u Linuxu za potpuniju sigurnost Linuxa

Prilagođene lozinke neće riješiti problem ako zaista želite da niko ne može pročitati vaš početni direktorij (/home) ili određenu veličinu bajta. Možete to učiniti tako da čak i korisnik s najvišim privilegijama root-a ne može gurnuti nos.

Izbrišite osjetljive datoteke tako da ih niko drugi ne može oporaviti

Ako odlučite da prodate ili donirate svoj računar ili medij za skladištenje, nemojte pretpostavljati da će jednostavno formatiranje trajno izbrisati vaše datoteke. Možete instalirati alat za sigurno brisanje na vaš Linux, koji uključuje srm uslužni program za sigurno brisanje datoteka.

Također, ne zaboravite na zaštitni zid dostupan u Linux kernelu. Sve Linux distribucije uključuju lptables, koji je dio kernela. Lptables vam omogućava filtriranje mrežnih paketa. Naravno, ovaj uslužni program možete konfigurirati u terminalu. Ali ova metoda je izvan moći mnogih, uključujući i mene. Tako da instaliram i konfigurišem lako kao da igram igru.

Kao i svi operativni sistemi, Linux je sklon gomilanju smeća prilikom pokretanja raznih aplikacija. I to nije krivica Linuxa, jer razne aplikacije, kao što su pretraživači, uređivači teksta, pa čak i video plejeri, rade izvan nivoa kernela i akumuliraju privremene datoteke. Možete instalirati BleachBit univerzalni uslužni program za odlaganje smeća.

Anonimno surfanje, skrivanje vašeg IP-a - vrlo važno za sigurnost vašeg identiteta pod Linux OS-om


U zaključku, želim vam reći o anonimnom surfanju webom. Ponekad se desi da je potrebno, kao i ja, kada, krišom od supruge, posećujem sajtove sa erotskim sadržajem. Naravno da sam se šalio.

Napadačima će biti teško doći do vas ako ne mogu odrediti vašu lokaciju. Pokrivamo staze jednostavnim postavljanjem dva uslužna programa koji rade zajedno pod nazivom privoxy i tor.

Po mom mišljenju, pridržavanje i postavljanje svih ovih pravila osigurat će vas i vaš računar za 90%.

P.S. Koristim oblak koji se zove dropbox. U njemu čuvam svoje stare i nove, još neobjavljene članke. Pogodno je imati pristup vašim datotekama s bilo kojeg mjesta u svijetu i na bilo kojem računaru. Kada pišem članke za stranicu u uređivaču teksta, svoje tekstualne dokumente spremam sa lozinkom i tek onda ih postavljam na dropbox server. Nikada ne smijete zanemariti dodatnu sigurnost, koja će vam samo igrati na ruku.

Svi znamo da je Linux operativni sistem mnogo sigurniji od Windowsa zbog svoje arhitekture i posebnog sistema za distribuciju pristupa između korisnika. Ali i programeri su ljudi, koliko god mi to mrzili, i oni griješe. I zbog ovih grešaka nastaju rupe u sistemu kroz koje napadači mogu zaobići sigurnosne sisteme.

Ove greške se nazivaju ranjivosti, mogu se pojaviti u različitim programima, pa čak iu samoj srži sistema, narušavajući njegovu sigurnost. Posljednjih godina popularnost Linuxa je počela rasti i istraživači sigurnosti posvećuju više pažnje ovom sistemu. Otkriva se sve više ranjivosti, a zahvaljujući otvorenom izvornom kodu ispada da ih vrlo brzo popravlja. U ovom članku ćemo pogledati najopasnije Linux ranjivosti koje su otkrivene u posljednjih nekoliko godina.

Prije nego što pređemo na samu listu ranjivosti, važno je razumjeti šta su i šta jesu. Kao što sam rekao, ranjivost je greška u programu koja omogućava korisniku da koristi program na način koji nije namijenio njegov programer.

To može biti nedostatak validacije primljenih podataka, provjera izvora podataka i, što je najzanimljivije, veličina podataka. Najopasnije ranjivosti su one koje omogućavaju izvršavanje proizvoljnog koda. U RAM-u svi podaci imaju određenu veličinu, a program je dizajniran da upisuje u memoriju podatke od korisnika određene veličine. Ako korisnik pošalje više podataka, onda bi trebalo da ispusti grešku.

Ali ako je programer napravio grešku, tada će podaci prepisati programski kod i procesor će pokušati da ih izvrši, tako da nastaju ranjivosti prelivanja bafera.

Takođe, sve ranjivosti se mogu podeliti na lokalne, koje rade samo ako haker ima pristup lokalnom računaru, i na udaljene, kada je dovoljan pristup preko Interneta. A sada pređimo na listu ranjivosti.

1. Prljava KRAVA

Prva na našoj listi biće nova ranjivost koja je otkrivena ove jeseni. Ime Dirty COW je skraćenica za Kopiraj na pisanje. Došlo je do greške u sistemu datoteka tokom kopiranja-upisivanja. Ovo je lokalna ranjivost koja omogućava svakom neprivilegovanom korisniku da dobije pun pristup sistemu.

Ukratko, dva fajla su potrebna da bi se iskoristila ranjivost, u jednu je moguće pisati samo u ime superkorisnika, a druga je za nas. Počinjemo upisivati ​​podatke u našu datoteku i čitati iz superkorisničke datoteke puno puta, nakon određenog vremena će doći trenutak kada se baferi oba fajla pomiješaju i korisnik će moći upisati podatke u datoteku čiji je upis nije mu dostupno, tako da možete sebi dati root prava u sistemu.

Ranjivost je bila u kernelu oko 10 godina, ali je nakon otkrića brzo eliminisana, iako još uvijek postoje milioni Andoid uređaja u kojima kernel nije ažuriran i ne razmišlja i gdje se ova ranjivost može iskoristiti. Ranjivost je kodirana kao CVE-2016-5195.

2. Glibc ranjivost

Ranjivost je dobila kod CVE-2015-7547. Ovo je bila jedna od ranjivosti o kojima se najviše raspravljalo među projektima otvorenog koda. U februaru 2016. godine ispostavilo se da Glibc biblioteka ima veoma ozbiljnu ranjivost koja omogućava napadaču da izvrši svoj kod na udaljenom sistemu.

Važno je napomenuti da je Glibc implementacija standardne biblioteke C i C++, koja se koristi u većini Linux programa, uključujući servise i programske jezike kao što su PHP, Python, Perl.

Došlo je do greške u kodu za raščlanjivanje odgovora DNS servera. Dakle, ranjivost bi mogli da iskoriste hakeri čijem su DNS-u pristupile ranjive mašine, kao i da izvedu MITM napad. Ali ranjivost je dala potpunu kontrolu nad sistemom

Ranjivost je u biblioteci od 2008. godine, ali nakon otkrića, zakrpe su objavljene prilično brzo.

3. Heartbleed

2014. godine otkrivena je jedna od najozbiljnijih ranjivosti u smislu razmjera i posljedica. Prouzrokovana je greškom u modulu s mrtvim srcem OpenSSL-a, pa otuda i naziv Heartbleed. Ranjivost je omogućila napadačima da dobiju direktan pristup do 64 kilobajta RAM-a servera, napad se mogao ponavljati dok se sva memorija ne pročita.

Uprkos činjenici da je popravka objavljena vrlo brzo, mnoge web lokacije i aplikacije su pogođene. Zapravo, sve stranice koje koriste HTTPS za osiguranje prometa bile su ranjive. Napadači su mogli dobiti korisničke lozinke, njihove lične podatke i sve što je bilo u memoriji u trenutku napada. Ranjivost je dobila kod CVE-2014-0160.

4.Stagefright

Ako je ranjivost dobila kodno ime, to definitivno znači da zaslužuje pažnju. Ranjivost Stagerfight nije izuzetak. Istina, ovo zapravo nije problem s Linuxom. Stagefright je biblioteka za rukovanje multimedijalnim formatima u Androidu.

Implementiran je u C++, što znači da zaobilazi sve Java sigurnosne mehanizme. U 2015. godini otkrivena je čitava grupa ranjivosti koje su omogućavale daljinsko izvršavanje proizvoljnog koda na sistemu. To su CVE-2015-1538, CVE-2015-1539, CVE-2015-3824, CVE-2015-3826, CVE-2015-3827, CVE-2015-3828 i CVE-2015-3829.

Napadaču je bilo dovoljno da na ranjivi pametni telefon pošalje MMS sa posebno modifikovanim medijskim fajlom i dobio je potpunu kontrolu nad uređajem uz mogućnost pisanja i čitanja podataka sa memorijske kartice. Ranjivost je otklonjena od strane Android programera, ali milioni uređaja i dalje ostaju ranjivi.

5. Ranjivost Kernel Zero Day

Ovo je lokalna ranjivost koja vam omogućava da podignete trenutnog korisnika na root zbog greške u sistemu za rad sa kriptografskim podacima kernela koji su pohranjeni u memoriji. Otkriven je u februaru 2016. i pokriva sve kernelove počevši od 3.8, što znači da je ranjivost postojala 4 godine.

Grešku su mogli iskoristiti hakeri ili zlonamjerni softver da povećaju svoj autoritet u sistemu, ali je brzo ispravljena.

6. Ranjivost u MySQL-u

Ranjivost je bila kodirana CVE-2016-6662 i uticala je na sve dostupne verzije servera MySQL baze podataka (5.7.15, 5.6.33 i 5.5.52), Oracle baze podataka i klonove MariaDB i PerconaDB.

Napadači su mogli dobiti potpuni pristup sistemu putem SQL zahtjeva, prenijet je kod koji im je omogućio zamjenu my.conf svojom verzijom i ponovno pokretanje servera. Također je bilo moguće izvršiti zlonamjerni kod sa pravima superkorisnika.

MariaDB i PerconaDB rješenja su dosta brzo objavila zakrpe, Oracle je reagirao, ali mnogo kasnije.

7 Shellshock

Ova ranjivost je otkrivena 2014. prije nego što je trajala 22 godine. Dodijeljena joj je šifra CVE-2014-6271 i kodno ime Shellshock. Ova ranjivost je uporediva po opasnosti sa već poznatim Heartbleedom. Uzrokuje ga greška u interpreteru komandi Bash, koja je zadana postavka u većini Linux distribucija.

Bash vam omogućava da deklarirate varijable okruženja bez provjere autentičnosti korisnika, a zajedno možete izvršiti bilo koju komandu u njima. Ovo je posebno opasno u CGI skriptama, koje podržava većina sajtova. Ranjivi nisu samo serveri, već i lični računari korisnika, ruteri i drugi uređaji. Zapravo, napadač može daljinski izvršiti bilo koju naredbu, ovo je punopravni daljinski upravljač bez autentifikacije.

Na ranjivosti su uticale sve verzije Bash-a, uključujući i 4.3, međutim, nakon otkrivanja problema, programeri su vrlo brzo objavili ispravku.

8.Quadrooter

Ovo je čitav niz propusta u Androidu, koji je otkriven u avgustu 2016. Oni su dobili kodove CVE-2016-5340, CVE-2016-2059, CVE-2016-2504, CVE-2016-2503. Više od 900 miliona Android uređaja je pogođeno greškom. Sve ranjivosti su pronađene u Qualcomm-ovom ARM procesorskom drajveru i sve se one mogu koristiti za dobijanje root pristupa uređaju.

Kao i DirtyCOW, ovdje nisu potrebne nikakve dozvole, samo instalirajte zlonamjernu aplikaciju i ona će moći dobiti sve vaše podatke i prenijeti ih napadaču.

9. Ranjivost u OpenJDK

Ovo je veoma ozbiljna ranjivost Linux 2016 u OpenJDK Java Machine sa CVE-2016-0636 kodom koja utiče na sve korisnike koji koriste Oracle Java SE 7 Update 97 i 8 Update 73 i 74 na Windows, Solaris, Linux i Mac OS X. Ova ranjivost dozvoljava napadaču da izvrši proizvoljan kod izvan Java mašine ako otvorite posebnu stranicu u pretraživaču sa ranjivom verzijom Jave.

Ovo je omogućilo napadaču da dobije pristup vašim lozinkama, ličnim podacima, kao i da pokrene programe na vašem računaru. U svim verzijama Jave, greška je vrlo brzo otklonjena, postoji od 2013. godine.

10. HTTP/2 ranjivost

Ovo je niz ranjivosti koje su otkrivene 2016. godine u HTTP/2 protokolu. Dobili su kodove CVE-2015-8659, CVE-2016-0150, CVE-2016-1546, CVE-2016-2525, CVE-2016-1544. Sve implementacije ovog protokola u Apache, Nginx Microsoft, Jetty i nghttp2 bile su podložne ranjivostima.

Svi oni dozvoljavaju napadaču da jako uspori web server i izvrši napad uskraćivanjem usluge. Na primjer, jedna od grešaka je rezultirala mogućnošću slanja male poruke, koja je na serveru raspakirana u gigabajte. Greška je vrlo brzo otklonjena i stoga nije izazvala veliku buku u zajednici.

Jeste li sigurni?

U ovom članku smo pregledali najopasnije ranjivosti Linuxa iz 2016., 2015. i 2014. godine. Većina njih može uzrokovati ozbiljna oštećenja sistema ako se ne ispravi na vrijeme. Zahvaljujući otvorenom izvornom kodu, takve ranjivosti Linuxa se efikasno otkrivaju i brzo popravljaju. Samo ne zaboravite ažurirati svoj sistem. Problem ostaje samo sa Androidom. Neki uređaji više ne primaju ažuriranja i još uvijek nema rješenja za ovaj problem.


Mnogi korisnici smatraju Ubuntu pop i Ubuntu Server neozbiljnim. Mnogi ljudi zaboravljaju da je Ubuntu Server podržan 5 godina, a otac Debiana 5.0 bio je na tržištu 3 godine - od 2009. do 2012. godine.

Što se tiče cijena podrške – u poređenju sa Red Hatom, za Ubuntu Server se može i treba reći – dobili ste ga besplatno, čak i ako naručite podršku 24 sata dnevno 24x7x365.

Pogledajte koja su sigurnosna rješenja implementirana u sve verzije Ubuntua i učinite ga sigurnim i pouzdanim.

Mogućnosti

Matrica sigurnosnih mogućnosti

Prilika 8.04LTS(Hardy Heron) 10.04LTS(Lucidni ris) 11.04 (Natty Narwhal) 11.10 (Oneiric Ocelot) 12.04LTS(precizni pangolin) 12.10 (kvantalni kecal)
Nema otvorenih portova politika politika politika politika politika politika
Heš lozinke md5 sha512 sha512 sha512 sha512 sha512
SYN kolačići -- kernel & sysctl kernel & sysctl kernel & sysctl kernel & sysctl kernel & sysctl
Mogućnosti sistema datoteka -- kernel kernel kernel kernel kernel
Podesivi zaštitni zid ufw ufw ufw ufw ufw ufw
PR_SET_SECCOMP kernel kernel kernel kernel kernel kernel
AppArmor 2.1 2.5 2.6.1 2.7.0~beta1 2.7.0 2.7.0
SELinux univerzum univerzum univerzum univerzum univerzum univerzum
SMACK -- kernel kernel kernel kernel kernel
Šifrovani LVM alt installer alt installer alt installer alt installer alt installer alt installer
eCryptfs -- ~/Private ili ~, nazivi datoteka ~/Private ili ~, nazivi datoteka ~/Private ili ~, nazivi datoteka ~/Private ili ~, nazivi datoteka ~/Private ili ~, nazivi datoteka
Zaštita steka gcc patch gcc patch gcc patch gcc patch gcc patch gcc patch
Zaštita gomile glibc glibc glibc glibc glibc glibc
zamućeni pokazivač glibc glibc glibc glibc glibc glibc
ASLR stack kernel kernel kernel kernel kernel kernel
libs/mmap ASLR kernel kernel kernel kernel kernel kernel
Exec ASLR kernel (-mm zakrpa) kernel kernel kernel kernel kernel
brk ASLR kernel (exec ASLR) kernel kernel kernel kernel kernel
VDSO ASLR kernel kernel kernel kernel kernel kernel
Zgrada sa PIE -- lista paketa lista paketa lista paketa lista paketa lista paketa
-- gcc patch gcc patch gcc patch gcc patch gcc patch
Montaža sa RELRO -- gcc patch gcc patch gcc patch gcc patch gcc patch
Zgrada sa BIND_NOW -- lista paketa lista paketa lista paketa lista paketa lista paketa
Neizvršna memorija Samo za PAE PAE, ia32 parcijalna-NX-emulacija PAE, ia32 parcijalna-NX-emulacija PAE, ia32 parcijalna-NX-emulacija PAE, ia32 parcijalna-NX-emulacija
Zaštita /proc/$pid/maps kernel & sysctl kernel kernel kernel kernel kernel
Ograničenja simboličke veze -- -- kernel kernel kernel kernel
Ograničenja tvrdih veza -- -- kernel kernel kernel kernel
ptrace scope -- -- kernel kernel kernel kernel
0-adresna zaštita kernel & sysctl kernel kernel kernel kernel kernel
Zaštita /dev/mem kernel (-mm zakrpa) kernel kernel kernel kernel kernel
Onemogućeno /dev/kmem kernel (-mm zakrpa) kernel kernel kernel kernel kernel
Blokiranje učitavanja modula ispusti CAP_SYS_MODULES sysctl sysctl sysctl sysctl sysctl
kernel kernel kernel kernel kernel kernel
Zaštita steka kernela -- kernel kernel kernel kernel kernel
RO/NX modul -- -- kernel kernel kernel kernel
-- -- kernel kernel kernel kernel
-- -- kernel kernel kernel kernel
Filtriranje sistemskih poziva -- -- -- kernel kernel kernel

Nema otvorenih portova

Zadana instalacija Ubuntua nema otvorene portove dostupne izvan mreže. Izuzetak od ovog pravila je samo za usluge mrežne infrastrukture kao što su DHCP klijent i mDNS (Avahi/ZeroConf).

Kada je Ubuntu Server instaliran, administrator može instalirati dodatne mrežne usluge kao što je Apache web server. Ali podrazumevano, na sveže instaliranom sistemu, ako uradite netstat -an --inet | grep SLUŠAJ | grep -v 127.0.0.1 , tada možete lako provjeriti da Ubuntu ne otvara nepotrebno portove za pristup iz mreže sistemu.

Heš lozinke

Sistemska lozinka koja se koristi za prijavu na Ubuntu pohranjena je u /etc/shadow. Davno, heš DES lozinke je bio pohranjen u /etc/passwd. Ali moderni Linuxovi već duže vrijeme pohranjuju hešove u /etc/shadow i isprva je korištena kripta kripta 1 zasoljenog MD5. Pošto su iste lozinke imale iste hešove bez upotrebe soli, uvođenje soli je poboljšalo sigurnost i otežalo probijanje lozinki mnogih korisnika sistema.

Sada se MD5 smatra nepouzdanim i sa rastom računarskih mogućnosti računara, sa Ubuntu 8.10, koristi se SHA-512 heš sa soli (slane SHA-512 bazirane šifre heš kripte id 6). To čini brute-force brute-force hakovanje nevjerovatno teškim i dugotrajnim.

Pogledajte mancrypt za detalje.

Koristite test-glibc-security.py za testove.

SYN kolačići

Kada je sistem preplavljen novim mrežnim vezama, mehanizam SYN kolačića pomaže u smanjenju štete od SYN flood napada.

Mogućnosti sistema datoteka

Potreba za setuid aplikacijama koje se pokreću s većim privilegijama od one koja ih je pokrenula može se smanjiti korištenjem funkcija sistema datoteka kao što je xattr. Takve mogućnosti smanjuju rizik od zloupotrebe potencijalno opasnih setuid aplikacija.

Linux kernel održava podršku i postoji libcap2-bin komplet alata za korištenje mogućnosti datoteka kao što je xattr kako bi se poboljšala sigurnost setuid aplikacija.

Koristite test-kernel-security.py za testove.

Podesivi zaštitni zid

ufw je iptables front-end koji se instalira i koristi u Ubuntu-u, ali ga korisnik mora omogućiti. UFW ima za cilj da pruži interfejs koji je jednostavan za korišćenje za ljude koji nisu upoznati sa konceptima iptables firewall-a, lancima i tabelama.

Istovremeno, UFW pojednostavljuje složene iptables komande kako bi pomogao administratoru koji zna šta radi.

UFW je pomoćnik i osnova za grafičke frontendove.

Koristite ufw testove za testove.

PR_SET_SECCOMP

AppArmor

SELinux

SELinux je obavezni sistem kontrole pristupa zasnovan na konceptu inode - inode sistema datoteka.

Instaliranje selinux paketa će izvršiti potrebne promjene i podešavanja tokom pokretanja računara.

Koristite test-kernel-security.py za testove.

SMACK

SMACK je fleksibilan obavezni sistem kontrole pristupa baziran na konceptu inode – deskriptor indeksa fajl sistema.

Koristite test-kernel-security.py za testove.

Šifrovanje sistema datoteka

LVM enkripcija

Korisnici koji koriste alternativni instalater mogu instalirati Ubuntu na šifrirani LVM (Upravljanje logičkim volumenom - Upravljač logičkim volumenom), koji će šifrirati sve particije, uključujući swap particiju.

eCryptfs

Šifrovani folderi su prvi put implementirani u Ubuntu 8.10 kao sigurno mesto za skladištenje osetljivih korisničkih informacija.

Alternativni i Server Disk Installer vam omogućava da postavite šifrirane fascikle za prvog korisnika.

U Ubuntu 9.04, podrška za šifriranje foldera je proširena kako bi se omogućilo korisniku da šifrira cijeli kućni folder. Šifrovanje matične fascikle podržano je u alternativnom instalateru i instalateru za radnu površinu putem opcije user-setup/encrypt-home=true.

Jačanje sigurnosti korisničkog prostora

Mnoge sigurnosne karakteristike se implementiraju putem kompilacijskih zastavica prilikom izrade softverskih paketa i kernela.

Zaštita steka

Oznaka gcc -fstack-protector pruža zaštitu od prepunjavanja steka postavljanjem malog slučajnog broja kao tokena. Ova tehnika otežava prelijevanje steka za razne eksploatacije.

Mali broj programa ne radi dobro ako su napravljeni sa ovom opcijom i imaju onemogućen -fstack-protector za njih.

Koristite test-gcc-security.py za testove.

Zaštita gomile

Zaštita hrpe GNU C biblioteke (automatski ptmalloc i ručno) pruža zaštitu od oštećene liste/unlink/double-free/overflow u upravitelju memorije glibc.

Ovo sprječava izvršavanje proizvoljnog koda kroz prelijevanje memorije hrpe, čime se kvari struktura područja hrpe.

Ova zaštita se vremenom razvijala, dodajući sve više i više opcija zaštite. U svom trenutnom stanju, glibc 2.10 se uspješno odupire čak i suptilnim uvjetima napada.

zamućeni pokazivač

Neki glibc pokazivači su zamagljeni putem makronaredbi PTR_MANGLE/PTR_UNMANGLE interno u glibc-u, sprečavajući da se pokazivači prepisuju u toku izvršavanja.

Koristite test-glibc-security.py testove.

Nasumično postavljanje u adresni prostor. Randomizacija rasporeda adresnog prostora (ASLR)

ASLR je implementiran u kernelu i ELF loader postavlja najvažnije strukture na nasumične adrese: stek, hrpa, dijeljene biblioteke i još mnogo toga.

Ovo otežava predviđanje adresa kada napadač pokuša da iskoristi eksploatacije.

ASLR se mijenja globalno putem /proc/sys/kernel/randomize_va_space. Prije Ubuntu 8.10, vrijednost je bila "1" (omogućeno). U kasnijim izdanjima koja uključuju brk ASLR, vrijednost je postavljena na "2" (omogućeno sa brk ASLR).

ASLR stack

Rezultati svakog izvršavanja programa se postavljaju na različita mesta na steku. Teško je pronaći u memoriji i napasti program dodavanjem zlonamjernog tereta.

libs/mmap ASLR

Biblioteke se dinamički učitavaju na različite memorijske lokacije, što otežava napadaču da pronađe povratnu tačku.

Zaštita je dostupna od kernela 2.6.15 (Ubuntu 6.06).

Exec ASLR

Programi napravljeni sa opcijom "-fPIE -pie" učitavaju se na različite lokacije u memoriji. Ovo otežava napad ili skok na adresu da bi se izvršio napad modifikacije memorije.

Zaštita je dostupna od kernela 2.6.25 (Ubuntu 8.04 LTS).

brk ASLR

Kao i exec ASLR, brk ASLR prilagođava memorijske adrese između exec i brk za male zahtjeve za dodjelu memorije. U kernelu 2.6.26 (Ubuntu 8.10) dodata je nasumična pomeranja brk exec memorije.

VDSO ASLR

Svaki put kada se program pokrene, on stavlja rezultate u drugi vdso. Prvo se pojavio u kernelu 2.6.18 (x86, PPC) i 2.6.22 (x86_64), ali nije uključen u Ubuntu 6.10 zbog COMPAT_VDSO, koji je uklonjen u Ubuntu 8.04 LTS.

Štiti od jump-in-syscall napada.

Glibc 2.6 podržava samo x86. glibc 2.7 (Ubuntu 8.04 LTS) već podržava x86_64 ASLR vdso.

Oni kojima je potreban prastari statički pre-libc6 vdso mogu koristiti "vdso=2" kao parametar kernela i ponovo dobiti COMPAT_VDSO.

Zgrada sa PIE

Svi programi koji su napravljeni sa opcijom Position Independent Executables (PIE) "-fPIE -pie" mogu iskoristiti prednosti exec ASLR zaštite.

Ovo štiti od napada "povratka na tekst" i čini beskorisnim konvencionalne napade modifikacije memorije.

Zbog PIE, postoji veliki pad performansi (5-10%) na arhitekturama sa malim brojem registara opšte namene (kao što je x86).

Stoga se PIE koristi za mali broj sigurnosnih kritičnih paketa.

PIE za x86_64 nema problema sa degradacijom performansi, tako da se koristi za sve pakete, ali treba bolje testiranje.

Plasticna kesa 8.04LTS 9.04 9.10 10.04LTS 10.10 11.04 11.10
openssh Da Da Da Da Da Da Da
apache2 -- Da Da Da Da Da Da
bind9 -- Da Da Da Da Da Da
openldap -- Da Da Da Da Da Da
postfix -- Da Da Da Da Da Da
čaše -- Da Da Da Da Da Da
postgresql-8.3 -- Da Da Da Da Da Da
samba -- Da Da Da Da Da Da
golubarnik -- Da Da Da Da Da Da
dhcp3 -- Da Da Da Da Da Da
ntp -- -- Da Da Da Da Da
amavisd-new -- -- Da Da Da Da Da
lignje -- -- Da Da Da Da Da
cyrus-sasl2 -- -- Da Da Da Da Da
exim4 -- -- Da Da Da Da Da
nagios3 -- -- Da Da Da Da Da
nagios-plugins -- -- Da Da Da Da Da
xinetd -- -- Da Da Da Da Da
ipsec-alati -- -- Da Da Da Da Da
mysql-dfsg-5.1 -- -- Da Da Da Da Da
evince -- -- -- Da Da Da Da
firefox -- -- -- Da Da Da Da
gnome-control-center -- -- -- -- -- Da Da
tiff -- -- -- -- -- Da Da
totem -- -- -- -- -- Da Da
qemu-kvm -- -- -- -- -- -- Da
pidgin -- -- -- -- -- -- Da

Zgrada sa Fortify Source

Programi napravljeni sa "-D_FORTIFY_SOURCE=2" (i -O1 ili novijim) uključuju nekoliko zaštita u vremenu prevođenja i izvođenja u glibc-u:

  • pozivi "sprintf", "strcpy" sa svojim nedefinisanim granicama se zamenjuju srodnim funkcijama sa ograničenim N, kada je veličina bafera poznata unapred. Ovo štiti od preopterećenja memorije.
  • zaustavljanje napada putem formata stringa "%n" kada je string u memorijskom segmentu sa pristupom za pisanje.
  • zahtijevaju provjeru povratnih kodova najvažnijih funkcija i argumenata (na primjer, za sistem, pisanje, otvaranje).
  • zahtijevaju eksplicitnu masku prilikom kreiranja datoteke.

Montaža sa RELRO

Pooštravanje za ELF programe za borbu protiv prepisivanja memorije pokretačkog programa. Smanjuje mogućnost napada u stilu GOT-prepisivanja.

Koristite test-gcc-security.py testove.

Zgrada sa BIND_NOW

Označava ELF programe da dozvoljavaju dinamičke znakove pri pokretanju, umjesto na zahtjev, također poznato kao "neposredno povezivanje".

Ovo čini GOT potpuno samo za čitanje, u kombinaciji sa opcijom RELRO.

Koristite test-built-binaries.py testove.

Neizvršna memorija

Moderni procesori štite područja memorije podataka (hip, stek) od izvršavanja koda.

Ova tehnologija je poznata kao Non-eXecute (NX) ili eXecute-Disable (XD). Zaštita smanjuje mogućnost napadača da postavi proizvoljan kod.

Za zaštitu je potreban "PAE", koji takođe omogućava adresiranje iznad 3 GB RAM-a. 64-bitni i 32-bitni -server i -generic-pae kerneli su već izgrađeni sa PAE.

Počevši od Ubuntu 9.10, zaštita je djelimično emulirana na 32-bitnim kernelima za procesore koji ne podržavaju NX hardver.

Nakon učitavanja, možete vidjeti stepen podrške za NX zaštitu:

  • Hardver: [ 0,000000] NX (Execute Disable) zaštita: aktivna
  • emulacija:
    [ 0,000000] Upotreba ograničenja x86 segmenta za približnu NX zaštitu

Ako ne vidite nikakvo spominjanje NX-a, provjerite postavke BIOS-a. Od Ubuntu 11.04 kernel ignoriše BIOS postavke za NX.

Ubuntu 9.04 i ranije
CPU podržava NX CPU ne podržava NX
NX omogućen u BIOS-u NX je onemogućen u BIOS-u
i386 -386, -generički kernel (ne-PAE) nx nije podržan nx nije podržan nx nije podržan
-kernel servera (PAE) real nx nx nije podržan nx nije podržan
amd64 bilo koje jezgro (PAE) real nx nx nije podržan nx nije podržan

Koristite test-kernel-security.py testove.

Zaštita /proc/$pid/maps

Kada je ASLR pokrenut, trenutne mape memorije procesa postaju vrlo vrijedne za napadača. Datoteku mape može čitati samo sam proces i vlasnik procesa.

Dostupno od kernela 2.6.22.

Koristite test-kernel-security.py testove.

Ograničenja simboličke veze

Najčešći način da se iskoristi ovaj nedostatak je prisiliti root da koristi simboličku vezu koju je kreirao napadač kako bi izvršio zlonamjernu radnju kao root.

Od Ubuntu 10.10, simboličke veze u direktorijumima kao što je /tmp ne mogu se preći osim ako "sljedbenik" i vlasnik direktorija nisu isti kao i vlasnik simbolične veze.

Ovaj mehanizam kontroliše Yama /proc/sys/kernel/yama/protected_sticky_symlinks mehanizam. Yamu je razvio Canonical.

Koristite test-kernel-security.py testove.

Ograničenja tvrdih veza

Ako su direktoriji /etc/ i /home/ na istoj particiji, običan korisnik može kreirati čvrstu vezu do hash datoteke lozinke /etc/shadow u svom početnom folderu. Naravno, ako bilo koji korisnik ne može čitati ili pisati određenu datoteku, tvrdi link na tu datoteku će imati iste dozvole i stoga neće biti dostupan ni tom korisniku. Međutim, koristeći čvrste veze, napadač može "provući" takvu datoteku do aplikacije koja ima prava da joj pristupi.

Yama vam omogućava da blokirate ovaj napad sprečavanjem stvaranja tvrdih veza od strane korisnika koji nemaju prava pristupa izvornim datotekama.

Ponašanje kontroliše /proc/sys/kernel/yama/protected_nonaccess_hardlinks Yama.

ptrace scope

Bez upotrebe odgovarajuće Yama zaštite, svaki proces sa privilegijom CAP_SYS_PTRACE može pristupiti memoriji svih procesa sa istim UID-om. Kada se koristi Yama, moguće je ograničiti opseg pristupa samo na memoriju koju posjeduju potomci takvog proces.

U Ubuntu 10.10 i novijim verzijama, korisnici ne mogu otklanjati greške u procesima pomoću ptracea osim ako nisu njegovi potomci.

Ponašanje kontrolira /proc/sys/kernel/yama/ptrace_scope Yama.

Koristite test-kernel-security.py testove.

Stvrdnjavanje jezgra

Omogućena odbrana kernela kako bi se otežali napadi.

0-adresna zaštita

Budući da kernel i korisnički prostor dijele adrese virtuelne memorije, "NULL" memorija mora biti zaštićena i "korisnička" memorija ne može početi na adresi 0, čime se sprječava dereferenciranje adresa kernela - napad "NULL dereferenciranja".

Zaštita je dostupna od kernela 2.6.22 preko sysctl parametra "mmap_min_addr". Od Ubuntu 9.04 mmap_min_addr je ugrađen u kernel - adresa 64k na x86, 32k na ARM-u.

Koristite test-kernel-security.py testove.

Zaštita /dev/mem

Neke aplikacije, kao što je Xorg, zahtijevaju direktan pristup fizičkoj memoriji u korisničkom prostoru. Poseban /dev/mem fajl omogućava ovaj pristup.

U prošlosti je bilo moguće pregledati i modificirati memoriju kernela putem ove datoteke ako je napadač dobio root pristup.

Opcija CONFIG_STRICT_DEVMEM je uvedena da blokira takve pokušaje (prvobitno se opcija zvala CONFIG_NONPROMISC_DEVMEM).

Koristite test-kernel-security.py testove.

Onemogućeno /dev/kmem

Za modernog korisnika, /dev/kmem nije relevantan, jer su ga napadači uglavnom koristili za preuzimanje rootkita.

CONFIG_DEVKMEM je sada postavljen na "n".

Datoteka /dev/kmem postoji u izdanjima od Ubuntu 8.04 LTS do Ubuntu 9.04, ali nije povezana ni sa čim u kernelu i ne koristi se.

Koristite test-kernel-security.py testove.

Blokiranje učitavanja modula

U Ubuntu 8.04 LTS i ranijim verzijama, bilo je moguće ukloniti funkciju CAP_SYS_MODULES i tako spriječiti učitavanje novih modula kernela.

Ovo je bio još jedan sloj zaštite, kako se ne bi preuzimali rootkiti na početku kompromitovanog sistema.

U kernelu 2.6.25 (Ubuntu 8.10) ova funkcionalnost je nestala. Od Ubuntu 9.10 sada je moguće ponovo onemogućiti module postavljanjem /proc/sys/kernel/modules_disabled na "1".

Koristite test-kernel-security.py testove.

Odjeljak podataka samo za čitanje

Označavanje odjeljka podataka kernela kao samo za čitanje osigurava da su promjene blokirane. Ovo pomaže u zaštiti od nekih rootkita. Omogućeno preko opcije CONFIG_DEBUG_RODATA.

Koristite test-kernel-security.py testove.

Zaštita steka kernela

Osim što štiti ELF programe u korisničkom prostoru, kernel može zaštititi svoj interni stek preko opcije CONFIG_CC_STACKPROTECTOR.

Koristite test-kernel-security.py testove.

RO/NX modul

Ova funkcija proširuje CONFIG_DEBUG_RODATA kako bi uključila ograničenja na učitane module kernela. Ovo pomaže da se oduprete eksploataciji. Omogućeno preko CONFIG_DEBUG_MODULE_RONX parametra.

Koristite test-kernel-security.py testove.

Ograničenje prikaza adrese kernela

Kada napadači pokušaju da razviju eksploataciju koja radi svuda koristeći ranjivosti kernela, moraju znati lokaciju unutrašnjih struktura kernela.

Adrese kernela, kao važne informacije, su nedostupne običnim korisnicima.

Počevši od Ubuntu 11.04, /proc/sys/kernel/kptr_restrict je postavljen na "1" i blokira curenje informacija o adresi kernela.

Također, root-u se prave različite datoteke i direktoriji samo za čitanje.
/boot/vmlinuz*, /boot/System.map*, /sys/kernel/debug/, /proc/slabinfo

Koristite test-kernel-security.py testove.

Crna lista rijetkih protokola

Obično kernel dozvoljava da se svi mrežni protokoli automatski učitavaju na zahtjev preko MODULE_ALIAS_NETPROTO(PF_...) makronaredbi.

Budući da su mnogi od ovih protokola zastarjeli, rijetki i od male koristi za prosječnog korisnika Ubuntua, te mogu sadržavati nepoznate ranjivosti, stavljeni su na crnu listu od Ubuntu 11.04.

Na crnoj listi: ax25, netrom, x25, rose, decnet, econet, rds i af_802154.

Ako je potreban bilo koji od ovih protokola, oni se mogu učitati putem modprobe-a ili uređivanjem /etc/modprobe.d/blacklist-rare-network.conf.

Koristite test-kernel-security.py testove.

Filtriranje sistemskih poziva

Programi mogu filtrirati pozive kernela koristeći seccomp_filter.

To se radi u kontejnerima ili sandboxovima kako bi se dodatno ograničio potencijalno nepouzdani softver.

Koristite test-kernel-security.py testove.

Ishod

Nakon čitanja, to je jasno Canonical ozbiljno shvata Ubuntu bezbednost. Dva projekta, AppArmor i Yama, dugo su povezana s Ubuntuom i pomažu u poboljšanju sigurnosti. Ubuntu, po defaultu, ne otvara nepotrebne portove-vrata na mreži i ne čeka avanturističke konekcije na svoju glavu. AppArmor profili su kreirani za ključne programe koji rade sa mrežom, koji drže programe pod kontrolom.

Vaš računar će biti bezbedan uz Ubuntu!

Instalacija i konfiguracija administrativnih alata, konfiguracija mreže

Nakon što smo instalirali osnovni operativni sistem ubuntu14.04 iz minimalne distribucije, prva stvar koju treba razmotriti je kako njime udobno upravljati. U osnovi, ssh/telnet se koristi za konfigurisanje i upravljanje *nix-baziranim serverima, ali nedavno su se web-bazirani alati također pojavili sasvim prikladni za ovo. Koristim besplatna rješenja webmin I Ajenti. Oba ova panela zaslužuju pažnju, a uprkos tome što mogu sve pojedinačno, svaki od njih je za nešto bolji, pa je bolje imati oba. Treba napomenuti da se na serverima borbene proizvodnje takva rješenja ne instaliraju na osnovu sigurnosti. Ipak, što je više kontrolnih sistema, veća je vjerovatnoća da će se u njima pronaći ranjivost. Stoga, ako su vaši sigurnosni zahtjevi na nivou "paranoje", onda samo prihvatite činjenicu da ćete morati raditi sa serverom samo preko ssh-a (preko konzole).

podešavanje mreže u ubuntu 14.04

Da biste komunicirali sa našim serverom preko mreže, prvo ga trebate konfigurirati. Podrazumevano, tokom instalacije, mreža je automatski konfigurisana, a ako je instalater pronašao DHCP server na mreži, onda je najverovatnije već konfigurisao sve po potrebi. Ako na mreži nema DHCP servera, onda je instalater i dalje sve konfigurirao na osnovu anketiranja rutera na koji je mrežna kartica povezana. Da biste vidjeli kako je mreža trenutno konfigurirana, samo upišite u terminal:

Šta vidimo ovde:

Imamo dva mrežna sučelja eth0 i lo gdje je lo “loopback interfejs” i eth0 je naziv naše mrežne kartice, a ako je lo nepromijenjen mrežni interfejs, onda se svi ostali interfejsi mogu razlikovati po imenu. Ako su u sistemskoj jedinici instalirane dvije mrežne kartice, tada će njihova sučelja najvjerovatnije izgledati kao eth0 i eth1 itd. Izgled imena sučelja ovisi o vrsti mrežne kartice, na primjer, ako mrežna kartica radi koristeći WiFi protokol, tada će najvjerovatnije imati ime wlan0.

Da biste konfigurirali mrežu, uredite sljedeću datoteku:

sudo nano /etc/network/interfaces

Dovedemo to u ovaj oblik:

iface eth0 inet static
adresa 192.168.0.184
mrežna maska ​​255.255.255.0
gateway 192.168.0.1
auto eth0
dns-nameservers 8.8.8.8 8.8.4.4

gdje: iface eth0 inet static- označava da je interfejs (iface eth0) u opsegu IPv4 (inet) adresa sa statičkim IP-om (statičkim);
adresa 192.168.0.184- označava da je IP adresa (adresa) naše mrežne kartice 192.168.0.184;
mrežna maska ​​255.255.255.0- označava da je naša podmrežna maska ​​(netmask) 255.255.255.0;
gateway 192.168.0.1- default gateway adresa 192.168.0.254;
auto eth0- ukazuje sistemu da eth0 interfejs treba da bude automatski omogućen kada se sistem pokrene sa gore navedenim parametrima.
eth0— naziv povezanog interfejsa. Lista interfejsa se može videti upisivanjem ifconfig
dns-nameservers- DNS serveri se pišu sa razmakom.

Kao što vidite u mom slučaju, odlučio sam da postavim statički IP 192.168.0.184

ponovo pokrenite server sa naredbom

Pingujemo naš server sa mreže i uvjeravamo se da je vidljiv. Sada je vrijeme da uspostavimo vezu s njim preko SSH-a, za ovo ćemo zapravo instalirati ssh server:

sudo apt-get install ssh

Sada se na naš server možete povezati preko ssh-a preko programa putty, na primjer, sada možete unositi komande ne ručno, već kopiranjem i lijepljenjem potrebnih linija u ssh klijent, jer će to u budućnosti iznenađujuće olakšati konfiguraciju, kao uskoro ćete se i sami uvjeriti:

SVE NAREDBE ISPOD OVE REDKE UNOSE SE U IME SUPERKORISNIKA, a da biste ušli u način rada superkorisnika potrebno je upisati:

Instaliranje webmin

echo "deb https://download.webmin.com/download/repository sarge contrib" >> /etc/apt/sources.list echo "deb https://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib" >> /etc/apt/sources.list wget https://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc apt-get update apt-get install -y webmin

echo "deb https://download.webmin.com/download/repository sarge doprinos">>

echo "deb https://webmin.mirror.somersettechsolutions.co.uk/repository sarge doprinos">> /etc/apt/sources. lista

wgethttps : //www.webmin.com/jcameron-key.asc

apt - ključ dodati jcameron - ključ . asc

apt-dobi ažuriranje

apt - get install - y webmin

Sve! 6 uzastopno unesenih naredbi i webmin je instaliran i konfiguriran. Sada možete proći kroz pretraživač na adresi:

https://192.168.0.184:10000

Podrazumevano, webmin izgleda minimalistički, interfejs se podrazumevano prikazuje na engleskom, ali sve je prilagodljivo!

Mi to radimo ovako:

Ispada ovako:

mob_info