Hardening Linux Server
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:
- Fizičko očvrišćivanje
- Kreiranje particija
- Minimizacija količine paketa(smanjivanje površine napada)
- Korištenje SSH
- Ažuriranje sustava
- Enkripcija podataka
- 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]):
- Ažuriranje sustava - Matej Cvitković
- Organizacija datotečnih sustava ([5]) - Matej Cvitković
- Minimizacija količine paketa(smanjivanje površine napada) Matej Cvitković | 3
- Pronalaz datoteka bez vlasnika
- Uklanjanje grafičkog sučelja na poslužiteljima kojima nije potrebno npr. LAMP poslužitelji
- Isključiti IPv6 ukoliko se ne koristi
- Isključivanje beskorisnih SUID i SGID naredbi ([7])
- Zaključavanje Virtual User Console | 6
- Onemogućavanje USB uređaja | 7
- Onemogućavanje kontrole Ctrl+Alt+Del ([8])
- Uklanjanje nepotrebnih servisa ([9])
- Uklanjanje nepotrebih kompajlera
- Korištenje SSH - Tomislav Budimlić, Matej Cvitković
- Korištenje jakih lozinski i korisničkih imena
- Ukidanje root logina | 3
- Limitiranje korisnika | 3
- Ukidanje Protokola 1 | 3
- Prebacivanje sa standarnog porta ([10])
- Korištenje javnih/privatnih ključeva za autentifikaciju | 1
- Iptables - Tomislav Budimlić
- TCP port 80 – HTTP Server
- TCP port 443 – HTTPS Server
- TCP port 25 – Mail Server
- TCP port 22 – OpenSSH (remote) secure shell server
- TCP port 110 – POP3 (Post Office Protocol v3) server
- TCP port 143 – Internet Message Access Protocol (IMAP)
- TCP / UDP port 53 – Domain Name System (DNS)
- Upravljanje računima - Tomislav Budimlić, Tomislav Čivčija
- Onemogućiti remote access za root račun | 11
- Onemogućiti console access za root račun
- Dodavanje računa (admin) | 1
- Dodati mogućnost starenja lozinki | 2
- Zaključavanje računa
- 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.
- Limitiranje pristupa
- Nadziranje korisničke aktivnosti | 12
- SELinux - Tomislav Budimlić| 3
- Očvršćivanje /etc/sysctl.conf ([13]) - Matej Cvitković
- Korištenje vanjskih sustavskih skeniranja - Tomislav Čivčija
- nmap | 13
- Nessus ([14])
- Korištenje unutarnje zaštite - Tomislav Čivčija
- ClamAV | 14
- RkHunter | 15 & | 16
- Fail2Ban | 17
- OSSEC | 18
- Mod_Security | 19 & | 20
- Korištenje aplikacija za reviziju i skeniranje nedostataka ([16])
- Zaključak - Tomislav Budimlić
- Literatura
- https://www.debian.org/intro/about
- https://www.cyberciti.biz/tips/linux-security.html
- http://www.tecmint.com/linux-server-hardening-security-tips/
- http://raspberrypi.stackexchange.com/questions/5258/how-can-i-remove-the-gui-from-raspbian-debian
- https://www.cyberciti.biz/faq/redhat-centos-disable-ipv6-networking/
- http://www.tecmint.com/vlock-lock-user-virtual-console-terminal-linux/
- https://www.cyberciti.biz/faq/linux-disable-modprobe-loading-of-usb-storage-driver/
- https://www.cyberciti.biz/faq/linux-how-to-check-what-compiler-is-running-installed/
- https://uk.godaddy.com/help/changing-the-ssh-port-for-your-linux-server-7306
- https://www.upcloud.com/support/configuring-iptables-on-debian-8-0/
- https://www.rootusers.com/23-hardening-tips-to-secure-your-linux-server/#3
- http://www.tecmint.com/how-to-monitor-user-activity-with-psacct-or-acct-tools/
- https://www.howtoforge.com/tutorial/nmap-on-linux/
- https://wiki.debian.org/ClamAV
- http://www.woktron.com/secure/knowledgebase/79/Installation-Rootkit-Hunter-rkhunter-on-CentOS-5-and-6.html
- https://help.ubuntu.com/community/RKhunter
- https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-debian-7
- https://www.linode.com/docs/security/ossec-ids-debian-7
- https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_security-with-apache-on-debian-ubuntu
- http://tecadmin.net/install-modsecurity-with-apache-on-centos-rhel/#
- https://www.maketecheasier.com/audit-linux-security-with-lynis/
- Linux - Audit Most important steps
- Digital Ocean - Introduction to hardening
- Cyberciti - Linux security tips
- Tecmint - Linux Server Hardening Security Tips
- Root users 23 tips to secure Linux server
- Linux make your server your more secure
- Debian Hardening
- Tecmint CentOS Hardening Part 1
- Tecmint CentOS Hardening Part 2
- Hardening SSH
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
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.
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:
find / -nouser -o -nogroup -exec ls -l {} \;
Njih treba ukloniti nakon što ih se pronađe rm -r "filename"
[CentOS] yum groupremove "X Window System" ([6])
[Debian] sudo apt-get --purge remove x11-* sudo apt-get --purge autoremove | 4
Dodati u datoteku /etc/sysconfig/network
NETWORKING_IPV6 = no | 5
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/
[CentOS] yum install vlock vlock
[Debian] sudo apt-get install vlock vlock –current
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
systemctl mask ctrl-alt-del.target
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
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
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.
Minimalno 8 znakova, kombinacija velikih i malih slova, kombinacija brojeva i slova te dodavanje posebnih znakova poput ! $ % & / ? *
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.
U datoteci /etc/ssh/sshd_config dodati linije: AllowUsers admin DenyUsers cvitka
U datoteci /etc/ssh/sshd_config ukolniti komentar i promijeniti liniju: # Protocol 2,1 Protocol 2
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
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.
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.
root:x:0:0:root:/root:/sbin/nologin
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.
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
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
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:
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
Dopustiti pristup poslužitelju samo ovlaštenim korisnicima.
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
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])
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
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 .
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
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.
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]).
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 /
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
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>
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
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
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
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.