PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Firewallscript lässt sich nicht ausführen



sceptic
06.11.05, 12:15
Hallo,
ich habe ein Probelm mit dem ausführen eines Firewallscriptes.
Das ist erstmal der Script:



#!/bin/bash
# ---------------------------------------------------------------------
# Linux-iptables-Firewallskript, Copyright (c) 2005 under the GPL
# Autogenerated by iptables Generator v1.20 (c) 2002-2005 by Harald Bertram
# Please visit http://www.harry.homelinux.org for new versions of
# the iptables Generator (c).
#
# This Script was generated by request from:
# sceptic.cwb@gmail.com on: 2005-11-4 21:5.38 MET.
#
# If you have questions about the iptables Generator or about
# your Firewall-Skript feel free to take a look at out website or
# send me an E-Mail to webmaster@harry.homelinux.org.
#
# My special thanks are going to Lutz Heinrich (trinitywork at hotmail dot com)
# who made lots of Beta-Testing and gave me lots of well qualified
# Feedback that made me able to improve the iptables Generator.
# --------------------------------------------------------------------

case "$1" in
start)
echo "Starte IP-Paketfilter"

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# MY_REJECT-Chain
iptables -N MY_REJECT

# MY_REJECT fuellen
iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A MY_REJECT -p icmp -j DROP
iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

# MY_DROP-Chain
iptables -N MY_DROP
iptables -A MY_DROP -j DROP

# Alle Pakete protokollieren
iptables -A INPUT -j LOG --log-prefix "INPUT LOG "
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT LOG "

# Korrupte Pakete zurueckweisen
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP

# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP

# SYN und FIN gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

# SYN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

# FIN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

# FIN ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

# PSH ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

# URG ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# FTP
iptables -A INPUT -i venet0 -m state --state NEW -p tcp --dport 21 -j ACCEPT

# SSH
iptables -A INPUT -i vernet0 -m state --state NEW -p tcp --dport 22 -j ACCEPT

# Default-Policies mit REJECT
iptables -A INPUT -j MY_REJECT
iptables -A OUTPUT -j MY_REJECT

# Max. 500/Sekunde (5/Jiffie) senden
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

# Speicherallozierung und -timing für IP-De/-Fragmentierung
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time

# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 Antworten auf ein TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x wiederholen
echo 15 > /proc/sys/net/ipv4/tcp_retries2

;;

stop)
echo "Stoppe IP-Paketfilter"
# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
# Default-Policies setzen
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;

status)
echo "Tabelle filter"
iptables -L -vn
echo "Tabelle nat"
iptables -t nat -L -vn
echo "Tabelle mangle"
iptables -t mangle -L -vn
;;

*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;

esac


ich hab das fire unter /home/root gespeicher.
wenn ich es nun mit sh ./fire1.sh (fire1.sh heißt das files) ausführe, bekomm ich den folgenden fehler:

: command not found:
'/fire1.sh: line 20: syntax error near unexpected token `in
'/fire1.sh: line 20: `case "$1" in

führe ich es nur so aus ./fire1.sh

kommt:

: bad interpreter: No such file or directory

An was kann das liegen?

Kernel Version ist: 2.4.20

steve-e
06.11.05, 12:55
chmod 750 script
./script start

Was passiert wenn du es so machst?

sceptic
06.11.05, 13:09
hallo,
danke für die schnelle Reaktion.
Es kommt:
: bad interpreter: No such file or directory

ich bin in /home/root

jacky0815
06.11.05, 15:32
kommt die fehlermeldung bei ausführen von chmod? oder von script?
Bist du als root eingeloggt?
Am besten ist übrigens, wenn du das script in /etc/init.d/ ablegst, es soll später doch sicherlich beim systemstart geladen werden (dafür ist aber noch ein link erforderlich)
Ansonsten sollte das script funktionieren vom syntax her

sceptic
06.11.05, 16:51
also ich bin als root angemeldet und die fehlermeldung kommt beim ausführen von script.
tja. die linux distri ist FC 1.
ich hab auch keinen plan, was es ist.

Der Gestreifte
06.11.05, 16:59
also ich bin als root angemeldet und die fehlermeldung kommt beim ausführen von script.
Beim Ausführen von "script" oder Deines Skriptes?

sceptic
06.11.05, 17:14
beim ausführen DES scriptes.
über ./fire1.sh start

jacky0815
06.11.05, 17:23
Benutzt du die standard-bash in der konsole?
Könnte es sein, dass du das firewallscript von einem windows-rechner übertragen hast und komische zeilenumbrüche vorhanden sind?

Viel mehr fällt mir da jetzt auf die schnelle nicht ein.

sceptic
06.11.05, 17:26
also ich denke schon, das es die standard bash ist.
und ja, ich hab das skript in win erstellt bzw es wurde generiert und ich hab noch einen eintrag im editor gesetzt und dann per ftp auf die linux maschiene kopiert.

