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 -tulpnBaada 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-upgradesUnda mtumiaji binafsi. Badilisha alex kwa jina lako:
sudo adduser alex
sudo usermod -aG sudo alexUsiondoe 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_IPIkiwa 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_keysBandika ufunguo kwenye mstari mmoja na ujaribu kuingia kabla ya kuzima manenosiri:
ssh alex@SERVER_IP
sudo whoamiMatokeo 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_configHakikisha faili ina vigezo vifuatavyo:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
MaxAuthTries 3Kwenye 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 sshWeka 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 enableThibitisha uanzishaji baada ya kuongeza sheria ya SSH pekee. Kagua matokeo:
sudo ufw status verbose
sudo ufw status numberedKwa 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 tcpBaada ya ukaguzi, ifute kwa kutumia nambari inayoonyeshwa na ufw status numbered:
sudo ufw delete RULE_NUMBERUsitumie 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.localWeka thamani zinazofaa katika sehemu ya [DEFAULT]:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
banaction = ufw
[sshd]
enabled = true
port = 22Washa huduma na ukague jail:
sudo systemctl enable --now fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshdKatika 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-upgradesMara 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_IPAmri inapaswa kuishia kwa kukataliwa. Jaribu kuingia kwa ufunguo unaofanya kazi kando:
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 alex@SERVER_IPKwenye VPS, kagua anwani zinazosikiliza na sheria:
sudo ss -lntup
sudo ufw status numbered
sudo fail2ban-client status sshdPorti 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/tcpwazi 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 sshna 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.
