Puncte:1

Cum să plasați pe lista albă destinația IP dintr-un anumit bloc IP sau dintr-o interfață în iptables?

drapel cn

Am un jumpbox pe care îl folosesc pentru a accesa cele două baze de date ale mele, să spunem baza de date A și baza de date B, fiecare dintre ele este într-o adresă IP separată.Am o altă persoană care s-a dedicat să lucreze la baza de date B, așa că vreau să restricționez accesul numai la acea DB. Folosim wireguard pentru a ne conecta la jumpbox și avem un profil separat de wireguard pentru a ne conecta, astfel încât fiecare dintre noi să aibă o interfață diferită și o sursă IP diferită.

Am încercat acest lucru, dar acesta permite încă conectarea la ambele DB:

*filtru
-A FORWARD -i eth0 -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A FORWARD -i my-wg -j ACCEPT
-A FORWARD -i altă persoană-wg ! -d XXX.XXX.XXX.XXX -j ACCEPT # baza de date B ip
COMMIT

*nat
:ACCEPTAREA PRE-ROUTARE [0:0]
:INPUT ACCEPT [0:0]
: ACCEPT IEȘIRE [1:88]
: POSTROUTING ACCEPT [1:88]
-A POSTROUTING -s XXX.XXX.XXX.XXX -j MASQUERADE #acesta este blocul IP wireguard pe care eu și cealaltă persoană îl folosim
COMMIT

Aici este rezultatul lui iptables -L -v:

INTRARE în lanț (politica ACCEPT 0 pachete, 0 octeți)
 pkts bytes target prot opt ​​in out source destination         

Lanț FORWARD (politica ACCEPT 0 pachete, 0 octeți)
 pkts bytes target prot opt ​​in out source destination         
60374 7581K DOCKER-USER toate -- oriunde oriunde oriunde            
60374 7581K DOCKER-ISOLATION-STAGE-1 toate -- oriunde oriunde oriunde            
22156 1788K ACCEPT toate -- orice docker0 oriunde oriunde ctstate RELATED,STABLISHED
   93 5580 DOCKER all -- orice docker0 oriunde oriunde            
22083 1169K ACCEPT pe toate -- docker0 !docker0 oriunde oriunde            
    0 0 ACCEPT all -- docker0 docker0 oriunde oriunde            
 7799 3947K ACCEPT toate -- eth0 oriunde oriunde ctstate RELATED,STABLISHED
 8238 672K ACCEPT toate -- my-wg oriunde oriunde            
    0 0 ACCEPT toate -- other-person-wg oriunde !XXX.XXX.XXX.XXX # ip din baza de date B

Ieșire în lanț (politica ACCEPT 0 pachete, 0 octeți)
 pkts bytes target prot opt ​​in out source destination         

Lanț DOCKER (1 referințe)
 pkts bytes target prot opt ​​in out source destination         
    0 0 ACCEPT tcp -- !docker0 docker0 oriunde 172.17.0.2 tcp dpt:9181
    0 0 ACCEPT tcp -- !docker0 docker0 oriunde 172.17.0.4 tcp dpt:5000
   92 5520 ACCEPT tcp -- !docker0 docker0 oriunde 172.17.0.3 tcp dpt:9180

Lanț DOCKER-ISOLATION-STAGE-1 (1 referințe)
 pkts bytes target prot opt ​​in out source destination         
22083 1169K DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 oriunde oriunde            
60374 7581K RETURN all -- oriunde oriunde oriunde            

Lanț DOCKER-ISOLATION-STAGE-2 (1 referințe)
 pkts bytes target prot opt ​​in out source destination         
    0 0 DROP all -- orice docker0 oriunde oriunde            
22083 1169K RETURN all -- oriunde oriunde oriunde            

Lanț DOCKER-USER (1 referințe)
 pkts bytes target prot opt ​​in out source destination         
60374 7581K RETURN all -- oriunde oriunde oriunde

Cum să restricționați accesul de la un anumit bloc IP sau de la o interfață pentru a avea acces numai la un anumit IP în iptables pe jumpbox?

Nikita Kipriyanov avatar
drapel za
Bănuiesc că a fost acceptat de politica implicită „filtre FORWARD”, care este „ACCEPT”, dar nu o vedem în întrebarea dvs. Setați fie `iptables -P FORWARD DROP`, fie `iptables -A FORWARD -j DROP`, vă va ajuta în acest caz. Dacă nu doriți să ghicim, vă rugăm să afișați `iptables-save` complet, care va arăta ce politică aveți în prezent.
dennbagas avatar
drapel cn
Acesta este „iptables-save” complet pe care îl am în prezent
setenforce 1 avatar
drapel us
Puteți afișa `iptables - L -a -v`
dennbagas avatar
drapel cn
Nu există opțiune `-a`, dar am actualizat întrebarea și am adăugat rezultatul lui `iptables -L -v`
Puncte:1
drapel fr

Această comandă spune „dacă traficul de rețea vine de la adresa IP X, dar nu este pe interfața Y, atunci DROP-l”. Rețineți că se află în tabelul brut, care este primul și cel mai rapid tabel lovit atunci când traficul de rețea intră în IPtables.

iptables -t raw -A PREROUTING -s ${X} ! -i ${Y} -j CĂDARE

Ar trebui să aveți o altă permutare a acestei reguli în direcția opusă:

iptables -t raw -A PRERUTARE ! -s ${X} -i ${Y} -j CĂDURA

Puteți înregistra încălcările acestor reguli având aceste patru comenzi:

iptables -t raw -A PREROUTING -s ${X} ! -i ${Y} -j LOG --log-prefix "IP greșit: "
iptables -t raw -A PREROUTING -s ${X} ! -i ${Y} -j CĂDARE 
iptables -t raw -A PRERUTARE ! -s ${X} -i ${Y} -j LOG --log-prefix „Interfață greșită:”
iptables -t raw -A PRERUTARE ! -s ${X} -i ${Y} -j CĂDURA

EDIT: Editat după ce am primit mai multe clarificări în comentarii.

Această regulă spune „dacă traficul vine de la adresa IP X și nu este destinat adresei IP Z, atunci renunțați la trafic”.

iptables -t raw -A PREROUTING -s ${X} ! -d ${Z} -j CĂDARE

Această regulă spune „dacă traficul este de intrare pe interfața Y și nu este destinat adresei IP Z, atunci renunțați la trafic”.

iptables -t raw -A PREROUTING -i ${Y} ! -d ${Z} -j CĂDARE 

Iată o combinație a acestor două reguli, care spune „dacă traficul vine de la adresa IP X și vine pe interfața Y și nu este destinat adresei IP Z, atunci renunțați la trafic”.

iptables -t raw -A PREROUTING -s ${X} -i ${Y} ! -d ${Z} -j CĂDARE.

Doar o notă: îmi place să folosesc brut tabel dacă regulile nu necesită urmărirea conexiunii. The brut tabelul nu urmărește nicio conexiune. În acest caz, nu este necesară urmărirea conexiunii pentru aceste reguli. Urmărirea conexiunii este necesară pentru nat masa si pentru contratrack modul (-m contratrack). The brut tabelul este mult mai performant decât alte tabele, deoarece urmărirea conexiunii ocupă mult mai multe resurse pe serverul tău. Cu toate acestea, tabelul de filtrare este bine de utilizat și, dacă este mai simplu și are mai mult sens pentru dvs., atunci utilizați tabelul de filtrare. Regulile ar fi exact aceleași, dar juste -t brut ar deveni -t filtru

Când pachetele intră în IPtables, ele traversează tabelele astfel:

raw --> mangle (unde începe urmărirea conexiunii) --> nat --> filtru
dennbagas avatar
drapel cn
Ei bine, pot face această limitare folosind PREROUTING pe tabelul nat, ceea ce întreb este „dacă traficul de rețea vine de la adresa IP X ȘI nu merge la adresa IP Z, atunci DROP” SAU „dacă traficul de rețea vine de la interfața Y ȘI nu mergi la adresa IP Z, apoi DROP"
drapel fr
Ok, am înțeles. `iptables -t raw -A PREROUTING -s ${X} ! -d ${Z} -j DROP` și `iptables -t raw -A PREROUTING -i ${Y} ! -d ${Z} -j DROP` ar trebui să facă treaba. Nu sunt sigur dacă acest lucru ar ajuta, dar iată o combinație a celor două reguli: `iptables -t raw -A PREROUTING -s ${X} -i ${Y} ! -d ${Z} -j DROP`.
dennbagas avatar
drapel cn
Toată soluția ta funcționează! Poți să-ți actualizezi postarea ca să o pot marca ca răspuns corect. De asemenea, aceste reguli pot fi plasate în tabelul de filtrare? dacă da, care este echivalentul regulilor dacă vreau să-l scriu pe tabelul de filtrare? și poate o explicație despre asta ar fi atât de apreciată!

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.