Zaščita Linux strežnika. Kaj storiti najprej

Zaščita Linux strežnika. Kaj storiti najprej
Habib M’henni / Wikimedia Commons, CC BY-SA

V današnjem času je postavitev strežnika na gostovanju vprašanje minut in nekaj klikov. A takoj po zagonu se znajde v sovražnem okolju, saj je odprt za celoten internet kot nedolžna deklica na rock disko zabavi. Hitro ga bodo odkrili skenerji in našli tisoče avtomatskih botov, ki prežijo po mreži v iskanju ranljivosti in napačnih konfiguracij. Obstaja nekaj stvari, ki jih je treba storiti takoj po zagonu, da se zagotovi osnovna zaščita.

Vsebina

Neroot uporabnik

Kot prvo je treba ustvariti neroot uporabnika. Dejstvo je, da ima uporabnik root popolne privilegije v sistemu, in če mu omogočite oddaljeno upravljanje, boste polovico dela opravili za hekerja, saj mu boste pustili veljavno uporabniško ime.

Zato je treba ustvariti drugega uporabnika, za root pa je treba onemogočiti oddaljeno upravljanje preko SSH.

Nov uporabnik se ustvari s ukazom useradd:

useradd [options]

Nato mu dodate geslo z ukazom passwd:

passwd

Končno je treba tega uporabnika dodati v skupino, ki ima pravico izvajati ukaze s povečanimi privilegiji sudo. Glede na distribucijo Linuxa so to lahko različne skupine. Na primer, v CentOS in Red Hat uporabnika dodajo v skupino wheel:

usermod -aG wheel

V Ubuntu je dodan v skupino sudo:

usermod -aG sudo

Ključi namesto gesel SSH

Bruteforce ali uhajanje gesel je standardna pot napada, zato je bolje onemogočiti avtentikacijo z gesli v SSH (Secure Shell) in namesto tega uporabiti avtentikacijo s ključi.

Obstajajo različni programi za izvajanje protokola SSH, kot je lsh in Dropbear, a med najbolj priljubljenimi je OpenSSH. Namestitev odjemalca OpenSSH na Ubuntu:

sudo apt install openssh-client

Namestitev na strežniku:

sudo apt install openssh-server

Zagon demona SSH (sshd) na strežniku z Ubuntu:

sudo systemctl start sshd

Samodejni zagon demona ob vsakem zagonu:

sudo systemctl enable sshd

Treba je opozoriti, da strežni del OpenSSH vključuje tudi odjemalca. Torej prek openssh-server lahko se povežete z drugimi strežniki. Poleg tega lahko z vaše odjemalske naprave zaženete SSH-tunel z oddaljenega strežnika na zunanji gostitelj, ki bo nato menil, da je oddaljeni strežnik vir zahtevkov. To je zelo priročna funkcija za prikrivanje vašega sistema. Več o tem v članku »Praktični nasveti, primeri in SSH tuneli«.

Na odjemalski napravi običajno ni smisla postavljati popolnega strežnika, da ne dovolite možnosti oddaljenega dostopa do računalnika (zaradi varnosti).

Torej, za svojega novega uporabnika najprej morate ustvariti SSH ključe na računalniku, s katerega se boste povezali na strežnik:

ssh-keygen -t rsa

Javni ključ se shranjuje v datoteki .pub in izgleda kot niz naključnih simbolov, ki se začnejo z ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Nato morate kot root na strežniku ustvariti imenik SSH v domačem imeniku uporabnika in dodati javni ključ SSH v datoteko authorized_keys, z uporabo besedilnega urejevalnika, kot je Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Nazadnje, nastavite pravilne pravice za datoteko:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

in spremenite lastništvo na tega uporabnika:

chown -R username:username /home/username/.ssh

Na strani odjemalca morate navesti mesto tajnega ključa za overjanje:

ssh-add DIR_PATH/keylocation

Zdaj se lahko prijavite na strežnik pod imenom uporabnika s tem ključem:

ssh [username]@hostname

Po overitvi lahko uporabite ukaz scp za kopiranje datotek, orodje sshfs za oddaljeno montažo datotečnega sistema ali imenikov.

Priporočljivo je narediti več varnostnih kopij zasebnega ključa, saj, če izklopite overjanje s geslom in ga izgubite, ne boste imeli nobene možnosti dostopa do svojega strežnika.

Kot je omenjeno zgoraj, je v SSH potrebno onemogočiti overjanje za root (zato smo ustvarili novega uporabnika).

Na CentOS/Red Hat najdemo vrstico PermitRootLogin yes v konfiguracijski datoteki /etc/ssh/sshd_config in jo spremenimo:

PermitRootLogin no

Na Ubuntuju dodamo vrstico PermitRootLogin no v konfiguracijsko datoteko 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Po preverjanju, da se nova uporabniška prijava uspešno izvede prek njegovega ključa, lahko onemogočite prijavo s geslom, da preprečite tveganje za njegov uhajanje ali brute force napade. Zdaj bo morala prestopna oseba pridobiti zasebni ključ za dostop do strežnika.

Na CentOS/Red Hat najdemo vrstico PasswordAuthentication yes v konfiguracijski datoteki /etc/ssh/sshd_config in jo spremenimo na naslednji način:

PasswordAuthentication no

Na Ubuntuju dodamo vrstico PasswordAuthentication no u datoteku 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Navodila za povezovanje z dvofaktorsko avtentikacijo prek SSH si oglejte. ovde.

Ogenj

