Om jag inte missminner mig så har IPChains en del verktyg för debugging.
Tyvärr har jag inte sett någon motsvarighet i IPTables. Å andra sidan
har IPTables bättre stöd för att logga trafik och det är nog så jag hade
gjort om jag hade velat att följa paket genom brandväggen.
Har du tittat på IPTables officiella sida[1]? Där finns en del
information...
Jörgen
[1] http://netfilter.samba.org/
Använd loggningen som finns inbyggd.
Exempel: Logga alla nya utgående (ickec-forwardade) uppkopplingar
iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "OUTPUT"
Lägga upp sådana regler i alla kedjor så ser du vad som händer.
För att filtrera kan man lägga upp en egen kedja, ex.
# Lägg upp kedja
iptables -N LOGGNING
iptables -A LOGGNING -m state --state ESTABLISHED -j RETURN
iptables -A LOGGNING -j LOG
iptables -A LOGGNING -j RETURN
# Dirigera två kedjor till loggning
iptables -I OUTPUT -j LOGGNING
iptables -t nat -I POSTROUTING -j LOGGNING
Några tips
-A lägger till en regel sist i kedjan
-I lägger till en regel först i kedjan
-D tar bort en matchande regel från kedjan
-L listar reglerna, i en angiven kedja.
Se man iptables(1) för info kommandot iptables. Läs omx switchen -t för att
ange tabell. Ex -t nat för att komma åt NAT/masqueradekedjorna.
Det är möjligt att någon har gjort ett trevligt GUI för detta men om det
vet jag intet.
-- robin
Du verkar kunna det här med iptables superbra. Skulle du (eller någon annan)
kunna hjälpa mig med ett kort "defaultscript" för min linuxrouter? Det är så
att jag idag kör ipchains som är konfigurerad som router (masquerading) och
firewall mot mitt bakomliggande nät. Den agerar förstås också firewall för
sig själv. Internet finns på eth0 och det lokala nätet på eth1. Allt är
stängt by default, förutom det som uttryckligen är öppnat. Mitt NAT:ade nät
använder 192.168-adresser. Jag vill alltså ha en iptables configfil som:
1) Dropar ALL TCP och UDP trafik in (förutom det som explicit öppnats)
2) Dropar ALL ICMP ECHO request in (men tillåter all annan ICMP)
3) Tillåter ALL trafik ut
4) Tillåter all TCP-trafik till port 25 och 80 på "sig själv" (men ej till
bakomliggande nät)
5) Forward av TCP port 2020 till port 2121 på en NAT:ad adress (t.ex.
192.168.0.10) bakom linuxen.
6) Allt som dropas ska loggas
Detta borde ge en grundläggande exempelfil som duger som brandvägg för de
flesta men som man sedan kan utöka och förändra själv i eget tycke utan
speciellt stor kunskap. Så skulle någon kunna knåpa ihop en dylig (gärna med
ett kilo kommentarer i) så gör nog den personen ganska många en rejäl
tjänst!
I ipchains skulle man kunna åstakomma ovanstående ungefär såhär:
-A forward -i eth1 -j MASQ
-A input -i eth0 -s 192.168.0.0/24 -j ACCEPT
-A input -i eth1 -p icmp -s 0/0 8 -d 0/0 -j DENY -l
-A input -i eth1 -p tcp --dport 25 -j ACCEPT
-A input -i eth1 -p tcp --dport 80 -j ACCEPT
-A input -i eth1 -p udp -s 0/0 -d 0/0 0: -j DENY -l
-A input -i eth1 -p tcp -s 0/0 -d 0/0 0: -y DENY -l
Tyvärr finns det i ipchains ingen funktion för port forwarding (vilket är
anledningen till att jag vill uppgradera).
Tack
--
Regards
Magnus Frostlid
"Robn >" <Robin Rosenberg <robin.r...@dewire.kom> skrev i meddelandet
news:cb_I7.6699$Z_1.1...@newsc.telia.net...
> Robin,
>
> Du verkar kunna det här med iptables superbra. Skulle du (eller någon
> annan) kunna hjälpa mig med ett kort "defaultscript" för min linuxrouter?
> Det är så att jag idag kör ipchains som är konfigurerad som router
> (masquerading) och firewall mot mitt bakomliggande nät. Den agerar förstås
> också firewall för sig själv. Internet finns på eth0 och det lokala nätet
> på eth1. Allt är stängt by default, förutom det som uttryckligen är
> öppnat. Mitt NAT:ade nät använder 192.168-adresser. Jag vill alltså ha en
> iptables configfil som:
Tänkte inte på mig som expert, men jag håller på lär mig. Att göra
komplicerade skript som kastar bort trafik upplever jag inte som speciellt
"viktigt" men visst kan det vara en bra policy. Din router kör väl ing
Det där med loggingen had jag just gjort själv för att lära mig hur paketen
styrs genom kedjorna och vad det sker för trafik på nätet.
> Tyvärr finns det i ipchains ingen funktion för port forwarding (vilket är
> anledningen till att jag vill uppgradera).
Portforwarding kan du göra med programmer redir. Det har fungerat skitbra
för mig, förutom med en gammal linuxkärna (2.2.9 tror jag det var) där
portarna hängde sig med den ökända TIME_WAIT-buggen.
Om du ändå vill uppgrade så kan jag säga att inte tyckte att det var
speciellt svårt. Det var några detaljer. För att FTP skall funka (utan
krångel) kan man lägga till något liknande denna rad.
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
..och masquerade sköts i nat -tabellen, ex.
iptables -t nat -A POSTROUTING -s internt/mask -j MASQUERADE
Bortkastandet kan du sköte med hjälp av en LOGDROP-kedje liknande
iptables -N LOGDROP
iptables -A LOGDROP -j LOG
iptables -A LOGDROP -j DENY
-- robin
Tja, skrev detta script "on-the-fly" så det finns risk att det inte fungerar,
men det är säkert bara några småsaker. :)
Men du förstår nog hur det fungerar
IPTABLES="/sbin/iptables"
$IPTABLES -A INPUT -p icmp --icmp-type
echo-request -j DROP # droppa echo
$IPTABLES -A INPUT -m state --state
ESTABLISHED,RELATED -j ACCEPT # Tillåt returpaket tillbaka till firewallen
$IPTABLES -A INPUT -p tcp --dport 80 -m state --state
NEW -j ACCEPT #Tillåt http till firewallen
$IPTABLES -A INPUT -p tcp --dport 25 -m state --state
NEW -j ACCEPT #Tillåt mail till firewallen
$IPTABLES -A INPUT -p tcp --dport 2020 -j DNAT
192.168.0.10:2121 # Port forwarding
$IPTABLES -A INPUT -j LOG --log-level info --log-prefix "DROPPED:
" # Logga allat
$IPTABLES -A INPUT -j
DROP
# Droppa allt
$IPTABLES -A OUTPUT -m state --state
ESTABLISHED,RELATED -j ACCEPT # Låt firewallen få skicka tillbaka returpaket
till klienter som connectar till den
$IPTABLES -A OUTPUT -m state --state
NEW -j ACCEPT # Låt firewallen prata ut som
den vill
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source [lokala internet
ip't] # NAT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED
-j ACCEPT # Tillåt returpaket att komma tillbaka
$IPTABLES -A FORWARD -i eth1 -m state --state
NEW -j ACCEPT # Tillåt allt från
interna nätet till internet
### Sätt default policy till drop
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
//Thomas
Tack så mycket. Precis vad jag var ute efter! Jag kollar igenom det och
provar hur det fungerar inom kort.
--
Magnus Frostlid
"Thomas Karlsson" <thomas.k...@rem.ove.telia.com> skrev i meddelandet
news:3C00FD2C...@rem.ove.telia.com...