Ulinzi wa seva ya Linux. Nini cha kufanya kwanza

Ulinzi wa seva ya Linux. Nini cha kufanya kwanza
Habib M'henni/Wikimedia Commons, CC BY-SA

Siku hizi, kuinua seva kwenye mwenyeji ni suala la dakika chache na mibofyo michache ya panya. Lakini mara baada ya kuzinduliwa, anajikuta katika mazingira ya uhasama, kwa sababu yuko wazi kwa mtandao mzima kama msichana asiye na hatia kwenye disco ya rocker. Vichanganuzi vitaipata kwa haraka na kugundua maelfu ya roboti zilizoandikwa kiotomatiki ambazo hukagua mtandao zikitafuta udhaifu na usanidi usiofaa. Kuna mambo machache unapaswa kufanya mara baada ya uzinduzi ili kuhakikisha ulinzi wa kimsingi.

yaliyomo

Mtumiaji asiye na mizizi

Hatua ya kwanza ni kuunda mtumiaji asiye na mizizi kwako mwenyewe. Jambo ni kwamba mtumiaji root marupurupu kamili katika mfumo, na ikiwa unamruhusu utawala wa mbali, basi utafanya nusu ya kazi kwa hacker, na kuacha jina la mtumiaji halali kwake.

Kwa hiyo, unahitaji kuunda mtumiaji mwingine, na afya ya utawala wa kijijini kupitia SSH kwa mizizi.

Mtumiaji mpya anaanza na amri useradd:

useradd [options] <username>

Kisha nenosiri linaongezwa kwa ajili yake na amri passwd:

passwd <username>

Hatimaye, mtumiaji huyu anahitaji kuongezwa kwa kikundi ambacho kina haki ya kutekeleza amri zilizoinuliwa sudo. Kulingana na usambazaji wa Linux, hizi zinaweza kuwa vikundi tofauti. Kwa mfano, katika CentOS na Red Hat, mtumiaji huongezwa kwenye kikundi wheel:

usermod -aG wheel <username>

Katika Ubuntu imeongezwa kwa kikundi sudo:

usermod -aG sudo <username>

Vifunguo badala ya nenosiri la SSH

Nguvu isiyo ya kawaida au uvujaji wa nenosiri ni vekta ya kawaida ya kushambulia, kwa hivyo ni bora kuzima uthibitishaji wa nenosiri katika SSH (Secure Shell) na badala yake utumie uthibitishaji wa ufunguo.

Kuna programu mbalimbali za kutekeleza itifaki ya SSH, kama vile lsh ΠΈ dubu, lakini maarufu zaidi ni OpenSSH. Kufunga mteja wa OpenSSH kwenye Ubuntu:

sudo apt install openssh-client

Ufungaji wa seva:

sudo apt install openssh-server

Kuanzisha daemon ya SSH (sshd) kwenye seva ya Ubuntu:

sudo systemctl start sshd

Anzisha daemon kiotomatiki kwenye kila buti:

sudo systemctl enable sshd

Ikumbukwe kwamba sehemu ya seva ya OpenSSH inajumuisha sehemu ya mteja. Hiyo ni, kupitia openssh-server unaweza kuunganisha kwa seva zingine. Zaidi ya hayo, kutoka kwa mashine ya mteja wako, unaweza kuanzisha handaki ya SSH kutoka kwa seva ya mbali hadi kwa seva pangishi ya wahusika wengine, na kisha mwenyeji wa tatu atazingatia seva ya mbali kama chanzo cha maombi. Kipengele muhimu sana cha kuficha mfumo wako. Tazama makala kwa maelezo zaidi "Vidokezo Vitendo, Mifano, na Vichungi vya SSH".

Kwenye mashine ya mteja, kawaida haina maana kusakinisha seva iliyojaa kamili ili kuzuia uwezekano wa unganisho la mbali kwa kompyuta (kwa sababu za usalama).

Kwa hivyo, kwa mtumiaji wako mpya, kwanza unahitaji kutoa funguo za SSH kwenye kompyuta ambayo utafikia seva:

ssh-keygen -t rsa

Kitufe cha umma kinahifadhiwa kwenye faili .pub na inaonekana kama mfuatano wa herufi nasibu zinazoanza ssh-rsa.

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

Halafu, kutoka chini ya mzizi, tengeneza saraka ya SSH kwenye seva kwenye saraka ya nyumbani ya mtumiaji na ongeza kitufe cha umma cha SSH kwenye faili. authorized_keys, kwa kutumia hariri ya maandishi kama Vim:

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

