Linux tsjinner beskerming. Wat te dwaan earst

Linux tsjinner beskerming. Wat te dwaan earst
Habib M'henni / Wikimedia Commons, CC BY-SA

Tsjintwurdich is it ferheegjen fan in server op in hosting in kwestje fan in pear minuten en in pear mûsklikken. Mar fuort nei de lansearring komt er yn in fijannige omjouwing, om't er iepen stiet foar it hiele ynternet as in ûnskuldich famke yn in rocker-disco. Scanners sille it fluch fine en tûzenen automatysk skripte bots ûntdekke dy't it netwurk sykje op syk nei kwetsberens en miskonfiguraasjes. D'r binne in pear dingen dy't jo moatte dwaan direkt nei lansearring om basisbeskerming te garandearjen.

Ynhâld

Net-root brûker

De earste stap is om in net-root-brûker foar josels te meitsjen. It punt is dat de brûker root absolute privileezjes yn it systeem, en as jo tastean him remote administraasje, dan sille dwaan de helte fan it wurk foar de hacker, it litten fan in jildige brûkersnamme foar him.

Dêrom moatte jo in oare brûker oanmeitsje, en remote administraasje útskeakelje fia SSH foar root.

In nije brûker wurdt begon troch it kommando useradd:

useradd [options] <username>

Dan wurdt der in wachtwurd foar tafoege mei it kommando passwd:

passwd <username>

Uteinlik moat dizze brûker tafoege wurde oan in groep dy't it rjocht hat om ferhege kommando's út te fieren sudo. Ofhinklik fan 'e Linux-distribúsje kinne dit ferskate groepen wêze. Bygelyks, yn CentOS en Red Hat wurdt de brûker tafoege oan de groep wheel:

usermod -aG wheel <username>

Yn Ubuntu wurdt it tafoege oan de groep sudo:

usermod -aG sudo <username>

Keys ynstee fan SSH wachtwurden

Brute krêft as wachtwurdlekken binne in standert oanfalvektor, dus it is it bêste om wachtwurdautentikaasje yn SSH (Secure Shell) út te skeakeljen en ynstee fan kaaiferifikaasje te brûken.

D'r binne ferskate programma's foar it útfieren fan it SSH-protokol, lykas lsh и dropbear, mar de populêrste is OpenSSH. Ynstallearje de OpenSSH-kliïnt op Ubuntu:

sudo apt install openssh-client

Server ynstallaasje:

sudo apt install openssh-server

De SSH-daemon (sshd) op 'e Ubuntu-tsjinner begjinne:

sudo systemctl start sshd

Start de daemon automatysk op elke boot:

sudo systemctl enable sshd

It moat opmurken wurde dat it serverdiel fan OpenSSH it clientdiel omfettet. Dat is, troch openssh-server kinne jo ferbine mei oare tsjinners. Boppedat kinne jo fan jo kliïntmasine in SSH-tunnel begjinne fan in tsjinner op ôfstân nei in host fan tredden, en dan sil de host fan tredden de tsjinner op ôfstân beskôgje as de boarne fan oanfragen. In heul handige funksje foar it maskerjen fan jo systeem. Sjoch artikel foar details "Praktyske tips, foarbylden en SSH-tunnels".

Op in kliïntmasjine hat it normaal gjin sin om in folsleine tsjinner te ynstallearjen om de mooglikheid fan ferbining op ôfstân mei in kompjûter te foarkommen (om feiligensredenen).

Dat, foar jo nije brûker, moatte jo earst SSH-kaaien generearje op 'e kompjûter wêrfan jo tagong krije ta de tsjinner:

ssh-keygen -t rsa

De iepenbiere kaai wurdt opslein yn in bestân .pub en liket op in string fan willekeurige tekens dy't begjint mei ssh-rsa.

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

Meitsje dan, fan ûnder de root, in SSH-map oan op 'e tsjinner yn' e thúsmap fan 'e brûker en foegje de publike SSH-kaai ta oan it bestân authorized_keys, mei in tekstbewurker lykas Vim:

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

vim /home/user_name/.ssh/authorized_keys

Stel as lêste de juste tagongsrjochten foar it bestân yn:

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

en feroarje eigendom nei dizze brûker:

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

Oan 'e kliïntside moatte jo de lokaasje fan' e geheime kaai foar autentikaasje opjaan:

ssh-add DIR_PATH/keylocation

No kinne jo oanmelde by de tsjinner ûnder de brûkersnamme mei dizze kaai:

ssh [username]@hostname

Nei autorisaasje kinne jo it scp-kommando brûke om bestannen te kopiearjen, it nut sshfs om in triemsysteem of mappen op ôfstân te mount.

It is oan te rieden om ferskate reservekopyen fan 'e privee kaai te meitsjen, om't as jo wachtwurdferifikaasje útskeakelje en it ferlieze, dan sille jo hielendal gjin manier hawwe om oan te melden by jo eigen server.

Lykas hjirboppe neamd, moatte jo yn SSH de autentikaasje foar root útskeakelje (dit is de reden dat wy in nije brûker begûnen).

Op CentOS / Red Hat fine wy ​​de line PermitRootLogin yes yn it konfiguraasjetriem /etc/ssh/sshd_config en feroarje it:

PermitRootLogin no

Op Ubuntu foegje de line ta PermitRootLogin no nei it konfiguraasjetriem 10-my-sshd-settings.conf:

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

Nei it ferifiearjen dat de nije brûker ferifiearret mei har kaai, kinne jo wachtwurdautentikaasje útskeakelje om it risiko fan wachtwurdlekkage of brute krêft te eliminearjen. No, om tagong te krijen ta de tsjinner, sil in oanfaller in privee kaai moatte krije.

Op CentOS / Red Hat fine wy ​​de line PasswordAuthentication yes yn it konfiguraasjetriem /etc/ssh/sshd_config en feroarje it sa:

PasswordAuthentication no

Op Ubuntu foegje de line ta PasswordAuthentication no opslaan 10-my-sshd-settings.conf:

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

Foar ynstruksjes oer it ynskeakeljen fan twa-faktor-autentikaasje fia SSH, sjoch hjir.

brânmuorre

De brânmuorre soarget derfoar dat allinich it ferkear op 'e havens dy't jo direkt tastean nei de tsjinner gean. Dit beskermet tsjin eksploitaasje fan havens dy't by ûngelok ynskeakele binne mei oare tsjinsten, wat it oanfalflak sterk ferminderet.

Foardat jo in firewall ynstallearje, moatte jo der wis fan wêze dat SSH is opnaam yn 'e útslutingslist en sil net blokkearre wurde. Oars, nei it starten fan de firewall, kinne wy ​​gjin ferbining meitsje mei de tsjinner.

Ubuntu-distribúsje komt mei Uncomplicated Firewall (wow), en mei CentOS/Red Hat - firewalld.

SSH tastean yn 'e firewall op Ubuntu:

sudo ufw allow ssh

Op CentOS / Red Hat brûk it kommando firewall-cmd:

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

Nei dizze proseduere kinne jo de firewall begjinne.

Start op CentOS / Red Hat de systemd tsjinst foar firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Op Ubuntu brûke wy it folgjende kommando:

sudo ufw enable

Fail2Ban

tsjinst Fail2Ban analyzes logs op de tsjinner en telt it oantal tagong besykjen út elk IP-adres. De ynstellings spesifisearje de regels foar hoefolle tagongspogingen tastien binne foar in bepaald ynterval - wêrnei't dit IP-adres foar in opjûne perioade blokkearre wurdt. Litte wy bygelyks 5 mislearre SSH-autentikaasjepogingen tastean binnen 2 oeren, dan blokkearje it opjûne IP-adres foar 12 oeren.

Fail2Ban ynstallearje op CentOS en Red Hat:

sudo yum install fail2ban

Ynstallaasje op Ubuntu en Debian:

sudo apt install fail2ban

Launch:

systemctl start fail2ban
systemctl enable fail2ban

It programma hat twa konfiguraasjebestannen: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Ferbod beheiningen wurde oantsjutte yn de twadde triem.

Finzenis foar SSH is standert ynskeakele mei standertynstellingen (5 besykjen, ynterval 10 minuten, ferbod foar 10 minuten).

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

Neist SSH kin Fail2Ban oare tsjinsten beskermje op 'e nginx of Apache webserver.

Automatyske feiligens updates

Lykas jo witte, wurde nije kwetsberens konstant fûn yn alle programma's. Nei't de ynformaasje publisearre is, wurde eksploaten tafoege oan populêre eksploitaasjepakketten, dy't massaal brûkt wurde troch hackers en teenagers by it scannen fan alle servers op in rige. Dêrom is it heul wichtich om feiligensupdates te ynstallearjen sa gau as se ferskine.

Op de Ubuntu-tsjinner binne automatyske befeiligingsupdates standert ynskeakele, dus gjin fierdere aksje is nedich.

Op CentOS / Red Hat moatte jo de applikaasje ynstallearje dnf-automatysk en set de timer oan:

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

Timer kontrôle:

sudo systemctl status dnf-automatic.timer

It feroarjen fan de standert havens

SSH waard yn 1995 ûntwikkele om telnet (poarte 23) en ftp (poarte 21) te ferfangen, dus de skriuwer fan it programma, Tatu Iltonen selektearre haven 22 standert, en is goedkard troch IANA.

Fansels binne alle oanfallers bewust fan hokker poarte SSH rint op - en scan it tegearre mei de rest fan 'e standert havens om de softwareferzje te finen, om standert root-wachtwurden te kontrolearjen, ensfh.

It feroarjen fan standert havens - obfuscation - ferskate kearen ferminderet it bedrach fan jiskefet ferkear, de grutte fan de logs en de lading op de tsjinner, en ek ferleget it oanfal oerflak. Hoewol't guon bekritisearje dizze metoade fan "beskerming troch obscurity" (feiligens troch ûndúdlikens). De reden is dat dizze technyk is tsjinstelling ta de fûnemintele boukundich beskerming. Dêrom, bygelyks, de US National Institute of Standards and Technology yn "Tsjinnerfeiligensgids" jout de needsaak foar in iepen serverarsjitektuer oan: "De feiligens fan in systeem moat net fertrouwe op it geheim fan 'e ymplemintaasje fan syn komponinten," seit it dokumint.

Teoretysk is it feroarjen fan de standertpoarten tsjin de praktyk fan iepen arsjitektuer. Mar yn 'e praktyk wurdt it bedrach fan kwea-aardich ferkear eins fermindere, dus dit is in ienfâldige en effektive maatregel.

It poartenûmer kin wurde konfigureare troch de rjochtline te feroarjen Port 22 yn it konfiguraasjetriem / etc / ssh / sshd_config. It wurdt ek oanjûn troch de parameter -p <port> в sshd. SSH-kliïnt en programma's sftp ek stypje de opsje -p <port>.

Parameter -p <port> kin brûkt wurde om it poartenûmer op te jaan by it ferbinen mei it kommando ssh yn linux. YN sftp и scp parameter wurdt brûkt -P <port> (haadstêd P). Kommandorigelynstruksje oerskriuwt elke wearde yn konfiguraasjebestannen.

As d'r in protte tsjinners binne, kinne hast al dizze aksjes om de Linux-tsjinner te beskermjen yn in skript automatisearre wurde. Mar as d'r mar ien server is, dan is it better om it proses manuell te kontrolearjen.

Oer de rjochten fan 'e advertinsje

Bestel en begjin daliks! Skepping fan VDS elke konfiguraasje en mei elk bestjoeringssysteem binnen in minút. De maksimale konfiguraasje sil tastean jo te kommen ôf ta it meast folsleine - 128 CPU kearnen, 512 GB RAM, 4000 GB NVMe. Epysk 🙂

Linux tsjinner beskerming. Wat te dwaan earst

Boarne: www.habr.com