Hardening Linux Server

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Temu rezervirali: Tomislav Budimlić, Matej Cvitković, Tomislav Čivčija


Očvršćivanje Linux poslužitelja (eng. Hardening Linux Server) je proces povećanja sigurnosti poslužitelja putem raznih sredstava što rezultira puno sigurnijem radnom okruženju poslužitelja. Postoje razni načini očvršćivanja ovdje će biti nabrojani neki od najkorištenijih:

  1. Fizičko očvrišćivanje
  2. Kreiranje particija
  3. Minimizacija količine paketa(smanjivanje površine napada)
  4. Korištenje SSH
  5. Ažuriranje sustava
  6. Enkripcija podataka
  7. Postavljanje firewalla


Linux Server

Trenutno na tržištu nalazi se velik broj raznih distribucija (eng. distribution) Linux poslužitelja. Uglavnom distribucije nastaju na način da njihova jezgra bude utemeljena na nekoj već postojećoj Linux distribuciji. Tako da u svijetu Linux poslužitelja trenutno oni se dijele na tri tipa. Distribucije su uglavnom utemljene na:

1. Debian
  a) Debian
  b) Ubuntu
2. RedHat
  a) CentOS
  b) RedHat
3. Slackware 
4. Razni (eng. Miscellaneous)
  a) Arch Linux 
  b) Gentoo

Za primjenu određenih metoda očvršćivanja Linux poslužitelja koristiti ćemo Debian i RedHat distribucije zato što se zapravo najviše koriste. Točnije rečeno odabrali smo Debian i CentOS kao distribucije gdje ćemo prikazati metode očvršćivanja. ([1])

Debian

Debian Projekt je udruga pojedinaca koji su si postavili za cilj stvaranje slobodnog operativnog sustava. Operativni sustav koji su stvorili se zove Debian GNU/Linux, ili jednostavno skraćeno, Debian. Danas se razni operativni sustavi temelje na Debianu. Najpoznatiji primjer je zasigurno Ubuntu. Za jednostavnije korištenje Debiana potrebno je instalirati sudo (Super-user do ) i dodijeliti korisnika sudo grupi (adduser username sudo) kako bi se moglo instalirati sve potrebne pakete i programe. ([2])

CentOS

CentOS je kao što je ranije rečeno distribucija temeljena na RedHatu. Razlika između izvornog RedHata i CentOS je zapravo u plaćanju podrške, brandingu, te arhitekturalnog podršci. Za razliku od RedHata CentOS podržava samo x86-64 arhitekture. Treba napomenuti da je CentOS zapravo besplatna alternativa RedHatu i iz tog razloga je jedan od najpopularnih poslužiteljskih distribucija. Koristi Yum kao glavni package manager.([3])

