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

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

Dandanes je dvig strežnika na gostovanju stvar nekaj minut in nekaj klikov miške. A takoj po izstrelitvi se znajde v sovražnem okolju, saj je kot nedolžno dekle v rockerski diskoteki odprt za ves internet. Skenerji ga bodo hitro našli in odkrili na tisoče samodejno skriptiranih botov, ki brskajo po omrežju in iščejo ranljivosti in napačne konfiguracije. Nekaj ​​stvari morate storiti takoj po zagonu, da zagotovite osnovno zaščito.

Vsebina

Nekorenski uporabnik

Prvi korak je ustvariti nekorenskega uporabnika zase. Bistvo je, da uporabnik root absolutne privilegije v sistemu in če mu dovolite oddaljeno administracijo, potem boste namesto hekerja opravili polovico dela in mu pustili veljavno uporabniško ime.

Zato morate ustvariti drugega uporabnika in onemogočiti oddaljeno upravljanje prek SSH za root.

Nov uporabnik se zažene z ukazom useradd:

useradd [options] <username>

Nato se mu z ukazom doda geslo passwd:

passwd <username>

Končno je treba tega uporabnika dodati v skupino, ki ima pravico do izvajanja ukazov s povišanimi pravicami sudo. Odvisno od distribucije Linuxa so to lahko različne skupine. Na primer, v CentOS in Red Hat je uporabnik dodan v skupino wheel:

usermod -aG wheel <username>

V Ubuntuju je dodan v skupino sudo:

usermod -aG sudo <username>

Ključi namesto SSH gesel

Surova sila ali uhajanje gesel je standardni vektor napadov, zato je najbolje, da onemogočite preverjanje pristnosti gesla v SSH (Secure Shell) in namesto tega uporabite preverjanje pristnosti ključa.

Obstajajo različni programi za implementacijo protokola SSH, kot npr lsh и dropbear, vendar je najbolj priljubljen OpenSSH. Namestitev odjemalca OpenSSH na Ubuntu:

sudo apt install openssh-client

Namestitev strežnika:

sudo apt install openssh-server

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

sudo systemctl start sshd

Samodejno zaženi demon ob vsakem zagonu:

sudo systemctl enable sshd

Upoštevati je treba, da strežniški del OpenSSH vključuje odjemalski del. Se pravi skozi openssh-server se lahko povežete z drugimi strežniki. Poleg tega lahko s svojega odjemalskega računalnika zaženete tunel SSH od oddaljenega strežnika do gostitelja tretje osebe, nato pa bo gostitelj tretje osebe upošteval oddaljeni strežnik kot vir zahtev. Zelo priročna funkcija za maskiranje vašega sistema. Za podrobnosti si oglejte članek "Praktični nasveti, primeri in tuneli SSH".

Na odjemalskem računalniku običajno ni smiselno namestiti polnopravnega strežnika, da bi preprečili možnost oddaljene povezave z računalnikom (zaradi varnosti).

Torej, za vašega novega uporabnika morate najprej ustvariti ključe SSH na računalniku, s katerega boste dostopali do strežnika:

ssh-keygen -t rsa

Javni ključ je shranjen v datoteki .pub in je videti kot niz naključnih znakov, ki se začne z ssh-rsa.

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

Nato pod korenom ustvarite imenik SSH na strežniku v domačem imeniku uporabnika in dodajte javni ključ SSH v datoteko authorized_keys, z uporabo urejevalnika besedil, kot je Vim:

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

vim /home/user_name/.ssh/authorized_keys

Končno nastavite pravilna dovoljenja za datoteko:

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

in spremeni lastništvo na tega uporabnika:

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

Na strani odjemalca morate določiti lokacijo skrivnega ključa za avtentikacijo:

ssh-add DIR_PATH/keylocation

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

ssh [username]@hostname

Po avtorizaciji lahko z ukazom scp kopirate datoteke, pripomoček sshfs za oddaljeno namestitev datotečnega sistema ali imenikov.

Priporočljivo je, da naredite več varnostnih kopij zasebnega ključa, saj če onemogočite preverjanje pristnosti gesla in ga izgubite, se sploh ne boste mogli prijaviti v svoj strežnik.

Kot je navedeno zgoraj, morate v SSH onemogočiti avtentikacijo za root (to je razlog, da smo ustvarili novega uporabnika).

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

PermitRootLogin no

V Ubuntu dodajte 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

Ko preverite, ali novi uporabnik preverja pristnost s svojim ključem, lahko onemogočite preverjanje pristnosti gesla, da odpravite tveganje uhajanja gesla ali grobo silo. Zdaj bo moral napadalec za dostop do strežnika dobiti zasebni ključ.

Na CentOS/Red Hat najdemo vrstico PasswordAuthentication yes v konfiguracijski datoteki /etc/ssh/sshd_config in spremeni takole:

PasswordAuthentication no

V Ubuntu dodajte vrstico PasswordAuthentication no vložiti 10-my-sshd-settings.conf:

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

Za navodila o omogočanju dvostopenjske avtentikacije prek SSH glejte tukaj.

Požarni zid

