Millised teenused su VPS-is kuulavad ja mis on väljastpoolt ligipääsetav?
Iga programm, mis ühendusi vastu võtab, kuulab mõnda porti: SSH porti 22, veebiserver porte 80 ja 443, MariaDB porti 3306. Iga väljastpoolt ligipääsetav port on uks sinu serverisse. Veebisaidil on väljastpoolt tavaliselt vaja ainult porte 22, 80 ja 443. Siit loed, kuidas näha, mis kuulab ja millisel aadressil, ning kuidas kontrollida, mida ülejäänud internet näeb.
Vaata, mis kuulab
Käivita oma VPS-is:
sudo ss -tulpn
Valikud tähendavad: TCP (-t), UDP (-u), ainult kuulavad (-l), milline programm (-p) ja numbrid nimede asemel (-n). Näide:
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",...))
Oluline on veerg Local Address, ehk aadress, millel programm kuulab:
| Aadress | Tähendus |
|---|---|
0.0.0.0 | Kõik IPv4-aadressid, seega ka sinu avalik aadress: väljastpoolt ligipääsetav, kui tulemüür seda ei blokeeri |
[::] | Kõik IPv6-aadressid: sama IPv6 puhul |
127.0.0.1 või [::1] | Ainult server ise (loopback): väljastpoolt ei ole kunagi ligipääsetav |
127.0.0.53 või 127.0.0.54 | Samuti loopback: systemd-resolved'i kohalik DNS-abi |
Näites on MariaDB korras: sellele pääsevad ligi ainult serveris endas olevad programmid. Redis kuulab kõigil aadressidel ja just see on viga, millest jutt käib.
Sulge teenuses endas
Andmebaas, vahemälu või halduspaneel ei tohiks peaaegu kunagi olla väljastpoolt ligipääsetav. Parim esimene samm on, et teenus kuulaks ainult loopbacki. Debianis ja Ubuntus:
| Programm | Seadistus | Fail |
|---|---|---|
| MariaDB või MySQL | bind-address = 127.0.0.1 | /etc/mysql/mariadb.conf.d/50-server.cnf |
| PostgreSQL | listen_addresses = 'localhost' | /etc/postgresql/<versioon>/main/postgresql.conf |
| Redis | bind 127.0.0.1 -::1 ja protected-mode yes | /etc/redis/redis.conf |
Seejärel taaskäivita teenus (vaata Teenuste haldamine systemctl abil sinu VPS-is) ja kontrolli uuesti käsuga ss -tulpn. Kui soovid ise oma sülearvutist andmebaasile ligi pääseda, kasuta avatud pordi asemel SSH-tunnelit, vaata SSH-konfiguratsioon: sisselogimine lühikese nimega.
Tulemüür teise kihina
Tulemüür peatab selle, mis kogemata siiski kõigil aadressidel kuulab. Kuidas ufw-d seadistada, loed artiklist Tulemüür ufw (või nftables) abil. Ära looda ühele kihile: tulemüür võib olla välja lülitatud või reegel liiga lai.
ports:) lähevad ufw-st mööda. Andmebaas seadistusega "3306:3306" on siis väljastpoolt ligipääsetav, isegi kui ufw ütleb, et port on suletud. Lisa ette 127.0.0.1: või ära avalda porti üldse. Vaata Docker ja tulemüür: portide turvaline avaldamine.Kontrolli väljastpoolt
ss näitab, mis serveris kuulab, kuid mitte seda, mida tulemüür läbi laseb. Päris kontrolli tee teisest arvutist, mitte serverist endast. Käsuga nc (netcat) Macis või Linuxis:
nc -vz -w 3 203.0.113.10 6379 nc -6 -vz -w 3 2001:db8::10 6379
Windowsis teeb PowerShell sama käsuga Test-NetConnection 203.0.113.10 -Port 6379. Sisesta oma IPv4- ja IPv6-aadress; need leiad VPS-i vaatest. Tulemust loe nii:
- Avatud (succeeded): midagi kuulab ja see on väljastpoolt ligipääsetav.
- Suletud (Connection refused): miski ei kuula või tulemüür keeldub aktiivselt.
- Filtreeritud (time-out): tulemüür viskab liikluse vaikselt minema.
Andmebaasi puhul on nii suletud kui ka filtreeritud mõlemad head tulemused. Testi ka IPv6-t: levinud viga on tulemüür, millel on ainult IPv4-reeglid, samal ajal kui teenus kuulab ka aadressil [::]. Pordiskanner, näiteks nmap, kontrollib korraga rohkem porte; kasuta sellist skannerit ainult oma serveris.
Sinu VPS on täielikult isehallatav: millised teenused kuulavad ja kuidas tulemüür on seadistatud, korraldad ise. Meie aitame WebOké osaga, näiteks VPS-i vaate, võrgu ja hetktõmmistega.
Tahad rohkem teada? Läbi tasuta kursus VPS ja Linuxi serveri haldus, õppetund 5.1 Pordid ja kuulavad teenused või õppetund 5.2 Tulemüür ufw ja nftablesiga.
