Am instalat mai multe containere docker pe serverul meu. Toate containerele sunt în interiorul aceleiași rețele docker și, în principiu, structura este aceea că fiecare container se află în spatele containerului proxy invers nginxproxymanager.
Până acum e bine, totul merge bine.Așa că încerc să întăresc structura adăugând fail2ban, pe care nu am reușit să o fac să funcționeze. Mă străduiesc să înțeleg mai bine iptables, dar nu pot să funcționeze.
După ce repornesc docker și inspectez fișierul iptables (/etc/iptables/iptables.rules) am asta
# Generat de iptables-save v1.8.7 pe vineri, 29 octombrie 09:48:00 2021
*nat
:ACCEPTAREA PRE-ROUTARE [82:13454]
:INPUT ACCEPT [71:12758]
: ACCEPT IEȘIRE [72:4846]
: POSTROUTING ACCEPT [858:45979]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-O IEȘIRE! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTOUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTOUTING -s 172.19.0.0/16 ! -o br-0aee38841ef3 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 3000 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER -i br-0aee38841ef3 -j RETURN
-UN DOCKER! -i br-0aee38841ef3 -p tcp -m tcp --dport 3000 -j DNAT --la-destinație 172.19.0.2:3000
COMMIT
# Finalizat vineri, 29 octombrie 09:48:00 2021
# Generat de iptables-save v1.8.7 pe vineri, 29 octombrie 09:48:00 2021
*filtru
:INPUT ACCEPT [98:7750]
: FORWARD ACCEPT [0:0]
: ACCEPT IEȘIRE [77:11194]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A INTRARE -s 37.XXX.XXX.XX/32 -j DROP
-A INTRARE -j DOCKER-UTILIZATOR
-UN FORWARD -j DOCKER-UTILIZATOR
-A ÎNAINTE -j DOCKER-ETAPA DE IZOLARE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A ÎNTÂMPRE -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-0aee38841ef3 -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A FORWARD -o br-0aee38841ef3 -j DOCKER
-A FORWARD -i br-0aee38841ef3 ! -o br-0aee38841ef3 -j ACCEPT
-A FORWARD -i br-0aee38841ef3 -o br-0aee38841ef3 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0aee38841ef3 -o br-0aee38841ef3 -p tcp -m tcp --dport 3000 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-0aee38841ef3 ! -o br-0aee38841ef3 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-IZOLARE-ETAPA-1 -j RETURNARE
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-0aee38841ef3 -j DROP
-A DOCKER-IZOLARE-ETAPA-2 -j RETURNARE
-A DOCKER-USER -s 37.XXX.XXX.XX/32 -j DROP
COMMIT
# Finalizat vineri, 29 octombrie 09:48:00 2021
Tocmai am eliminat regulile celorlalte containere, deoarece sunt același concept cu cel pe care l-am lăsat (dport 3000).
br-0aee38841ef3
este puntea creată când am creat rețeaua docker în care se află containerele mele.
După cum puteți vedea, am încercat să adaug o regulă DROP pe adresa mea IP publică (37.XXX.XXX.XX) atât în lanțurile INPUT și DOCKER-USER, dar încă pot naviga prin containerele mele (am un domeniu personalizat pe care A înregistrările indică IP-ul meu), așa că regula nu funcționează.
Desigur, iptables sunt pornite și reîncărcate cu noile reguli, deci ce îmi lipsește pentru a interzice un IP?