iptables starten

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
Benutzeravatar
DaGrrr
Beiträge: 79
Registriert: 08.08.2002 19:50:54

iptables starten

Beitrag von DaGrrr » 11.08.2002 22:02:53

Hallo,

ich habe mir ein Firewall Script zusammengestrickt und möchte es gerne manuell starten.

Wenn ich ./xyz eingebe erscheint:
: bad interpreter: No such file or directory

Ich bin im richtigem Verzeichnis und das Script ist auch dort zu finden.
Ausführbar ist es auch und ich bin als root eingeloggt.

Fehlt mir noch ein Paket welches ich nicht installiert sein könnte ?

Noch eine Frage:
Standard mäßig befindet sich iptables in /usr/sbin/
Dort ist es aber nicht zu finden ???
iptables ist installiert, welches der Befehl :
iptables -vL mir anzeigt.

Ich nutze Debian 3.0.

Danke für Eure Hilfe.

Grüße
DaGrrr

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 11.08.2002 23:37:26

Check 'mal die erste Zeile deines "xyz" Skriptes. Dort steht normaler weise

Code: Alles auswählen

#!/pfad/zum/interpreter
Der Fehler soll sagen, dass der dort angegebene Interpreter nicht gefunden wird.

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

merlin64
Beiträge: 21
Registriert: 04.08.2002 15:59:25

Beitrag von merlin64 » 12.08.2002 04:48:43

da deine erste frage damit wohl beantwortet ist hier etwas zu deiner zweiten:

iptables ist unter /sbin/iptables zu finden
wenn man den programmnamen weiss, aber nicht wo die executable ist hilft der befehl "type <programmname>" oder auch "which <programmname>" um den pfad angezeigt zu bekommen.

Benutzeravatar
DaGrrr
Beiträge: 79
Registriert: 08.08.2002 19:50:54

Beitrag von DaGrrr » 12.08.2002 06:39:37

Hallo,

Danke Euch beiden.

Den Pfad habe ich gefunden.

In meinem Script habe ich stehen:

#!/bin/tcsh

tcsh ist installiert. Warum kann ich das Script nicht ausführen ?
Es erscheint immernoch die gleiche Fehlermeldung wie oben beschrieben.
Bin root. Das Script ist ausführbar.

Hier mal der Anfang des Scriptes:
#!/bin/tcsh
# Firewallscript für xyz
# ----------------------------------------------------------
# PART I: Variablen

set IPTABLES = /sbin/iptables

# ----------------------------------------------------------
# special ports

set p_high = 1024:65535 # unprivileged ports
set p_ssh = 1000:1023 # common ssh source ports

# ----------------------------------------------------------
# interfaces

set IF = eth0


Grüße
DaGrrr

Benutzeravatar
feltel
Webmaster
Beiträge: 10366
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 12.08.2002 06:57:13

Bei solchen einfachen Skripen sollte man als Interpreter POSIX-Konform "/bin/sh" verwenden, um das Skript portabel zu halten.
/bin/sh ist dann ein Link auf eine existierende Shell:

Code: Alles auswählen

feltel@skywalker:/bin$ ls -al|grep sh
-rwxr-xr-x    1 root     root       511400  8. Apr 21:07 bash
lrwxrwxrwx    1 root     root            4  2. Jan 2001  rbash -> bash
lrwxrwxrwx    1 root     root            4  2. Jan 2001  sh -> bash
Natürlich musst Du dann die Variablenzuweisungen/Schleifen auch anpassen. Siehe auch http://www.debian.org/doc/debian-policy ... #s-scripts

Benutzeravatar
DaGrrr
Beiträge: 79
Registriert: 08.08.2002 19:50:54

Beitrag von DaGrrr » 12.08.2002 08:21:51

Danke !

Werde ich heute Abend sofort ausprobieren. :)

Grüße
DaGrrr

Benutzeravatar
DaGrrr
Beiträge: 79
Registriert: 08.08.2002 19:50:54

Beitrag von DaGrrr » 13.08.2002 09:16:45

Hallo,