Očvrišćivanje poslužitelja([4]):

  1. Ažuriranje sustava - Matej Cvitković
  2. Prvi korak prilikom očvršćivanja trebalo bi biti ažuriranje sustava, kako bi sustav imao sva najnovija ažuriranja te samim time nadogradnje,ispravke slučajnih propusta i slično. Naredba za ažuriranje:

     [CentOS] 
     yum update 
    
     [Debian]
     sudo apt-get update && sudo apt-get upgrade 
    
  3. Organizacija datotečnih sustava ([5]) - Matej Cvitković
  4. Odvajanje datoteka operacijskog sustava od datoteka korisnika rezultirati će boljim i sigurnijim sustavom. Datotečne sustave treba postaviti na odvojene particije:

     /(root) 
     /boot  
     /home  
     /tmp 
     /var 
    

    Particija /var je mjesto gdje se sve log poruke spremaju na disk. Kod ovog dijela sustava postoji šansa za eksponencijalnim rastom u veličini na serverima koji obrađuju velike količine podataka. Zbog toga treba kreirati dovoljno veliku particiju ili razmotriti korištenje logičkih datotečnih sustava. Također postoji još mogućnost da se koristi više fizičkih diskova koji se spajaju u RAID 0 za obrađivanje jako velikih količina podataka. | 3

    Još jedan način za zaštiti svoje podatke je enkripcija samih diskova. Postoje razni alati za smještanje čitavih particija u enkriptirane posude (eng. container) poput VeraCrypta i TrueCrypta. Također moguće je potpuna enkripcija diskova koja uglavnom nije preporučena zato što je puno teže vratiti podatke i postoji šansa da će performanse sustava pasti. Za potpunu enkripciju koristi se PGP i kriptografija javnim ključevima ili openssl naredba.

  5. Minimizacija količine paketa(smanjivanje površine napada) Matej Cvitković | 3
  6. Treba napraviti lokalnu listu instaliranih aplikacija kako bi se mogle usporediti aplikacije nakon nekog perioda vremena kako se ne bi povećala mogućnost površine napada zbog nemarnosti administratora. Uklanjanje svih nepotrebnih paketa obavlja se pomoću:

      [CentOS]
      rpm-qa
      yum list installed >> installed.txt  
    
      [Debian]
      dpkg -–list
      dpkg –-info pacageName
      apt-get –-purge remove pacageName  
    

    Nakon toga treba ukloniti sve stavke koje su poslužitelju nepotrebne.Ispod će biti navedeni neki primjeri:

    • Pronalaz datoteka bez vlasnika
    • find / -nouser -o -nogroup -exec ls -l {} \;
      

      Njih treba ukloniti nakon što ih se pronađe rm -r "filename"

    • Uklanjanje grafičkog sučelja na poslužiteljima kojima nije potrebno npr. LAMP poslužitelji
    • [CentOS]
      yum groupremove "X Window System" ([6])
      
      [Debian]
      sudo apt-get --purge remove x11-*
      sudo apt-get --purge autoremove  | 4
      
    • Isključiti IPv6 ukoliko se ne koristi
    • Dodati u datoteku /etc/sysconfig/network

      NETWORKING_IPV6 = no | 5
      
    • Isključivanje beskorisnih SUID i SGID naredbi ([7])
    • Pronalaz naredbi:

      find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
      

      Uklanjanje SetUid

      chmod u-s /path/
      

      Uklanjanje SetGid

       chmod g-s /path/ 
      
    • Zaključavanje Virtual User Console | 6
    • [CentOS]
      yum install vlock
      vlock                      
      
      [Debian]
      sudo apt-get install vlock  
      vlock –current             
      
    • Onemogućavanje USB uređaja | 7
    • echo 'install usb-storage /bin/true' >> disable-usb-storage.conf
      Nakon toga je potrebno otvoriti  /etc/modprobe.d/blacklist.conf  i dodati:
      blacklist usb-storage
      
    • Onemogućavanje kontrole Ctrl+Alt+Del ([8])
    • systemctl mask ctrl-alt-del.target 
      
    • Uklanjanje nepotrebnih servisa ([9])
    • Provjera servisa koji trenutno rade | 1

      ss -tulpn
      

      Listanje svih korištenih servisa

      systemctl list-units -t service 
      

      Pr. Server koji se ne koristi kao mail server, potrebno je očvrsnuti na način da se obrišu stvari potrebne za mail servere koje se ne koriste.

      [CentOS]
      yum remove postfix
      
      [Debian]
      sudo apt-get autoremove postfix
      
    • Uklanjanje nepotrebih kompajlera
    • Pomoću naredbe ispod mogu se pronaći kompajleri. Zatim pomoću jednostavne naredbe yum remove ukloniti nepotrebne kompajlere.

      [CentOS]
      rpm -q -g "Development/Languages"
      
      [Debian]
      dpkg --list | grep compiler | 8
      
      
  7. Korištenje SSH - Tomislav Budimlić, Matej Cvitković
  8. OpenSSH postao je standard za remote pristup spajanja na server. Ali također default instalacija SSH-a nije idealna te sadrži određeni broj propusta, ali postoji par jednostavnih koraka kako bi se dramatično očvrsnula njegova instalacija.

    1. Korištenje jakih lozinski i korisničkih imena
    2.  Minimalno 8 znakova, kombinacija velikih i malih slova, kombinacija brojeva i slova te dodavanje posebnih znakova poput ! $ % & / ? *
      
    3. Ukidanje root logina | 3
    4. U datoteci /etc/ssh/sshd_config  treba dodati sljedeći liniju:
      PermitRootLogin no
      

      Nakon toga treba ponovo pokrenuti uslugu pomoću naredbe service sshd restart . Umjesto root računa preporuča se korištenje sudo.

    5. Limitiranje korisnika | 3
    6. U datoteci  /etc/ssh/sshd_config  dodati linije:
      AllowUsers admin
      DenyUsers cvitka
      
    7. Ukidanje Protokola 1 | 3
    8. U datoteci  /etc/ssh/sshd_config  ukolniti komentar i promijeniti liniju:
      # Protocol 2,1
      Protocol 2
      
    9. Prebacivanje sa standarnog porta ([10])
    10. OpenSSH nalazi se na portu 22 i kada napadač odluči napasti poslužitelj uglavnom krenu prvo sa skeniranjem portova pomoću alata(npr. nmap). Ukoliko se OpenSSH nalazi na standarnom portu velike šanse su da će ga pronaći, zbog toga port treba prebaciti na neki brojčano visoki slobodni port koji inače nije poznat po korištenju za slične uporabe. Ukoliko to želimo promijeniti u datoteci /etc/ssh/sshd_config treba promijeniti port. Npr:

      # Run ssh on a non-standard port:
      Port 2345  
      

      Port 2345 je slobodan i nije poznat po sličnim uporabama. Nakon toga ukoliko poslužitelj ima postavljen firewall treba ga dodati u iznimke iptablesa. | 9

    11. Korištenje javnih/privatnih ključeva za autentifikaciju | 1
    12. Korištenje šifriranih ključeva za provjeru autentičnosti nudi dvije glavne prednosti. Prva je ta što je praktičan jer više ne morate upisati lozinku ako koristite javni / privatni ključ. Drugo, nakon što je autentifikacija postavljena na poslužitelju možete onemogućiti provjeru lozinke u potpunosti. Ključevi se generiraju pomoću:

      ssh-keygen -b 4096
      

      Moguće je unijeti frazu (eng. passphrase) koja se mora unositi svaki put prilikom povezivanja na server. Na to možemo gledati kao dodatni mehanizam zaštite. Nakon što su ključevi izgenerirani, potrebo je uploadat ključ na server pomoću:

      ssh-copy-id example_user@ip_adress
      

      Jedini problem autentifikacije na ovaj način je taj da se mora generirati par ključeva za svaki uređaj koji bi se spajao na server.

  9. Iptables - Tomislav Budimlić
  10. Iptables je firewall koji koristi policy chains za dopustiti ili blokirati promet. Kada veza pokušava ostvariti se na poslužitelju, iptables traži je u svom popisu kako bi znao kako reagirati. Ukoliko ne pronađe odvija se defaultna akcija. Postoje tri tipa lanaca INPUT, OUTPUT, FORWARD. INPUT koristi se za kontrolu dolaznih veza, OUTPUT koristi se za kontrolu odlaznih veza, dok FORWARD se koristi za dolazne veze koje zapravo neće dospijeti do poslužitelja tj.one se preusmjeravaju negdje drugdje. Postoje također i tri reakcije na veze Accept, Drop i Reject. Accept prihvaća vezu, Drop odbacuje vezu i pretvara se kao da se ništa nije dogodilo, dok Reject ne dopušta vezu i vraća korisniku grešku.

    Debian po defaultu nema definirane policy chains te ih je potrebno ručno definirati. | 10

    CentOS koristi u svojoj instalaciji umjesto iptables, firewalld. Ukoliko se želi koristiti iptables prvo treba ukloniti firewalld. Proces dodavanja iptables nalazi se ispod([11]):

    systemctl mask firewalld
    systemctl stop firewalld
    yum -y install iptables-services
    sudo systemctl enable iptables
    systemctl start iptables
    

    Sada nakon što je dodan iptables možemo postaviti defaulta pravila.

    #default za sve
    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -P OUTPUT DROP
    
    #Allow incoming SSH 
    sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    sudo iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
    
    #Allow incoming HTTP
    sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
    sudo iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
    
    #Allow outgoing SSH
    sudo iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    sudo iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
    

    Ispod se nalazi popis nekih osnovnih portova. Preporuka je postaviti da sve veze kao DROP, te ručno prihvatiti one koje se potrebne za rad poslužitelja.

    1. TCP port 80 – HTTP Server
    2. TCP port 443 – HTTPS Server
    3. TCP port 25 – Mail Server
    4. TCP port 22 – OpenSSH (remote) secure shell server
    5. TCP port 110 – POP3 (Post Office Protocol v3) server
    6. TCP port 143 – Internet Message Access Protocol (IMAP)
    7. TCP / UDP port 53 – Domain Name System (DNS)
  11. Upravljanje računima - Tomislav Budimlić, Tomislav Čivčija
    1. Onemogućiti remote access za root račun | 11
    2. root:x:0:0:root:/root:/sbin/nologin 
      
    3. Onemogućiti console access za root račun
    4. Inače se preporuča uklanjanje root računa i upravljanje serverom pomoću naredbe sudo koja daje adminska prava korisnicima koji se nalaze u datoteci /etc/sudoers .

      Potrebno je obrisati sve stavke iz datoteke /etc/securetty.
      
    5. Dodavanje računa (admin) | 1
    6. Kako ne želimo da se netko može prijaviti kao root i imati sva prava nad serverom, potrebno je kreirati novog, limitiranog usera koji će moći izvoditi sve administratorske operacije pomoću sudo.

      [CentOS]
      useradd example_user && passwd example_user
      usermod -aG wheel example_user (omogućava sudo)
      
      [Debian]
      adduser example_user sudo
      passwd example_user
      
    7. Dodati mogućnost starenja lozinki | 2
    8. Na ovaj način osiguravaju se česte izmijene lozinki i na taj način se zaključavaju računi koji se često ne koriste i prisiljavaju se administratori na česte promijene, što sigurno doprinosi sigurnosti.

       chage -M 60 -m 7 -W 7 cvitka
      
    9. Zaključavanje računa
    10. Zaključavanje računa u CentOS-u radi se pomoću aplikacije pam_tally2 |11. Aplikacija čita iz svoje datoteke pravila pomoću kojih zaključava račun. Datoteka se nalazi na lokaciji /etc/pam.d/password-auth . U tu datoteku potrebno je dodati sljedeće linije:

      auth     required       pam_tally2.so file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200 #dodati u auth dio datoteke
      account     required      pam_tally2.so #dodati u account dio datoteke
      

      Parametri dodani u prvoj predstavljaju sljedeće:

      • file=/var/log/tallylog – Default log datoteka korištena za čuvanje login brojača.
      • deny=3 – Zabrani pristup nakon tri netočna pokušaja i zaključaj korisnika.
      • even_deny_root – Odnosi se i na root račun.
      • unlock_time=1200 – Račun će biti zaključan 20minuta.

      Provjera korisnika:

      pam_tally2 --user=cvitka
      

      Resetiranje status korisnika:

      pam_tally2 --user=cvitka --reset
      

      Na Debianu je dovoljno ispisati sve korisnike pomoću:

      cat /etc/passwd
      

      Odabrani račun je moguće zaključati pomoću:

      passwd -l accountName  | 2
      
    11. Limitiranje pristupa
    12. Dopustiti pristup poslužitelju samo ovlaštenim korisnicima.

    13. Nadziranje korisničke aktivnosti | 12
    14. Za nadziranje korisničke aktivnosti u CentOS koristi se aplikacija psacct. Ona radi u pozadini i prati svaku od korisničkih aktivnosti na poslužitelju uključujići i resurse koje koristi. Neke od najkorištenijih psacctovih funkcija su ac, lastcomm, accton, sa, last. Također koristi se i aplikacija sysstat .

      yum install psacct
      yum -y install sysstat
      

      Provjera statusa:

      /etc/init.d/psacct status
      Process accounting is disabled.
      

      Po defaultu pssact aplikacija u CentOS je onesposobljena i treba je ručno pokrenuti.

      chkconfig psacct on
      /etc/init.d/psacct start
      Starting process accounting:             [ OK ]   
      

      Pokretanje aplikacije sysstat i omogućavanje prilikom boota.

      systemctl start sysstat  
      systemctl enable sysstat 
      

      Za razliku od CentOS-a, Debian koristi aplikaciju acct koja je zapravo identična psacct-u i funkcionira na isti način.

      sudo apt-get install acct
      /etc/init.d/acct start
      
  12. SELinux - Tomislav Budimlić| 3
  13. SELinux je dogradnja u Linux kernelu koja implementira MAC(eng. Mandatory Acces Control) koji dopušta korisnicima da definiraju sigurnosna pravila koja pružaju preciznija dopuštenja za sve korisnike,aplikacije,procese,datoteke i uređaje. Odluke kernelove kontrole pristupa temelje se na posve sigurnosnom relevantnom kontekstu umjesto o ovlaštenju korisnika. Kako bi dohvatili status SELinuxa u CentOS (sadrži ga već u minimalnoj instalaciji) i rekli mu da provede svoj rad treba pokrenuti sljedeće naredbe:

    getenforce
    setenforce 1
    sestatus
    

    Također bilo bi dobro instalirati paket policycoreutils-python koji pruža dodatne Python usluge za rad SELinuxa.Neke od dodatnih usluge su audit2allow , audi2why , chcat , semanage .

    sudo yum install  policycoreutils-python
    

    U Debianu za razliku od CentOS nije moguće omogućiti SELinux u novijim verzijama ([12])

  14. Očvršćivanje /etc/sysctl.conf ([13]) - Matej Cvitković
  15. Sysctl je sučelje koje omogućuje da se naprave promjene na radnom Linux kernelu. Pomoću datoteke /etc/sysctl.conf mogu se podesiti razne Linux mrežne i sustavke opstavke. Primjeri se nalaze ispod:

    Onesposobljavanje adresiranja putova(eng. path addressing)

    net.ipv4.conf.all.accept_source_route=0
    

    Onesposobljavanje IPv4 preusmjeravanja

    ipv4.conf.all.forwarding=0
    

    Onesposobljavanje IPv6 net.ipv6.conf.all.disable_ipv6 = 1

    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1
    net.ipv4.conf.all.rp_filter=2
    
  16. Korištenje vanjskih sustavskih skeniranja - Tomislav Čivčija
  17. Kako bi zaštitili poslužitelj potrebno je stati u ulogu napadača i provjeti slabosti koje su vidljive izvana. Za te uporabe koriste se alati pomoću nmap , nessus , openVAS .

    1. nmap | 13
    2. Nmap je alat koji se koristi za mrežna istraživanja ili sigurnosne revizije. Omogućava ping skeniranje, razne tehnike skeniranja portova te TCP/IP "otisak prsta". Važno je reći kako korištenje nmapa nije u potpunosti bezopasno. Potrebno je dopuštenje vlasnika sustava za skeniranje servera.

      [Debian]
      sudo apt-get install nmap
      nmap IP_adresa
      
      [CentOS]
      yum install nmap
      nmap IP_adresa
      
      


      Server prije očvršćivanja
      Server poslije očvršćivanja
























    3. Nessus ([14])
    4. Nessus je besplatan alat koji omogućava udaljeno skeniranje lokalne mreže kako bi se provjerilo postoje li kakvi nedostatci koje bi napadaći mogli iskoristiti protiv servera.

      [Debian]
      wget http://downloads.nessus.org/nessus3dl.php?file=Nessus-6.6.1-debian6_amd64.deb&licence_accept=yes&t=f7aa904ae5609c7ac593e61d2f68042e
      sudo dpkg -i Nessus*.deb
      sudo /etc/init.d/nessusd start
      
      [CentOS]
      yum install glibc zlib
      wget http://downloads.nessus.org/nessus3dl.php?file=Nessus-6.6.1-debian6_amd64.deb&licence_accept=yes&t=f7aa904ae5609c7ac593e61d2f68042e
      rpm -ivh Nessus*.rpm
      
      

      Nakon toga je potrebno otici na stranicu koja nam se prikaže nakon uspješne instalacije i tamo kreirati korisnika, odnosno administratora i svi izvještaji se tamo pregledavaju.

  18. Korištenje unutarnje zaštite - Tomislav Čivčija
  19. Osim vanjske zaštite potrebno je vršiti i zaštitu iz unutra protiv virusa, rootkitova, malware itd. Postoje razni alati i neki od njih mogu otkriti nedopuštene aktivnosti poput DDOS napada, skeniranja portova itd. Neki od alaata su ClamAV(Antivirus), Rkhunter(Rootkit detection system), Fail2Ban(Intrusion prevention software framework), OSSEC(Open-source host-based intrusion detection system), Mod_Security(Intrusion detection and prevention) ([15]).

    1. ClamAV | 14
    2. ClamAV je open source antivirus koji može pomoći u otkrivanju trojanaca, virusa, malwarea itd. Prvo je potrebno instalirati EPEL 7 repozitorij. To se radi na način.

      [CentOS]
      yum install epel-release
      

      Kod Debiana postupak je puno jednostavniji i potrebno je upisati samo jednu naredbu i ClamAV se automatski pokrece nakon istalacije. Ukoliko to nije slučaj, dovoljno je upisati clamd.

      [Debian]
      sudo apt-get install clamav clamav-daemon
      
      

      Nakon što je dodan repozitorij potrebno je instalirati i postaviti ClamAV pakete.

      [CentOS]
      yum install clamav clamav-scanner-systemd
      

      Zatim treba stvoriti simboličnu vezu (eng. symbolic link) do defaultnog puta i povezati s clamd@scan datotekom.

      [CentOS]
      ln -s /etc/clamd.d/scan.conf /etc/clamd.conf
      

      U datoteci /etc/clamd.d/scan.conf treba staviti # ispred Example i maknuti komentar ispred naredbe LocalSocket /var/run/clamd.scan/clamd.sock Te uključiti SELinux boolean za antivirus.

      [CentOS]
      setsebool -P antivirus_can_scan_system 1
      

      Na posljetku preostalo je pokrenuti uslugu i omogućiti joj start prilikom bootanja poslužitelja, te instalirati i postaviti ClamAV updater.

      [CentOS]
      systemctl start clamd@scan
      systemctl enable clamd@scan
      

      Instalacija updatera.

      [CentOS]
      yum install clamav-update
      

      Kao prilikom postavljanja ClamAV u datoteci /etc/freshclam.conf potrebno je dodati # prije Example i FRESHCLAM_DELAY=disabled-warn u datoteci /etc/sysconfig/freshclam . Na kraju ostalno je samo skenirati poslužitelja za malwareom.Jedan primjer skeniranja /var/log/* mape prikazan je ispod.

      clamdscan --fdpass /var/log/*
      
      [Debian]
      clamscan -r / 
      
    3. RkHunter | 15 & | 16
    4. RKHunher je alat za otkrivanje rootkitova, backdoorova i mogućih lokalnih exploitova. Za instalaciju potrebno je dodati EPEL repozitorij za instalaciju RKHuntera. Instalacija se provodi sljedećim naredbama:

      [CentOS]
      yum --enablerepo=epel -y install rkhunter
      

      Situacija za RKHunter slična je kao za prošlu aplikaciju i dovoljno je pokrenuti jednu naredbu za instalaciju.

      [Debian]
      apt-get install rkhunter
      

      Nakon toga potrebno je urediti datoteku /etc/sysconfig/rkhunter . Datoteka treba izgledati ovako:

      [CentOS]
      MAILTO=root@localhost
      DIAG_SCAN=no
      

      Nakon toga potrebno je ažurirati bazu aplikacije i njezina svojstva datotečnog sustava.

      [CentOS]
      rkhunter --update
      rkhunter --propupd
      

      Na Debianu je potreno prvo update-ati data files u kojima se nalaze informacije koje RkHunter provjerava kako bi utvrdio je li određeni file ili ponašanje sumnjivo ili ne.

      [Debian]
      sudo rkhunter --update
      

      Sljedeća stvar je postaviti temeljne vrijednosti kako bi RkHunter mogao kasnije ustaniviti je li se dogodila kakva promjena ili ne.

      [Debian]
      sudo rkhunter --propupd
      

      Sada jedino preostalo je pokrenuti potragu.

      rkhunter -c 
      rkhunter --check --sk
      
    5. Fail2Ban | 17
    6. Fail2Ban blokira IP adresu s koje je unesena lozinka nakon što je unesena krivo tri puta zaredom. Odnosno, možemo reći kako Fail2ban samo dodaje novo pravilo u iptables. Prvo ga je potreno instalirati:

      [CentOS]
      yum install fail2ban
      
      [Debian]
      sudo apt-get install fail2ban
      

      Nakon toga je potrebno napraviti kopije jail.conf jer nije pametno mjenjati podatke u tim field-ovima.

      sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
      

      Sve potrebne promjene se rade u jail.local. Moguće je definirati IP adresu koju će Fail2ban ignorirati (nasa adresa s koje se uvijek prijavljujemo), vijeme zaključanosti IP adresa, broj pokušaja krivog prijavljivanja, itd. Takožer, moguće je postaviti email na koji želimo primati obavijesti o neuspješnim prijavama.

      [DEFAULT]
      ignoreip = 127.0.0.1
      bantime  = 3600 
      findtime = 600
      maxretry = 3
      
      # Destination email address used solely for the interpolations in
      # jail.{conf,local} configuration files.
      destemail = your@email
      

      Račune je moguće i ručno zaključati/otključati:

      sudo fail2ban-client set <jail> banip/unbanip <ip address>
      
    7. OSSEC | 18
    8. OSSEC je alat koji se može instalirati na server kako bi se pratila njegova aktivnost. OSSEC je open-source aplikacija koja provodi analize logova, provjere integriteta, otkrivanje rootkitova, real-time upozorenja o napadima i slično. Instalacija izgleda ovako:

      [CentOS]
      yum install mysql-devel postgresql-devel gcc
      wget -U ossec https://bintray.com/artifact/download/ossec/ossec-hids/ossec-hids-2.8.3.tar.gz 
      tar -zxvf ossec-hids-2.8.3.tar.gz 
      cd ossec-hids-2.8.3 cd ossec-hids-2.8.3 
      ./install.sh
      
      [Debian]
      apt-get install build-essential inotify-tools
      wget -U ossec https://bintray.com/artifact/download/ossec/ossec-hids/ossec-hids-2.8.3.tar.gz 
      tar -zxvf ossec-hids-2.8.3.tar.gz 
      cd ossec-hids-2.8.3 cd ossec-hids-2.8.3 
      ./install.sh
      

      Postoji puno koraka prilikom instalacije na koje je potrebno odgovoriti y ili n . Neka od pitanja su vrsta instalacije(server,agent,local,hybrid), lokacija instalacije,želite li e-mail notifikacije, želite li engine za otkrivanje rootkita,želite omogućiti remote syslog itd. Prilikom instalacije odgovorili smo sve s y osim kod pitanja za dodavanje IP adresa na white list tamo smo odabrali n .

      Nakon što je uspiješno instaliran OSSEC i dalje neće biti u funkciju ,to se može provjeriti pomoću naredbe:

      /var/ossec/bin/ossec-control status
      

      Ukoliko je OSSEC neaktivan aktivira se pomoću naredbe:

      /var/ossec/bin/ossec-control start
      
    9. Mod_Security | 19 & | 20
    10. Mod_Security je aplikacijski firewall koji se pokreće kao modul na webserveru i on pruža zaštitu protiv raznih napada. Nadzire HTTP promet i provodi real-time analize. Dostupan je za Apache,Nginx i IIS. Kako bi se mogao instalirati potrebno je dodati EPEL repozitorij, to smo već raditi tako da to nećemo ponavljati.

      [CentOS] 
      yum install mod_security mod_security_crs 
      

      Nakon instalacije potrebno ga je aktivirati to se radi na način da se promijene postavke u datoteci /etc/httpd/conf.d/mod_security.conf . Točnije potrebno je SecRuleEngine pravilo promijeniti, postoje tri stanja On, Off, DetectionOnly. On - pravila su aktivirana, Off - pravila su isključena, DetectionOnly - samo presreće i bilježi aktivnosti. Kako mi na serveru želimo presresti i blokirati napade postaviti ćemo On.

      SecRuleEngine on
      

      Nakon toga potrebno je samo ponovo pokrenuti uslugu.

      service httpd restart
      

      Kako bi potvrdili da aplikacija uistinu radi provjerimo sadržaj error_loga.

      tail /var/log/httpd/error_log
      
      [Debian]
      sudo apt-get install libapache2-modsecurity
      

      Nakon toga je potrebno restartati server i nakon toga je potrebno otvoriti modsecurity.conf i podesiti sljedeće linije:

      SecRuleEngine DetectionOnly - postaviti na On
      SecResponseBodyAccess On - postaviti na Off
      
    11. Korištenje aplikacija za reviziju i skeniranje nedostataka ([16])
    12. Lynis je aplikacija korištena za skeniranje poslužitelja i testiranje razine zaštite. Ona će pokazati moguće nedostatke koje je potrebno očvrstiti kako bi poslužitelj bio siguran.Za instalaciju ove aplikacije potrebno je instalirati git kako bi se moglo skinut aplikaciju. | 20

      [CentOS]
      sudo yum install git
      
      [Debian]
      sudo apt-install git
      

      Nakon toga potrebno je skinuti projekt.

      git clone https://github.com/CISOfy/lynis.git
      

      Sada je preostalo samo pokrenuti aplikaciju to se radi pomoću naredbe:

      sudo ./lynis audit system -Q
      

      Na Debianu je još moguće skinuti lynis pomoću:

      sudo apt-get install lynis
      

      I nakon toga se jednostavno pokrene pomoću:

      sudo lynis -c
      

      | 21

      Server revizija prije očvršćivanja
      Server revizija poslije očvršćivanja










































  20. Zaključak - Tomislav Budimlić
  21. Očvršćivanje Linux poslužitelja je iznimno zahtjevan i dugotrajan posao prilikom izgradnje servera. Na ovom projektu obuhvatili smo one najvažnije korake koje je potrebno poduzeti kako bismo smanjili ranjivost servera. Može se vidjeti kako se samo očvršćivanje odnosi i na fizičko i programsko očvršćicanje. U ovom projetku smo se bavili programskim očvršćivanjem jer svi serveri su nam radili virtualno. Obradili smo dvije distribucije koje se najviše koriste u praksi, a to su CentOS i Debian. Možemo zaključiti kako očvršćivanje ovih distribucija je jako slično, u nekim dijelovima identično. Naravno, to je tako jer obje distribucije su Linux i temeljene su na Unixu. Proces očvščivanja servera je jako ozbiljan i zahtjevan posao jer želimo imati server do kojeg se neće moći lako doći kako bismo imali što manje štete. Smatramo kako smo u ovom projektu zagrebli samo gornji dio sante leda i kako ima još puno posla sa očvršćivanjem servera i dovođenjem istog do sto postotne spremnosti na odbijanje napada. Naravno, ako je uopće moguće obraniti sve napade.

  22. Literatura
    1. https://www.debian.org/intro/about
    2. https://www.cyberciti.biz/tips/linux-security.html
    3. http://www.tecmint.com/linux-server-hardening-security-tips/
    4. http://raspberrypi.stackexchange.com/questions/5258/how-can-i-remove-the-gui-from-raspbian-debian
    5. https://www.cyberciti.biz/faq/redhat-centos-disable-ipv6-networking/
    6. http://www.tecmint.com/vlock-lock-user-virtual-console-terminal-linux/
    7. https://www.cyberciti.biz/faq/linux-disable-modprobe-loading-of-usb-storage-driver/
    8. https://www.cyberciti.biz/faq/linux-how-to-check-what-compiler-is-running-installed/
    9. https://uk.godaddy.com/help/changing-the-ssh-port-for-your-linux-server-7306
    10. https://www.upcloud.com/support/configuring-iptables-on-debian-8-0/
    11. https://www.rootusers.com/23-hardening-tips-to-secure-your-linux-server/#3
    12. http://www.tecmint.com/how-to-monitor-user-activity-with-psacct-or-acct-tools/
    13. https://www.howtoforge.com/tutorial/nmap-on-linux/
    14. https://wiki.debian.org/ClamAV
    15. http://www.woktron.com/secure/knowledgebase/79/Installation-Rootkit-Hunter-rkhunter-on-CentOS-5-and-6.html
    16. https://help.ubuntu.com/community/RKhunter
    17. https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-debian-7
    18. https://www.linode.com/docs/security/ossec-ids-debian-7
    19. https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_security-with-apache-on-debian-ubuntu
    20. http://tecadmin.net/install-modsecurity-with-apache-on-centos-rhel/#
    21. https://www.maketecheasier.com/audit-linux-security-with-lynis/
    22. Linux - Audit Most important steps
    23. Digital Ocean - Introduction to hardening
    24. Cyberciti - Linux security tips
    25. Tecmint - Linux Server Hardening Security Tips
    26. Root users 23 tips to secure Linux server
    27. Linux make your server your more secure
    28. Debian Hardening
    29. Tecmint CentOS Hardening Part 1
    30. Tecmint CentOS Hardening Part 2
    31. Hardening SSH
Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima