Mbrojtja e serverit Linux. Çfarë duhet bërë së pari

Mbrojtja e serverit Linux. Çfarë duhet bërë së pari
Habib M'henni/Wikimedia Commons, CC BY-SA

Në ditët e sotme, ngritja e një serveri në një host është një çështje e disa minutave dhe disa klikimeve të miut. Por menjëherë pas nisjes, ai e gjen veten në një mjedis armiqësor, sepse është i hapur për të gjithë internetin si një vajzë e pafajshme në një disko rocker. Skanerët do ta gjejnë shpejt atë dhe do të zbulojnë mijëra robotë të skriptuar automatikisht që pastrojnë rrjetin duke kërkuar për dobësi dhe konfigurime të gabuara. Ka disa gjëra që duhet të bëni menjëherë pas nisjes për të siguruar mbrojtjen bazë.

Përmbajtje

Përdorues jo root

Hapi i parë është të krijoni një përdorues jo-root për veten tuaj. Çështja është se përdoruesi root privilegje absolute në sistem, dhe nëse e lejoni administrimin në distancë, atëherë do të bëni gjysmën e punës për hakerin, duke i lënë atij një emër përdoruesi të vlefshëm.

Prandaj, duhet të krijoni një përdorues tjetër dhe të çaktivizoni administrimin në distancë përmes SSH për root.

Një përdorues i ri niset nga komanda useradd:

useradd [options] <username>

Pastaj i shtohet një fjalëkalim me komandën passwd:

passwd <username>

Së fundi, ky përdorues duhet të shtohet në një grup që ka të drejtë të ekzekutojë komanda të ngritura sudo. Në varësi të shpërndarjes Linux, këto mund të jenë grupe të ndryshme. Për shembull, në CentOS dhe Red Hat, përdoruesi shtohet në grup wheel:

usermod -aG wheel <username>

Në Ubuntu shtohet në grup sudo:

usermod -aG sudo <username>

Çelësat në vend të fjalëkalimeve SSH

Forca brutale ose rrjedhjet e fjalëkalimit janë një vektor standard sulmi, kështu që është më mirë të çaktivizoni vërtetimin e fjalëkalimit në SSH (Secure Shell) dhe në vend të kësaj të përdorni vërtetimin e çelësit.

Ekzistojnë programe të ndryshme për zbatimin e protokollit SSH, si p.sh lsh и dropbear, por më popullorja është OpenSSH. Instalimi i klientit OpenSSH në Ubuntu:

sudo apt install openssh-client

Instalimi i serverit:

sudo apt install openssh-server

Nisja e demonit SSH (sshd) në serverin Ubuntu:

sudo systemctl start sshd

Filloni automatikisht demonin në çdo boot:

sudo systemctl enable sshd

Duhet të theksohet se pjesa e serverit të OpenSSH përfshin pjesën e klientit. Kjo është, përmes openssh-server mund të lidheni me serverë të tjerë. Për më tepër, nga kompjuteri juaj i klientit, mund të filloni një tunel SSH nga një server në distancë në një host të palës së tretë, dhe më pas hosti i palës së tretë do ta konsiderojë serverin në distancë si burimin e kërkesave. Një veçori shumë e dobishme për maskimin e sistemit tuaj. Shih artikullin për detaje "Këshilla praktike, shembuj dhe tunele SSH".

Në një makinë klienti, zakonisht nuk ka kuptim të instaloni një server të plotë për të parandaluar mundësinë e lidhjes në distancë me një kompjuter (për arsye sigurie).

Pra, për përdoruesin tuaj të ri, së pari duhet të gjeneroni çelësat SSH në kompjuterin nga i cili do të hyni në server:

ssh-keygen -t rsa

Çelësi publik ruhet në një skedar .pub dhe duket si një varg karakteresh të rastësishme që fillon me ssh-rsa.

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

Më pas, nga rrënjët, krijoni një drejtori SSH në server në direktorinë kryesore të përdoruesit dhe shtoni çelësin publik SSH në skedar authorized_keys, duke përdorur një redaktues teksti si Vim:

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

vim /home/user_name/.ssh/authorized_keys

Së fundi, vendosni lejet e sakta për skedarin:

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

dhe ndryshoni pronësinë te ky përdorues:

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

Në anën e klientit, duhet të specifikoni vendndodhjen e çelësit sekret për vërtetim:

ssh-add DIR_PATH/keylocation

Tani mund të hyni në server nën emrin e përdoruesit duke përdorur këtë çelës:

ssh [username]@hostname

Pas autorizimit, mund të përdorni komandën scp për të kopjuar skedarët, programin sshfs për të montuar në distancë një sistem skedarësh ose drejtori.

Këshillohet që të bëni disa kopje rezervë të çelësit privat, sepse nëse çaktivizoni vërtetimin e fjalëkalimit dhe e humbni atë, atëherë nuk do të keni asnjë mënyrë për të hyrë fare në serverin tuaj.

Siç u përmend më lart, në SSH ju duhet të çaktivizoni vërtetimin për root (kjo është arsyeja që ne filluam një përdorues të ri).

Në CentOS/Red Hat gjejmë linjën PermitRootLogin yes në skedarin e konfigurimit /etc/ssh/sshd_config dhe ndryshoje atë:

PermitRootLogin no

Në Ubuntu shtoni linjën PermitRootLogin no te skedari i konfigurimit 10-my-sshd-settings.conf:

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

Pasi të verifikoni që përdoruesi i ri po vërteton me çelësin e tij, mund të çaktivizoni vërtetimin e fjalëkalimit për të eliminuar rrezikun e rrjedhjes së fjalëkalimit ose forcës brutale. Tani, për të hyrë në server, një sulmues do të duhet të marrë një çelës privat.

Në CentOS/Red Hat gjejmë linjën PasswordAuthentication yes në skedarin e konfigurimit /etc/ssh/sshd_config dhe ndryshojeni si kjo:

PasswordAuthentication no

Në Ubuntu shtoni linjën PasswordAuthentication no për të paraqitur 10-my-sshd-settings.conf:

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

Për udhëzime mbi aktivizimin e vërtetimit me dy faktorë nëpërmjet SSH, shihni këtu.

Firewall

Firewall siguron që vetëm trafiku në portet që ju lejoni drejtpërdrejt do të shkojë në server. Kjo mbron nga shfrytëzimi i porteve që janë aktivizuar aksidentalisht me shërbime të tjera, gjë që redukton shumë sipërfaqen e sulmit.

Përpara se të instaloni një mur zjarri, duhet të siguroheni që SSH është përfshirë në listën e përjashtimeve dhe nuk do të bllokohet. Përndryshe, pas fillimit të murit të zjarrit, ne nuk do të mund të lidhemi me serverin.

Shpërndarja e Ubuntu vjen me Firewall të Pakomplikuar (Uau), dhe me CentOS/Red Hat - bota e zjarrit.

Lejimi i SSH në murin e zjarrit në Ubuntu:

sudo ufw allow ssh

Në CentOS/Red Hat përdorni komandën firewall-cmd:

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

Pas kësaj procedure, mund të filloni murin e zjarrit.

Në CentOS/Red Hat, nisni shërbimin systemd për murin e zjarrit:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Në Ubuntu ne përdorim komandën e mëposhtme:

sudo ufw enable

Fail2Ban

Shërbim Fail2Ban analizon regjistrat në server dhe numëron numrin e përpjekjeve për akses nga çdo adresë IP. Cilësimet përcaktojnë rregullat se sa përpjekje për hyrje lejohen për një interval të caktuar - pas së cilës kjo adresë IP bllokohet për një periudhë të caktuar kohe. Për shembull, le të lejojmë 5 përpjekje të dështuara të vërtetimit të SSH brenda 2 orëve, më pas të bllokojmë adresën IP të dhënë për 12 orë.

Instalimi i Fail2Ban në CentOS dhe Red Hat:

sudo yum install fail2ban

Instalimi në Ubuntu dhe Debian:

sudo apt install fail2ban

Nisja:

systemctl start fail2ban
systemctl enable fail2ban

Programi ka dy skedarë konfigurimi: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Kufizimet e ndalimit janë të specifikuara në skedarin e dytë.