keider hat die Umstellung auf #!/bin/sh nix gebracht. Es kommt immer noch die gleiche Fehlermeldung.

Irgendwie glaube ich das ich da ein größeres Problem habe......


Grüße
DaGrrr

Benutzeravatar
feltel
Webmaster
Beiträge: 10366
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 13.08.2002 09:18:00

Zeig doch mal das Script.

Benutzeravatar
DaGrrr
Beiträge: 79
Registriert: 08.08.2002 19:50:54

Beitrag von DaGrrr » 13.08.2002 15:46:56

Hallo,

hier mein Script.
Das Script habe ich mit Hilfe des Buches "Das firewall Buch" von Wolfgang
Barth erstellt. Auf meinem ehemaligen SuSe Linux lief das Script ohne Probleme !

Ich hoffe es hilft das Problem zu finden.

Grüße
DaGrrr

#!/bin/sh
# Firewallscript für xyz
# ----------------------------------------------------------
# PART I: Variablen

set IPTABLES = /sbin/iptables

# ----------------------------------------------------------
# special ports

set p_high = 1024:65535 # unprivileged ports
set p_ssh = 1000:1023 # common ssh source ports

# ----------------------------------------------------------
# interfaces

set IF = eth0

# ----------------------------------------------------------
# ip hosts

set surfer = 192.168.0.4 # Meine IP
set ns = 192.168.0.1 # Router
set mail = 213.165.64.20 # GMX
set FRIEND = 192.168.0.3/255.255.255.0 # Server
# ----------------------------------------------------------
# PART II: Grundkonfiguration: absichern
# ----------------------------------------------------------
# dynamische Kernelparameter setzen

echo "0" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# echo "5" > /proc/sys/net/ipv4/icmp_destunreach_rate
# echo "5" > /proc/sys/net/ipv4/icmp_echoreply_rate
# echo "5" > /proc/sys/net/ipv4/icmp_paramprob_rate
# echo "10" > /proc/sys/net/ipv4/icmp_timeexceed_rate

echo "1" > /proc/sys/net/ipv4/conf/$IF/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/$IF/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/$IF/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/$IF/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/$IF/log_martians

# ----------------------------------------------------------
# Default Policy und flush

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

$IPTABLES -F # flush aller chains

# ----------------------------------------------------------
# spoof protection

$IPTABLES -A INPUT -s $surfer -i $IF -j DROP

# ----------------------------------------------------------
# lokale Prozesse

$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT

# ----------------------------------------------------------
# PART III: endgültige Filterregeln
# ----------------------------------------------------------

# ----------------------------------------------------------
# DROP & LOG Chain

$IPTABLES -N my_drop
$IPTABLES -A my_drop -p ICMP -j LOG --log-prefix "DROP-ICMP "
$IPTABLES -A my_drop -p UDP -j LOG --log-prefix "DROP-UDP "
$IPTABLES -A my_drop -p TCP -j LOG --log-prefix "DROP-TCP "
$IPTABLES -A my_drop -j DROP

# ----------------------------------------------------------
# ICMP

# ping: 8 und 0, ausgehend

$IPTABLES -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT
$IPTABLES -A INPUT -p ICMP --icmp-type echo-reply -j ACCEPT
$IPTABLES -A INPUT -p ICMP --icmp-type echo-request -j my_drop

# source quench (4)

$IPTABLES -A OUTPUT -p ICMP --icmp-type source-quench -j ACCEPT
$IPTABLES -A INPUT -p ICMP --icmp-type source-quench -j my_drop

# time exceeded (11)

$IPTABLES -A OUTPUT -p ICMP --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -p ICMP --icmp-type time-exceeded -j ACCEPT

# parameter problem (12)

$IPTABLES -A OUTPUT -p ICMP --icmp-type parameter-problem -j ACCEPT
$IPTABLES -A INPUT -p ICMP --icmp-type parameter-problem -j ACCEPT

# destination unreachable (3)