jacky0815
06.11.05, 17:30
ich behaupte jetzt mal, da liegt der fehler. lass dir das script mal neu generieren und lade es gleich mit linux runter. editieren kannst du es ja auch dort noch.
Du kannst auch mal das script mit dem editor "joe" öffnen. Eventuell sind dann hinter jeder zeile so komisch ^M zu sehen. Darin liegt dann - meiner Meinung nach - der Fehler.

sceptic
06.11.05, 18:00
so
anscheindet läuft der script jetzt
ABER:
er bleibt bei:
Starte IP-Paketfilter
stehen und ich muss das ding neu starten.
an was kann das denn nun liegen.
nochmal danke für eure gedult

jacky0815
06.11.05, 18:07
so
anscheindet läuft der script jetzt
ABER:
er bleibt bei:
Starte IP-Paketfilter
stehen und ich muss das ding neu starten.
an was kann das denn nun liegen.
nochmal danke für eure gedult

funktioniert es dann beim 2ten mal starten oder bleibts dann auch hängen?
könnte mir nur vorstellen, dass er beim laden der module hängt (modprobe)
iptables selbst glaube ich ehr nicht.

steve-e
06.11.05, 18:09
Was meinst du damit, er bleibt hängen?

So sieht das bei mir aus, wenn ich das Script ausführe.


[root@fidelity] [/home/stephan]
% /etc/init.d/firewall start [19:08]
Starte IP-Paketfilter
[root@fidelity] [/home/stephan]
%

sceptic
06.11.05, 18:10
ne. er hängt sich jedesmal auf.
wie kann ich prüfen, bei welchem modul er sich aufhänt`?
nach jedem modul ein echo?
oder so?

sceptic
06.11.05, 18:12
Was meinst du damit, er bleibt hängen?

So sieht das bei mir aus, wenn ich das Script ausführe.


[root@fidelity] [/home/stephan]
% /etc/init.d/firewall start [19:08]
Starte IP-Paketfilter
[root@fidelity] [/home/stephan]
%


bei mir kommr er nur bis Starte IP-Pakerfilter und dann kommt garnix mehr.
und wenn ich mich dann nochmal per SSH anmelden will, passiert auch nix mehr.

jacky0815
06.11.05, 18:30
ja das ist klar. du musst ja den ssh-port 22 schon freigeben, sonst lässt er keine verbindung mehr zu und knallt dir deine offene natürlich auch weg. da kann ja dann nichts mehr kommen.

sceptic
06.11.05, 18:32
mach ich doch mit:
iptables -A INPUT -i vernet0 -m state --state NEW -p tcp --dport 22 -j ACCEPT
oder muss ich das weiter oben anbringen?

geronet
06.11.05, 18:34
Probiers doch mal mit

bash -x /etc/init.d/firewall start

Grüsse, Stefan

jacky0815
06.11.05, 18:38
mach ich doch mit:
iptables -A INPUT -i vernet0 -m state --state NEW -p tcp --dport 22 -j ACCEPT
oder muss ich das weiter oben anbringen?


ist vernet0 oder venet0 das externe interface? bzw. ist da ein schreibfehler drin?
Falls das interface stimmt, dann sollte es eigentlich funktionieren.
Hast du die möglichkeit direkt an der konsole das script zu starten, also nicht über ssh? Wenns da durchläuft und auch wieder eine bash kommt, dann hast du definitv keinen zugang via port 22.

sceptic
06.11.05, 18:44
bash -x /etc/init.d/firewall start


hierbei hängt er ab
iptables -t mangle -F

kann es daran liegen?

zu dem anderen problem. da war nur ein tippfehler. venet0 ist das interface. einen zugang zur konsole hab ich leider nicht.
nur ssh.

EDIT:
es hängt wohl nicht damit zusammen .
er bleibt an unterschiedlichen stellen hängen.

jacky0815
06.11.05, 18:57
kann es sein, dass schon iptables-regeln vorhanden sind (lässt sich mit iptables -L nachsehen) und diese nötig sind für die verbindung nach draußen. Ich kann ja nur raten, in welcher konfiguration der server steht und wie die anbindung realisiert ist.
iptables -F löscht ja die einträge.

sceptic
07.11.05, 11:59
hi.
da bin ich wieder.
also bis jetzt gibt es keine Rules in iptables.

ich hab wie gesagt ein paar echo befehle reingebaut. Meist bleibt er an der Stelle hängen:


[root@vp2010 root]# bash -x firewall.sh start
+ alias 'rm=rm -i'
+ alias 'cp=cp -i'
+ alias 'mv=mv -i'
+ '[' -f /etc/bashrc ']'
+ . /etc/bashrc
+++ id -gn
+++ id -un
+++ id -u
++ '[' root = root -a 0 -gt 99 ']'
++ umask 022
++ '[' '' ']'
+ echo 'Starte IP-Paketfilter'
Starte IP-Paketfilter
+ modprobe ip_tables
+ echo 1
1
+ modprobe ip_conntrack
+ modprobe ip_conntrack_irc
+ modprobe ip_conntrack_ftp



weiß noch jemand rat?