vim /home/user_name/.ssh/authorized_keys

Mwishowe, weka ruhusa sahihi za faili:

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

na ubadilishe umiliki kwa mtumiaji huyu:

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

Kwa upande wa mteja, unahitaji kutaja eneo la ufunguo wa siri kwa uthibitishaji:

ssh-add DIR_PATH/keylocation

Sasa unaweza kuingia kwenye seva chini ya jina la mtumiaji kwa kutumia ufunguo huu:

ssh [username]@hostname

Baada ya idhini, unaweza kutumia amri ya scp kunakili faili, matumizi sshfs kuweka mfumo wa faili au saraka kwa mbali.

Inashauriwa kufanya nakala kadhaa za chelezo za ufunguo wa kibinafsi, kwa sababu ikiwa unalemaza uthibitishaji wa nenosiri na kupoteza, basi hutakuwa na njia yoyote ya kuingia kwenye seva yako mwenyewe.

Kama ilivyotajwa hapo juu, katika SSH unahitaji kuzima uthibitishaji wa mizizi (hii ndio sababu tulianzisha mtumiaji mpya).

Kwenye CentOS/Red Hat tunapata mstari PermitRootLogin yes katika faili ya usanidi /etc/ssh/sshd_config na ubadilishe:

PermitRootLogin no

Kwenye Ubuntu ongeza mstari PermitRootLogin no kwa faili ya usanidi 10-my-sshd-settings.conf:

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

Baada ya kuthibitisha kuwa mtumiaji mpya anathibitisha kwa ufunguo wao, unaweza kuzima uthibitishaji wa nenosiri ili kuondoa hatari ya kuvuja kwa nenosiri au nguvu ya kinyama. Sasa, ili kufikia seva, mshambuliaji atahitaji kupata ufunguo wa faragha.

Kwenye CentOS/Red Hat tunapata mstari PasswordAuthentication yes katika faili ya usanidi /etc/ssh/sshd_config na ubadilishe kama hii:

PasswordAuthentication no

Kwenye Ubuntu ongeza mstari PasswordAuthentication no faili 10-my-sshd-settings.conf:

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

Kwa maagizo ya kuwezesha uthibitishaji wa sababu mbili kupitia SSH, ona hapa.

firewall

Ngome inahakikisha kuwa ni trafiki tu kwenye milango ambayo unaruhusu moja kwa moja itaenda kwa seva. Hii hulinda dhidi ya unyonyaji wa bandari ambazo zimewashwa kimakosa na huduma zingine, ambayo hupunguza kwa kiasi kikubwa sehemu ya mashambulizi.

Kabla ya kusakinisha ngome, unahitaji kuhakikisha kuwa SSH imejumuishwa kwenye orodha ya kutengwa na haitazuiwa. Vinginevyo, baada ya kuanzisha firewall, hatutaweza kuunganisha kwenye seva.

Usambazaji wa Ubuntu unakuja na Firewall isiyo ngumu (ufw), na CentOS/Red Hat - firewalld.

Kuruhusu SSH kwenye firewall kwenye Ubuntu:

sudo ufw allow ssh

Kwenye CentOS/Red Hat tumia amri firewall-cmd:

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

Baada ya utaratibu huu, unaweza kuanza firewall.

Kwenye CentOS/Red Hat, anza huduma ya mfumo kwa firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Kwenye Ubuntu tunatumia amri ifuatayo:

sudo ufw enable

Haikufafanuliwa

Huduma Haikufafanuliwa huchanganua kumbukumbu kwenye seva na kuhesabu idadi ya majaribio ya ufikiaji kutoka kwa kila anwani ya IP. Mipangilio inataja sheria za majaribio ngapi ya ufikiaji yanaruhusiwa kwa muda fulani - baada ya hapo anwani hii ya IP imezuiwa kwa muda maalum. Kwa mfano, hebu turuhusu majaribio 5 ya uthibitishaji ya SSH ambayo hayakufaulu ndani ya saa 2, kisha tuzuie anwani ya IP iliyotolewa kwa saa 12.

Kufunga Fail2Ban kwenye CentOS na Red Hat:

sudo yum install fail2ban

Ufungaji kwenye Ubuntu na Debian:

sudo apt install fail2ban

Uzinduzi:

systemctl start fail2ban
systemctl enable fail2ban

