Najvažnije iz članka
- Osigurajte SSH pristup onemogućavanjem root prijave, korištenjem SSH ključeva umjesto lozinki i promjenom podrazumijevanog porta (npr. 2222).
- Implementirajte robustan firewall (UFW/firewalld) dopuštajući samo esencijalne dolazne portove i redovito ažurirajte operativni sustav te sav softver.
- Postavite alate za detekciju upada poput Fail2Ban za automatsko blokiranje zlonamjernih IP adresa i razmotrite HIDS (OSSEC/Wazuh) za dublju analizu logova i provjeru integriteta sustava.
- Koristite MAC sustave (SELinux/AppArmor) za dodatnu razinu zaštite procesa i redovito kreirajte i testirajte sigurnosne kopije kritičnih podataka.
Sadržaj članka
- 1. Osnovni Principi Hardeninga
- 2. Jačanje SSH Pristupa
- 2.1. Onemogućavanje Pristupa Root Korisniku
- 2.2. Korištenje SSH Ključeva umjesto Lozinki
- 2.3. Promjena Podrazumijevanog SSH Porta
- 3. Upravljanje Korisnicima i Dozvolama
- 3.1. Uklanjanje Neiskorištenih Korisnika i Grupa
- 3.2. Jaka Politika Lozinki
- 3.3. Ograničavanje Sudo Pristupa
- 4. Konfiguracija Firewalla (netfilter/iptables/UFW/firewalld)
- 4.1. Korištenje UFW (Uncomplicated Firewall) - za Debian/Ubuntu
- 4.2. Korištenje firewalld - za RHEL/CentOS/Fedora
- 5. Ažuriranje Sustava i Softvera
- 5.1. Redovito Ažuriranje Paketa
- 6. Praćenje i Logiranje (Auditing and Logging)
- 6.1. Konfiguracija Sysloga/Rsysloga
- 6.2. Log Rotacija
- 6.3. Alati za Detekciju Upada (Intrusion Detection Systems - IDS)
- 7. Integritet Datotečnog Sustava
- 7.1. Provjera Integriteta (AIDE)
- 7.2. Ograničavanje Pristupa /tmp i /var/tmp
- 8. Onemogućavanje Nepotrebnih Usluga
- 9. Sigurnosni backupi
- 10. SELinux / AppArmor
- 10.1. SELinux (Security-Enhanced Linux) - za RHEL/CentOS/Fedora
- 10.2. AppArmor - za Debian/Ubuntu
- Zaključak
U današnjem digitalnom krajoliku, sigurnost Linux servera nije opcija, već apsolutna nužnost. Bilo da upravljate web-serverom, bazom podataka ili nekom drugom kritičnom infrastrukturom, nezaštićen sustav predstavlja otvorena vrata za zlonamjerne aktere. Ovaj vodič pruža sveobuhvatne korake i najbolje prakse kako biste značajno ojačali sigurnost vašeg Linux servera, smanjujući površinu napada i povećavajući otpornost na prijetnje.
1. Osnovni Principi Hardeninga
Prije nego što zaronimo u specifične konfiguracije, važno je razumjeti temeljne principe hardeninga:
- Princip najmanje privilegije (Principle of Least Privilege - PoLP): Svaki korisnik, proces i program trebao bi imati samo minimalan skup dozvola potrebnih za obavljanje svoje funkcije. Ništa više.
- Smanjenje površine napada (Reduce Attack Surface): Deinstalirajte nepotreban softver, zatvorite neiskorištene portove i onemogućite suvišne usluge. Manje otvorenih točaka znači manje potencijalnih ulaznih točaka za napadače.
- Redovita ažuriranja: Održavajte operativni sustav i sav instalirani softver ažurnim. Sigurnosne zakrpe često popravljaju kritične ranjivosti koje napadači aktivno iskorištavaju.
- Dubinska obrana (Defense in Depth): Implementirajte više slojeva sigurnosti. Čak i ako jedan sloj zakaže, drugi bi ga trebao moći zaustaviti ili ublažiti napad.
- Revizija i nadzor (Auditing and Monitoring): Kontinuirano pratite i bilježite aktivnosti na serveru. Brza detekcija anomalija ključna je za odgovor na incidente.
2. Jačanje SSH Pristupa
SSH (Secure Shell) je vaš primarni ulaz u server i stoga mora biti maksimalno zaštićen.
2.1. Onemogućavanje Pristupa Root Korisniku
Izravan SSH pristup root korisniku je iznimno rizičan. Umjesto toga, prijavite se kao običan korisnik, a zatim koristite sudo za povišene privilegije.
Uredite datoteku /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Pronađite liniju PermitRootLogin i postavite je na no:
PermitRootLogin no
2.2. Korištenje SSH Ključeva umjesto Lozinki
SSH ključevi nude značajno veću sigurnost od lozinki. Generirajte par ključeva na lokalnom stroju (ssh-keygen), kopirajte javni ključ na server (ssh-copy-id user@your_server_ip), a zatim onemogućite autentifikaciju lozinkom.
U sshd_config postavite:
PasswordAuthentication no
2.3. Promjena Podrazumijevanog SSH Porta
Podrazumijevani SSH port (22) često je meta automatiziranih napada. Promijenite ga na neki viši, neiskorišteni port (npr. 2222).
U sshd_config pronađite Port i promijenite ga:
Port 2222
Nakon svih promjena, ponovno pokrenite SSH uslugu:
sudo systemctl restart sshd
Ne zaboravite ažurirati pravila firewalla kako biste dopustili promet na novom SSH portu!
3. Upravljanje Korisnicima i Dozvolama
3.1. Uklanjanje Neiskorištenih Korisnika i Grupa
Redovito pregledavajte korisničke račune i uklanjajte one koji više nisu potrebni. Eliminirajte generičke račune koji nemaju jasnu svrhu.
cat /etc/passwd
3.2. Jaka Politika Lozinki
Iako SSH ključevi smanjuju potrebu za lozinkama, i dalje su potrebne za lokalnu prijavu i sudo. Implementirajte politiku jakih lozinki koja uključuje minimalnu duljinu, složenost znakova i prisilnu promjenu lozinke.
Alati poput pam_pwquality (na Debian/Ubuntu) ili cracklib (na RHEL/CentOS) mogu pomoći u provođenju ove politike.
3.3. Ograničavanje Sudo Pristupa
Ne dajte sudo pristup svakome. Koristite visudo (koji uređuje /etc/sudoers) za precizno definiranje tko može izvršavati koje naredbe s povišenim privilegijama.
sudo visudo
4. Konfiguracija Firewalla (netfilter/iptables/UFW/firewalld)
Firewall je prva linija obrane vašeg servera, kontrolirajući dolazni i odlazni promet.
4.1. Korištenje UFW (Uncomplicated Firewall) - za Debian/Ubuntu
UFW je korisničko sučelje za iptables.
sudo apt update
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh # ili sudo ufw allow 2222/tcp ako ste promijenili port
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status verbose
4.2. Korištenje firewalld - za RHEL/CentOS/Fedora
firewalld je preporučeni firewall na novijim RHEL-temeljenim sustavima.
sudo yum install firewalld # ili dnf install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-service=ssh # ili --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Uvijek dopustite samo portove koji su apsolutno neophodni za rad servera.
5. Ažuriranje Sustava i Softvera
Ovo je najjednostavniji, ali često zanemaren korak.
5.1. Redovito Ažuriranje Paketa
Postavite automatsko ažuriranje za sigurnosne zakrpe ili barem osigurajte da se ažuriranja provode ručno redovito.
Debian/Ubuntu:
sudo apt update && sudo apt upgrade -y
Za automatske sigurnosne nadogradnje:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
RHEL/CentOS:
sudo yum update -y # ili dnf update -y
Za automatske nadogradnje instalirajte yum-cron ili dnf-automatic.
6. Praćenje i Logiranje (Auditing and Logging)
6.1. Konfiguracija Sysloga/Rsysloga
Syslog je industrijski standard za logiranje događaja. Osigurajte da su važni logovi (autentifikacija, kernel, sustav) pravilno konfigurirani i da se pohranjuju.
Provjerite /etc/rsyslog.conf.
6.2. Log Rotacija
Log datoteke mogu brzo narasti. Konfigurirajte logrotate za automatsko arhiviranje, komprimiranje i brisanje starih logova.
Provjerite /etc/logrotate.conf i /etc/logrotate.d/.
6.3. Alati za Detekciju Upada (Intrusion Detection Systems - IDS)
Fail2Ban
Fail2Ban skenira log datoteke (npr. SSH, web server logs) i automatski blokira IP adrese koje pokazuju zlonamjerne aktivnosti (npr. višestruki neuspješni pokušaji prijave). To je aktivna mjera zaštite.
Instalacija (Debian/Ubuntu):
sudo apt install fail2ban
Konfiguracija: Kopirajte jail.conf u jail.local za prilagođene postavke:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Omogućite jail-ove za usluge koje želite zaštititi (npr. sshd, nginx-http-auth). Podesite bantime, findtime i maxretry prema svojim potrebama.
[sshd]
enabled = true
port = ssh,2222 # Ako ste promijenili SSH port
Ponovno pokrenite Fail2Ban:
sudo systemctl restart fail2ban
OSSEC/Wazuh (Host-based IDS - HIDS)
OSSEC (ili njegova modernija verzija Wazuh) je HIDS alat koji pruža:
- Provođenje politike: Osigurava da konfiguracije sustava ostanu unutar definiranih sigurnosnih politika.
- Detekcija rootkita: Provjerava integritet sistemskih datoteka i detektira pokušaje instalacije rootkita.
- Analiza logova: Agregira i analizira logove iz različitih izvora za detekciju anomalija i napada.
- Prilagođeni alarmi: Može generirati upozorenja u stvarnom vremenu u slučaju sumnjivih aktivnosti.
Instalacija i konfiguracija OSSEC-a/Wazuh-a je složenija i uključuje postavljanje agenta na serveru i centralnog menadžera za prikupljanje i analizu podataka.
Osnovni koraci za OSSEC agenta (primjer, detaljna instalacija zahtijeva zaseban vodič):
sudo apt install ossec-agent
# Konfigurirajte agenta da se poveže s OSSEC managerom
sudo nano /var/ossec/etc/ossec.conf
# ... dodajte IP adresu managera
sudo systemctl restart ossec-agent
7. Integritet Datotečnog Sustava
7.1. Provjera Integriteta (AIDE)
AIDE (Advanced Intrusion Detection Environment) je alat za provjeru integriteta datoteka. Izrađuje "snapshot" datotečnog sustava i njegovih atributa (hash, dozvole, vlasnik, itd.). Kasnije provjere mogu detektirati promjene koje bi mogle ukazivati na kompromitaciju.
Instalacija (Debian/Ubuntu):
sudo apt install aide aide-common
Inicijalizacija baze podataka (prvi put):
sudo aide --init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
Provjera (redovito):
sudo aide --check
Preporučuje se automatizacija ove provjere putem cron posla i slanje izvještaja na e-mail.
7.2. Ograničavanje Pristupa /tmp i /var/tmp
Privremene direktorije često zloupotrebljavaju napadači. Montirajte ih s opcijama noexec, nosuid i nodev u /etc/fstab.
UUID=xxxx-xxxx-xxxx-xxxx /tmp ext4 defaults,noexec,nosuid,nodev 0 0
UUID=yyyy-yyyy-yyyy-yyyy /var/tmp ext4 defaults,noexec,nosuid,nodev 0 0
Zatim ponovno montirajte datotečne sustave ili ponovno pokrenite server.
8. Onemogućavanje Nepotrebnih Usluga
Smanjite površinu napada tako što ćete onemogućiti sve usluge koje server ne koristi.
sudo systemctl list-units --type=service --state=running
Pregledajte listu i za svaku nepotrebnu uslugu pokrenite:
sudo systemctl stop servicename
sudo systemctl disable servicename
Budite oprezni pri onemogućavanju usluga; provjerite njihovu svrhu prije nego što ih isključite.
9. Sigurnosni backupi
Redovito stvarajte sigurnosne kopije (backup) kritičnih podataka i konfiguracija. U slučaju kompromitacije ili kvara, backup je vaša posljednja linija obrane. Pohranjujte backup na sigurnoj, izvanmrežnoj lokaciji.
10. SELinux / AppArmor
10.1. SELinux (Security-Enhanced Linux) - za RHEL/CentOS/Fedora
SELinux pruža obveznu kontrolu pristupa (Mandatory Access Control - MAC) koja ograničava što procesi i korisnici mogu raditi, čak i ako imaju root privilegije. To je moćan sigurnosni mehanizam, ali može biti izazovan za konfiguriranje.
Provjerite status SELinux-a:
sestatus
Preporučuje se držati ga u enforcing modu. Ako naiđete na probleme, koristite audit2allow za generiranje pravila.
10.2. AppArmor - za Debian/Ubuntu
AppArmor također pruža MAC, ali je često lakši za konfiguriranje od SELinux-a. On ograničava programe na skup resursa koje mogu pristupiti.
Provjerite status AppArmor-a:
sudo apparmor_status
AppArmor radi putem profila. Možete kreirati i primijeniti profile za zaštitu specifičnih aplikacija.
Zaključak
Sigurnosno jačanje Linux servera je kontinuiran proces, a ne jednokratni zadatak. Redovito pregledavanje sustava, ažuriranje softvera, praćenje logova i praćenje novih sigurnosnih prijetnji ključni su za održavanje sigurne infrastrukture. Implementacijom gore navedenih preporuka, značajno ćete smanjiti rizik od kompromitacije i osigurati stabilnost i pouzdanost vašeg servera. Nikada nemojte pretpostavljati da ste potpuno sigurni; budite proaktivni i uvijek spremni na potencijalne prijetnje.
Komentari