Kā nostiprināt jaunu Ubuntu 24.04 VPS pirmajās 10 minūtēs
Jauns VPS ir sasniedzams no visa interneta jau sāknēšanas brīdī, un automātiskie skeneri jaunu IP adresi parasti atrod dažu minūšu, nevis dienu laikā. Šī pamācība apraksta pirmās desmit darba minūtes uz tīra Ubuntu 24.04 servera: sudo lietotājs, SSH tikai ar atslēgām, ugunsmūris, fail2ban, automātiskie drošības atjauninājumi un beigās pārbaude, kas īsti klausās uz portiem. Tā domāta ikvienam, kas pats uzstāda serveri un grib saprātīgu, atkārtojamu bāzi, pirms instalē ko citu.
1. solis: atjaunini sistēmu
Pieslēdzies kā root un atjaunini pakotņu sarakstu un instalētās pakotnes. Tas ir svarīgi, jo veidnes attēls var būt vairākas nedēļas vecs, un visvieglākie uzbrukumi izmanto ievainojamības, kurām labojumi jau sen ir publicēti.
apt update && apt -y upgrade apt -y autoremove
Pārstartē serveri tikai tad, ja eksistē fails /var/run/reboot-required, citādi turpini.
2. solis: izveido sudo lietotāju
Ikdienas darbs kā root nozīmē, ka katra pārrakstīšanās izpildās ar neierobežotām tiesībām, tāpēc izveido parastu lietotāju un piešķir tam sudo tiesības.
adduser deploy usermod -aG sudo deploy
Aizstāj deploy ar jebkuru citu vārdu. Pirms turpini, pārbaudi, ka sudo strādā:
su - deploy sudo whoami
Pēdējai komandai jāizdrukā root. Ja tā nenotiek, salabo to tagad, kamēr root sesija vēl ir atvērta.
3. solis: SSH atslēgas un paroles pieteikšanās atslēgšana
Paroles autentifikāciju var lauzt ar brutālu spēku visu diennakti, bet modernu SSH atslēgu praktiski nevar, tāpēc šī viena izmaiņa novērš visbiežāko uzbrukumu jebkuram VPS. Uz sava datora izveido atslēgu, ja tev tādas vēl nav, un nokopē to uz serveri:
ssh-keygen -t ed25519 ssh-copy-id deploy@203.0.113.10
Pārbaudi, ka ssh deploy@203.0.113.10 ielaiž tevi bez paroles. Tikai pēc tam atslēdz paroles autentifikāciju uz servera. Ubuntu 24.04 galvenā konfigurācija iekļauj drop-in failus no /etc/ssh/sshd_config.d/ alfabētiskā secībā, un sshd katrai opcijai patur pirmo nolasīto vērtību, tāpēc uzvar fails, kas kārtojas agrāk. Mākoņa attēli satur failu, piemēram, 50-cloud-init.conf, kas iestata PasswordAuthentication yes, tāpēc tavam failam jākārtojas pirms tā: nosauc to 00-hardening.conf.
printf 'PasswordAuthentication no\nKbdInteractiveAuthentication no\nPermitRootLogin prohibit-password\n' | sudo tee /etc/ssh/sshd_config.d/00-hardening.conf sudo sshd -t && sudo systemctl restart ssh sudo sshd -T | grep -i passwordauthentication
Pēdējā komanda izdrukā spēkā esošo konfigurāciju, tāpēc pārliecinies, ka tā rāda passwordauthentication no; ja tur joprojām ir yes, uzvar kāds cits drop-in fails, un tev jāpārbauda /etc/ssh/sshd_config.d/. Turi pašreizējo sesiju atvērtu un otrā terminālī pārliecinies, ka pieteikšanās ar atslēgu joprojām strādā; salauzta SSH konfigurācija bez rezerves sesijas ir klasiskais veids, kā izslēgt sevi no servera.
4. solis: ugunsmūra pamati ar ufw
Ugunsmūris garantē, ka vēlāk instalētie servisi, piemēram, datubāze, kas pēc noklusējuma klausās uz visām saskarnēm, netiek klusi atvērti internetam. ufw uz Ubuntu 24.04 jau ir instalēts, tāpēc atliek atļaut SSH un to ieslēgt:
sudo ufw allow OpenSSH sudo ufw enable sudo ufw status verbose
Atļauj SSH pirms ugunsmūra ieslēgšanas, citādi nākamā nomestā pakete būs tavs paša savienojums. Ja uz servera būs mājaslapa, atver arī web portus:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
5. solis: fail2ban un automātiskie drošības atjauninājumi
fail2ban lasa autentifikācijas žurnālus un uz laiku bloķē IP adreses, kas atkārtoti kļūdās, un tas krietni samazina brute-force troksni un padara nozagtu paroļu izmēģināšanu praktiski bezjēdzīgu.
sudo apt -y install fail2ban printf '[sshd]\nenabled = true\nbackend = systemd\n' | sudo tee /etc/fail2ban/jail.d/sshd.local sudo systemctl enable --now fail2ban sudo fail2ban-client status sshd
Rinda backend = systemd liek fail2ban lasīt systemd žurnālu tieši, tāpēc tas strādā arī minimālās instalācijās bez klasiskajiem log failiem. Tālāk unattended-upgrades instalē drošības labojumus automātiski, un tas ir svarīgi, jo lielākā daļa reālo ielaušanos izmanto ievainojamības, kas bija izlabotas ilgi pirms uzbrukuma.
sudo apt -y install unattended-upgrades sudo dpkg-reconfigure -plow unattended-upgrades
Dialogā izvēlies Yes. Noklusējuma konfigurācija piemēro tikai drošības atjauninājumus, tāpēc tā nepārsteigs tevi ar lielām versiju maiņām.
6. solis: laika josla, hostname un portu pārbaude
Iestati laika joslu, lai žurnālu laika zīmogi sakrīt ar tavu monitoringu un tavu paša atmiņu par notikumiem:
sudo timedatectl set-timezone Europe/Riga timedatectl
Iedod mašīnai īstu hostname, jo pēc pusgada "ubuntu-2404" brīdinājumā tev neko nepateiks:
sudo hostnamectl set-hostname web1.example.com
Beigās izvadi visus klausošos soketus un apzināti izlem, vai katram no tiem jābūt publiskam:
sudo ss -tulpn
Skaties kolonnā Local Address: ieraksti uz 127.0.0.1 vai ::1 ir sasniedzami tikai no paša servera, bet 0.0.0.0 vai [::] nozīmē, ka ports ir atvērts visai pasaulei, ja vien ufw to nebloķē. Uz tīras instalācijas tur jābūt tikai sshd un systemd-resolved; viss pārējais prasa paskaidrojumu.
Kas tev ir pēc desmit minūtēm
- Atjaunināta sistēma, kas turpina atjaunināties pati
- sudo lietotājs un SSH tikai ar atslēgām, paroles pieteikšanās atslēgta
- Ugunsmūris, kas pēc noklusējuma bloķē visu, izņemot tevis izvēlētos portus
- fail2ban, kas automātiski bloķē brute-force avotus
- Pareizs laiks, jēgpilns hostname un zināms atvērto portu saraksts
Nekas no tā neaizstāj rezerves kopijas un monitoringu, bet tas aizver caurumus, kurus automātiskie skeneri izmanto servera dzīves pirmajās stundās. Ja vēl tikai izvēlies, kur šo serveri darbināt, mūsu VPS plāni darbojas uz mūsu pašu aparatūras un tīkla AS58269 Tier 3+ datu centrā Rīgā, un viss augstāk aprakstītais uz tiem strādā tieši tāpat.
Gatavs sākt?
Palaid dažās minūtēs vai aprunājies ar inženieri par piemērotāko risinājumu.