Programu ina faili mbili za usanidi: /etc/fail2ban/fail2ban.conf ΠΈ /etc/fail2ban/jail.conf. Vizuizi vya kupiga marufuku vimebainishwa katika faili ya pili.

Jela kwa SSH imewezeshwa kwa chaguo-msingi na mipangilio chaguo-msingi (majaribio 5, muda wa dakika 10, marufuku kwa dakika 10).

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

Kando na SSH, Fail2Ban inaweza kulinda huduma zingine kwenye nginx au seva ya wavuti ya Apache.

Usasisho otomatiki wa usalama

Kama unavyojua, udhaifu mpya hupatikana kila wakati katika programu zote. Baada ya habari kuchapishwa, ushujaa huongezwa kwa vifurushi maarufu vya unyonyaji, ambavyo hutumiwa kwa wingi na wadukuzi na vijana wakati wa kuchanganua seva zote mfululizo. Kwa hiyo, ni muhimu sana kusakinisha sasisho za usalama mara tu zinapoonekana.

Kwenye seva ya Ubuntu, sasisho za usalama otomatiki zinawezeshwa na chaguo-msingi, kwa hivyo hakuna hatua zaidi inahitajika.

Kwenye CentOS/Red Hat unahitaji kusakinisha programu dnf-otomatiki na uwashe kipima muda:

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

Ukaguzi wa kipima muda:

sudo systemctl status dnf-automatic.timer

Kubadilisha bandari chaguo-msingi

SSH ilitengenezwa mnamo 1995 kuchukua nafasi ya telnet (bandari 23) na ftp (bandari 21), kwa hivyo mwandishi wa programu, Tatu Iltonen. bandari iliyochaguliwa 22 kwa chaguo-msingi, na imeidhinishwa na IANA.

Kwa kawaida, washambuliaji wote wanafahamu ni mlango gani wa SSH unaoendeshwa - na uchanganue pamoja na bandari zingine za kawaida ili kujua toleo la programu, kuangalia nenosiri la msingi la kawaida, na kadhalika.

Kubadilisha bandari za kawaida - obfuscation - mara kadhaa hupunguza kiasi cha trafiki ya takataka, ukubwa wa magogo na mzigo kwenye seva, na pia hupunguza uso wa mashambulizi. Ingawa baadhi kukosoa njia hii ya "ulinzi kupitia giza" (usalama kupitia kutokujulikana). Sababu ni kwamba mbinu hii inapingana na msingi ulinzi wa usanifu. Kwa hiyo, kwa mfano, Taasisi ya Taifa ya Viwango na Teknolojia ya Marekani katika "Mwongozo wa Usalama wa Seva" inaonyesha hitaji la usanifu wa seva wazi: "Usalama wa mfumo haupaswi kutegemea usiri wa utekelezaji wa vipengele vyake," hati inasema.

Kinadharia, kubadilisha bandari chaguo-msingi ni kinyume na mazoezi ya usanifu wazi. Lakini katika mazoezi, kiasi cha trafiki mbaya ni kweli kupunguzwa, hivyo hii ni kipimo rahisi na cha ufanisi.

Nambari ya bandari inaweza kusanidiwa kwa kubadilisha maagizo Port 22 katika faili ya usanidi / nk / ssh / sshd_config. Pia inaonyeshwa na parameter -p <port> Π² sshd. Mteja wa SSH na programu sftp pia kuunga mkono chaguo -p <port>.

Parameter -p <port> inaweza kutumika kutaja nambari ya bandari wakati wa kuunganisha na amri ssh katika linux. KATIKA sftp ΠΈ scp parameter hutumiwa -P <port> (mji mkuu P). Maagizo ya mstari wa amri hubatilisha thamani yoyote katika faili za usanidi.

Ikiwa kuna seva nyingi, karibu vitendo hivi vyote vya kulinda seva ya Linux vinaweza kuendeshwa kiotomatiki kwenye hati. Lakini ikiwa kuna seva moja tu, basi ni bora kudhibiti mchakato kwa mikono.

Haki za Matangazo

Agiza na uanze mara moja! Uundaji wa VDS usanidi wowote na mfumo wowote wa uendeshaji ndani ya dakika moja. Usanidi wa kiwango cha juu utakuwezesha kuja kwa ukamilifu - cores 128 za CPU, 512 GB RAM, 4000 GB NVMe. Epic πŸ™‚

Ulinzi wa seva ya Linux. Nini cha kufanya kwanza

Chanzo: mapenzi.com