$IPTABLES -A OUTPUT -p ICMP --icmp-type fragmentation-needed -j ACCEPT
$IPTABLES -A OUTPUT -p ICMP --icmp-type port-unreachable -j ACCEPT

$IPTABLES -A INPUT -p ICMP --icmp-type fragmentation-needed -j ACCEPT
$IPTABLES -A INPUT -p ICMP --icmp-type destination-unreachable -j ACCEPT

# ----------------------------------------------------------
# DNS

$IPTABLES -A OUTPUT -p UDP --sport $p_high -d $ns \
--dport domain -j ACCEPT
$IPTABLES -A INPUT -p UDP --dport $p_high -s $ns \
--sport domain -j ACCEPT

$IPTABLES -A OUTPUT -p TCP --sport $p_high -d $ns \
--dport domain -j ACCEPT
$IPTABLES -A INPUT -p TCP --dport $p_high -s $ns \
--sport domain ! --syn -j ACCEPT

$IPTABLES -A INPUT -p TCP --sport domain --syn -j my_drop
$IPTABLES -A INPUT -p UDP --sport domain -j my_drop

# ----------------------------------------------------------
# SMTP, POP3

$IPTABLES -A OUTPUT -p TCP --sport $p_high \
-d $mail --dport smtp -j ACCEPT
$IPTABLES -A INPUT -p TCP --dport $p_high -s $mail \
--sport smtp ! --syn -j ACCEPT

$IPTABLES -A OUTPUT -p TCP --sport $p_high \
-d $mail --dport pop3 -j ACCEPT
$IPTABLES -A INPUT -p TCP --sport $p_high \
-s $mail --dport pop3 ! --syn -j ACCEPT

# ----------------------------------------------------------
# HTTP

$IPTABLES -A OUTPUT -p TCP --sport $p_high \
--dport http -j ACCEPT
$IPTABLES -A INPUT -p TCP --dport $p_high \
--sport http ! --syn -j ACCEPT

$IPTABLES -A INPUT -p TCP --dport http --syn -j my_drop

# ----------------------------------------------------------
# HTTP via SSL

$IPTABLES -A OUTPUT -p TCP --sport $p_high \
--dport https -j ACCEPT
$IPTABLES -A INPUT -p TCP --dport $p_high \
--sport https ! --syn -j ACCEPT

$IPTABLES -A INPUT -p TCP --dport https --syn -j my_drop

# ----------------------------------------------------------
# ident: reject

$IPTABLES -A INPUT -p TCP --dport auth --syn -j REJECT

# ----------------------------------------------------------
# ftp, out, control connection

$IPTABLES -A OUTPUT -p TCP --sport $p_high \
--dport ftp -j ACCEPT
$IPTABLES -A INPUT -p TCP --dport $p_high \
--sport ftp ! --syn -j ACCEPT

# ftp, out, passive data connection

$IPTABLES -A OUTPUT -p TCP --sport $p_high \
--dport $p_high -j ACCEPT
$IPTABLES -A INPUT -p TCP --dport $p_high \
--sport $p_high ! --syn -j ACCEPT

$IPTABLES -A INPUT -p TCP --dport ftp --syn -j my_drop

# ----------------------------------------------------------
# Ausputzer: Rest sperren, loggen

$IPTABLES -A INPUT -j my_drop
$IPTABLES -A FORWARD -j my_drop
$IPTABLES -A OUTPUT -j REJECT

Benutzeravatar
feltel
Webmaster
Beiträge: 10366
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 13.08.2002 15:54:45

Die set-Anweisungen funktionieren so nicht, Deine sind csh-spezifisch. Mach sie mal so:

Code: Alles auswählen

variable=wert
Also ohne führendes "set" und ohne Leerzeichen zwischen Variablenname und Wert. Und wenn Du Werte mit Leerzeichen zuweisen musst, dann setzt die in Gänsefüschen.

Benutzeravatar
DaGrrr
Beiträge: 79
Registriert: 08.08.2002 19:50:54

Beitrag von DaGrrr » 13.08.2002 21:49:07

Danke feltel,

werde ich ausprobieren.

Grüße
DaGrrr

Antworten