Puncte:0

Portul UFW nu este accesibil de pe web public, în ciuda regulilor care îl permit în mod explicit

drapel tr

Am două servere dedicate: „web” (YYY.YYY.YYY.YYY) și „monitor” (XXX.XXX.XXX.XXX). Ambele sunt în aceeași rețea a unui hoster de masă (hetzner).

Acum pe „web” am 3 puncte finale prometheus metric care rulează: docker-engine (9323) pe gazda bare metal și neo4j (2004), telegraf (9273) ca containere docker. Ambele containere docker își mapează corect porturile de ieșire la gazdă, astfel încât următoarele apeluri executate pe „web” funcționează:

lynx http://YYY.YYY.YYY.YYY:9323/metrics => OK
lynx http://YYY.YYY.YYY.YYY:9273/metrics => OK
lynx http://YYY.YYY.YYY.YYY:2004/metrics => OK

Dar apelarea acelor puncte finale de pe serverul „monitor” funcționează numai pentru motorul docker-service bear metal (9323)

lynx http://YYY.YYY.YYY.YYY:9323/metrics => OK
lynx http://YYY.YYY.YYY.YYY:9273/metrics => timeout
lynx http://YYY.YYY.YYY.YYY:2004/metrics => timeout

UFW status verbose oferă următoarele

Stare: activ
Înregistrare: activată (scăzută)
Implicit: deny (incoming), allow (outgoing), deny (direcționat)
Profiluri noi: săriți

La Acțiune De la
-- ------ ----
[...]
9323/tcp PERMITERE ÎN XXX.XXX.XXX.XXX
9273/tcp PERMITERE ÎN XXX.XXX.XXX.XXX
2004/tcp PERMITERE ÎN XXX.XXX.XXX.XXX
[...]

Nu există alte reguli cu acele IP-uri și nici reguli generale care se aplică subrețelelor, interfețelor etc. Toate celelalte reguli sunt pentru porturi discrete, cum ar fi 22, 80, 443 etc.

Lucrul ciudat este că a funcționat cu doar câteva ore înainte. Între timp am experimentat puțin cu asta aici https://medium.com/@pitapun_44686/what-is-the-best-practice-of-docker-ufw-under-ubuntu-69e11c826b31 și a adăugat următorul bloc chiar la sfârșitul /etc/ufw/after.rules

*filtru
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
-UN DOCKER-USER -j RETURN
COMMIT

Acum l-am comentat și am repornit ufw. Acele porturi 9273 și 2004 nu sunt încă accesibile, așa că nu acesta a fost motivul.

Am configurat nivelul de jurnal ufw la mare, dar nu pot vedea nicio conexiune attepmtps sau pachete abandonate de la gazda XXX.XXX.XXX.XXX.

Încercând să fac telnet în singurul port de lucru (telnet YYY.YYY.YYY.YYY 9323) pot vedea comunicarea în jurnalele ufw, dar nu pentru celelalte două porturi.

[UFW AUDIT] SRC=XXX.XXX.XXX.XXX DST=YYY.YYY.YYY.YYY DPT=9323 =>
[UFW AUDIT] SRC=YYY.YYY.YYY.YYY DST=XXX.XXX.XXX.XXX SPT=9323

Am furnizat ufw folosind modulul ansible „ufw”.

Ce alte motive ar putea fi? Ce se întâmplă? :-)

Ar putea fi că rețeaua de hosteri impune un fel de filtru între acele servere din cauza activității „suspecte” (comunicare frecventă)? De asemenea, se întâmplă să rulez niște teste artillery.io excesive de la XXX.XXX.XXX.XXX la portul 80/443 pe YYY.YYY.YYY.YYY astăzi, dar această ipoteză nu explică de ce numai acele două porturi nu funcționează mai mult.

Și testul final, oprirea ufw pe YYY.YYY.YYY.YYY, nici nu merge. Porturile 9273 și 2004 nu sunt accesibile, 9323 este.

Aici este rezultatul de la iptables -L -v -n https://pastebin.com/HVeJGXb9

drapel jp
arată `iptables -L -v -n`
Artur Cichosz avatar
drapel tr
@AlexD Am adăugat un pastebin la sfârșitul întrebării mele
Puncte:1
drapel jp

Deoarece porturile 9273 și 2004 sunt expuse de Docker, pachetele către aceste porturi trec prin REDIRECŢIONA lanț și apoi prin DOCKER-UTILIZATOR lanţ. Regulile la care le-ai adăugat DOCKER-UTILIZATOR blochează cea mai mare parte a traficului extern către rețelele de containere Docker. Trebuie să permiteți traficul redirecționat cu ufw ruta permite sau puteți adăuga reguli direct la DOCKER-UTILIZATOR lanţ.

Artur Cichosz avatar
drapel tr
Bine. Mulțumesc. Cu alte cuvinte, acest fragment pe care l-am adăugat a inserat regulile permanent și sunt active chiar și după eliminarea din /etc/ufw/after.rules. Acum știu că cel puțin nu este nicio „magie” implicată ;-) și acest snipped face ce ar trebui. Cel mai simplu, în cazul meu, va fi să expun acele porturi de către proxy-ul meu frontend.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.