Linux-palvelimen suojaus. Mitä tehdä ensin

Linux-palvelimen suojaus. Mitä tehdä ensin
Habib M'henni / Wikimedia Commons, CC BY-SA

Nykyään palvelimen nostaminen isännöinnille on muutaman minuutin ja muutaman hiiren napsautuksen asia. Mutta heti laukaisun jälkeen hän joutuu vihamieliseen ympäristöön, koska hän on avoin koko Internetille kuin viaton tyttö rokkaridiskossa. Skannerit löytävät sen nopeasti ja havaitsevat tuhansia automaattisesti ohjelmoituja botteja, jotka tutkivat verkkoa etsiessään haavoittuvuuksia ja virheellisiä määrityksiä. On olemassa muutamia asioita, jotka sinun tulee tehdä heti käynnistämisen jälkeen varmistaaksesi perussuojauksen.

Pitoisuus

Ei-root-käyttäjä

Ensimmäinen askel on luoda itsellesi ei-root-käyttäjä. Pointti on, että käyttäjä root ehdottomat oikeudet järjestelmässä, ja jos annat hänelle etähallinnan, teet puolet hakkerin työstä jättäen hänelle kelvollisen käyttäjätunnuksen.

Siksi sinun on luotava toinen käyttäjä ja poistettava etähallinta SSH:n kautta root-käyttäjälle.

Uusi käyttäjä käynnistetään komennolla useradd:

useradd [options] <username>

Sitten sille lisätään salasana komennolla passwd:

passwd <username>

Lopuksi tämä käyttäjä on lisättävä ryhmään, jolla on oikeus suorittaa korotettuja komentoja sudo. Linux-jakelusta riippuen nämä voivat olla erilaisia ​​ryhmiä. Esimerkiksi CentOS:ssä ja Red Hatissa käyttäjä lisätään ryhmään wheel:

usermod -aG wheel <username>

Ubuntussa se lisätään ryhmään sudo:

usermod -aG sudo <username>

Avaimet SSH-salasanojen sijaan

Raaka voima tai salasanavuodot ovat tavallinen hyökkäysvektori, joten on parasta poistaa salasanatodennus käytöstä SSH:ssa (Secure Shell) ja käyttää sen sijaan avaintodennusta.

SSH-protokollan toteuttamiseen on olemassa erilaisia ​​ohjelmia, kuten LSH и pisarakarhu, mutta suosituin on OpenSSH. OpenSSH-asiakkaan asentaminen Ubuntuun:

sudo apt install openssh-client

Palvelimen asennus:

sudo apt install openssh-server

SSH-demonin (sshd) käynnistäminen Ubuntu-palvelimella:

sudo systemctl start sshd

Käynnistä daemon automaattisesti jokaisessa käynnistyksessä:

sudo systemctl enable sshd

On huomattava, että OpenSSH:n palvelinosa sisältää asiakasosan. Eli läpi openssh-server voit muodostaa yhteyden muihin palvelimiin. Lisäksi asiakaskoneeltasi voit käynnistää SSH-tunnelin etäpalvelimelta kolmannen osapuolen isännälle, jolloin kolmannen osapuolen isäntä pitää etäpalvelinta pyyntöjen lähteenä. Erittäin kätevä ominaisuus järjestelmän peittämiseen. Katso lisätietoja artikkelista "Käytännön vinkkejä, esimerkkejä ja SSH-tunneleita".

Asiakaskoneessa ei yleensä ole järkevää asentaa täysimittaista palvelinta, jotta estetään mahdollisuus etäyhteyden muodostamiseen tietokoneeseen (turvallisuussyistä).

Joten uudelle käyttäjällesi sinun on ensin luotava SSH-avaimet tietokoneelle, josta pääset palvelimeen:

ssh-keygen -t rsa

Julkinen avain tallennetaan tiedostoon .pub ja näyttää satunnaisten merkkien sarjalta, joka alkaa ssh-rsa.

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

Luo sitten rootin alta SSH-hakemisto palvelimelle käyttäjän kotihakemistoon ja lisää tiedostoon julkinen SSH-avain authorized_keys, käyttämällä tekstieditoria, kuten Vim:

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

