Ukratko

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. 1. Osnovni Principi Hardeninga
  2. 2. Jačanje SSH Pristupa
  3. 2.1. Onemogućavanje Pristupa Root Korisniku
  4. 2.2. Korištenje SSH Ključeva umjesto Lozinki
  5. 2.3. Promjena Podrazumijevanog SSH Porta
  6. 3. Upravljanje Korisnicima i Dozvolama
  7. 3.1. Uklanjanje Neiskorištenih Korisnika i Grupa
  8. 3.2. Jaka Politika Lozinki
  9. 3.3. Ograničavanje Sudo Pristupa
  10. 4. Konfiguracija Firewalla (netfilter/iptables/UFW/firewalld)
  11. 4.1. Korištenje UFW (Uncomplicated Firewall) - za Debian/Ubuntu
  12. 4.2. Korištenje firewalld - za RHEL/CentOS/Fedora
  13. 5. Ažuriranje Sustava i Softvera
  14. 5.1. Redovito Ažuriranje Paketa
  15. 6. Praćenje i Logiranje (Auditing and Logging)
  16. 6.1. Konfiguracija Sysloga/Rsysloga
  17. 6.2. Log Rotacija
  18. 6.3. Alati za Detekciju Upada (Intrusion Detection Systems - IDS)
  19. 7. Integritet Datotečnog Sustava
  20. 7.1. Provjera Integriteta (AIDE)
  21. 7.2. Ograničavanje Pristupa /tmp i /var/tmp
  22. 8. Onemogućavanje Nepotrebnih Usluga
  23. 9. Sigurnosni backupi
  24. 10. SELinux / AppArmor
  25. 10.1. SELinux (Security-Enhanced Linux) - za RHEL/CentOS/Fedora
  26. 10.2. AppArmor - za Debian/Ubuntu
  27. 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.

Izvori i dodatno čitanje

  1. OpenSSH/Cookbook/Advanced Topics - Wikibooks
  2. Uncomplicated Firewall (UFW) - Ubuntu Community Help Wiki
  3. Fail2Ban - GitHub
  4. Security-Enhanced Linux (SELinux) - ArchWiki
B
Uredništvo portala

BAJT

Službeni autorski profil redakcije portala BAJT. Sadržaj priprema i provjerava uredništvo portala.