Hej
Jeg har lige et iptables spørgsmål. I mit regelsæt har jeg tre linjer som ser således ud:
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
De sørger for at connections bliver gemt i memory, så den samme trafik ikke skal igennem regelsættet hele tiden.
Det betyder også, at hvis jeg f.eks. vil lukke for port 80 (http) skal jeg på en eller anden måde flushe min ESTABLISHED-connection-log, ellers kan jeg fortsætte med at bruge port 80 selvom den faktisk er lukket.
Er det rigtigt forstået? og hvordan flusher jeg på den rigtige måde? Indtil nu har jeg brugt iptables -F
Hele mit regelsæt ser nogenlunde sådan ud: http://paste.ubuntu.com/493247/
\\DUEDAHL
iptables ESTABLISHED
-
- Indlæg: 5095
- Tilmeldt: 27. apr 2008, 02:16
- IRC nickname: lars_t_h
- Geografisk sted: Fyn
Re: iptables ESTABLISHED
DUEDAHL skrev:Hej
Jeg har lige et iptables spørgsmål. I mit regelsæt har jeg tre linjer som ser således ud:
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
De sørger for at connections bliver gemt i memory, så den samme trafik ikke skal igennem regelsættet hele tiden.
Såvidt jeg husker så er:
--state ESTABLISHED,RELATED -j ACCEPT
det samme som en stateful packet inspection (SPI) firewall. (Link til Wikipedia SPI firewall artikel)
Hvis det er rigtigt, så har du ikke helt ret, da pakken skal igennem regelsættet, fordi kernen skal se om pakken tilhører en forbindelse der er etableret. For at huske om en forbindelse er etableret bruger kernen lidt RAM.
DUEDAHL skrev:Det betyder også, at hvis jeg f.eks. vil lukke for port 80 (http) skal jeg på en eller anden måde flushe min ESTABLISHED-connection-log, ellers kan jeg fortsætte med at bruge port 80 selvom den faktisk er lukket.
Er det rigtigt forstået? og hvordan flusher jeg på den rigtige måde? Indtil nu har jeg brugt iptables -F
Hele mit regelsæt ser nogenlunde sådan ud: http://paste.ubuntu.com/493247/
\\DUEDAHL
Jeg er kommet frem til at du snakker om udadgående port 80 trafik, for ellers giver dit spørgsmål slet ikke mening.
Kort fortalt er det en dårlig ide at flushe den log.
Prøv at tænke over hvad en ekstern web serveren vil modtage i dette scenarie:
- En bruger sender en HTTP forespørgsel til en webserver
- Du flusher loggen
Der sker det her:
- Webserveren prøver at svare klienten, men adgang bliver nægtet, da SPI firewallen ikke kan finde nogen information om at en klient ønsker et svar fra den host (en klient har ikke oprettet en forbindelse til den host i henhold til loggen).
- Bruger sidder meget utålmodigt og venter på at en webserver, som ikke svarer (set fra brugerens synspunkt)
- Kun hvis brugeren genindlæser siden vil det lykkedes at læse siden
/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
-
- Indlæg: 4
- Tilmeldt: 19. jun 2010, 19:29
- IRC nickname: DUEDAHL
Re: iptables ESTABLISHED
lath skrev:DUEDAHL skrev:Hej
Jeg har lige et iptables spørgsmål. I mit regelsæt har jeg tre linjer som ser således ud:
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
De sørger for at connections bliver gemt i memory, så den samme trafik ikke skal igennem regelsættet hele tiden.
Såvidt jeg husker så er:--state ESTABLISHED,RELATED -j ACCEPT
det samme som en stateful packet inspection (SPI) firewall. (Link til Wikipedia SPI firewall artikel)
Hvis det er rigtigt, så har du ikke helt ret, da pakken skal igennem regelsættet, fordi kernen skal se om pakken tilhører en forbindelse der er etableret. For at huske om en forbindelse er etableret bruger kernen lidt RAM.DUEDAHL skrev:Det betyder også, at hvis jeg f.eks. vil lukke for port 80 (http) skal jeg på en eller anden måde flushe min ESTABLISHED-connection-log, ellers kan jeg fortsætte med at bruge port 80 selvom den faktisk er lukket.
Er det rigtigt forstået? og hvordan flusher jeg på den rigtige måde? Indtil nu har jeg brugt iptables -F
Hele mit regelsæt ser nogenlunde sådan ud: http://paste.ubuntu.com/493247/
\\DUEDAHL
Jeg er kommet frem til at du snakker om udadgående port 80 trafik, for ellers giver dit spørgsmål slet ikke mening.
Kort fortalt er det en dårlig ide at flushe den log.
Prøv at tænke over hvad en ekstern web serveren vil modtage i dette scenarie:
- En bruger sender en HTTP forespørgsel til en webserver
- Du flusher loggen
Der sker det her:
- Webserveren prøver at svare klienten, men adgang bliver nægtet, da SPI firewallen ikke kan finde nogen information om at en klient ønsker et svar fra den host (en klient har ikke oprettet en forbindelse til den host i henhold til loggen).
- Bruger sidder meget utålmodigt og venter på at en webserver, som ikke svarer (set fra brugerens synspunkt)
- Kun hvis brugeren genindlæser siden vil det lykkedes at læse siden
/Lars
Hej Lars
Jeg kan godt følge dig i, at det ikke er en god ide er flushe loggen, men hvis man ikke gør det og ønsker at lukke f.eks. udgående port 80 trafik, kan mine klienter bare fortsætte med at snakke på port 80. Forbindelsen er jo blevet established og dermed er firewallen ligeglad med at porten faktisk er lukket :S
Så sådan som jeg ser det, er den eneste måde jeg kan lukke af for noget, som har været åbnet, er ved at flushe den log.
Og et sidespørgsmål: den log må da smide sine established connections engang imellem? ellers bliver den sq stor til sidst
\\DUEDAHL
-
- Indlæg: 5095
- Tilmeldt: 27. apr 2008, 02:16
- IRC nickname: lars_t_h
- Geografisk sted: Fyn
Re: iptables ESTABLISHED
En SPI firewall kigger efter SYN og SYN ACK.
Det får en forbindelse til at blive ESTABLISHED.
Når der så kommer en FIN og FIN ACK lukkes den igen.
Et timeout styrer også hvor lang tid porten er åben, når der ikke lige sendes pakker, der bekræfter at forbindelsen stadig er i brug.
Du kan skrue på det timeout - sikkert ved at ændre på en kerne-variabel ved at skrive til en fil i /proc filsystemet.
Jeg er ret sikker på at det du ser at en timeout ikke har lukket porten - og så tror du at den er åben hele tiden, når den først er blevet åbnet, men sådan fungerer en SPI firewall ikke.
/Lars
Det får en forbindelse til at blive ESTABLISHED.
Når der så kommer en FIN og FIN ACK lukkes den igen.
Et timeout styrer også hvor lang tid porten er åben, når der ikke lige sendes pakker, der bekræfter at forbindelsen stadig er i brug.
Du kan skrue på det timeout - sikkert ved at ændre på en kerne-variabel ved at skrive til en fil i /proc filsystemet.
Jeg er ret sikker på at det du ser at en timeout ikke har lukket porten - og så tror du at den er åben hele tiden, når den først er blevet åbnet, men sådan fungerer en SPI firewall ikke.
/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags