
, 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 in , a med najbolj priljubljenimi je OpenSSH. Namestitev odjemalca OpenSSH na Ubuntu:
sudo apt install openssh-clientNamestitev na strežniku:
sudo apt install openssh-serverZagon demona SSH (sshd) na strežniku z Ubuntu:
sudo systemctl start sshdSamodejni 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 .
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_keysvim /home/user_name/.ssh/authorized_keysNazadnje, nastavite pravilne pravice za datoteko:
chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keysin spremenite lastništvo na tega uporabnika:
chown -R username:username /home/username/.sshNa strani odjemalca morate navesti mesto tajnega ključa za overjanje:
ssh-add DIR_PATH/keylocationZdaj se lahko prijavite na strežnik pod imenom uporabnika s tem ključem:
ssh [username]@hostnamePo overitvi lahko uporabite ukaz scp za kopiranje datotek, orodje 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.confPo 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.confNavodila za povezovanje z dvofaktorsko avtentikacijo prek SSH si oglejte. .
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 (), medtem ko z CentOS/Red Hat — .
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 --permanentPo 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 firewalldNa Ubuntu uporabimo naslednji ukaz:
sudo ufw enable
Fail2Ban
Storitve 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 fail2banNamestitev na Ubuntu in Debian:
sudo apt install fail2banZagon:
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 in omogočiti časovnik:
sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timerPreverjanje č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 , 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 (zaščita skozi nejasnost). Razlog je, da se ta tehnika nasprotuje temeljni . Zato, na primer, National Institute of Standards and Technology v 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. Poleg tega se parameter -p u . Odjemalec SSH in programi prav tako podpirajo parameter -p.
Parametri -p ki ga lahko uporabite za navedbo številke porta pri povezovanju z uporabo ukaza ssh v Linuxu. V 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! 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 🙂
Izvor: habr.com