Burgu për SSH është aktivizuar si parazgjedhje me cilësimet e paracaktuara (5 përpjekje, intervali 10 minuta, ndalimi për 10 minuta).

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

Përveç SSH, Fail2Ban mund të mbrojë shërbime të tjera në serverin e internetit nginx ose Apache.

Përditësimet automatike të sigurisë

Siç e dini, dobësi të reja gjenden vazhdimisht në të gjitha programet. Pas publikimit të informacionit, shfrytëzimet u shtohen paketave të njohura të shfrytëzimit, të cilat përdoren masivisht nga hakerat dhe adoleshentët kur skanojnë të gjithë serverët me radhë. Prandaj, është shumë e rëndësishme të instaloni përditësimet e sigurisë sapo të shfaqen.

Në serverin Ubuntu, përditësimet automatike të sigurisë janë aktivizuar si parazgjedhje, kështu që nuk kërkohet asnjë veprim i mëtejshëm.

Në CentOS/Red Hat duhet të instaloni aplikacionin dnf-automatike dhe aktivizoni kohëmatësin:

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

Kontrolli i kohëmatësit:

sudo systemctl status dnf-automatic.timer

Ndryshimi i porteve të paracaktuara

SSH u zhvillua në 1995 për të zëvendësuar telnet (port 23) dhe ftp (port 21), kështu që autori i programit, Tatu Iltonen zgjedhur si parazgjedhje portin 22, dhe është miratuar nga IANA.

Natyrisht, të gjithë sulmuesit janë të vetëdijshëm se në cilën port SSH po funksionon - dhe skanojnë atë së bashku me pjesën tjetër të porteve standarde për të gjetur versionin e softuerit, për të kontrolluar fjalëkalimet standarde të rrënjës, etj.

Ndryshimi i porteve standarde - turbullimi - disa herë zvogëlon sasinë e trafikut të mbeturinave, madhësinë e regjistrave dhe ngarkesën në server, dhe gjithashtu zvogëlon sipërfaqen e sulmit. Edhe pse disa kritikojnë këtë metodë të "mbrojtjes përmes errësirës" (siguria përmes errësirës). Arsyeja është se kjo teknikë është në kundërshtim me atë themelore mbrojtje arkitekturore. Prandaj, për shembull, Instituti Kombëtar i Standardeve dhe Teknologjisë i SHBA-së në "Udhëzues për sigurinë e serverit" tregon nevojën për një arkitekturë të hapur serveri: "Siguria e një sistemi nuk duhet të mbështetet në fshehtësinë e zbatimit të komponentëve të tij", thuhet në dokument.

Teorikisht, ndryshimi i portave të paracaktuar është kundër praktikës së arkitekturës së hapur. Por në praktikë, sasia e trafikut me qëllim të keq zvogëlohet në të vërtetë, kështu që kjo është një masë e thjeshtë dhe efektive.

Numri i portit mund të konfigurohet duke ndryshuar direktivën Port 22 në skedarin e konfigurimit / Etc / ssh / sshd_config. Tregohet gjithashtu nga parametri -p <port> в ssh. Klienti dhe programet SSH sftp mbështesin gjithashtu opsionin -p <port>.

Parametër -p <port> mund të përdoret për të specifikuar numrin e portit kur lidheni me komandën ssh në linux. NË sftp и scp përdoret parametri -P <port> (kapitali P). Udhëzimi i linjës së komandës anulon çdo vlerë në skedarët e konfigurimit.

Nëse ka shumë serverë, pothuajse të gjitha këto veprime për të mbrojtur serverin Linux mund të automatizohen në një skript. Por nëse ka vetëm një server, atëherë është më mirë të kontrolloni manualisht procesin.

Për të Drejtat e Reklamimit

Porosit dhe puno menjehere! Krijimi i VDS çdo konfigurim dhe me çdo sistem operativ brenda një minute. Konfigurimi maksimal do t'ju lejojë të arrini në maksimum - 128 bërthama CPU, 512 GB RAM, 4000 GB NVMe. Epik 🙂

Mbrojtja e serverit Linux. Çfarë duhet bërë së pari

Burimi: www.habr.com