Tropic Host

Usalama wa VPS kuanzia mwanzo: funguo za SSH, firewall na Fail2ban

Kusoma kwa 6 min
Tropic
Usalama wa VPS kuanzia mwanzo: funguo za SSH, firewall na Fail2ban

Language: sw

Usalama wa VPS kuanzia mwanzo: funguo za SSH, firewall na Fail2ban

VPS mpya haipaswi kuchukuliwa kuwa salama mara tu Ubuntu inapowekwa. Kabla ya kusanidi ufikiaji, seva tayari inaweza kuonekana na skana: hujaribu manenosiri ya SSH, hutafuta paneli za usimamizi zilizo wazi na hukagua udhaifu wa kawaida. Katika mwongozo huu tutapitia hatua za msingi za kulinda VPS kutoka mwanzo: kuunda mtumiaji tofauti, kusanidi uthibitishaji wa ufunguo wa SSH, kuzuia porti za mtandao kwa UFW na kuongeza Fail2ban. Hatua zote zinafanya kazi kwenye Ubuntu 22.04 na 24.04 wakati amri zinaendeshwa na mtumiaji mwenye ruhusa za sudo.

Kabla ya kuanza: tengeneza orodha ya porti

Usifungue porti «kwa tahadhari tu». Seva ya kawaida ya wavuti inahitaji:

  • 22/tcp — SSH; ikiwezekana izuie kwa anwani ya IP au ihamishe kwenda porti nyingine kama hatua ya ziada tu;
  • 80/tcp — HTTP; kwa kawaida inahitajika kuelekeza kwenda HTTPS na kuthibitisha cheti;
  • 443/tcp — HTTPS.

Porti ya programu kama 3000, 8080 au 9000 haipaswi kufikiwa kutoka intaneti ikiwa Nginx au Caddy inaendesha mbele yake. Funga programu kwenye 127.0.0.1 au ruhusu porti yake kwenye mtandao wa ndani pekee. Kwanza tambua kinachosikiliza kwenye seva:

sudo ss -tulpn

Baada ya kusakinisha Docker, kagua sheria zake za iptables kando: kuchapisha -p 3000:3000 kunaweza kufichua porti nje ya usanidi uliotarajiwa. Kwa huduma ya umma, ni salama zaidi kutumia proksi ya HTTPS na kuweka porti ya ndani ikiwa imefichwa.

Hatua ya 1. Sasisha mfumo na uunde msimamizi

Unganisha kwenye VPS kwa kutumia taarifa ulizopewa za kuingia na usakinishe masasisho:

sudo apt update
sudo apt full-upgrade -y
sudo apt install -y ufw fail2ban unattended-upgrades

Unda mtumiaji binafsi. Badilisha alex kwa jina lako:

sudo adduser alex
sudo usermod -aG sudo alex

Usiondoe ufikiaji wa awali hadi ujaribu akaunti mpya kwenye dirisha tofauti la terminal. Hii ni kanuni muhimu: ni rahisi kurekebisha kosa la SSH wakati kipindi cha sasa bado kiko wazi.

Hatua ya 2. Unda ufunguo wa SSH na uusakinishe kwenye seva

Kwenye kompyuta yako ya Linux, macOS au Windows PowerShell endesha:

ssh-keygen -t ed25519 -C "alex@my-computer"

Bonyeza Enter kuhifadhi ufunguo kwenye faili chaguo-msingi, kisha weka kauli ya siri. Usitume kamwe ufunguo wa faragha kwenye gumzo, usiuweke kwenye hifadhi ya msimbo wala kuunakili kwenye VPS. Ni faili yenye kiendelezi .pub pekee inayopaswa kuhamishiwa kwenye seva:

ssh-copy-id alex@SERVER_IP

Ikiwa ssh-copy-id haipatikani, onyesha ufunguo wa umma kwa Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub kwenye PowerShell, kisha uuongeze kwenye seva:

sudo install -d -m 700 -o alex -g alex /home/alex/.ssh
sudo nano /home/alex/.ssh/authorized_keys
sudo chown alex:alex /home/alex/.ssh/authorized_keys
sudo chmod 600 /home/alex/.ssh/authorized_keys

Bandika ufunguo kwenye mstari mmoja na ujaribu kuingia kabla ya kuzima manenosiri:

ssh alex@SERVER_IP
sudo whoami

Matokeo yanayotarajiwa ya amri ya mwisho ni root. Ikiwa mteja wa SSH haupati ufunguo, uonyeshe wazi: ssh -i ~/.ssh/id_ed25519 alex@SERVER_IP.

Hatua ya 3. Zima kuingia kwa root na uthibitishaji wa nenosiri

Hifadhi nakala ya usanidi wa SSH:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config

Hakikisha faili ina vigezo vifuatavyo:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
MaxAuthTries 3

