Kokios paslaugos klausosi Jūsų VPS ir kas yra pasiekiama iš išorės?
Kiekviena programa, priimanti ryšius, klauso prievado: SSH 22, žiniatinklio serveris 80 ir 443, MariaDB 3306. Kiekvienas iš išorės pasiekiamas prievadas yra durys į Jūsų serverį. Svetainei iš išorės paprastai reikia tik 22, 80 ir 443. Čia sužinosite, kaip pamatyti, kas klauso ir kokiu adresu, bei kaip patikrinti, ką mato likęs internetas.
Kaip pamatyti, kas klauso
Savo VPS paleiskite:
sudo ss -tulpn
Parinktys reiškia: TCP (-t), UDP (-u), tik klausantys (-l), kuri programa (-p) ir skaičiai vietoj pavadinimų (-n). Pavyzdys:
tcp LISTEN 0.0.0.0:22 users:(("sshd",...))
tcp LISTEN 0.0.0.0:443 users:(("nginx",...))
tcp LISTEN 127.0.0.1:3306 users:(("mariadbd",...))
tcp LISTEN 0.0.0.0:6379 users:(("redis-server",...))
tcp LISTEN [::]:22 users:(("sshd",...))
Svarbiausias yra stulpelis Local Address, t. y. adresas, kuriuo programa klauso:
| Adresas | Reikšmė |
|---|---|
0.0.0.0 | Visi IPv4 adresai, taigi ir Jūsų viešasis adresas: pasiekiama iš išorės, nebent tai blokuoja ugniasienė |
[::] | Visi IPv6 adresai: tas pats IPv6 atveju |
127.0.0.1 arba [::1] | Tik pats serveris (loopback): iš išorės niekada nepasiekiama |
127.0.0.53 arba 127.0.0.54 | Taip pat loopback: vietinė systemd-resolved DNS pagalbinė tarnyba |
Pavyzdyje MariaDB yra tvarkoje: prie jos gali prisijungti tik programos pačiame serveryje. Redis klauso visais adresais, ir būtent tai yra klaida, apie kurią čia kalbama.
Uždarymas pačioje tarnyboje
Duomenų bazė, podėlis ar valdymo sąsaja beveik niekada neturėtų būti pasiekiama iš išorės. Geriausias pirmasis žingsnis: tarnyba turi klausyti tik loopback adresu. Debian ir Ubuntu sistemose:
| Programa | Nustatymas | Failas |
|---|---|---|
| MariaDB arba MySQL | bind-address = 127.0.0.1 | /etc/mysql/mariadb.conf.d/50-server.cnf |
| PostgreSQL | listen_addresses = 'localhost' | /etc/postgresql/<versija>/main/postgresql.conf |
| Redis | bind 127.0.0.1 -::1 ir protected-mode yes | /etc/redis/redis.conf |
Po to iš naujo paleiskite tarnybą (žr. Tarnybų valdymas su systemctl Jūsų VPS) ir dar kartą patikrinkite su ss -tulpn. Jei patys norite prisijungti prie duomenų bazės iš savo nešiojamojo kompiuterio, vietoj atviro prievado naudokite SSH tunelį, žr. SSH konfigūracija: prisijungimas trumpu pavadinimu.
Ugniasienė kaip antrasis sluoksnis
Ugniasienė sulaiko tai, kas vis dėlto per klaidą klauso visais adresais. Kaip nustatyti ufw, rasite straipsnyje Ugniasienė su ufw (arba nftables). Nepasikliaukite vienu sluoksniu: ugniasienė gali būti išjungta arba taisyklė gali būti per plati.
ports:), apeina ufw. Duomenų bazė su "3306:3306" tada pasiekiama iš išorės, net jei ufw rodo, kad prievadas uždarytas. Prieš jį pridėkite 127.0.0.1: arba prievado nepublikuokite. Žr. Docker ir ugniasienė: saugus prievadų publikavimas.Patikrinimas iš išorės
ss parodo, kas klauso serveryje, bet ne tai, ką praleidžia Jūsų ugniasienė. Tikrąjį patikrinimą atlikite iš kito kompiuterio, ne iš paties serverio. Su nc (netcat) Mac arba Linux sistemoje:
nc -vz -w 3 203.0.113.10 6379 nc -6 -vz -w 3 2001:db8::10 6379
Windows sistemoje tą patį PowerShell atlieka komanda Test-NetConnection 203.0.113.10 -Port 6379. Įrašykite savo IPv4 ir IPv6 adresus; juos rasite VPS ekrane. Rezultatą skaitykite taip:
- Atviras (succeeded): kažkas klauso ir tai pasiekiama iš išorės.
- Uždarytas (Connection refused): niekas neklauso arba ugniasienė aktyviai atmeta ryšį.
- Filtruojamas (time-out): ugniasienė tyliai atmeta srautą.
Duomenų bazei tinka abu variantai: uždarytas ir filtruojamas. Taip pat patikrinkite IPv6: dažna klaida yra ugniasienė tik su IPv4 taisyklėmis, nors tarnyba klauso ir [::] adresu. Prievadų skeneris, pavyzdžiui, nmap, tikrina daugiau prievadų vienu metu; tokį skenerį naudokite tik savo serveryje.
Jūsų VPS yra visiškai savarankiškai valdomas: kurios tarnybos klauso ir kaip nustatyta ugniasienė, tvarkote patys. Mes padedame su WebOké dalimi, pavyzdžiui, VPS ekranu, tinklu ir momentinėmis kopijomis (snapshots).
Norite sužinoti daugiau? Išklausykite nemokamo kurso VPS ir Linux serverių administravimas pamoką 5.1 Prievadai ir klausančios paslaugos arba pamoką 5.2 Užkarda su ufw ir nftables.
