You are on page 1of 42

VISOKO UČILIŠTE ALGEBRA

Sigurnost operacijskih sustava


Ivan Cirković
icirkov@racunurastvo.hr

Zagreb, Svibanj 2020.


Dokumente verzije:

Verzija Autor Datum Promjena


1.0 Ivan Cirković 17.5.2020 Prva verzija
2.0 Ivan Cirković 14.6.2020 Finalna verzija

Sadržaj
1. Uvod............................................................................................................................................1

2. Instaliranje WordPress aplikacije................................................................................................2

3. Konfiguriranje Apache servera i sigurnost WordPress stranice..................................................8

4. Ojačavanje CentOS 7 mašine....................................................................................................12

4.1 Datotečni sustavi..................................................................................................................12

4.2 Servisi..................................................................................................................................18

4.3 Mrežna konfiguracija...........................................................................................................19

4.4 Revizija................................................................................................................................25

4.5 Pristup i autentikacija..........................................................................................................30

5. Zaključak...................................................................................................................................36

5.1 Poteškoće pri radu................................................................................................................36

6. Literatura....................................................................................................................................37

7. Popis slika..................................................................................................................................38
1. Uvod

U ovom projektu, preko danih uputa, kreirat ćemo WordPress stranicu, koju će pokretati
sigurnosno ojačana virtualna mašina sa CentOS 7 operacijskim sustavom. Na toj mašini bit će
pokrenut Apache web server koji će podržavati spomenutu stranicu.
U prvom dijelu ovog projekta nakon instaliranja Apache servera i MariaDB softwarea,
(koji služi za upravljanjem MySQL sustavom), prikazat ćemo postupak kreiranje MySQL baze
podataka, u kojoj ćemo kreirati novu bazu podataka za WordPress aplikaciju, osim baze, kreirat
ćemo novog korisnika za WordPress aplikaciju. Nakon kreiranja WordPress-a i konfiguriranje
stranice. Moramo ojačati sigurnost na WordPress stranici, to ću postići dodavanjem zadanih
certifikata koje ćemo preuzeti sa stranice Infoeduka. Ako je sve dobro konfigurirano, nova
stranica bi trebala podržavati samo HTTPS protokol koji je zaštićen SSL certifikatima, koji su
preuzeti sa stranice Infoeduka. Nakon toga, dodavanjem raznih programskih dodataka unutar
WordPress aplikacije, postići ćemo dodatnu zaštitu za novokreiranu WordPress stranicu.
Nakon ojačavanja WordPress-a, u drugom dijelu zadataka potrebno je dodatno osigurati
CentOS 7 mašinu da se minimalizira mogućnost hakerskih napada i ostalih prijetnji. To ćemo
postići pomoću služnog CIS Benchmark-a i ostalih preporučenih internatskih izvora.

1
2. Instaliranje WordPress aplikacije

Prvi korak instaliranja WordPress aplikacije je instalacija potrebnih programskih paketa


na CentOS 7 mašini. Prvo moramo instalirati Apache web server i MariaDB software koji
podržava MySQL sustav. Sve instalacije se vrše preko „yum install“ naredbe. Nakon uspješnih
instalacija moramo pokrenuti instalirane servise, odobriti ih, te provjeriti njihov status aktivnosti
što je prikazano na slikama 1. i 2.

Slika 1. Prikaz statusa Apache web servera

Slika 2. Prikaz statusa MariaDB softwarea

2
MariaDB je komercijalna inačica MySQL sustava, stoga moramo instalirati i „originalni“
MySQL paket, koji će raditi preko MariaDB softwarea. MySQL software ćemo instalirati
naredbom: „mysql_secure_installation“, koji nakon pokretanja traži, da zadamo novu lozinku za
ulazak u MariaDB konzolu. Nakon toga, redoslijedno se ispisuju sljedeća pitanja: za brisanje
anonimnih korisnika, za zabranu prijave „root“ računa u daljinskom načinu rada i za brisanje
probnih tablica. Za sva pitanja se preporučuje odgovor „y“, odnosno potvrdom opcije.
Sada je još ostalo da instaliramo PHP paket programa, da možemo otvoriti buduću
stranicu u standardnom obliku, jer u suprotnom bez PHP jezika, stranica bi bila samo HTML
skripta. Ovaj paket programa ćemo instalirati naredbom: „yum install php php-pear php-mbstring
php-gd php-mysql –y“.
Nakon uspješno pokrenuti instaliranih softwarea, moramo konfigurirati firewall pravila,
da dopusti komunikaciju instaliranim servisima. Za Apache server dodat ćemo pravilo da
propušta HTTPS promet, to ćemo postići naredbama: „firewall-cmd --permanent --add-
service=http(s)“, a za MySQL naredbom: „firewall-cmd --permanent --add-service=mysql“.
Nakon postavljanja podloge instaliranjem navedenih programa i servisa, sada možemo
krenuti s instaliranjem WordPress-a, ali prije toga moramo kreirati novu bazu podataka, u kojoj
će biti registriran korisnik koji će imati sva prava za korištenje WordPress-a. Osim toga u novoj
bazi bit će spremljene tablice ostalih potrebnih konfiguracija, koje će se automatski kreirati.
Da bismo kreirali novu bazu podataka, preko komande „mysql -u root -p“, moramo ući u
MariaDB konzolu. Kada upišemo šifru koju smo postavili u prethodnom koraku, uspješno smo
se ulogirali, te možemo kreirati novu potrebnu bazu podatka. Pri kreiranju baze moramo joj
dodijelit standardni transformacijski format UTF8, stoga ćemo kreirati bazu sljedećom
komadom: „create database wordpress default character set utf8 collate utf8-unicode_ci“, a
provjeru uspješnog kreiranja možemo napraviti kako je prikazano na slici 4. Kreiranje korisnika
vršimo naredbom: „create user wordpressuser@localhost identified by '*******“, u kojoj
kreiramo korisnika i dodjeljujemo zaporku. Nakon kreiranja korisnika, moramo mu dati sva
administratorska prava nad novo kreiranom bazom to ćemo postići komandom: „Grant all
privileges on wordpress.* to wordpressuser@localhost“. Završni korak kreiranja baze i korisnika
je naredba: „Flush privileges“ kojom kažemo MySQL-u da je došlo do promjene koje mora
registrirati da bi bilo željenog učinka Na slici 3. možemo vidjeti da smo uspješno kreirali novu
bazu podataka imena „wordpress“.

3
Slika 3. Lista postojećih baza podataka

Sada je sve spremno za preuzimanje WordPress paketa te njegova instalacija. Prvo


moramo ući u direktoriji „html“, relacija mu je: „/var/www/html/ “, nakon toga, preko alata
Wget i službenog WordPress linka, preuzimamo zip datoteku „latest.zip“.