Firewal zagotavlja, da na strežnik prihaja le tisti promet po tistih vratih, ki ste jih neposredno dovolili. To zmanjšuje tveganje za izkoriščanje vrat, ki so se morda naključno odprla z drugimi storitvami, kar močno zmanjša površino napada.

Pred namestitvijo požarnega zidu morate zagotoviti, da je SSH dodan na seznam izjem in ne bo blokiran. V nasprotnem primeru se po aktivaciji požarnega zidu ne bomo mogli povezati s strežnikom.

Z distribucijo Ubuntu gre skupaj Uncomplicated Firewall (ufw), medtem ko z CentOS/Red Hat — firewalld.

Dovolitev SSH v požarnem zidu na Ubuntu:

sudo ufw allow ssh

Na CentOS/Red Hat uporabimo ukaz firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Po tej postavitvi lahko zaženete požarni zid.

Na CentOS/Red Hat zaženemo storitev systemd za firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Na Ubuntu uporabimo naslednji ukaz:

sudo ufw enable

Fail2Ban

Storitve Fail2Ban analizira dnevniške datoteke na strežniku in šteje število poskusov dostopa z vsakega IP-naslova. V nastavitvah so določena pravila, koliko poskusov dostopa je dovoljeno v določenem časovnem okviru — po čemer se ta IP-naslov blokira za določen čas. Na primer, dovolimo 5 neuspešnih poskusov avtentikacije prek SSH v obdobju 2 ur, po čemer blokiramo ta IP-naslov za 12 ur.

Namestitev Fail2Ban na CentOS in Red Hat:

sudo yum install fail2ban

Namestitev na Ubuntu in Debian:

sudo apt install fail2ban

Zagon:

systemctl start fail2ban
systemctl enable fail2ban

V programu sta dva konfiguracijska datoteka: /etc/fail2ban/fail2ban.conf in /etc/fail2ban/jail.conf. Omejitve za izgon so določene v drugi datoteki.

Zapor za SSH je privzeto vključen z privzetimi nastavitvami (5 poskusov, interval 10 minut, izgon za 10 minut).

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5

Poleg SSH lahko Fail2Ban ščiti tudi druge storitve na spletnih strežnikih nginx ali Apache.

Samodejna varnostna posodobitev

Kot je znano, se v vseh programih nenehno odkrivajo nove ranljivosti. Po objavi informacij se izkoriščanja dodajajo v priljubljene pakete za izkoriščanje, ki jih množično uporabljajo hekerji in najstniki pri skeniranju vseh strežnikov zaporedoma. Zato je zelo pomembno namestiti varnostne posodobitve takoj, ko so na voljo.

Na strežniku Ubuntu so v privzeti konfiguraciji vključena samodejna varnostna posodobitve, zato dodatni ukrepi niso potrebni.

Na CentOS/Red Hat je potrebno namestiti aplikacijo dnf-automatic in omogočiti časovnik:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Preverjanje časovnika:

sudo systemctl status dnf-automatic.timer

Zamenjava privzetih vrat

SSH je bil razvit leta 1995 kot nadomestilo za telnet (port 23) in ftp (port 21), zato je avtor programa Tatu Ylönen izbral privzeti port 22, kar je bilo potrjeno v IANA.

Seveda so vsi zlonamerneži seznanjeni s tem, na katerem portu deluje SSH — in ga skenirajo skupaj z ostalimi standardnimi porti, da bi ugotovili različico programske opreme, preverili standardne gesla za root in podobno.

Sprememba standardnih portov — obfuzikacija — znatno zmanjša količino odpadnega prometa, velikost dnevnikov in obremenitev strežnika ter zmanjša površino napada. Čeprav nekateri kritizirajo to metodo "zaščite skozi nejasnost" (zaščita skozi nejasnost). Razlog je, da se ta tehnika nasprotuje temeljni sistemski zaščitni arhitekturi. Zato, na primer, National Institute of Standards and Technology v "Vodiču za varnost strežnikov" navaja potrebo po odprti strežniški arhitekturi: "Varnost sistema se ne sme zanašati na skrivnost izvedbe njegovih komponent," piše v dokumentu.

Teoretično, sprememba privzetih vrat nasprotuje praksi odprte arhitekture. Vendar se v praksi količina zlonamernega prometa resnično zmanjša, tako da je to preprosta in učinkovita mera.

Številko porta lahko nastavite tako, da spremenite direktivo Port 22 v konfiguracijski datoteki. /etc/ssh/sshd_configPoleg tega se parameter -p u sshd. Odjemalec SSH in programi sftp prav tako podpirajo parameter -p.

Parametri -p ki ga lahko uporabite za navedbo številke porta pri povezovanju z uporabo ukaza ssh v Linuxu. V sftp in scp se uporablja parameter -P (naslovna P). Ukazanje iz komandne linije override-uje svaku vrednost u konfiguracionim datotekama.

Ako ima mnogo servera, gotovo sve ove aktivnosti za zaštitu Linux servera mogu se automatizovati u skripti. Ali ako je server samo jedan, bolje je ručno kontrolisati proces.

V okviru oglaševanja

Naruči i odmah počni sa radom! Kreiranje VDS bilo koje konfiguracije i sa bilo kojim operativnim sistemom u roku od minut. Maksimalna konfiguracija omogućava da se potpuno opustite - 128 CPU jezgara, 512 GB RAM, 4000 GB NVMe. Epicno 🙂

Zaščita Linux strežnika. Kaj storiti najprej

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster