
, 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 и , mar de populêrste is OpenSSH. Ynstallearje de OpenSSH-kliïnt op Ubuntu:
sudo apt install openssh-clientServer ynstallaasje:
sudo apt install openssh-serverDe SSH-daemon (sshd) op 'e Ubuntu-tsjinner begjinne:
sudo systemctl start sshdStart 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 .
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_keysvim /home/user_name/.ssh/authorized_keysStel as lêste de juste tagongsrjochten foar it bestân yn:
chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keysen feroarje eigendom nei dizze brûker:
chown -R username:username /home/username/.sshOan 'e kliïntside moatte jo de lokaasje fan' e geheime kaai foar autentikaasje opjaan:
ssh-add DIR_PATH/keylocationNo kinne jo oanmelde by de tsjinner ûnder de brûkersnamme mei dizze kaai:
ssh [username]@hostnameNei autorisaasje kinne jo it scp-kommando brûke om bestannen te kopiearjen, it nut 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.confNei 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.confFoar ynstruksjes oer it ynskeakeljen fan twa-faktor-autentikaasje fia SSH, sjoch .
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 (), en mei CentOS/Red Hat - .
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 --permanentNei dizze proseduere kinne jo de firewall begjinne.
Start op CentOS / Red Hat de systemd tsjinst foar firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalldOp Ubuntu brûke wy it folgjende kommando:
sudo ufw enable
Fail2Ban
tsjinst 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 fail2banYnstallaasje op Ubuntu en Debian:
sudo apt install fail2banLaunch:
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 en set de timer oan:
sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timerTimer 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 , 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 (feiligens troch ûndúdlikens). De reden is dat dizze technyk is tsjinstelling ta de fûnemintele . Dêrom, bygelyks, de US National Institute of Standards and Technology yn 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 . It wurdt ek oanjûn troch de parameter -p <port> в . SSH-kliïnt en programma's 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 и 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! 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 🙂
Boarne: www.habr.com
