Peatükk 6 · 6.3
Docker ja tulemüür: pordid turvaliselt avalikuks
See on lõks, millesse enamik inimesi langeb. Port, mille Dockeris käsuga ports: avalikuks teed, on internetist kättesaadav ka siis, kui ufw selle pordi suleb. Docker lisab oma tulemüürireeglid ja need lähevad ufw reeglitest ette.
Näide sellest, mis valesti läheb
services:
db:
image: mariadb:11
ports:
- "3306:3306"
Tulemüür ütleb, et avatud on ainult 22, 80 ja 443. Ometi on su andmebaas nüüd kogu maailmale kättesaadav pordil 3306.
Kolm reeglit, mis hoiavad asja turvalisena
- Tee avalikuks ainult see, mis peab väljast kättesaadav olema. Selles juhendis on see ainult Caddy, portidel 80 ja 443. Rakendused suhtlevad Caddyga compose'i sisevõrgu kaudu. Neil pole
ports:vaja. - Kas port peab olema kättesaadav ainult serveris endas? Lisa selle ette
127.0.0.1:. Siis pääseb sellele ligi ainult server ise või sina SSH-tunneli kaudu (vaata SSH-konfiguratsioon: logi sisse lühikese nimega). - Andmebaas ei saa kunagi
ports:. Rakendus leiab selle teenuse nime järgi, näiteksdb.
ports:
- "127.0.0.1:3001:3001"
Kontrollimine väljastpoolt
Vaata serveris, millised pordid on kõigile avatud:
anna@web1:~$ sudo ss -tlnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 0.0.0.0:443 0.0.0.0:* users:(("docker-proxy",...))
LISTEN 0 4096 127.0.0.1:3001 0.0.0.0:* users:(("docker-proxy",...))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",...))
Kõik, kus on 0.0.0.0 või [::], on väljast kättesaadav. Kõik, kus on 127.0.0.1, ainult seestpoolt. Kui tahad seda väljast näha, kasuta oma arvutist pordiskannerit, näiteks nmap, oma IP-aadressi peal.
Tähelepanu: Ära seo /var/run/docker.sock konteinerisse, kui sa täpselt ei tea, miks. Kes selle konteineri üle võtab, saab sellega kogu su serveri.
