
, 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 и , por më popullorja është OpenSSH. Instalimi i klientit OpenSSH në Ubuntu:
sudo apt install openssh-clientInstalimi i serverit:
sudo apt install openssh-serverNisja e demonit SSH (sshd) në serverin Ubuntu:
sudo systemctl start sshdFilloni 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 .
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_keysvim /home/user_name/.ssh/authorized_keysSë fundi, vendosni lejet e sakta për skedarin:
chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keysdhe ndryshoni pronësinë te ky përdorues:
chown -R username:username /home/username/.sshNë anën e klientit, duhet të specifikoni vendndodhjen e çelësit sekret për vërtetim:
ssh-add DIR_PATH/keylocationTani mund të hyni në server nën emrin e përdoruesit duke përdorur këtë çelës:
ssh [username]@hostnamePas autorizimit, mund të përdorni komandën scp për të kopjuar skedarët, programin 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.confPasi 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.confPër udhëzime mbi aktivizimin e vërtetimit me dy faktorë nëpërmjet SSH, shihni .
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 (), dhe me CentOS/Red Hat - .
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 --permanentPas 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 firewalldNë Ubuntu ne përdorim komandën e mëposhtme:
sudo ufw enable
Fail2Ban
Shërbim 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 fail2banInstalimi në Ubuntu dhe Debian:
sudo apt install fail2banNisja:
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 dhe aktivizoni kohëmatësin:
sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timerKontrolli 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 , 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 (siguria përmes errësirës). Arsyeja është se kjo teknikë është në kundërshtim me atë themelore . Prandaj, për shembull, Instituti Kombëtar i Standardeve dhe Teknologjisë i SHBA-së në 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 . Tregohet gjithashtu nga parametri -p <port> в . Klienti dhe programet SSH 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Ë и 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! ç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 🙂
Burimi: www.habr.com
