Iptables problem (bad argument 'ACCEPT')
Jeg er løbt ind i et problem, når jeg skal konfigere iptables på min Debian etch server.
Lige nu kører jeg med dette script, der tager udgangspunkt fra debianguiden.dk
http://debianguiden.dk/wiki/Firewall_og_deling_af_internetforbindelse:
Det virker fint nok, men jeg er lidt irriteret over, at alle pakker først bliver accepteret, for derfor at blive droppet igen, hvis de ikke går igennem de andre porte. Jeg vil nemlig gerne have, at alle pakker først bliver droppet for måske så senere at blive accepteret igen
Så derfor prøvede jeg at køre dette script, jeg fandt på guide.archlinux.dk (Ændret lidt):
Det, som mit problem er, at når jeg prøver at eksekvere scriptet, så får jeg en "Bad argument 'ACCEPT'" fejl. Hvad er det, som jeg har lavet galt i script nr. 2, som gør, at jeg får fejlen?
Nu er jeg ret ny i Iptables, men jeg går da stærk ud fra at syntaksterne, der bruges i Iptables må være de samme uanset om jeg bruger Arch Linux eller Debian
Lige nu kører jeg med dette script, der tager udgangspunkt fra debianguiden.dk
http://debianguiden.dk/wiki/Firewall_og_deling_af_internetforbindelse:
#Opretter en variabel med vores IPadresse og 1 med Interfacet og 1 med vores loopback-interface
LAN_IP="10.0.0.89"
LAN_NIC="eth0"
Lo_NIC="lo"
# Disable routing inden regler påføres
echo 0 > /proc/sys/net/ipv4/ip_forward
# Regler flushes og policies sættes
/sbin/iptables -t nat -F
/sbin/iptables -F
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
# Logging af nye pakker skal startes
/sbin/iptables -A INPUT -m state --state NEW -j LOG --log-prefix IPTABLES-LOG --log-level 4
#Open Ports: 21 (ftp), 22 (ssh), 80 (http), 139 (samba), 445 (samba), 3306 (mySQL), paasive ftp (49000 - 49100)
/sbin/iptables -A FORWARD -p tcp --dport 0:19 -j DROP
/sbin/iptables -A FORWARD -p tcp --dport 23:79 -j DROP
/sbin/iptables -A FORWARD -p tcp --dport 81:138 -j DROP
/sbin/iptables -A FORWARD -p tcp --dport 140:444 -j DROP
/sbin/iptables -A FORWARD -p tcp --dport 446:3305 -j DROP
/sbin/iptables -A FORWARD -p tcp --dport 3307:48999 -j DROP
/sbin/iptables -A FORWARD -p tcp --dport 49101:65535 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 0:20 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 23:79 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 81:138 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 140:444 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 446:3305 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 3307:48999 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 49101:65535 -j DROP
# Tillad derefter trafik vi selv har sat igang at komme igennem
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Forwarding startes.
echo 1 > /proc/sys/net/ipv4/ip_forward
Det virker fint nok, men jeg er lidt irriteret over, at alle pakker først bliver accepteret, for derfor at blive droppet igen, hvis de ikke går igennem de andre porte. Jeg vil nemlig gerne have, at alle pakker først bliver droppet for måske så senere at blive accepteret igen
Så derfor prøvede jeg at køre dette script, jeg fandt på guide.archlinux.dk (Ændret lidt):
#Opretter en variabel med vores IPadresse og 1 med Interfacet og 1 med vores loopback-interface
LAN_IP="10.0.0.89"
LAN_NIC="eth0"
Lo_NIC="lo"
# Vi skal have loaded enkelte moduler da vi ønsker at bruge FTP
#modprobe ip_nat_ftp
#modprobe ip_conntrack_ftp
# Flusher og nulstiller vores kæder
/sbin/iptables # Flusher alle kæder (Når der ikke er betegnelse på)
/sbin/iptables -X # Nulstiller alle kæder (-----------| |--------------)
# Sætter vores default Policies
/sbin/iptables -P INPUT DROP # Benægter alt input
/sbin/iptables -P FORWARD DROP # Benægter al forwardning
/sbin/iptables -P OUTPUT ACCEPT # Accepterer alt trafik UD
# Opretter de kæder vi skal bruge
/sbin/iptables -N intern
/sbin/iptables -N extern
# Accepterer al trafik fra vores loopback interface
/sbin/iptables -A lo -i $LO -j ACCEPT
# Nu er vi klar til at åbne de enkelte porte vi ønsker - da det er på lokalmaskinen vi vil acceptere bruger vi EXTERN kæden til dette
/sbin/iptables -A extern -p tcp --dport 21 -i $LAN_NIC -j ACCEPT # Accepterer trafik ind til FTP
/sbin/iptables -A extern -p tcp --dport 22 -i $LAN_NIC -j ACCEPT # Accepterer trafik ind til SSH
/sbin/iptables -A extern -p tcp --dport 80 -i $LAN_NIC -j ACCEPT # Accepterer trafik ind til HTTP
/sbin/iptables -A extern -p tcp --dport 110 -i $LAN_NIC -j ACCEPT # Accepterer trafik ind til POP3
# Sætter State relateret politik op for INPUT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Tilsidst tilføjer vi vores kæder til INPUT
/sbin/iptables -A INPUT -j intern
/sbin/iptables -A INPUT -j extern
Det, som mit problem er, at når jeg prøver at eksekvere scriptet, så får jeg en "Bad argument 'ACCEPT'" fejl. Hvad er det, som jeg har lavet galt i script nr. 2, som gør, at jeg får fejlen?
Nu er jeg ret ny i Iptables, men jeg går da stærk ud fra at syntaksterne, der bruges i Iptables må være de samme uanset om jeg bruger Arch Linux eller Debian
Kommentarer4
Re: Iptables problem (bad argument 'ACCEPT')
Skulle du ikke lighe starte med AT ÅBNE ind til en bestemt maskine - til den konkrete port!
Det vil sige - At istedet for $LAN_NIC - skal dui bruge den IP istedet for.
Men jeg er så kun vant til at bruge IPtables som min primære firewall, og dermed åbne porte ind til maskiner!
Re: Iptables problem (bad argument 'ACCEPT')
# Accepterer al trafik fra vores loopback interface
/sbin/iptables -A lo -i $LO -j ACCEPT
du har så vidt jeg kan se ikke nogen chain der hedder lo, men jeg vil forslå at du sætter nogle echo statements ind i scriptet så du kan se hvilken linie der fejler
Re: Iptables problem (bad argument 'ACCEPT')
tak for svarene, det ville jeg kigge på...
Nu er det sådan, er min Debian server er en ganske normal filserver på netværket, så den fungere ikke som dhcp / dns-server på netværket, hvis det kan bruges til noget
Problem løst
/sbin/iptables -A INPUT -p tcp --dport 21 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
Det virker, som det skal...