Slika 4. Postupak ulaska u zadani direktoriji i preuzimanje potrebnog paketa

Kada smo utvrdili pomoću „ls“ komadne, da smo uspješno preuzeli zip datoteku, trebamo
je otpakirati, to ćemo napraviti pomoću naredbe „tar -xvf latest.tar.gz“. Nakon otpakiranja
datoteke unutar novonastale mape „wordpress“, kopiramo u izvorni direktoriji „html“, to ćemo
učiti naredbom: „cp -rf wordpress/* /var/www/html/“, nakon toga možemo izbrisati novonastalu
mapu i zip datoteku. Sljedeći korak je da novonastalim konfiguracijskim datotekama dodijelimo
vlasništvo. Vlasništvo u ovom slučaju moramo dodijeliti Apache korisnicima, a to ćemo postići
naredbom: „chown -R apache:apache /var/www/html/*“. S ovim pravom Apache web server će
moći manipulirati s novim konfiguracijama.

4
Slika 5. Sadržaj direktorija „html“

Nakon toga slijedi jedan od najvažnijih koraka pri instalaciji WordPress-a, ostajemo u
„html“ direktoriju, i moramo kreirati novu konfiguracijsku datoteku, koja se zove „wp-config“, u
kojoj spajamo kreiranu bazu podataka i korisnika s Apache serverom. Novu datoteku kreiramo iz
trenutne datoteke „wp-config-sample-php“ i pomoću naredbe: „cp wp-config-sample.php wp-
config.php“, dobijemo potrebnu datoteku. U njoj, kako je prikazano na slici 6. dodjeljujemo
parametre koje smo kreirali u MySQL-u, te je konfiguracija WordPress-a završena. Nakon toga
ponovo pokrenemo Apache web server naredbom: „systemctl httpd restart“.

Slika 6. Konfiguracija „wp-conifg“ datoteke

Sada slijedi trenutak istine, da vidimo dali smo sve dobro konfigurirali. Otvorimo web
preglednik, i upišemo IP adresu CentOS7 mašine, i ako je sve dobro trebao bi se učitati obrazac
koji nas traži da odaberemo jezik, nakon odabira, otvori se novi obrazac kao na slici 7., gdje
5
trebamo popuniti podatke: ime stranice, ime korisnika, lozinku i e-mail, te kliknuti na opciju
„Install WordPress“. Nakon popunjavanja obrasca, otvara se novi obrazac preko kojeg se
ulogiramo s novo kreiranim podacima, u WordPress aplikaciju.

Slika 7. Završni obrazac za instalaciju WordPress-a

Kada se ulogiramo dočeka nas radna ploča Wordpress-a, i traži nas da izaberemo podlogu web
stranice, nakon odabira kliknemo na link stranice, te nas doček prizor kao na slici 8.

6
Slika 8. Prikaz novokreirane WordPress stranice

7
3. Konfiguriranje Apache servera i sigurnost WordPress stranice

Nakon uspješne instalacije WordPress stranica, sljedeći korak je konfiguracija Apache


servera. Prije same konfiguracije moramo u CentOS 7 mašini instalirati novi paket „mod_ssl“
preko „yum“ komande. Taj paket će nam služiti da možemo implementirati zadane certifikate.
Nakon uspješne instalacije, moramo kreirati novi direktoriji u lokaciji „/etc/httpd/conf.d/“ i
nazvat ga „ssl“, u ovom direktoriju moramo kreirati tri nove datoteke uz pomoć alata Nano.
Nakon kreiranja moramo otići u na host računalo i preuzeti certifikate s Infoeduke. Nakon toga
otpakiramo zip datoteku sam certifikatima. Otvorimo svaki posebno pomoću alata Notepad,
zatim kopiramo kod certifikata i svakog posebno kopiramo u novokreirane datoteke, te ih
nazovemo kako je prikazano na slici 9.

Slika 9. Popis certifikata

Zatim odemo u konfiguracijsku datoteku SSL i otvorimo je pomoću Nano alatom:


„nano /etc/httpd/conf.d/ssl.conf“, tamo ćemo naći popis naših certifikata te ih moramo
promijeniti lokaciju u kojima se nalaze novi certifikati.

Slika 10. Konfiguriranje datoteke „ssl.conf“

8
Sada možemo uči u konfiguraciju Apache servera preko komadne: „nano
/etc/httpd/conf/httpd.conf “. Kada otvorimo konfiguraciju odemo na dno stranice i gdje moramo
inicirati ime za novo kreiranu stranicu. Pošto certifikati rade samo na zadanoj domeni, naš server
se mora zvati „wpsercure.vua.cloud“. a konfiguracija je prikazana na slici 11. U kojoj osim
imena servera, lokacije dokumenta, lokacije aktivnosti pogreška i pristupa moramo dodati
parametre koje se tiču certifikata. Osim toga moramo promijeniti postavku „Listen“ kako je
prikazano na slici 12, u kojoj brišemo generički zadani port 80 koji predstavlja HTTP protokol i
iniciramo protokol 443 koji je HTTPS. Sada Apache server se može povezati samo s portom od
HTTPS-a.

Slika 11. Konfiguriranje Apache web servera, kreiranje novog virtualnog hosta

Slika 12. Iniciranje zadanog ulaza 443

9
Završni korak je da se otiđemo na host računalo i dodamo IP adresu i ime servera u
datoteci „hosts“, koja se nalazi na lokaciji „C:\Windows\System32\drivers\etc“. Sada će naše
računalo moći komunicirati s Apache Web serverom, te će se moći povezati s njim.

Slika 13. Konfiguriranje „hosts“ datoteke na lokalnom računalu

Ako je sve dobro konfigurirano, uputimo se u web preglednik te upišemo ime stranice
„wpsecure.vua.cloud“ , te ako je prikazan znak lokota pored imena, znamo da su certifikati dobro
konfigurirani.

Slika 14. Provjera ispravnosti certifikata

10
Nakon implementacije Wordpress stranice i dodavanje potrebnih certifikata, sljedeće što
moramo je dodati programske dodate (Plugins), preko kojih ćemo ojačati sigurnost naše stranice.
Odabrali smo 4 dodatka, koji su prikazani na slici 15.

Slika 15. Popis aktiviranih dodataka

Hide WP Login- Ovaj dodatak će sakriti WP login postavke, odnosno promijeniti će URL
za prijavu u stranicu. Tako umjesto https://wpsecure.vua.cloud/wordpress/wp-login.php, bit će
potrebno upisati https://wpsecure.vua.cloud/wordpress/wp-login.php?hide_my_wp=1234.

miniOragne – Je višenamjenski dodatak, koji osim Google autentifikacije za prijavu,


sadrži puno korisnih dodataka, kao što su Firewall, Maware skener, mogućnost blokiranja IP
adresa te zaštitu od Brute Force napada.

UpdraftPlus- ovaj dodatak radi sigurnosnu kopiju stranice, te je sprema na lokalni ili
vanjski izvor (Amazon S3, Google Drive Dopbox).

WP fail2ban- Ako napadač dozna sakrivenu URL stranicu za prijavu, te pokuša Brute
Force napad, ovaj dodatak koji je povezan sa serverom, radi odličnu zaštitu da se napada sa
određenih IP adresa ne ponovi. Administrator u fail2.ban.log datoteci, ima pregled pokušaja
napada, te može napadačevu IP adresu blokirati trajno ili na određeno vrijeme.

11
4. Ojačavanje CentOS 7 mašine

Ojačavanje sigurnosti Linux operacijskog sustava, koji podržava novokreiranu web


stranicu, implementirati ćemo pomoću službenog CIS benchmark-a. Benchmark možemo
kategorizirati kao skup normi koje moramo konfigurirati, da Linux računalo bude maksimalno
zaštićeno od svih prijetnji. Kako svaka norma u benchmark-u ima svoju reviziju, odnosno
provjeru, u ovoj dokumentaciji prikazat ćemo konfiguraciju stavka koje nisu prošle provjeru, a
potrebne su da bi se minimalizirala površina prijetnji.

4.1 Datotečni sustavi

U ovom dijelu moramo onemogućiti određene datotečne sustave. Kako Linux operacijski
sustav razumije mnogo datotečnih sustava, to predstavlja veću mogućnost prijetnje serveru. Da
bismo onemogućili datotečne sustave, to ćemo učiti pomoću programa „modprobe“. Trebamo
onemogućiti sljedeće datotečne sustave: cramfs, squshfs, udf i FAT. Za svaki spomenuti
datotečni sustav moramo upisati komandu „modprobe -n -v (ime modula). Parametar -n koristi
će za brisanje modula, dok će parametar -v ispisati poruku ako dođe do greške. Nakon toga
kreirati novu konfiguracijsku datoteku na lokaciji „/etc/modprobe.d/CIS.conf “ i upisat sve
datotečne sustave koje želimo ugasiti kao što je prikazano na slici 16.

Slika 16. Onemogućavanje datotečnih servisa

12
Također trebamo zabraniti i mogućnost USB i FireWire memorije, u istoj
konfiguracijskoj datoteci dodat ćemo 3 linije:

 blacklist usb-storage
 blacklist firewire-core
 install usb-storage /bin/true

Zatim ćemo zabraniti pristup memoriji jezgre „core dumps“, u kojem se mogu nalaziti
razni osjetljivi podaci i ostale mogućnosti manipulacije u jezgri kao: zahtjev za ispravljanje
pogreška, pristup zapisa, randomiziranje memorijskog prostora i skrivanje pokazivača jezgre, u
konfiguracijskoj datoteci /etc/sysctl.conf, moramo dodati sljedeće parametre:

 fs.suid_dumpable = 0
 kernel.dmesq_restrict = 1
 kernel.randomize_va_spaca = 2
 kernel.kptr_restrict = 2

Nakon onemogućavanja datotečnih sustava, moramo zaštiti direktorije /tmp, /var ,


/var/tmp, /var/log, /var/log/audit, /dev/shm i /home. Ovi direktoriji sadrže osjetljive podatke i
služe kao registri pokrenutih programa, stoga ih trebamo zaštiti na način da ih postavimo na
zasebne particije. Osim toga direktorije /tmp i /var/tmp treba dodatno zaštiti postavljanjem triju
zastavica koje će spriječiti mogućnost izvršavanja zlonamjernog koda napadača. Pošto je proces
kreiranja zasebnih particija za sve direktorije isti, u ovom radu bit će prikazana zaštita /tmp
direktorija i postavljanja zastavica, koje će zabraniti manipulaciju nad tom patricijom, odnosno
direktorijem. Prvo trebamo odrediti lokaciju gdje ćemo napraviti particiju, u ovom slučaju novu
particiju ćemo napraviti u direktoriju /var. Kada uđemo u odabrani direktoriji preko komadne
„dd if=/dev/zero of=/var/tmp.partition bs=1024 count=500000“. Nakon toga novokreiranu
particiju treba formatirati, to ćemo učiniti preko komade: „/sbin/mke2fs /var/tmp.partition“, te se
pojavljuje poruka upozorenja da ova particija nije blok poseban uređaj. Slijedi proces montiranja
i zaštite datotečnog sustava particije pomoću komade „mount -o loop,noexec,noved,nosuid,rw
/var/tmp.partition /tmp“, u kojoj osim montiranja i inicijalizacije zastavica, prmještamo /tmp
direktoriji na zadanu particiju. Nakon toga dajmo određena prava na tom direktoriju pomoću

13
komande „chmod 3777 /tmp“, kojom dajemo prava samo root administratoru i vlasniku podataka
koje se nalaze u direktoriju. Nakon završetka moramo otići u konfiguracijsku datoteku /etc/fstab
i dodati novo kreiranu particiju, kao što je prikazano na slici 18. Nakon kreiranja svih zasebnih
particija /etc/fstab/ bi trebao izgledati kao na slici 19.

Slika 17. Kreiranje nove particije

Slika 18. Inicijalizacija kreirane particije

14
Slika 19. Konačna lista kreiranih zasebnih particija

Sljedeće morao konfigurirati ažuriranje softwarea, u kojem moramo provjeriti sa kojeg izvora
preuzimamo pakete preko komade yum repolist, te kako većina Packet Manager-a ima
implementiran GPG ključ, morao ga verificirati, kako je prikazano na slici 20

Slika 20. Implementacija GPG ključeva

Zatim trebamo instalirati alat AIDE koji uzima snimak, odnosno „snapshot“ stanja
datotečnih sustava, koji prati modifikacije, dopuštenja i podatkovni hash, te uspoređuje i
detektira promjene ako do njih dođe. Nakon instalacije potrebno je inicijalizirati, narednom „aide
–init“, te tako kreiramo repozitoriji u kojem bilježi promjene. Da vidimo, dali radi kako treba,
otvorili smo direktoriji „/etc/modprobe.d/CIS.conf,te namjerno maknuli onemogućeni FAT
datotečni sustav, koji smo postavili da je ne omogućen, te upisali komadu „aide -check“ i na slici
21. možemo vidjeti da je promjena detektirana. Osim toga, možemo napraviti i cron zadatak koji
provjerava integritet datotečnih sustava, svaki dan u određeno vrijeme, moramo otvoriti crontab,
u root računu komadom: „ crontab -u root -e“, zatim dodati zadatak, koji će provjeravati
integritet svaki dan u 5 sati ujutro naredbom „0 5 * * * /usr/sbin/aide –check“.

15
Slika 21. AIDE popis promjena

Sljedeće moramo osigurati bootloader, na način da zabranimo drugim korisnicima da


pristupe boot konfiguraciji. Drugi korisnici ne smiju ni čitati ni pisati po toj konfiguraciji, a to
ćemo konfigurirati kako je prikazano na slici 22. Prvo smo dodjeli prava konfiguracije na root
korisnika preko chown komande, a preko chmod zabranili čitanje i pisanje po datoteci, svim
korisnicima koji nisu vlasnici datoteke.

16
Slika 22. Davanje root prava za bootloader konfiguraciju

Da korisnici ne bi mogli uređivati boot konfiguraciju, potrebno je generirati boot


zaporuku pomoću komadne „grub2-mkpasswd-pbkdf2“, te ćemo unesti zaporku i kopirati
kriptirani kod u konfiguracijsku datoteku. Sada prije učitavanja morat ćemo napisati šifru i
korisničko ime da bi se računalo diglo. Sada ako netko pri odabiru boot uređaja, klikne CTL+X i
želi promijeniti konfiguraciju, to će moći kada upiše zaporku.

Sljedeće što trebamo je postaviti 3 banera: poruku dana, lokalni login baner i remote
login banner. U kojoj trebamo napisati poruke, koje upozoravaju goste servera, da je pod
nadzorom ili slično. Ove tri poruke treba upisati u konfiguracijske datoteke /etc/motd , /etc/issue
i /etc/issue.net, na slici 23 vidimo prikaz konfiguriranih banera. Da bismo konfigurirali banner za
SSH moramo otiči u konfiguracijsku datoteku „/etc/ssh/sshd_config“ i inicirati novokreirani
baner, dodavanjem linije „Banner /etc/issue.net“

Slika 22. Prikaz kreiranih banera

17
4.2 Servisi

Kako je ovaj operacijski sustav instaliran sa minimalnom konfiguracijom, ovaj dio


ojačavanje je pokriven. Slika 23 pokazuje koji servisi nam trebaju za neometani rad servera.

Slika 23. Prikaz korištenih servisa

18
4.3 Mrežna konfiguracija

U ovom poglavlju moramo konfigurirati mrežne postavke da bi se postigla najsigurnija


komunikacija između mrežnih uređaja. Za početak trebamo ugasiti ICMP i njegove značajke.
ICMP je protokol internetske razine i sastavni dio IP protokola, a njegovo svojstvo je osigurati
komunikaciju između mrežnih uređaja, ali ovaj protokol ne osigurava pouzdani prijenos, te
predstavlja potencijalnu prijetnju, u slučaju kada bi napadač sa zaraženog servera poslao lažni
ICMP tiket, na klaster servere, s time bi mogao poremetiti konfiguraciju mreže, te korisnike
preusmjeriti na kompromitirajući server. Sve promjene u vezi ICMP, treba napraviti u
konfiguracijskoj datoteci /etc/sysctl.conf, te potom da bi promjene bile važeće u jezgri sustava u
komadnoj liniji preko syscl programa, zastavice net.ipv4, parametra i njegove vrijednosti,
promjene treba verificirati. Vrijednosti parametra mogu biti 0 ili 1, vrijednost 0 implicira
negiranje parametra dok 1 postavlja prihvaćanje parametra

Prvo trebamo onemogućiti da izvorni paketi budu preusmjereni, to ćemo učiti dodajući dvije
linije u konfiguracijsku datoteku.

 net.ipv4.conf.all.accept_source_route=0
 net.ipv4.conf.default.accept_source_route=0

Sljedećim komodama potvrdit ćemo promjenu u jezgri.

 sysctl -w net.ipv4.conf.all.accept_source_route=0
 sysctl -w net.ipv4.conf.default.accept_source_route=0

Zatim treba zabraniti mogućnost ICMP preusmjeravanja od svih izvora, dodavanjem linija

 net.ipv4.conf.all.accept_redirects = 0
 net.ipv4.conf.default.accept_redirects = 0
 net.ipv4.conf.all.secure_redirects = 0
 net.ipv4.conf.default.secure_redirects = 0

Komande:

 sysctl -w net.ipv4.conf.all.accept_redirects=0
 sysctl -w net.ipv4.conf.default.accept_redirects=0
19
 sysctl -w net.ipv4.conf.all.secure_redirects=0
 sysctl -w net.ipv4.conf.default.secure_redirects=0

Zatim treba omogućiti administratoru da pregledava sumnjive pakete, koji možda dolaze od
strane napadača.

 net.ipv4.conf.all.log_martians=1
 net.ipv4.conf.default.log_martians = 1

Komande:

 sysctl -w net.ipv4.conf.all.log_martians=1
 sysctl -w net.ipv4.conf.default.log_martians=1

Također treba omogućiti ignoriranje broadcast zahtjeva od strane ICMP-a

 net.ipv4.icmp_echo_ignore_broadcasts = 1

Komanda:

 sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

Zatim treba postaviti omogućavanje ignoriranja lažnih ICMP odgovora

 net.ipv4.icmp_ignore_bogus_error_responses = 1

Komadna:

 sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

Slijedi onemogućavanje IPv6 protokola. Pošto ovaj server radi preko IPv4 protokola
preporučuje se da se ovaj protokol onemogući. Ostajemo u istoj konfiguracijskoj datoteci
/etc/sysctl.conf u kojoj prvo moramo zabraniti reklame od IPv6 rutera, koje bi mogle usmjeriti
promet na kompromitirane strojeve.

 net.ipv6.conf.all.accept_redirects = 0
 net.ipv6.conf.default.accept_redirects = 0

20
Komade:

 sysctl -w net.ipv6.conf.all.accept_redirects=0
 sysctl -w net.ipv6.conf.default.accept_redirects=0

Zatim treba zabraniti istu stavku kao i za prethodni protokol, preusmjeravanje paketa od
svih izvora, također u istoj konfiguracijskoj datoteci.

 net.ipv6.conf.all.accept_ra = 0
 net.ipv6.conf.default.accept_ra = 0

Komade za verifikaciju:

 sysctl -w net.ipv6.conf.all.accept_ra=0
 sysctl -w net.ipv6.conf.default.accept_ra=0

Nakon završetka konfiguriranja ICMP protokola, pomoću komade: “sysctl -w


net.ipv4.route.flush=1“ i „sysctl -w net.ipv6.route.flush=1“, spremamo promjene koje smo
napravili u route tablici. Sada kada smo završili sa ovom konfiguracijskom datotekom, na slici
xy, možemo vidjeti koje smo sve restrikcije postavili.

Slika 24. Datoteka /etc/sysctl.conf nakon dodavanje svih potrebnih linija

21
Da bi smo potpuno ugasili ovaj protokol, vračamo se u konfiguracijsku datoteku
/etc/modprobe.d/CIS.conf i dodajemo liniju „options ipv6 disable=1“. Također možemo zabraniti
i Bluethoot modula u jezgri operacijskog sustava, dodavanjem linija:

 install bnep /bin/true


 install bluetooth /bin/true
 install btusb /bin/true
 install net-pf-31 /bin/true

Sljedeće trebamo onemogućiti 4 mrežna protokola: DCCP, SCTP, RDS i TICP, koji nisu
potrebni za ovaj server, a predstavljaju mogućnost prijetnje. Ostajemo u konfiguracijskoj
datoteci /etc/modprobe.d/CIS.conf, u kojoj ćemo dodati 4 linije za njihovo onemogućavanje.

 install dccp /bin/true


 install sctp /bin/true
 install rds /bin/true
 install tipc /bin/true

Slijedi konfiguracija firewall-a, prvo trebamo onemogućiti alat firewalld, te instalirati alat
IP tables, njihova uloga je ista: filtriranje paketa, ali alat iptables obnavlja sva grupna pravila
kada se napravit promjena, za razliku od firewalld alata. Stoga prvo trebamo onemoćati firewalld
alat i staviti mu maskiranu ulogu, odnosno onemogućiti njegovo pokretanje iz razloga, da ne
dođe do sukoba pravila između 2 firewall alata u jezgri os-a. Onemogućavanje firewalld-a,
instalaciju iptables-a napravit ćemo sljedećim komandama:

 systemctl stop firewalld.service


 systemctl mask firewalld.service
 systemctl daemon-reload
 yum install iptables-services
 yum install iptables-services ip6tables.service

22
Nakon toga u novokreiranoj datoteci „/etc/sysconfig/iptables“ ćemo napraviti
konfiguraciju firewall-a. Kako se firewall dijeli u 3 lanca pravila: input, output i forward, za
svaki trebamo napraviti izbrisati sva postojeća pravila dodavanjem linija:

 -F INPUT
 -F OUTPUT
 -F FORWARD

Kako u ovom scenariju imamo samo jedan server koje nije router za druge servere,
moramo zabraniti opciju lanca Forward, a potvrditi ostale opcije.

 -P INPUT ACCEPT
 -P OUTPUT ACCEPT
 -P FORWARD DROP

Slijedi inicijalizacija pravila koja nam trebaju za naš server, dopuštenih pravila treba biti
minimalno, da bismo smanjili broj neželjenih paketa. Prvo ćemo dodati pravilo za loopback
promet koji mora ostati unutar lokalnog servera, znači da mora prihvaćati promet jedino na
adresi 127.0.0.0/8, a ostale odbiti.

 -A INPUT -i lo -m comment --comment local -j ACCEPT


 -A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
 -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Zatim dozvoljavamo ulazni promet na SSH portu, na mreži u kojoj je server, odnosno
mogućnost SSH konekcije onih uređaja koji su unutar mreže, te istoj mreži zabranjujemo
unutarnji promet sljedećih protokola FTP, telnet i HTTP.

 -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 22 -s 192.168.6.0/24 -j


ACCEPT
 -A INPUT -d 192.168.6.0/24 -p tcp -m multiport --dport 21,23,80 -j DROP

Također dozvolit ćemo ulazi i izlazni promet nad protokolima TCP I UDP

 -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

23
 -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
 -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
 -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT

Da bismo minimizirali mogućnost DOS napada, stavljamo ograničenje 25 posjeta u minuti,


linijom:

 A INPUT -p tcp --dport 443 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

Pri završetku s konfiguriranjem moramo upisati naredbu koja će zabilježiti promjene

 iptables-restore < /etc/sysconfig/iptables

Slika 24. Propis pravila konfiguriranih u iptables

24
4.4 Revizija

Sljedeće trebamo konfigurirat reviziju operacijskog sustava. Revizija pomaže u praćenju


svih promjena koje se događaju na sustavu. Administrator servera ima pregled revizijskog
dnevnika u kojem može vidjeti sve događaje vezane uz sigurnost, otkrivanje neovlaštenih
aktivnosti i slično. Ovaj alat neće povećati sigurnost računala, ali će zabilježiti sve
komplotirajući događaje, te tako administratoru pomoći pri sprječavanju napada.. Prije početka
konfiguracije trebamo uključiti sistem revizije naredbom: „systemctl enable auditd“.

Konfiguraciju revizije počinjemo u datoteci /etc/audit/auditd.conf, prvo moramo odrediti


maksimalnu veličinu dnevnika u kojem će se spremati revizijske promjene, u ovom slučaju biti
će 25 MB,.

 max_log_file = 25

Ako se dnevnik revizije napuni to može uzrokovati velike probleme za sigurnost sustava,
da bismo spriječili taj rizik, konfigurirat ćemo da nas Linux obavijesti preko mail-a ako dođe do
te situacije, te će onemogućiti sustav. Osim toga postavit ćemo kada se napuni dnevnik da zapisi
ostaju netaknuti, odnosno da se ne izbrišu automatski.

 space_left_action = email
 action_mail_acct = root
 admin_space_left_action = halt
 max_log_file_action = keep_logs

Zbog potencijalno zlonamjernih programa moramo osigurati da događaji revizije počinju


od početka dizanja računala. To ćemo učiti u konfiguracijskoj datoteci /etc/default/grub, dodajući
liniju GRUB_CMDLINE_LINUX="audit=1", a naredbom „grub2-mkconfig >
/boot/grub2/grub.cfg“ spremiti promjene.

Zatim moramo konfigurirati da se zapisuju bilokakve promjene datuma i vremena. To


ćemo postići kreiranjem novih pravila u konfiguracijskoj datoteci /etc/audit/audit.rules.

25
 -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
 -a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -k time-change
 -a always,exit -F arch=b64 -S clock_settime -k time-change
 -a always,exit -F arch=b32 -S clock_settime -k time-change
 -w /etc/localtime -p wa -k time-change

Ostajemo u konfiguraciji pravila, te moramo postaviti da se zapisuju promjene u vezi


grupa ili korisnika, odnosno promjena njihovih zaporka i ID-a.

 -w /etc/group -p wa -k identity
 -w /etc/passwd -p wa -k identity
 -w /etc/gshadow -p wa -k identity
 -w /etc/shadow -p wa -k identity
 -w /etc/security/opasswd -p wa -k identity

Nadalje moramo postaviti pravila u slučaju promjena unutar mreže i njene okoline,
preciznije promjena imena servera ili domene. Također moramo promatrati šta korisnik radi u
sustavu prateći njegovu sesiju, a informacije koje nas zanimaju su: prijava, odjava, gašenje i
ponovo pokretanje servera, te koliko se puta pokušao prijaviti na sustav.

 -a always,exit -F arch=b64 -S sethostname -S setdomainname -k system-locale


 -a always,exit -F arch=b32 -S sethostname -S setdomainname -k system-locale
 -w /etc/issue -p wa -k system-locale
 -w /etc/issue.net -p wa -k system-locale
 -w /etc/hosts -p wa -k system-locale
 -w /etc/sysconfig/network -p wa -k system-locale
 -w /var/run/utmp -p wa -k session
 -w /var/log/wtmp -p wa -k session
 -w /var/log/btmp -p wa -k session

SELinux kontrolne liste, su važan faktor svakog operacijskog sustava, jer preko njih
napadač može promijeniti dozvole i pravila nad različitim resursima, koji mogu biti vrlo opasni
po operacijski sustav, zato moramo nadzirati njihove promjene.

26
 -w /etc/selinux/ -p wa -k MAC-policy

Moramo dodati pravilo koje će pratiti aktivnost korisnika, odnosno korisnikovu zadnju
i/ili neuspješnu prijavu na servera.

 -w /var/log/lastlog -p wa -k logins
 -w /var/run/faillock/ -p wa -k logins

Jako je važno zabilježiti promjene dozvola na datotekama, napadač može promijeniti


dozvolu pristupa, atribute, vlasništvo i grupu datoteke, da bismo to primijetili, moramo dodati
reviziju nad sljedećim sistemskim pozvima: chmod, fchmod, fchmodat , setxattr, lsetxattr,
fsetxatt, removexattr, lremovexattr, fremovexattr.

 -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F


auid!=4294967295 -k perm_mod
 -a always,exit -F arch=b32 -S chmod -S fchmod -S fchmodat -F
auid>=1000 -F auid!=4294967295 -k perm_mod
 -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F
auid>=1000 -F auid!=4294967295 -k perm_mod
 -a always,exit -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F
auid>=1000 -F auid!=4294967295 -k perm_mod
 -a always,exit -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S
lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
 -a always,exit -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S
lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod

Moramo zabilježiti i neuspješne promjene manipulacije nad podacima, odnosno njihovo


kreiranje, otvaranje i smanjivanje.

 -a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F


exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
 -a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F
exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
 -a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F
exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access

27
 a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F
exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access

U Linuxu postoji mogućnost privilegiranih programa koji su zadani spacijalnim


zastavicama setuid ili setgid, ove zastavice daju mogućnost izvršavanje programa korisniku koji
nije root administrator (npr. promjenu zaporke), makar je taj program u vlasništvu root
administratora, stoga upravljanje tih programa moramo zapisati u dnevnik revizije,

 find sda2 -xdev \( -perm -4000 -o -perm -2000 \) -type f | awk '{print "-a
always,exit -F path=" $1 " -F perm=x -F auid>=1000 -F auid!=4294967295 -k
privileged" }'

Također trebamo registrirati sistemski poziv mount, koji služi za montiranje datotečnih
sustava na particije, zato ćemo dodati dva pravila pomoću kojih će se u dnevnik revizije zapisati
uspješni i neuspješni pokušaji montiranja.

 -a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k


mounts
 -a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k
mounts

Zatim trebamo registrirati promjene u vezi brisanja i preimenovanja datoteka, za sve


korisnike na serveru.

 -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F


auid>=1000 - F auid!=4294967295 -k delete
 -a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F
auid>=1000 - F auid!=4294967295 -k delete

Kako u Linuxu postoji sudo korisnici koji imaju administratorska prava nad sustavom,
moramo zapisati dali je došlo do promjene u konfiguracijskoj datoteci /etc/sudoers, u kojoj se
nalaze konfiguracije za privilegirane korisnike. Također njihove napravljene provjere se nalaze u
datoteci /var/log/sudo.log, stoga i tu datoteku trebamo implementirati u reviziju.

 -w /etc/sudoers -p wa -k scope
 -w /etc/sudoers.d -p wa -k scope

28
 -w /var/log/sudo.log -p wa -k actions

Također moramo postaviti nadzor nad promjenama u jezgri preko modula insmod,
rmmod i modprobe.

 -w /sbin/insmod -p x -k modules
 -w /sbin/rmmod -p x -k modules
 -w /sbin/modprobe -p x -k modules
 -a always,exit arch=b64 -S init_module -S delete_module -k modules

Posljednja stavka u ovoj konfiguracijskoj datoteci je da postavimo zaštitu da ova


konfiguracijska datoteka ne može biti promjenjiva, to ćemo postići dodavanjem linije

 -e 2

29
4.5 Pristup i autentikacija

U ovom poglavlju konfigurirati ćemo kontrolu pristupa serveru, ovo poglavlje započeti
ćemo konfiguraciju cron demona, koji ćemo ograditi vlasništvo na root račun, te tako
onemogućiti drugim korisnicima da izvršavaju cron zadatke.
Prvo moramo zaštiti direktorije/etc/crontab/ i /etc/cron.d, te postaviti vlasništvo samo na
root korisnika.

 chown root:root /etc/crontab


 chmod og-rwx /etc/crontab
 chown root:root /etc/cron.d
 chmod og-rwx /etc/cron.d

Zatim treba zaštiti vremenske cron direktorije za sat, dan, tjedan i mjesec

 chown root:root /etc/cron.hourly


 chmod og-rwx /etc/cron.hourly

 chown root:root /etc/cron.daily


 chmod og-rwx /etc/cron.daily

 chown root:root /etc/cron.weekly


 chmod og-rwx /etc/cron.weekly
 chown root:root /etc/cron.monthly
 chmod og-rwx /etc/cron.monthly

Zatim moramo komadne linije obrisati direktoriji corn.deny, i konfigurirati cron.allow, u


kojem administrator određuje tko može raditi cron zadatke. To ćemo postići naredbama:

 rm /etc/cron.deny #brisanje direktorija


 rm /etc/at.deny
 touch /etc/cron.allow #kreiranje direktorija

30
 touch /etc/at.allow
 chmod og-rwx /etc/cron.allow #određivanje prava
 chmod og-rwx /etc/at.allow
 chown root:root /etc/cron.allow #određivanje vlasništva
 chown root:root /etc/at.allow

Sljedi konfiguracije SSH alata, koji služi za povezivanje na lokalni server, pošto je ovo
jako osjetljiv alat, i postoji mnogo zlonamjernih software-a za hakiranje ovog alata, ova
konfiguracija mora biti maksimalno sigurna. Prvo trebamo zadati prava da samo root račun može
manipulirati konfiguraciju SSH alata.

 chown root:root /etc/ssh/sshd_config


 chmod og-rwx /etc/ssh/sshd_config

Pošto postoje dvije verzije SSH protokola, moramo uključiti drugu verziju koja je novija i više
sigurnija. Moramo otići u konfiguracijsku datoteku /etc/ssh/sshd_config, i postaviti parametar
„Protocol 2“.
Kako SSH omogućuje nekoliko načina prijava, korisnicima servera postaviti ćemo INFO
level, koji zapisuje bazične aktivnost od SSH korisnika, da bismo to učinili u istoj datoteci
dodajemo zapis „LogLevel INFO“.
Kako bi izbjegli Brute-force napad, u kojem haker isprobava beskonačan broj pokušaja
ulaska u server pogađanjem zaporki, moramo postaviti ograničenje pokušaja prijave u sustav, u
ovom primjeru stavit ćemo 4, dodajući liniju „MaxAuthTries 4“, osim toga postavit ćemo da
vrijeme za prijavu bude 60 sekundi dodavanjem linije „LoginGraceTime 60“.
Slijedeće moramo postaavii parametar u kojem korisnike tražimo zaporku pri ulasku u
server, to ćemo uspjeti dodavanjem parametra „IgnoreRhosts yes“, zatim moramo zabraniti
mogućnost „Host based Authentication“, koja korisniku SSH-a, ne traži posebni ključ za ulazak
u server, stoga ovaj način nije siguran te ga moramo zabraniti.
Kako root korinsik ima sva prava na serveru, moramo zabraniti SSH konekciju, jer ako se
haker domogne root računa može, te se spoji preko SSH konekcije, ima pristup svemu na
serveru. To ćemo onemoćati dodavanjem linije „PermitRootLogin no“.
Sljedeće moramo onemogućiti mogućnost prazne zaporke, jer ako netko dođe do
korisničkog računa koji nema zaporku, može ući u server, bez problema, to ćemo onemogućiti

31
dodavanjem linije „PermitEmptyPasswords no“.
Da bi se minimalizirala mogućnost zaobilaznija sigurnosne kontrole preko različitih
putanja i mehanizma npr. LD_PRELOAD, moramo postaviti ograničenje
„PermitUserEnvironment no“.
Kako je SSH protokol jako osjetljiv na napade, moramo postaviti Counter algoritam, koji
može minimalizirati pokušaj chosen-plaintext napada, koji pokušava smanjiti sigurnost
postavljenje šifre. To ćemo napraviti dodavanje linije: „Ciphers aes256-ctr,aes192-ctr,aes128-
ctr“. Da bi zaštiti SSH tunel moramo postaviti samo određene MAC algoritme, koji se koriste pri
SSH komunikaciji, prema benchmark-u moramo postaviti sljedeći parametar:

 MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-
etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com

Važno je i postaviti vremensko razbolje ne-aktivnosti na serveru, iz razloga, ako npr. korisnik
se udalji od računala, netko može sjest na njegovo mjesto, te manipulirati serverom, stoga ćemo
postaviti da klijent nasmije biti neaktivan više od 5 minuta, naredbama:

 ClientAliveInterval 300
 ClientAliveCountMax 0

Sada moramo konfigurirati koji korisnici imaju mogućnost SSH konekcije, a kojim imaju
zabranu. Preko parametra „AllowUsers“, dodajemo imena korisnika koji se mogu spojiti, a
preko DenyUsers, dodajemo imena koje nemaju to pravo.

Nakon završavanja konfiguracije SSH protokola, sljedeće trebamo konfigurirati PAM


(Pluggable Authentication Modules). Ovaj modul se koristiti za mehanizam kod provjere
autentičnosti. Prvo trebamo uključiti pam_pwquality.so modul, u konfiguracijskim datotekama
/etc/pam.d/password-auth i /etc/pam.d/system-auth. U obje datoteke treba dodati liniju

 password requisite pam_pwquality.so try_first_pass retry=3

u kojima inicijaliziramo modul pravila zaporka, uz dodatan parametra „try_first_pass retry“, koji
iz prošlog PAM modela uzima zaporku računa, ako postoji. U slučaju nepostojanja korisnik
mora postaviti novu zaporku. Parametar retry=3 dozvoljava tri pokušaja prijave, u slučaju
neuspješne prijave šalje se poruka neuspjeha. Nakon toga ulazimo u konfiguracijsku datoteku
32
/etc/security/pwquality.conf u kojoj postavljamo opcije zaporke, kao što su minimalna dužina,
obavezna znamenka, specijalan znak, veliko i malo slovo. Primjer ove zaporke je
„dZcLYWpVqdCZeguK*e“.

 minlen=14 #minimalna dužina 14 znakova


 dcredit=-1 #najmanje jedna znamenka
 ucredit=-1 #najmanje jedno veliko slovo
 ocredit=-1 # najmanje jedan specijalan znak
 lcredit=-1 #najmanje jedno malo slovo

Slika xy prikazuje kreiranja novog korisnika i postavljanja njegove šifre, te isprobavanje novo
postavljenih pravila.

Slika 25. Isprobavanje konfiguriranih pravila kompleksnosti zaporke

Sljedeće moramo postaviti zaključavanje korisničkog računa ako N puta pogriješi sa


prijavom, ova zabrana će minimalizirati mogućnost Brute-force napada. U ovom slučaju
postaviti ćemo 5 pokušaja prijave, i ako su svih 5 neuspješni, račun se zaključava na 900
sekundi. Da bismo ovo konfigurirali vraćamo se u datoteke /etc/pam.d/password-auth i
/etc/pam.d/system-auth i dodajemo sljedeće linije:

 auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900


 auth [success=1 default=bad] pam_unix.so
 auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900

33
 auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900

Također moramo postaviti opciju da zaporka ne bude ista, kao prošlih 5 zaporki, u istim
konfiguracijskim datotekama dodajemo liniju. Stare zaporke se spremaju u datoteku
/etc/security/opasswd te se uspoređuju sa novom, da bi ovo pravilo vrijedilo.

 password sufficient pam_unix.so remember=5

Sjedeće moramo postaviti algoritam kriptiranja zaporki, prema benchmarku ovaj


algoritam mora biti SHA-512, koji se koristi iz kriptiranje Bitcoin bloka transakcija. U istim
datotekama dodajemo liniju. Nakon ove promjene preporučljivo je da se svim korisnicima
promjene zaporke.

 password sufficient pam_unix.so sha512

Sljedeće moramo zadati pravilo, koliko dana vrijedi jedna lozinka, to ćemo konfigurirati
u datoteci /etc/login.defs, pomoću parametra PASS_MAX_DAYS i uz njega napisati broj dana,
u ovom primjeru stavit ćemo 2 mjeseca, odnosno 60 dana.

 PASS_MAX_DAYS 60

Zatim u istoj datoteci postavljamo ograničenje broja dana između zadnje promjene
zaporke, u ovom primjeru staviti ćemo tjedan dana, znači ako korisnik promjeni zaporku, ne
može je promijeniti idućih tjedan dana.

 PASS_MIN_DAYS 7

Konfigurirati ćemo i podsjetnik, koji će korisnicima javiti 7 dana unaprijed da im istječe


zaporka , dodavanjem linije:

 PASS_WARN_AGE 7

Zadnje moramo konfigurirati pravilo da sustav izbriše neaktivne korisnike, svi korisnici
koji nisu bili aktivni mjesec dana moraju biti izbrisani, zbog veće sigurnosti i manje mogućnosti
da netko provali u sustav.

 useradd -D -f 30

34
Da bismo ova pravila postavili za trenutne korisnike, u komandnu liniju moramo upisati
naredbu „change“ , parametar koji primjenjujemo i ime korisnika. Na primjer ako hoćemo
primijenit za račun Ivicu upozorenje za istek zaporke upisati ćemo

 chage --warndays 7 Ivica

Kada korisnik kreira novu datoteku, na njoj postoje prava određena čitanja, odnosno
vidljivosti, ta pravila se postižu postavljanjem parametra „umask“. Ako postavimo da je
vrijednost parametra 022, svi ostali korisnici će moći tu datoteku moći čitati, vrijednost 077 je
najsigurnija metoda gdje će tu datoteku nitko osim kreatora neće moći vidjeti. Benchmark
savjetuje da se postavi na parametar 027, ova metoda je kreirana da u slučaju ako postoje UNIX
grupe korisnika, da će tu datoteku moći vidjeti samo korisnici grupe iz koje je taj korisnik,
također postoji mogućnost prosljeđivanja pravila drugim grupama. Ovu konfiguraciju postaviti
ćemo u dvije konfiguracijske /etc/bashrc i /etc/profile, umask of 027.

Sljedeće moramo ograničiti korištenje komadne „su“ , koja predstavlja mijenjanje


korisnika unutar sesije. Ova komada ide uz komandu sudo, koja daje korisniku veća prava nad
datotekama. Stoga trebamo odrediti koji korisnici će moći imati to pravo. Ovu konfiguraciju
pronaći ćemo u datoteci /etc/pam.d/su u kojoj trebamo dodati liniju „auth required pam_wheel.so
use_uid“, te zatim u komandnoj liniju moramo upisati naredbu, kojem korisniku dajemo prava
nad su komadnom.

 usermod -G wheel Ivica

35
5. Zaključak

U ovom radu prikazali smo kreiranje Wordpress stranice, te ojačavanje Linux mašine.
Glavni cilj je bio pokrivanje osnovnih zaštita prema uputama iz Benchmark-a za Centos 7
operacijski sustav. Proces kvalitetnog ojačavanja Linux mašine nije nimalo jednostavan zadatak
jer zahtjeva da se pokriju sve mogućnosti napada sa svih mogućih izvora prijetnje. U radu smo
koristili i neke dodatne oblike zaštite, te probali ovaj sustav napraviti neprobojnim. Treba
zaključiti da ovaj proces beskonačan, odnosno da sistemski administrator treba stalno paziti i
gledati reviziju događaja da na vrijeme primijeti sumnjive aktivnosti na serveru ili stranici.

5.1 Poteškoće pri radu

U ovom radu najviše poteškoća sam imao sa kreiranjem Wordpress aplikacije i uvozom
propisanih certifikata, pošto je ovo prvi put da sam podigao Apache web server, dosta sam
vremena izgubio istražujući o konfiguraciju ovog web servera i samog procesa podizanja
stranice. Ojačavanje Centos mašine, je bio dug proces, i mnogo mi je vremena trebalo da
razumijem sve konfiguracije koje trebam napraviti i da shvatim zašto sam ih napravio, ali pri
završetku ovog rada mogu zaključiti da sam sve potrebne izmjene razumio i da sam uspješno
osigurao Centos server i novokreiranu Wordpress stranicu.

36
6. Literatura

[1.]

https://www.newnettechnologies.com/downloads/cis/Linux/CentOS/CIS_CentOS_Linux_7_Ben
chmark_v2.1.0.pdf

[2.] https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-centos-7

[3.] https://security-24-7.com/wordpress-5-x-hardening-guide-for-centos-7-6/

[4.] https://kinsta.com/blog/wordpress-security-plugins/#wp-fail2ban

[5.] https://community.spiceworks.com/how_to/2220-create-and-protect-tmp-partition

[6.] https://www.lisenet.com/2017/centos-7-server-hardening-guide/

[7.] https://raiyanlive.wordpress.com/2016/09/02/hardening-server-security-using-iptables/

37
7. Popis slika

Slika 1. Prikaz statusa Apache web servera.....................................................................................2

Slika 2. Prikaz statusa MariaDB softwarea.....................................................................................2

Slika 3. Lista postojećih baza podataka...........................................................................................4

Slika 4. Postupak ulaska u zadani direktoriji i preuzimanje potrebnog paketa...............................4

Slika 5. Sadržaj direktorija „html“...................................................................................................5

Slika 6. Konfiguracija „wp-conifg“ datoteke..................................................................................5

Slika 7. Završni obrazac za instalaciju WordPress-a.......................................................................6

Slika 8. Prikaz novokreirane WordPress stranice............................................................................7

Slika 9. Popis certifikata..................................................................................................................8

Slika 10. Konfiguriranje datoteke „ssl.conf“...................................................................................8

Slika 11. Konfiguriranje Apache web servera, kreiranje novog virtualnog hosta...........................9

Slika 12. Iniciranje zadanog ulaza 443............................................................................................9

Slika 13. Konfiguriranje „hosts“ datoteke na lokalnom računalu.................................................10

Slika 14. Provjera ispravnosti certifikata.......................................................................................10

Slika 15. Popis aktiviranih dodataka.............................................................................................11

Slika 16. Onemogućavanje datotečnih servisa..............................................................................12

Slika 17. Kreiranje nove particije..................................................................................................14

Slika 18. Inicijalizacija kreirane particije......................................................................................14

Slika 19. Konačna lista kreiranih zasebnih particija......................................................................15

38
Slika 20. Implementacija GPG ključeva........................................................................................15

Slika 21. AIDE popis promjena.....................................................................................................16

Slika 22. Davanje root prava za bootloader konfiguraciju............................................................17

Slika 22. Prikaz kreiranih banera...................................................................................................17

Slika 23. Prikaz korištenih servisa.................................................................................................18

Slika 24. Datoteka /etc/sysctl.conf nakon dodavanje svih potrebnih linija...................................21

Slika 24. Propis pravila konfiguriranih u iptables.........................................................................24

Slika 25. Isprobavanje konfiguriranih pravila kompleksnosti zaporke.........................................33

39

You might also like