Capitolul 6 · 6.3
Docker și firewall-ul: publicarea în siguranță a porturilor
Aceasta este capcana în care cad cei mai mulți oameni. Un port pe care îl publicați în Docker cu ports: este accesibil de pe internet, chiar dacă ufw închide acel port. Docker își setează propriile reguli de firewall, iar acestea au prioritate față de regulile ufw.
Un exemplu de ce poate merge greșit
services:
db:
image: mariadb:11
ports:
- "3306:3306"
Firewall-ul dumneavoastră arată că doar porturile 22, 80 și 443 sunt deschise. Cu toate acestea, baza dumneavoastră de date este acum accesibilă din întreaga lume pe portul 3306.
Trei reguli care vă mențin în siguranță
- Publicați doar ceea ce trebuie să fie accesibil din exterior. În acest ghid, acesta este doar Caddy, pe porturile 80 și 443. Aplicațiile comunică cu Caddy prin rețeaua internă a compose. Acestea nu au nevoie de
ports:. - Trebuie ca un port să fie accesibil doar pe serverul propriu-zis? Puneți
127.0.0.1:în fața lui. Astfel, doar serverul însuși are acces, sau dumneavoastră printr-un tunel SSH (consultați Un fișier de configurare SSH: autentificare cu un nume scurt). - O bază de date nu primește niciodată
ports:. Aplicația o găsește după numele serviciului, cum ar fidb.
ports:
- "127.0.0.1:3001:3001"
Verificarea din exterior
Verificați pe server ce porturi sunt deschise pentru oricine:
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",...))
Tot ce are 0.0.0.0 sau [::] este accesibil din exterior. Tot ce are 127.0.0.1 este accesibil doar din interior. Dacă doriți să verificați din exterior, folosiți de pe propriul calculator un scanner de porturi, cum ar fi nmap, pe propria dumneavoastră adresă IP.
Atenție: Nu montați /var/run/docker.sock într-un container decât dacă știți exact de ce. Cine preia controlul asupra acelui container are astfel controlul asupra întregului dumneavoastră server.