Kwenye Ubuntu, mipangilio inaweza kuwa ndani ya /etc/ssh/sshd_config.d/*.conf, kwa hiyo kagua usanidi unaotumika:

sudo sshd -t
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|maxauthtries'

Ikiwa sshd -t inaripoti kosa, usiwake upya huduma hadi urekebishe sintaksia. Baada ya ukaguzi kufanikiwa, tumia mipangilio:

sudo systemctl reload ssh

Weka muunganisho wa zamani wa SSH wazi na ujaribu kuingia kwa ufunguo kwenye dirisha jipya. Kuzima manenosiri bila ufunguo uliothibitishwa ndiyo njia ya kawaida ya kupoteza ufikiaji wa seva.

Hatua ya 4. Sanidi UFW bila kuzuia SSH

UFW ni kifuniko rahisi cha sheria za mtandao za Linux. Weka chaguo-msingi salama kwanza, kisha ruhusu SSH na porti za wavuti:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable

Thibitisha uanzishaji baada ya kuongeza sheria ya SSH pekee. Kagua matokeo:

sudo ufw status verbose
sudo ufw status numbered

Kwa IP ya ofisi isiyobadilika, unaweza kuzuia SSH kwenye anwani hiyo:

sudo ufw delete allow 22/tcp
sudo ufw allow from YOUR.PUBLIC.IP to any port 22 proto tcp comment 'SSH office'

Tumia chaguo hili tu ukiwa na IP isiyobadilika na ufikiaji wa konsoli ya mtoa huduma: anwani ikibadilika, unaweza kujifungia nje.

Jinsi ya kufungua porti ya programu kwa muda

Ikiwa unahitaji kukagua huduma moja kwa moja, tengeneza sheria yenye chanzo kilichowekewa mipaka:

sudo ufw allow from YOUR.PUBLIC.IP to any port 8080 proto tcp

Baada ya ukaguzi, ifute kwa kutumia nambari inayoonyeshwa na ufw status numbered:

sudo ufw delete RULE_NUMBER

Usitumie sudo ufw allow 1:65535/tcp: sheria kama hiyo hufanya firewall iwe ya mfano tu.

Hatua ya 5. Washa Fail2ban kwa SSH

Fail2ban huchanganua kumbukumbu na kuongeza sheria ya kuzuia kwa muda baada ya majaribio kadhaa ya kuingia kushindwa. Haibadilishi funguo za SSH au firewall, lakini hupunguza kelele za mashambulizi ya brute-force yanayojiendesha.

Tengeneza usanidi wa ndani ili masasisho ya vifurushi yasiandike juu ya mipangilio yako:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Weka thamani zinazofaa katika sehemu ya [DEFAULT]:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
banaction = ufw

[sshd]
enabled = true
port = 22

Washa huduma na ukague jail:

sudo systemctl enable --now fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd

Katika matokeo ya sshd, kagua idadi ya majaribio yaliyoshindwa na anwani zilizozuiwa. Usiongeze IP yako mwenyewe kwenye orodha ya marufuku. Kwa ubaguzi wa kudumu, tumia ignoreip = 127.0.0.1/8 YOUR.PUBLIC.IP ndani ya [DEFAULT].

Hatua ya 6. Washa masasisho ya kiotomatiki

Masasisho ya kiotomatiki ni muhimu kwa vifurushi vya usalama, lakini kuwasha upya kernel bado kunahitaji kusimamiwa:

sudo dpkg-reconfigure -plow unattended-upgrades
sudo systemctl status unattended-upgrades

Mara moja kwa wiki, kagua ikiwa kuwasha upya kunahitajika:

test -f /var/run/reboot-required && echo 'Требуется перезапуск'

Kabla ya kuwasha upya mwenyewe, hakikisha una ufunguo unaofanya kazi na ufikiaji wa konsoli ya VPS. Baada ya kuwasha upya, kagua huduma za programu, Nginx, UFW na Fail2ban.

Hatua ya 7. Kagua matokeo kutoka nje

Kagua ulinzi kutoka kompyuta nyingine, si kwa kusoma usanidi pekee:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no alex@SERVER_IP

Amri inapaswa kuishia kwa kukataliwa. Jaribu kuingia kwa ufunguo unaofanya kazi kando:

ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 alex@SERVER_IP

Kwenye VPS, kagua anwani zinazosikiliza na sheria:

sudo ss -lntup
sudo ufw status numbered
sudo fail2ban-client status sshd

Porti ya programu inapaswa kusikiliza kwenye 127.0.0.1 ikiwa haikusudiwi kufikiwa moja kwa moja. Kutoka kwenye mwenyeji wa nje unaweza kutumia nmap SERVER_IP, lakini changanua seva yako pekee: kukagua miundombinu ya mtu mwingine bila ruhusa kunaweza kukiuka sheria na masharti ya mtoa huduma.

Nakala rudufu na urejeshaji

Ulinzi wa SSH hauzuii kufutwa kwa data, kosa la msimamizi au programu iliyoingiliwa. Hifadhi nakala za hifadhidata, usanidi na faili za watumiaji tofauti na VPS. Usanidi wa chini kabisa ni nakala ya kila siku, matoleo kadhaa ya siku zilizopita na majaribio ya mara kwa mara ya urejeshaji.

Usiandike manenosiri au tokeni kwenye skripti za maandishi wazi. Siri ikifichuka, ibatilisha mara moja na uunde nyingine.

Jinsi ya kuchagua VPS kwa mradi salama

Usalama huanza kwa udhibiti wa miundombinu. Kwenye VPS unaweza kuchagua mwenyewe mfumo wa uendeshaji, sheria za firewall, njia ya kuingia, nakala rudufu na mahali pa huduma. Kwa tovuti ndogo au API, mtandao thabiti, hifadhi ya SSD na konsoli ya urejeshaji ni muhimu zaidi kuliko wingi wa cores za mtandaoni.

Unapoanzisha mradi kwenye VPS ya tropic.host, fafanua mapema sehemu zake za kuingia za umma: mara nyingi SSH, HTTP na HTTPS zinatosha. Weka hifadhidata na paneli za usimamizi ndani ya mtandao wa ndani. Mradi unapokua, kutenganisha VPS za programu, hifadhidata na ufuatiliaji husaidia kutenga maeneo ya hitilafu.

Makosa ya kawaida

  • Kuzima manenosiri kabla ya kujaribu kuingia kwa ufunguo. Weka kipindi cha sasa wazi na ujaribu kuingia upya kando.
  • Kuacha 22/tcp wazi kwa dunia nzima wakati inaweza kuruhusiwa kutoka anwani zinazoaminika pekee.
  • Kuchapisha porti za Docker moja kwa moja. Kagua sheria za Docker na UFW kwanza.
  • Kusakinisha Fail2ban bila kukagua kumbukumbu tena. Baada ya mabadiliko, kagua journalctl -u ssh na hali ya jail.

Hitimisho

Ulinzi wa msingi wa VPS hauchukui muda mwingi hatua zikifanywa kwa mpangilio sahihi: unda mtumiaji tofauti, sakinisha ufunguo wa SSH, thibitisha ufikiaji, zima kuingia kwa root na manenosiri, washa UFW, sanidi Fail2ban na weka masasisho ya kiotomatiki. Kisha ongeza nakala rudufu, kumbukumbu na ufuatiliaji wa nje.

Hatua hizi hazifanyi seva isiweze kuvamiwa, lakini huondoa makosa ya kawaida ya usanidi wa mwanzo. Hatua inayofuata ni kuoanisha wasifu wa usalama na programu husika: sasisha utegemezi, punguza ruhusa za huduma, linda paneli za usimamizi na kagua porti zilizo wazi mara kwa mara.

FAQ

Je, ninahitaji kubadilisha porti ya SSH ya chaguo-msingi?

Si lazima. Kuhamisha porti hupunguza kelele za kiotomatiki, lakini hakuchukui nafasi ya funguo, manenosiri yaliyowezeshwa, UFW au Fail2ban. Ukibadilisha porti, sasisha sheria ya firewall na kigezo cha port kwenye jail ya Fail2ban.

Nifanye nini nikikosa ufikiaji baada ya kusanidi UFW?

Tumia konsoli ya wavuti au ya uokoaji ya mtoa huduma, kisha kagua sheria ya SSH na usanidi wa sshd. Usifunge kipindi cha zamani kinachofanya kazi hadi uingio mpya uthibitishwe.

Je, Fail2ban inatosha kulinda SSH?

Hapana. Fail2ban hujibu kushindwa kwa kuingia ambako tayari kumetokea. Msingi unapaswa kuwa funguo za SSH, uthibitishaji wa nenosiri umezimwa, ruhusa ndogo za watumiaji na firewall iliyowekewa mipaka.

Je, ninaweza kuruhusu SSH kutoka IP moja tu?

Ndiyo, ikiwa anwani hiyo haibadiliki: ongeza sheria ya UFW ya aina ya allow from kwa IP hiyo. Panga mapema ufikiaji wa konsoli ya mtoa huduma au njia nyingine ya dharura, kwa sababu muunganisho utazuiwa baada ya IP kubadilika.

Ninapaswa kukagua usalama wa VPS mara ngapi?

Baada ya kila mabadiliko kwenye SSH, firewall au uchapishaji wa porti za Docker, fanya ukaguzi wa porti na ujaribu kuingia. Kama matengenezo ya kawaida, kagua masasisho na kumbukumbu angalau mara moja kwa wiki na ujaribu urejeshaji wa nakala rudufu mara kwa mara.