Kako zaštiti VPS server od napada
Ako koristite VPS server, bezbednost ne bi trebalo da posmatrate kao nešto što ćete podesiti jednom i posle toga zaboraviti. Vaš server može da radi sasvim stabilno mesecima, a da se problem pojavi tek onda kada neka ranjivost bude iskorišćena, odnosno kada neko krene sa pokušajima prijave ili kada aplikacija počne da otvara prostor za napad. Upravo zato je važno da zaštitu VPS-a posmatrate kao stalni deo održavanja, a ne kao set-and-forget podešavanje.
Drugim rečima, nije dovoljno samo da instalirate sistem i pustite sajt ili aplikaciju da rade. Potrebno je da vodite računa i o načinu pristupa serveru, o tome koji servisi su otvoreni prema internetu, kako se prenose fajlovi, ko ima pristup serveru i da li se sve redovno ažurira. Što ranije preduzmete ove aktivnosti, manja je verovatnoća da ćete kasnije morati da rešavate neki ozbiljniji problem.
Iako Linux važi za stabilan i bezbedan operativni sistem, to ne znači da je automatski zaštićen od svih rizika. Linux VPS i dalje može biti meta malvera, brute-force pokušaja prijave, presretanja saobraćaja, napada na web aplikacije, zloupotrebe loše podešenih privilegija i drugih oblika kompromitacije. Drugim rečima, dobra osnova postoji, ali dosta toga i dalje zavisi od načina na koji je server podešen i održavan.
Zato, pre nego što uvedete konkretne mere zaštite, korisno je da znate šta zapravo treba redovno da pratite. Tu spada serverski softver, SSH pristup, root prijave, lozinke i drugi kredencijali, firewall pravila, prenos fajlova, korisnička prava i serverski logovi. Kada sve te stavke držite pod kontrolom, mnogo je lakše da na vreme primetite problem i reagujete pre nego što napravi veću štetu.
Promenite podrazumevani SSH port
Ako se na VPS prijavljujete preko standardnog SSH porta 22, veća je šansa da će server biti meta automatizovanih pokušaja pristupa. To ne znači da je sam port problem, već da je to prvo mesto koje veliki broj automatizovanih alata proverava kada traži servere pogodne da budu predmet napada. Da budemo do kraja jasni, promena porta neće zaustaviti ozbiljnog napadača, ali može značajno da smanji količinu nasumičnih pokušaja prijave.
Da biste to uradili, potrebno je da otvorite SSH konfiguracioni fajl:
nano /etc/ssh/sshd_config
U njemu pronađite liniju:
Port 22
Zamenite broj 22 novim portom po izboru i sačuvajte izmene. Ukoliko je ova linija zakomentarisana, obrišite #.
Pre restarta sshd servirsa, proverite da li je konfiguracija ispravna:
sshd -t
Za Debian i Ubuntu:
service ssh restart
Za CentOS i RHEL:
systemctl restart sshd.service
Ovaj korak je važan zato što smanjuje broj automatskih pokušaja pristupa koji pogađaju najčešće korišćene portove. Nije zamena za ozbiljnije bezbednosne mere, ali jeste koristan dodatni sloj zaštite.
Ako želite detaljnije uputstvo o tome kako promeniti SSH port, predlažemo da pročitate naš tekst Kako da promenite SSH/SFTP port u Linux-u.
Onemogućite root prijavu na VPS serveru
Root nalog ima praktično potpunu kontrolu nad serverom. Upravo zato je i posebno zanimljiv napadačima. Ako neko uspe da kompromituje root pristup, posledice mogu biti mnogo ozbiljnije nego kada je ugrožen običan korisnički nalog. Zato direktna root prijava preko SSH-a uglavnom nije dobra praksa.
Mnogo je bezbednije da napravite zaseban korisnički nalog, a da administratorske komande izvršavate samo kada je to zaista potrebno. Na taj način smanjujete rizik i uvodite dodatni korak između napadača i potpunog pristupa sistemu.
Podešavanje se radi u istom SSH konfiguracionom fajlu:
nano /etc/ssh/sshd_config
Pronađite parametar:
PermitRootLogin no
Ako nije tako podešen, promenite vrednost, sačuvajte izmene i restartujte SSH servis.
service ssh restart
Za CentOS i RHEL:
systemctl restart sshd.service
Ova opcija je važna zato što direktno smanjuje rizik od brute-force napada usmerenih na najprivilegovaniji nalog na sistemu.
Koristite jake i jedinstvene lozinke
Slaba lozinka je i dalje jedan od najčešćih razloga zbog kojih serveri postaju kompromitovani. Ako lozinka sadrži očigledne reči, kratka je, koristi se na više mesta ili prati jednostavan obrazac, velika je verovatnoća da će je napadač pre ili kasnije otkriti. Zato podešavanje jake lozinke ne treba da bude samo formalnost, nego osnovna zaštita pristupa.
Dobra praksa je da vaše lozinke budu duge, dovoljno složene i jedinstvene za svaki nalog i svaki servis. To podrazumeva kombinaciju velikih i malih slova, brojeva i specijalnih znakova, ali i izbegavanje ponavljanja iste lozinke na više mesta. Ako jedna usluga bude kompromitovana, ista lozinka na drugim servisima može da napravi još veći problem.
Ima smisla i da administratorske kredencijale ne deli više osoba, kao i da se lozinke povremeno menjaju. U praksi, to smanjuje rizik od zloupotrebe i olakšava kontrolu pristupa.
Koristite SSH ključeve umesto lozinke
Još bezbedniji pristup je da se za prijavu ne oslanjate samo na lozinku, već na SSH ključeve. To je važno zato što su ključevi znatno otporniji na pogađanje i mnogo teži za kompromitaciju od klasične lozinke. Umesto unosa lozinke prilikom svake prijave, koristi se par ključeva, javni i privatni. Javni ide na server, a privatni ostaje kod vas.
Na Linux sistemu ključ možete generisati ovako:
ssh-keygen -t rsa
Na novijim sistemima možete koristiti i:
ssh-keygen -t ed25519
Tokom postupka sistem će ponuditi lokaciju za čuvanje ključa:
Enter file in which to save the key (/root/.ssh/id_rsa):
Ako želite da se ključ čuva na podrazumevanoj lokaciji, samo pritisnite Enter. Nakon toga biće ponuđeno da unesete passphrase:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Ako ne želite dodatnu passphrase zaštitu, dva puta pritisnite Enter.
Kada se postupak završi, ključevi će biti kreirani i sačuvani.
U praksi, ovo je jedna od najkorisnijih mera za zaštitu SSH pristupa, posebno ako server administrirate redovno i želite pouzdaniji način autentifikacije.
Podesite firewall pravila za Cloud VPS server
Firewall je važan zato što vam omogućava da kontrolišete koji zahtevi uopšte mogu da stignu do servera. Ako firewall nije dobro podešen, pojedini servisi i portovi na serveru, koji nema potrebe da budu javno dostupni, mogu biti vidljivi i nepotrebno dostupni/otvoreni, čime se povećava rizik kompromitacije. Suština nije samo u tome da firewall postoji, već da pravila budu smisleno postavljena.
Zakupom nekih od VPS servera kod nas dobijate opciju da firewall-om lako upravljate kroz svoj mCloud portal. Ovde možete da postavljate neka osnovna pravila kroz grafički prikaz, a za složenija pravila uvek na samom serveru možete koristiti ufw, firewalld, iptables, i slično.
Koristite SFTP umesto FTP-a
Ako fajlove i dalje prenosite preko običnog FTP-a, važno je da znate da to više nije preporučljivo za osetljivo okruženje kao što je VPS. Razlog je jednostavan: FTP ne pruža odgovarajući nivo zaštite tokom prenosa, pa podaci mogu biti izloženi presretanju.
SFTP je bolji izbor zato što šifruje i kredencijale i sam sadržaj fajlova koji se prenose. To u praksi znači bezbedniji rad kada uploadujete sajt, menjate konfiguracione fajlove ili upravljate podacima na serveru.
Primer povezivanja izgleda ovako:
sftp user@server_ipaddress
ili:
sftp user@remotehost_domainname
Ako koristite poseban port:
sftp -oPort=customport user@server_ipaddress
odnosno:
sftp -oPort=customport user@remotehost_domainname
Ova promena je važna zato što utiče na svakodnevni rad sa serverom, a istovremeno smanjuje rizik da pristupni podaci ili fajlovi budu presretnuti tokom prenosa.
Ukoliko vam je potrebno uputstvo za korišćenje SFTP-a, možete ga pronaći u našem tekstu Kako da koristite SFTP za transfer fajlova.
Podesite Fail2Ban
Fail2Ban je koristan zato što prati logove i reaguje kada primeti sumnjivo ponašanje, najčešće veliki broj neuspešnih pokušaja prijave. Umesto da samo pasivno beleži šta se dešava, on može automatski da blokira IP adresu sa koje dolaze takvi pokušaji. To ga čini vrlo praktičnim dodatnim slojem zaštite, posebno za SSH i druge servise koji mogu da budu meta brute-force napada.
Na Ubuntu sistemu instalacija izgleda ovako:
sudo apt-get install fail2ban
Status servisa možete proveriti komandom:
sudo systemctl status fail2ban
Ako je servis aktivan, znači da alat radi i već može da prati logove. U praksi, Fail2Ban ne rešava svaki bezbednosni problem, ali je veoma koristan jer automatski reaguje tamo gde biste inače morali sve da pratite ručno.
Instalirajte antivirus i koristite skener za malver
Firewall štiti mrežni pristup, ali ne rešava problem ako se na serveru već nalaze kompromitovani ili sumnjivi fajlovi. Zato ima smisla da, pored mrežne zaštite, razmišljate i o proveri sadržaja koji se nalazi na samom VPS-u.
Jedan od poznatijih open-source alata za Linux je ClamAV. On može pomoći da prepoznate sumnjive fajlove i zaražen sadržaj.
Na CentOS sistemima možete instalirati pomoću komande:
sudo yum -y install epel-release
sudo yum clean all
sudo yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Za RHEL sisteme koristite:
sudo dnf install clamav
Dok za Ubuntu/Debian koristite:
apt-get install clamav clamav-daemon
Ovde je važno i da budete realni u vezi sa resursima. Ako VPS nema dovoljno memorije, antivirus može dodatno da ga optereti. Konkretno, ne preporučuje se uključivanje ClamAV-a ako server ima manje od 2 GB slobodnog RAM-a, jer to može da dovede do problema sa stabilnošću.
Pored antivirusa, korisno je da koristite i poseban skener za malware. Razlog je to što antivirus i skener ne rade uvek istu stvar na isti način. U praksi je često bolje posmatrati ih kao dva sloja zaštite koji se dopunjuju, a ne kao zamenu jedan za drugi. Važno je i da skeniranje ne bude jednokratna radnja, već deo redovnog održavanja servera.
Ukoliko vas ipak zanimaju neki ozbiljniji servisi sa više ugrađenih alata u sebi, razmislite o Imunify360 ili Bitninja licencama.
Razmotrite VPN za pristup VPS-u
Ako serveru pristupate preko javne mreže ili iz okruženja koje nije potpuno pouzdano, dodatna zaštita može biti VPN. Njegova praktična vrednost je u tome što saobraćaj prolazi kroz šifrovani tunel, pa je otežano presretanje podataka i komunikacija sa serverom postaje bezbednija.
U određenim slučajevima VPN može pomoći i sa aspekta privatnosti, jer skriva stvarnu IP adresu i lokaciju sa koje pristupate. To nije obavezna mera za svaki VPS, ali ima smisla kada želite dodatni nivo zaštite administrativnog pristupa.
Primer instalacije OpenVPN-a na CentOS-u iz izvornog teksta izgleda ovako:
sudo yum install net-tools
curl -O http://swupdate.openvpn.org/as/openvpn-as-2.7.3-CentOS7.x86_64.rpm
sha256sum openvpn-as-*
sudo rpm --install openvpn-as-*.rpm
passwd openvpn
Suština nije samo u samoj instalaciji, već u tome da pristup serveru dodatno zaštitite kada radite van potpuno kontrolisanog okruženja.
Ukoliko vam je potrebno detaljno uputstvo o podešavanju VPN-a na klijentskoj i na serverskoj stranii, predlažemo da pročitate Kako da podesite OpenVPN na klijentskoj strani i Kako da podesite OpenVPN server (na Ubuntu 18.04).
Redovno proveravajte korisničke privilegije
Ako više ljudi ima pristup serveru, postaje izuzetno važno kako upravljate korisničkim privilegijama. Ovo je jedan od onih delova koji se često zanemare dok sve radi kako treba, ali upravo tu nastaju problemi kada previše naloga ima administratorski pristup ili kada korisnici dobiju šira prava nego što su im zaista potrebna.
Dobra praksa je da svako ima samo onaj nivo pristupa koji mu je zaista potreban. To je važno zato što se tako smanjuje mogućnost greške, nenamernih izmena i zloupotrebe naloga. Linux omogućava da se korisnici organizuju kroz grupe i da se privilegije dodeljuju prilično precizno.
Primeri komandi iz izvornog materijala:
sudo addgroup my_group
adduser first_user
sudo usermod -a -G group1,group2 first_user
sudo usermod -aG sudo first_user
sudo chmod -R g+w /directory
Pored samog dodeljivanja prava, korisno je i da povremeno proverite koji nalozi postoje na sistemu. Ako je server ranije bio kompromitovan, napadač ponekad ostavi dodatni nalog kako bi obezbedio kasniji pristup. Zato ova provera ima smisla i kao bezbednosna i kao administrativna mera.
Pratite serverske logove na VPS serveru
Logovi su jedan od najvažnijih izvora informacija o tome šta se zaista dešava na serveru. Ako želite da problem primetite na vreme, ne možete se oslanjati samo na to da sajt deluje da radi. Mnogi problemi se prvo vide upravo u logovima, bilo da je reč o greškama servisa, neuspešnim pokušajima prijave, čudnom ponašanju aplikacije ili neuobičajenom opterećenju sistema.
Na Linux sistemima važan direktorijum za logove je /var/log. Praćenje logova je važno zato što vam daje realniju sliku o stanju servera. Umesto da reagujete tek kada problem postane vidljiv korisnicima, možete ranije da primetite signale upozorenja i sprečite veći zastoj ili kompromitaciju. Pored sistemskih logova, korisno je da pratite i logove web servera, baze podataka, aplikacija i administrativnih aktivnosti.
Za dodatne informacije o monitoringu pokušaja logovanja na Linux server, predlažemo da pročitate Monitoring neuspešnih pokušaja logovanja na Linux server.
Redovno ažurirajte sistem i aplikacije
Jedna od najjednostavnijih, ali i najvažnijih stvari za bezbednost VPS-a jeste redovno ažuriranje sistema i softvera. Stare verzije paketa često sadrže poznate ranjivosti, a upravo takve slabosti napadači najčešće i pokušavaju da iskoriste. Zato update nije samo tehničko održavanje, već direktna bezbednosna mera.
Na Debian i Ubuntu sistemima možete osvežiti listu paketa i instalirati ažuriranja ovako:
sudo apt-get update
sudo apt-get upgrade
Na CentOS i RHEL sistemima koriste se sledeće komande:
sudo yum update
sudo yum check-update
Ako koristite CMS ili aplikacije koje zavise od više komponenti, možete da uključite i automatska ažuriranja, ali uz oprez. To može biti praktično u nekim okruženjima, dok u nekim drugim može napraviti problem, naročito ako nova verzija uvede promenu koja nije testirana unapred. Upravo zato automatski update ima smisla kada znate šta se ažurira i kakav uticaj to može imati na produkciono okruženje.
Zaključak
Ako na VPS-u držite sajt, aplikaciju, bazu podataka ili bilo koji važan servis, bezbednost bi trebalo da bude visoko na listi vaših prioriteta. Važno je da server od početka postavite tako da bude što otporniji na najčešće rizike, a da zatim tu zaštitu redovno održavate.
Ipak, to ne znači da postoji jedna čarobna opcija koja rešava sve. Bezbedniji VPS se gradi kroz više slojeva zaštite: od izbora kvalitetne infrastrukture, preko bezbednijeg SSH pristupa i jačih lozinki, do firewall pravila, bezbednog prenosa fajlova, kontrole korisničkih prava, praćenja logova i redovnih ažuriranja. Svaka od tih mera sama za sebe može da deluje kao sitnica, ali kada se povežu u jednu celinu, razlika postaje velika.
Baš zato bezbednost VPS servera treba da posmatrate kao kontinuiran proces. Što je okruženje urednije, pristup strože kontrolisan, a sistem bolje održavan, to su manje šanse da ćete se suočiti sa ozbiljnim incidentom, prekidom rada ili gubitkom podataka.
