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.
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.
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:
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:
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:
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.
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.
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:
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 🙂