vim /home/user_name/.ssh/authorized_keys

Aseta lopuksi tiedostolle oikeat käyttöoikeudet:

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

ja vaihda omistajuus tälle käyttäjälle:

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

Asiakaspuolella sinun on määritettävä todennuksen salaisen avaimen sijainti:

ssh-add DIR_PATH/keylocation

Nyt voit kirjautua sisään palvelimelle käyttäjätunnuksella tällä avaimella:

ssh [username]@hostname

Valtuutuksen jälkeen voit kopioida tiedostoja scp-komennolla, apuohjelmalla sshfs tiedostojärjestelmän tai hakemistojen etäliitämiseen.

Yksityisestä avaimesta kannattaa tehdä useita varmuuskopioita, koska jos poistat salasanatodennuksen käytöstä ja menetät sen, et pääse kirjautumaan omalle palvelimellesi ollenkaan.

Kuten edellä mainittiin, SSH:ssa sinun on poistettava root-todennus käytöstä (tämä on syy, miksi aloitimme uuden käyttäjän).

CentOS/Red Hatista löydämme linjan PermitRootLogin yes asetustiedostossa /etc/ssh/sshd_config ja muuta se:

PermitRootLogin no

Ubuntussa lisää rivi PermitRootLogin no asetustiedostoon 10-my-sshd-settings.conf:

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

Kun olet varmistanut, että uusi käyttäjä todentaa avaimellaan, voit poistaa salasanatodennuksen käytöstä salasanavuodon tai raa'an voiman riskin välttämiseksi. Nyt hyökkääjän on saatava yksityinen avain päästäkseen palvelimelle.

CentOS/Red Hatista löydämme linjan PasswordAuthentication yes asetustiedostossa /etc/ssh/sshd_config ja muuta se näin:

PasswordAuthentication no

Ubuntussa lisää rivi PasswordAuthentication no arkistoida 10-my-sshd-settings.conf:

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

Katso ohjeet kaksivaiheisen todennuksen käyttöönotosta SSH:n kautta täällä.

Palomuuri

Palomuuri varmistaa, että vain suoraan sallimiesi porttien liikenne kulkee palvelimelle. Tämä suojaa muiden palveluiden kanssa vahingossa käyttöön otettujen porttien hyväksikäytöltä, mikä vähentää huomattavasti hyökkäyspinta-alaa.

Ennen palomuurin asentamista sinun on varmistettava, että SSH sisältyy poissulkemisluetteloon eikä sitä estä. Muuten emme pysty muodostamaan yhteyttä palvelimeen palomuurin käynnistämisen jälkeen.

Ubuntu-jakelun mukana tulee mutkaton palomuuri (ufw) ja CentOS/Red Hat - firewalld.

SSH:n salliminen Ubuntun palomuurissa:

sudo ufw allow ssh

CentOS/Red Hatissa käytä komentoa firewall-cmd:

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

Tämän toimenpiteen jälkeen voit käynnistää palomuurin.

Käynnistä palomuurin järjestelmäpalvelu CentOS/Red Hatissa:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntussa käytämme seuraavaa komentoa:

sudo ufw enable

Fail2Ban

Työkalut Fail2Ban analysoi palvelimen lokit ja laskee pääsyyritysten määrän kustakin IP-osoitteesta. Asetukset määrittelevät säännöt, kuinka monta pääsyyritystä sallitaan tietyllä aikavälillä - minkä jälkeen tämä IP-osoite estetään tietyksi ajaksi. Sallitaan esimerkiksi 5 epäonnistunutta SSH-todennusyritystä 2 tunnin sisällä ja estetään sitten annettu IP-osoite 12 tunniksi.

Fail2Banin asentaminen CentOS:ään ja Red Hatiin:

sudo yum install fail2ban

Asennus Ubuntuun ja Debianiin:

sudo apt install fail2ban

Tuoda markkinoille:

systemctl start fail2ban
systemctl enable fail2ban

Ohjelmassa on kaksi asetustiedostoa: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Kieltorajoitukset on määritetty toisessa tiedostossa.