Požarni zid zagotavlja, da bo do strežnika šel samo promet na vratih, ki jih neposredno dovolite. To ščiti pred izkoriščanjem vrat, ki so pomotoma omogočena z drugimi storitvami, kar močno zmanjša površino napada.

Preden namestite požarni zid, se morate prepričati, da je SSH vključen na seznam izključitev in ne bo blokiran. V nasprotnem primeru se po zagonu požarnega zidu ne bomo mogli povezati s strežnikom.

Distribucija Ubuntu ima nezapleten požarni zid (ufw), in s CentOS/Red Hat - požarni zid.

Omogočanje SSH v požarnem zidu v Ubuntuju:

sudo ufw allow ssh

V CentOS/Red Hat uporabite ukaz firewall-cmd:

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

Po tem postopku lahko zaženete požarni zid.

V sistemu CentOS/Red Hat zaženite storitev systemd za požarni zid:

sudo systemctl start firewalld
sudo systemctl enable firewalld

V Ubuntuju uporabljamo naslednji ukaz:

sudo ufw enable

Fail2Ban

Orodja Fail2Ban analizira dnevnike na strežniku in šteje število poskusov dostopa z vsakega naslova IP. Nastavitve določajo pravila, koliko poskusov dostopa je dovoljenih v določenem intervalu – po katerem se ta naslov IP blokira za določeno časovno obdobje. Na primer, dovolimo 5 neuspelih poskusov preverjanja pristnosti SSH v 2 urah, nato pa dani naslov IP blokiramo za 12 ur.

Namestitev Fail2Ban na CentOS in Red Hat:

sudo yum install fail2ban

Namestitev na Ubuntu in Debian:

sudo apt install fail2ban

Kosilo:

systemctl start fail2ban
systemctl enable fail2ban

Program ima dve konfiguracijski datoteki: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Omejitve prepovedi so določene v drugi datoteki.

Zapor za SSH je privzeto omogočen s privzetimi nastavitvami (5 poskusov, interval 10 minut, prepoved za 10 minut).

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

Poleg SSH lahko Fail2Ban zaščiti druge storitve na spletnem strežniku nginx ali Apache.

Samodejne varnostne posodobitve

Kot veste, se v vseh programih nenehno pojavljajo nove ranljivosti. Po objavi informacij se v priljubljene pakete exploit dodajo exploite, ki jih hekerji in najstniki množično uporabljajo pri skeniranju vseh strežnikov po vrsti. Zato je zelo pomembno, da varnostne posodobitve namestite takoj, ko se pojavijo.

Na strežniku Ubuntu so samodejne varnostne posodobitve privzeto omogočene, zato ni potrebno nobeno nadaljnje ukrepanje.

Na CentOS/Red Hat morate namestiti aplikacijo dnf-samodejno in vklopite č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

Spreminjanje privzetih vrat

SSH je bil razvit leta 1995, da bi nadomestil telnet (port 23) in ftp (port 21), zato je avtor programa Tatu Iltonen privzeto izbrana vrata 22, odobrila pa ga je IANA.

Seveda vsi napadalci vedo, na katerih vratih teče SSH - in jih pregledajo skupaj z ostalimi standardnimi vrati, da ugotovijo različico programske opreme, preverijo standardna korenska gesla itd.

Večkratno spreminjanje standardnih vrat – zamegljenost – zmanjša količino smeti, velikost dnevnikov in obremenitev strežnika, zmanjša pa tudi površino napada. Čeprav nekateri kritizirajo to metodo "zaščite skozi nejasnost" (varnost skozi nejasnost). Razlog je v tem, da je ta tehnika v nasprotju s temeljnim arhitekturno varstvo. Zato je na primer ameriški nacionalni inštitut za standarde in tehnologijo v "Varnostni vodnik za strežnik" nakazuje potrebo po odprti arhitekturi strežnika: "Varnost sistema se ne bi smela zanašati na tajnost implementacije njegovih komponent," pravi dokument.

Teoretično je spreminjanje privzetih vrat v nasprotju s prakso odprte arhitekture. Toda v praksi se količina zlonamernega prometa dejansko zmanjša, zato je to preprost in učinkovit ukrep.

Številko vrat je mogoče konfigurirati s spremembo direktive Port 22 v konfiguracijski datoteki / etc / ssh / sshd_config. Označuje ga tudi parameter -p <port> в sshd. SSH odjemalec in programi sftp podpira tudi možnost -p <port>.

Parameter -p <port> lahko uporabite za podajanje številke vrat pri povezovanju z ukazom ssh v linuxu. IN sftp и scp uporabljen parameter -P <port> (veliko P). Navodila ukazne vrstice preglasijo vse vrednosti v konfiguracijskih datotekah.

Če je strežnikov veliko, je skoraj vsa ta dejanja za zaščito strežnika Linux mogoče avtomatizirati v skriptu. Če pa obstaja samo en strežnik, je bolje, da proces nadzirate ročno.

O pravicah oglaševanja

Naročite in začnite takoj! Izdelava VDS katero koli konfiguracijo in s katerim koli operacijskim sistemom v eni minuti. Največja konfiguracija vam bo omogočila, da izkoristite največ - 128 CPU jeder, 512 GB RAM, 4000 GB NVMe. Epsko 🙂

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

Vir: www.habr.com