Jail for SSH on oletusarvoisesti käytössä oletusasetuksilla (5 yritystä, väli 10 minuuttia, kielto 10 minuuttia).

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

SSH:n lisäksi Fail2Ban voi suojata muita palveluita nginx- tai Apache-verkkopalvelimella.

Automaattiset tietoturvapäivitykset

Kuten tiedät, kaikista ohjelmista löytyy jatkuvasti uusia haavoittuvuuksia. Tietojen julkaisemisen jälkeen hyödynnöt lisätään suosittuihin exploit-paketteihin, joita hakkerit ja teini-ikäiset käyttävät massiivisesti tutkiessaan kaikkia palvelimia peräkkäin. Siksi on erittäin tärkeää asentaa tietoturvapäivitykset heti, kun ne ilmestyvät.

Ubuntu Serverin automaattiset tietoturvapäivitykset ovat oletuksena käytössä, joten lisätoimia ei tarvita.

CentOS/Red Hatissa sinun on asennettava sovellus dnf-automaatti ja käynnistä ajastin:

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

Ajastimen tarkistus:

sudo systemctl status dnf-automatic.timer

Oletusporttien vaihtaminen

SSH kehitettiin vuonna 1995 korvaamaan telnet (portti 23) ja ftp (portti 21), joten ohjelman tekijä Tatu Iltonen valittu portti 22 oletuksena, ja IANA on hyväksynyt sen.

Luonnollisesti kaikki hyökkääjät ovat tietoisia siitä, missä portissa SSH toimii - ja skannaavat sen yhdessä muiden standardiporttien kanssa selvittääkseen ohjelmistoversion, tarkistaakseen tavalliset root-salasanat ja niin edelleen.

Vakioporttien vaihtaminen - hämärtäminen - useita kertoja vähentää roskaliikenteen määrää, lokien kokoa ja palvelimen kuormitusta sekä vähentää myös hyökkäyspintaa. Vaikka jotkut kritisoi tätä menetelmää "suojaa epäselvyyden kautta" (turvallisuus epäselvyyden kautta). Syynä on, että tämä tekniikka on perustavanlaatuinen arkkitehtoninen suojelu. Siksi esimerkiksi US National Institute of Standards and Technology in "Palvelimen suojausopas" ilmaisee avoimen palvelinarkkitehtuurin tarpeen: "Järjestelmän turvallisuuden ei pitäisi perustua sen komponenttien toteutuksen salaisuuteen", asiakirjassa sanotaan.

Teoriassa oletusporttien muuttaminen on vastoin avoimen arkkitehtuurin käytäntöä. Mutta käytännössä haitallisen liikenteen määrä itse asiassa vähenee, joten tämä on yksinkertainen ja tehokas toimenpide.

Portin numero voidaan määrittää muuttamalla direktiiviä Port 22 asetustiedostossa / Etc / ssh / sshd_config. Se ilmoitetaan myös parametrilla -p <port> в sshd. SSH-asiakasohjelma ja ohjelmat sftp tukee myös vaihtoehtoa -p <port>.

Parametri -p <port> voidaan käyttää portin numeron määrittämiseen, kun yhdistetään komennolla ssh linuxissa. SISÄÄN sftp и scp parametria käytetään -P <port> (iso P). Komentorivikäsky ohittaa kaikki asetustiedostojen arvot.

Jos palvelimia on useita, lähes kaikki nämä toimet Linux-palvelimen suojaamiseksi voidaan automatisoida komentosarjassa. Mutta jos on vain yksi palvelin, on parempi hallita prosessia manuaalisesti.

Mainonnan oikeuksista

Tilaa ja aloita heti! VDS:n luominen millä tahansa kokoonpanolla ja millä tahansa käyttöjärjestelmällä minuutissa. Maksimikokoonpano antaa sinun tulla täyteen - 128 CPU-ydintä, 512 Gt RAM-muistia, 4000 Gt NVMe. eeppinen 🙂

Linux-palvelimen suojaus. Mitä tehdä ensin

Lähde: will.com