Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

SuSEfirewall2 und Samba-Client

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Antworten
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

SuSEfirewall2 und Samba-Client

Beitrag von s.o.p. »

Hallo, zusammen!

Ich bin neu hier und vor kurzem von Windows XP auf SuSE 9.2 umgestiegen. Hat so weit gut geklappt, außer mit Netzwerkzugriffe auf Windows-Rechner. Im Forum fand ich einiges, konnte aber mein Problem nicht lösen.

Folgende Situation:
Der Linux-Rechner ist zusammen mit einigen Windows-Rechnern an einem Switch angeschlossen. Dieser ist mit einem Router verbunden (verfügt über NAT), um ins Internet zu gelangen. Auf dem Linux-Rechner läuft Samba 3.0.9. Alles funktioniert, d.h. auf die freigegebene Partition kann vom LAN aus zugegriffen werden, über "Netzwerk-Browser" auf dem Desktop oder mit konquerer erreicht man die anderen Rechner. Wenn ich die Firewall einschalte, erhalte ich beim Zugriff auf das LAN folgende Fehlermeldung: "Keine Arbeitsgruppen im lokalen Netzwerk auffindbar". Die Partition ist weiterhin erreichbar. Bei der Konfiguration mit YAST mußte ich eine externe Schnittstelle angeben. Die Ports 137-139,445 sowie "Samba" habe ich freigegeben. Alle Dienste sollen geschützt werden, sowie der Rechner vor dem internen Netzwerk (deshalb betreibe ich ja den Aufwand).

Die Konfigurationsdatei (/etc/sysconfig/SuSEfirewall2) sieht so aus:
FW_QUICKMODE="no"
FW_DEV_EXT="eth-id-**:**:**:**:**:**"
FW_DEV_INT="eth-id-**:**:**:**:**:**"
FW_DEV_DMZ=""
FW_ROUTE="no"
FW_MASQUERADE="no"
FW_MASQ_DEV="$FW_DEV_EXT"
FW_MASQ_NETS=""
FW_PROTECT_FROM_INTERNAL="yes"
FW_AUTOPROTECT_SERVICES="yes"
FW_SERVICES_EXT_TCP="microsoft-ds netbios-dgm netbios-ns netbios-ssn 137:138,445"
FW_SERVICES_EXT_UDP="137:138,445"
FW_SERVICES_EXT_IP=""
FW_SERVICES_EXT_RPC=""
FW_SERVICES_DMZ_TCP=""
FW_SERVICES_DMZ_UDP=""
FW_SERVICES_DMZ_IP=""
FW_SERVICES_DMZ_RPC=""
FW_SERVICES_INT_TCP="microsoft-ds netbios-dgm netbios-ns netbios-ssn"
FW_SERVICES_INT_UDP="137:138,445"
FW_SERVICES_INT_IP=""
FW_SERVICES_INT_RPC=""
FW_SERVICES_DROP_EXT=""
FW_SERVICES_REJECT_EXT="0/0,tcp,113"
FW_SERVICES_QUICK_TCP=""
FW_SERVICES_QUICK_IP=""
FW_TRUSTED_NETS=""
FW_ALLOW_INCOMING_HIGHPORTS_TCP=""
FW_ALLOW_INCOMING_HIGHPORTS_UDP=""
FW_FORWARD=""
FW_FORWARD_MASQ=""
FW_REDIRECT=""
FW_LOG_DROP_CRIT="yes"
FW_LOG_DROP_ALL="no"
FW_LOG_ACCEPT_CRIT="yes"
FW_LOG_ACCEPT_ALL="no"
FW_LOG_LIMIT=""
FW_LOG=""
FW_KERNEL_SECURITY="yes"
FW_ANTISPOOF="no"
FW_STOP_KEEP_ROUTING_STATE="no"
FW_ALLOW_PING_FW="yes"
FW_ALLOW_PING_DMZ="no"
FW_ALLOW_PING_EXT="no"
FW_ALLOW_FW_TRACEROUTE="yes"
FW_ALLOW_FW_SOURCEQUENCH="yes"
FW_ALLOW_FW_BROADCAST="int"
FW_IGNORE_FW_BROADCAST="no"
FW_ALLOW_CLASS_ROUTING="no"
#FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
FW_CUSTOMRULES=""
FW_REJECT="no"
FW_HTB_TUNE_DEV=""
FW_IPv6=""
FW_IPv6_REJECT_OUTGOING="yes"
FW_IPSEC_TRUST="no"

Nachdem es nicht funktionierte, habe ich folgendes geändert:
FW_SERVICES_INT_TCP="microsoft-ds netbios-dgm netbios-ns netbios-ssn 137:138,445"

Folgendes wird protokolliert:
Dec 13 19:48:12 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC= SRC=192.168.100.164 DST=192.168.100.255 LEN=78 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=1084 DPT=137 LEN=58
Dec 13 19:48:12 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=38098 PROTO=UDP SPT=137 DPT=1084 LEN=70
Dec 13 19:48:12 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC= SRC=192.168.100.164 DST=192.168.100.255 LEN=78 TOS=0x00 PREC=0x00 TTL=64 ID=1 DF PROTO=UDP SPT=1084 DPT=137 LEN=58
Dec 13 19:48:12 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=38099 PROTO=UDP SPT=137 DPT=1084 LEN=70
Dec 13 19:48:12 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC= SRC=192.168.100.164 DST=192.168.100.255 LEN=78 TOS=0x00 PREC=0x00 TTL=64 ID=2 DF PROTO=UDP SPT=1084 DPT=137 LEN=58

Offensichtlich wird UDP geblockt. Wie muß ich die Firewall konfigurieren, damit es funktioniert?

Besten Dank im voraus.
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

Da widerspricht sich einiges. Wenn ich dich richtig verstanden habe, dann soll die Firewall den Sambaserver vor Angriffen aus dem LAN schützen. Das bedeutet aber das du die Firewall nicht klassisch betreibst d.h. als Schutz eines internen Netz vor Zugriffen aus einem äusseren Netz sondern lediglich als Personal Firewall die den Rechner selbst schützt. Andereseits konfigurierst du die Firewall mit 2 Netzwerkschnittstellen als Bastion Host. Das ist nicht ganz nachvollziehbar.

Vielleicht skiziierst du deine Konfiguration, in etwa so:

Sambaserver------switch-------router---Internet

Da komme ich nur auf eine Schnittstelle, vom Sambaservr zum Switch. In deiner Firewallkonfiguration sind aber beide besetzt.

Es ist ganz entscheidend wie die Firewall im Netz sitzt und sagen zu können welche Variable welche Werte bekommmen müssen.



mfG
gaw
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

Richtig: Die Firewall soll den Rechner vor Angriffen aus dem LAN schützen. Bei der Konfiguration mit YAST war ich gezwungen, eine externe Schnittstelle anzugeben, da bei Angabe einer internen Schnittstelle ohne gleichzeitige Angabe einer externen das Setup nicht fortfahren wollte.

Mittlerweile habe ich im Forum gelesen, daß man bei lediglich einer Netzwerkkarte nur die externe Schnittstelle konfigurieren soll, also auch bei meinem Vorhaben. Dies habe ich dann auch gemacht, das Problem wurde jedoch nicht gelöst: Linux-Rechner erreichbar, kein Zugriff auf andere Rechner, da beim Linux-Rechner UDP auf Port 137 geblockt wird, obwohl er eigentlich freigegeben ist.

Aller Anfang ist eben schwer. Bei "Kerio Personal Firewall 2.1.5" unter Windows XP ist mir die Konfiguration leichter gefallen. Da konnte ich genau einstellen, welches Programm was darf und was alles von außen geblockt werden soll. War ja auch bitter nötig, da Spyware und E.T. allgegenwärtig waren. Naja, mit etwas Hilfe und ein paar Büchern, die hoffentlich bald eintreffen, werde ich (wir) das Problem schon lösen.
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

Hab´ mit

"tail -f /var/log/messages |grep kernel"

mal nachgesehen, was denn so passiert, wenn ich auf "Windows-Netzwerk" klicke:

Dec 14 17:45:00 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=63260 PROTO=UDP SPT=137 DPT=1121 LEN=70
Dec 14 17:45:00 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=63261 PROTO=UDP SPT=137 DPT=1121 LEN=70
Dec 14 17:45:00 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=63262 PROTO=UDP SPT=137 DPT=1121 LEN=70
Dec 14 17:45:01 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=63263 PROTO=UDP SPT=137 DPT=1121 LEN=70
Dec 14 17:45:02 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=63265 PROTO=UDP SPT=137 DPT=1121 LEN=70

Zunächst war DPT=1029, dann 1110 und jetzt 1121. Sobald ich die Ports in der FW freigebe, funktionierts auch mit dem Netzwerkzugriff.

Kann mir jemand erklären, was da passiert? Port 1029 soll DCOM oder ICQ verwenden, die Kaparsky FW 1110, etc. Was hat das alles mit meinem Netzwerkzugriff zu tun?
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

Ach jeh, du solltest dich mal mit udp (und tcp ) auseinandersetzen, dann verstehst du das besser, was da steht.

Wenn ein Client eine UDP eröffnet, wählt er den Zielport, der mit dem Service assoziert ist und einen Quellport > 1024, der auf seinem Host noch nicht besetzt ist, beispielsweise 1121.

Also dein Client mit der IP 192.168.100.164 eröffnet eine Verbindung mit dem Zielport 137, mit anderen Worten du willst eine Netbios Verbindung über UDP zu deinem Linuxrechner eröffnen (Wahrscheinlich möchtest du auf Samba zugreifen).

Für den Linuxrechner sieht das natürlich umgekehrt aus, weil er der Server ist. Für ihn ist der UDP Zielport nun 1121 und der Quellport 137. Das heißt genau das schreibt er in den Header des UDP-Datagrammes (Die IP-Nummern stehen im IP-Header).


Client---- [Quellport 1121, Zielport 137 ] ----> Server
Server----[Quellport 137, Zielport 1121 ]-----> Client


Was wir erkennen, ist das die SuSEFirewall die rücklaufenden Pakete blockt.
Also kein I
Was wir erkennen, ist das die SuSEFirewall die rücklaufenden Pakete blockt.
Also kein DCOM, ICQ oder was weiß ich was....alles klar?

mfG
gaw


ps: Bist du sicher dass das Komma bei den Port-Angaben richtig ist? Gehört da nicht einfach ein Leerzeichen hin, also statt "137:139,445" einfach "137:139 445"?
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

Danke für die ausführliche Erklärung. Hab´ noch nie was davon gehört! Das ist glaube ich der Punkt bei Kerio, wo man für das interne Netz anklickt, daß andere Regeln gelten sollen, diese aber automatisch festgelegt werden ohne Einwirkung des Benutzers. Ansonsten ist ja auf jeder homepage zu lesen, daß Ports > 1023 dicht zu machen sind.

Das bedeutet also, daß ich einen gewissen Bereich > 1023 freigeben muß, damit es funktioniert. Kennst Du die Obergrenze? Und kann man das so festlegen, daß es nur fürs interne Netzwerk gilt? In meinem Fall sind das der IP-Bereich 192.168.100.0-192.168.100.255.

Die Konfiguration der Firewall sieht mittlerweile so aus:

FW_QUICKMODE="no"
FW_DEV_EXT="eth-id-00:0a:e6:98:33:73"
FW_DEV_INT=""
FW_DEV_DMZ=""
FW_ROUTE="no"
FW_MASQUERADE="no"
FW_MASQ_DEV="$FW_DEV_EXT"
FW_MASQ_NETS="0/0"
FW_PROTECT_FROM_INTERNAL="yes"
FW_AUTOPROTECT_SERVICES="yes"
FW_SERVICES_EXT_TCP="microsoft-ds netbios-dgm netbios-ns netbios-ssn"
FW_SERVICES_EXT_UDP="1029 137:139 445"
........

Die Ports waren in der Tat falsch angegeben.

Wenn ich hier "dämliche Fragen" stelle, so seht es mir nach. Bin weder Admin noch Informatiker. Wenn man unter Windows dem Benutzer die Hälfte der Einstellungen freundlicherweise abnimmt und er diese gar nicht zu Gesicht bekommt, weiß er eben nicht alles.
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

Zu jeder Verbindung die über TCP oder UDP aufgebaut wird existieren immer 2 Portnummern, die Ziel- und die Quellportnummer. Da UDP und auch TCP directional sind - d.h. Datagramme bzw. Segmente können in beide Eichtungen versandt und emfangen werden - kommt es auf den Standpunkt am von dem aus man die Portnummern betrachtet.

Standardmässig sucht sich der Client eine Portnummer aus dem Bereich zwischen 1024:65535 aus, soweit diese nicht schon rserviert sind. Ob bestimmte Portnummern reserviert sind legt das System in /etc/services fest. Dort auskommentierte Ports > 1023 werden nicht verwendet.

Diese Portnummern lassen sich natürlich freigeben.
Samba basiert auf meherern Protokollen, und Samba über eine Firewall zu betreiben ist mitunter nicht einfach. Es sind die UDP Protokolle 135, 137, 138, 139 und 445 sowie die TCP-Protokolle 137:138 und 445 beteiligt.

Hier nun ein ip-tables Script was funktionieren sollte:

Code: Alles auswählen


#!/bin/bash
#############  Firewallskript für einen Samba Server in einem LAN
# copyright (c) gaw
# Autor: gaw
# Dezember 2004

############# Initialisierung der Variablen

############# Interfaces

INTERFACE_INT="eth0"   
LOCAL_NET="192.168.100.0/24"

############# Portnummern
PORTS_HIGH="1024:65535"

############# Programm
IPTABLES="/usr/sbin/iptables"



############# Grundkonfiguration

############# Vorläufiges Ausschalten des IP Forwarding.
echo "0" > /proc/sys/net/ipv4/ip_forward

############# TCP-Syncookies, Abwehrmaßnahme gegen das SYN Flooding.
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

############# Ignorieren von Echoauforderungen von icmp
############# Abwehrmaßnahme gegen Broadcast-Stürme
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

############# Das Loggen ungültiger ICMP-Pakete wird ausgeschaltet,
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

##### IP-Spoof Protection
echo "1" > /proc/sys/net/ipv4/conf/$INTERFACE_INT/rp_filter

##### Keine Redirections
echo "0" > /proc/sys/net/ipv4/conf/$INTERFACE_INT/accept_redirects

##### Kein Source-Routing
echo "0" > /proc/sys/net/ipv4/conf/$INTERFACE_INT/accept_source_route

##### Kein Bootstrap Protokoll
echo "0" > /proc/sys/net/ipv4/conf/$INTERFACE_INT/bootp_relay

##### Ungültige IP-Pakete werden geloggt.
echo "1" > /proc/sys/net/ipv4/conf/$INTERFACE_INT/log_martians

echo "Dynamische Kernelparameter gesetzt"

############ Alle Pakete der Grundeinstellung werden verworfen

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

############ Alle eventuell noch vorhandenen Regeln werden gelöscht

############ Lösche alle Regeln aus der Filter Tabelle
$IPTABLES -F

############ Lösche aller Regeln aus der NAT Tabelle
$IPTABLES -t nat -F

############ Lösche alle selbstdefinierten Regeln
$IPTABLES -X

echo "Alles verboten und alle Regeln gelöscht"

############ Selbstdefinierte Regelkette zum Loggen wird erstellt

$IPTABLES -N TRASH

# Hier folgen Regeln für Pakete die nicht geloggt werden sollen als
# Schutz gegen ein Überquellen der Logdateien
$IPTABLES -A TRASH -p UDP --dport 123 -j DROP
# IPP-Anfragen zur Druckereinstellungen müssen nicht geloggt werden
$IPTABLES -A TRASH -p UDP -s 192.168.0.1 --dport 631 -j DROP

### In der Testphase sollten diese Pakete geloggt werden. 
### Falls alles funktioniert bitte unbedingt die Kommentarzeichen 
### entfernen um das Überquellen der Logfiles zu verhindern!
# $IPTABLES -A TRASH -p UDP --dport  $NETBIOS_PORTS -j DROP
# $IPTABLES -A TRASH -p TCP --dport $NETBIOS_PORTS -j DROP
# $IPTABLES -A TRASH -p TCP --dport 445 -j DROP
# $IPTABLES -A TRASH -p TCP --dport 135 -j DROP

# Diese Pakete sollen geloggt werden
$IPTABLES -A TRASH -p ICMP -j LOG --log-prefix "Abgelehnte-ICMP-Pakete "
$IPTABLES -A TRASH -p UDP  -j LOG --log-prefix "Abgelehnte-UDP-Pakete "
$IPTABLES -A TRASH -p TCP  -j LOG --log-prefix "Abgelehnte-TCP-Pakete "
$IPTABLES -A TRASH -j DROP

echo "Loggen eingeschaltet"


############ Bis hier ist alles verboten. Nun werden bestimmte
############ Pakete wieder akzeptiert


############ Einschalten des Forwardings
echo "1" > /proc/sys/net/ipv4/ip_forward
############ Lokale Prozesse auf dem Rechner akzeptieren ###############
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT  -i lo -j ACCEPT

echo "Lokale Prozesse erlaubt"

############ SSH Verbindungen vom internen Netz erlauben

$IPTABLES -A INPUT -s $LOCAL_NET -p TCP --sport $PORTS_HIGH --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -d $LOCAL_NET -p TCP --dport $PORTS_HIGH --sport ssh -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "ssh vom LAN auf den Samba Server freigeschaltet"

############
############ Samba Regeln
############

############ Mapping

$IPTABLES -A INPUT -s $LOCAL_NET -p udp --sport $PORTS_HIGH --dport 135 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -d $LOCAL_NET -p udp --dport $PORTS_HIGH --sport 135 -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "Windows Mapper konfiguriert"

############ smb über tcp

$IPTABLES -A INPUT -s $LOCAL_NET -p TCP --sport $PORTS_HIGH --dport 137:139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -d $LOCAL_NET -p TCP --dport $PORTS_HIGH --sport 137:139 -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "SMB über tcp konfiguriert"


############# smb über udp

$IPTABLES -A INPUT -s $LOCAL_NET -p udp --sport $PORTS_HIGH --dport 137:139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -d $LOCAL_NET -p udp --dport $PORTS_HIGH --sport 137:139 -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "SMB über udp konfiguriert"

############ 445 über udp

$IPTABLES -A INPUT -s $LOCAL_NET -p udp --sport $PORTS_HIGH --dport 445 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -d $LOCAL_NET -p udp --dport $PORTS_HIGH --sport 445 -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "445 über udp konfiguriert"

###########
########### Andere Verbindungen
###########

########### DNS Verbindungen erlauben

$IPTABLES -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p UDP --sport $PORTS_HIGH --dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED  -p UDP --sport 53 --dport $PORTS_HIGH -j ACCEPT


echo "DNS  eingeschaltet"

########### icmp Verbindungen erlauben

$IPTABLES -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT
$IPTABLES -A OUTPUT -p ICMP --icmp-type echo-reply -j ACCEPT
$IPTABLES -A OUTPUT -p ICMP --icmp-type redirect -j ACCEPT
$IPTABLES -A INPUT -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 redirect -j ACCEPT

echo "ICMP Anfragen des Samba Servers werden gestattet"

############ Rest wird gesperrt und geloggt
$IPTABLES -A INPUT   -j TRASH
$IPTABLES -A FORWARD -j TRASH
$IPTABLES -A OUTPUT  -j TRASH
echo "Firewall eingeschaltet"
Versuch das man, viel Erfolg

gaw
Zuletzt geändert von gaw am 28. Jan 2005, 18:14, insgesamt 2-mal geändert.
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

Wow, vielen Dank!!!!!!!!!!!

Ich habe aber keine Ahnung, was ich damit anfangen soll! Ich soll es wohl markieren, in eine Textdatei kopieren, speichern unter name.sh im Verzeichnis ??? als root. Richtig?

Also:
1. Wie lautet der Dateiname?
2. Wo muß das Script gespeichert werden?
3. Wird es automatisch beim Start des Rechners ausgeführt?

Oder muß ich es nur einmal ausführen?

Müssen folgende Zeile an die momentane Adresse angepaßt werden?
>
>############# Interfaces
>
>INTERFACE_INT="eth0"
>$SAMBA_SERVER_IP="192.168.100.239"
>$LOCAL_NET_IP="192.168.100.0/24"

Der Rechner bekommt seine Adresse dynamisch über einen DHCP-Server (ist der Hardware-Router, läuft auch mit FW).

Wenn ich ehrlich bin, sieht das ziemlich kompliziert aus für mich. Und was ist mit der SuSEfirewall2-Konfiguration unter YAST?

Kannst du mir noch verraten, wie ich auf der Konsole Informationen über das Netzwerk bekomme? Ich möchte wissen, wieviele Rechner mit welcher IP im Netz erreichbar sind und welche IP der Hardware-Router hat. Unter Windows hat es mit "ipconfig" und "netstat" funktioniert.
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

1) Script automatisch starten:

Öffne eine Konsole oder ein xterm und melde dich als root an. Wechsle das Verzeich nach init.d:
sop@sambaserver :~/ > su
Password: xxxxxx
sambaserver: /home/sop # cd /etc/init.d/
sambaserver: /etc/init.d #vi firewall

Code: Alles auswählen

~
~
~
~
~
Mit der Taste i in den Einfügemodus wechseln.

Abschließend mit der Maus im Browser den Inhalt des Scriptes markieren und im vi mit der mittleren
Maustaste fallen lassen. Mit <ESC><:w> abspeichern und mit <q!> den vi verlassen. Alternativ geht auch <ESC><:x>.

Code: Alles auswählen

~
~
~
~
-Einfügen-
Abschließend mit der Maus im Browser den Inhalt des Scriptes markieren und im vi mit der mittleren
Maustaste fallen lassen.

Code: Alles auswählen

#!/bin/bash
#############  Firewallskript für einen Samba Server in einem LAN
# copyright (c) gaw
# Autor: gaw
# Dezember 2004

############# Initialisierung der Variablen

############# Interfaces

INTERFACE_INT="eth0"   
$SAMBA_SERVER_IP="192.168.100.239"
$LOCAL_NET_IP="192.168.100.0/24"


Mit <ESC><:w> abspeichern und mit <q!> den vi verlassen. Statt <:w> + <:q> geht auch <:wq> oder <x>.

Anschließend Executebit setzen:
sambaserver:/etc/init.d #chmod 700 firewall
und Links im Runlevel setzen damit die Firewall beim Booten startet:
sambaserver:/etc/init.d #cd rc5
sambaserver:/etc/init.d/rc.5 #ln -s ../firewall S15firewall
sambaserver:/etc/init.d/rc.5 #cd ../rc.3
sambaserver:/etc/init.d/rc.3 #ln -s ../firewall S15firewall

...und Rechner neu starten um zu testen dass alles eingeschaltet wird.

2) Anzeigen deiner Netzwerkschnittstellen
sambaserver :/irgendwo #ip link list
3) Anzeigen der IP-Adressen auf deinem Rechner
sambaserver :/irgendwo #ip adress list
4) Anzeigen der Routen
sambaserver :/irgendwo #ip route list
5) Anzeigen der erreichbaren Nachbarn im Netz, soweit diese solche Anfragen nicht blocken
sambaserver :/irgendwo #ip neigh show
Ebenso funktionieren natürlich die alten UNIX-Befehl ifconfig, netstat und route, die gab es schon lange bevor Windows die Welt erblickte. MS hat leider jedemal die Syntax leicht verändert, ein Blick in die manual page (z.B: man ifconfig) gibt Auskunft.

mfg
gaw


ps: Natürlich müssen die IP-Adressen angepasst werden, die hab ich einfach deinem Logfile entnommen. Falls die IP-Adressen des Sambaservers und deines Netzes aber stimmen ist alles ok.
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

Hab´s nach deiner sehr ausführlichen Anleitung hinbekommen. Es funktioniert leider nicht. Die Datei "firewall" befindet sich in /etc/init.d, die links in ../rc5.d und ../rc3.d. Nach dem Neustart des Rechners zeigt das Script leider keine Auswirkung, d.h. mein Problem besteht weiterhin!

Mir ist allerdings folgendes aufgefallen, wobei ich nicht weiß, ob es überhaupt eine Auswirkung hat:

1.) Die links befinden sich nicht in /rc5 und /rd3, sondern in /rc5.d und /rd3.d
2.) Die Datei "firewall" ist eine vom Typ "Einfacher Text", während alle anderen mit Ausnahme der "README" vom Typ "Shell-Script" sind.
3.) In /rc5.d und /rc3.d befinden sich links zu "SuSEfirewall_final" mit S21 (wenn ich es richtig verstanden habe wird das script nach deinem script gestartet).

Die Protokollierung sieht wie folgt aus:
Dec 15 20:22:24 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=62753 PROTO=UDP SPT=137 DPT=1037 LEN=70
Dec 15 20:22:24 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=62754 PROTO=UDP SPT=137 DPT=1037 LEN=70
Dec 15 20:22:24 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=62762 PROTO=UDP SPT=137 DPT=1037 LEN=70
Dec 15 20:22:25 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=62770 PROTO=UDP SPT=137 DPT=1037 LEN=70
Dec 15 20:22:26 server kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:0a:e6:98:33:73:00:0c:6e:22:35:42:08:00 SRC=192.168.100.239 DST=192.168.100.164 LEN=90 TOS=0x00 PREC=0x00 TTL=128 ID=62778 PROTO=UDP SPT=137 DPT=1037 LEN=70

Wie man sieht, stimmt die IP-Adresse trotz Neustart. Verstehe ich im Moment noch nicht, aber ist ja auch nicht wichtig. Habe ich vielleicht etwas falsch gemacht?
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

So langsam fange ich an, die ganze Sache zu verstehen: Das obige Script beinhaltet meine Firewall-Regeln. Die SuSEfirewall2 muß über YAST deaktiviert werden. "$INTERFACE_INT" ist ein Platzhalter für z.b. "default" oder "eth0". Richtig?
Aber: Wie stelle ich fest, ob das Script auch wirklich gestartet wurde? Jedenfalls stehen die Meldungen des Scripts nicht in /var/log/boot.msg!
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

Natürlich sollst du nicht die SuSEFirewall und dieses Script gleichzeitig starten. Mit iptables -L stellst du fest welche Regeln gestartet sind. Aber du kannst den Paketfilter während der Arbeit sehen.
xterm auf, su eingeben und tail -f /var/log/messages

Dann bleibt die Datei offen und immer wenn ein Päckchen geloggt wird schreibt der sylogd eine neue Zeile in /var/log/messages.



mfG
gaw
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

"iptables -L" gibt mir folgende Ausgabe:

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Daraus schließe ich, daß das Script wohl nicht geladen wurde, obwohl
- "firewall" sich in "/etc/init.d" befindet und
- Verknüpfungen in "/etc/init.d/rc3.d" und "/etc/init.d/rc5.d" angelegt wurden.

Irgendwas ist wohl schief gelaufen. Hab es jedenfalls nach deiner Anleitung gemacht. Warum wird das Script nicht gestartet?
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

Hab den Fehler endlich gefunden: Executebit war nicht gesetzt. Nach einem Neustart wurde das Script gestartet. Es funktioniert aber nicht:

"/var/logs/boot.msg":

<notice>start services (firewall.sh cron)
/etc/init.d/rc5.d/S15firewall.sh: line 13: =192.168.100.239: command not found
/etc/init.d/rc5.d/S15firewall.sh: line 14: =192.168.100.0/24: No such file or directory
Dynamische Kernelparameter gesetzt
Alles verboten und alle Regeln gelöscht
Loggen eingeschaltet
Lokale Prozesse erlaubt
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
ssh vom LAN auf den Samba Server freigeschaltet
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
Windows Mapper konfiguriert
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
SMB über tcp konfiguriert
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
SMB über udp konfiguriert
iptables v1.2.11: host/network `-d' not found
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `udp'
Try `iptables -h' or 'iptables --help' for more information.
445 über udp konfiguriert
DNS eingeschaltet
ICMP Anfragen des Samba Servers werden gestattet
Firewall eingeschaltet

Weiterhin ist mir aufgefallen, das im Script die Unterstützung für Netfilter nicht aktiviert wurde. Es fehlt eine Zeile mit "echo "1" > /proc/sys/net/ipv4/ip_forward ". (Mein schlaues Linux-Buch ist endlich da und ich kann zumindest versuchen mitzureden :roll:)

Wie muß ich das Script anpassen, damit es funktioniert? Sollte es nicht heißen:
...
SAMBA_SERVER_IP="192.168.100.239"
LOCAL_NET_IP="192.168.100.0/24"
...

Außerdem:
Gibt es einen Unterschied zwischen
- "echo "0" > /proc/sys/net/ipv4/ip_forward" und
- "echo 0 > /proc/sys/net/ipv4/ip_forward"?
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

Ich kenne dein schlaues Linux Buch nicht, aber eine solche Zeile fehlt tatsächlich es lautet aber so:
echo "1" > /proc/sys/net/ipv4/ip_forward
oder so
echo '1' > /proc/sys/net/ipv4/ip_forward
oder so
echo 1 > /proc/sys/net/ipv4/ip_forward


Die erste Schreibweise bevorzuge ich, damit es klarer ist, dass die Bash mit Zeichenketten arbeitet.
Zwischen deinen beiden Vorschlägen existieren natürlich Unterschiede, beide sind allerdings falsch und das einigt sie wieder. Doppelte Anführungszeichen beschreiben Zeichenketten, einfache übrigens auch. Der Unterschied besteht darin das die Bash bestimmte Zeichen in Anführungszeichen anders interpretiert als ohne. Ein Leerzeichen wird innerhalb doppelter und einfacher Anführungszeichen als Zeichen interpretiert. Ohne Anführungszeichen gilt das Leerzeichen defaultmässig als Trennzeichen zwischen Befehlen, Parametern Optionen und Operatoren. Der Unterschied zwischen einfachen und doppelten kannst du in deinem schlauen Buch nachlesen oder in man bash. Ich bin zu faul um dir das jetzt zu erklären, ein bischen solltest du auch selber nachlesen :-)

Übrigens die beste Quelle sind immer noch die man pages. Also <man bash> aufrufen und dann </quoting> führt dich im besten Englisch in die Geheimnisse zwischen single quotes und double quotes ein. Und zwar in der Regel bezogen auf die aktuelle Version, die du gerade benutzt.

Bei den Variabeln hat sich tatsächlich das $Zeichen davorgeschmuggelt. Ich habe es aber korrigiert. Das du das Ausführungsbit setzen solltest stand in der Anleitung (chmod 700 firewall). Die Fehlermeldungen rühren daher, dass iptables mit -d auf Grund des $Zeichen die Variabeln nicht gefunden hat. Probier es noch mal aus. Nun sollte es aber funktionieren. Keine Ausreden mehr ich möchte jetzt nur noch hören, das es prima funktioniert ;)

mfG
gaw
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

Lieber gaw,

1. Ich hatte eigentlich kein "Bash HowTo" erwartet, sondern war lediglich auf der Fehlersuche. Hätte ja sein können, daß es einen Unterschied macht. Trotzdem danke. Bin natürlich bereit, mir selbst die Grundlagen anzueignen, weshalb ich mir auch das Buch gekauft habe (Linux-Sicherheit).

2. Habe das Script angepaßt. Es funktioniert leider immer noch nicht, was nicht am Script, sondern an der Samba-Konfiguration liegen wird:

boot.log:
Dynamische Kernelparameter gesetzt
Alles verboten und alle Regeln gelöscht
Loggen eingeschaltet
Lokale Prozesse erlaubt
Bad argument `192.168.100.239'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `TCP'
Try `iptables -h' or 'iptables --help' for more information.
ssh vom LAN auf den Samba Server freigeschaltet
Bad argument `192.168.100.239'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `udp'
Try `iptables -h' or 'iptables --help' for more information.
Windows Mapper konfiguriert
Bad argument `192.168.100.239'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `TCP'
Try `iptables -h' or 'iptables --help' for more information.
SMB über tcp konfiguriert
Bad argument `192.168.100.239'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `udp'
Try `iptables -h' or 'iptables --help' for more information.
SMB über udp konfiguriert
Bad argument `192.168.100.239'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `192.168.100.239'
Try `iptables -h' or 'iptables --help' for more information.
445 über udp konfiguriert
DNS eingeschaltet
ICMP Anfragen des Samba Servers werden gestattet
Firewall eingeschaltet
3. Die Anpassung der Samba-Konfiguration hat nichts bewirkt:

smb.conf:
workgroup = ARBEITSGRUPPE

### neu hinzugefügt
interfaces = 192.168.100.100
### ende

restrict anonymous = no
domain master = no
preferred master = no
server string =
max protocol = NT
security = share

[pub]
comment = Allgemeines Verzeichnis
path = /pub
read only = no
case sensitive = no
msdfs proxy = no
guest ok = yes

[suse]
comment = SuSE Linux 9.2
path = /suse
case sensitive = no
msdfs proxy = no
guest ok = yes
Nachdem ich das Firewall-Script angepaßt habe, kamen die gleichen Fehlermeldungen, nur eben mit "192.168.100.100". Bei der Konfiguration mit YAST hatte ich angegeben, den Samba-Dienst automatisch zu starten.

In "/etc/init.d" befinden sich "nmb", "smb" und "smbfs"; Verknüpfungen sind in "rc3.d" und "rc5.d" angelegt, und zwar mit S07, S14 und S15:

nmb:
#! /bin/sh
# Copyright (c) 2002-2004 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# Author: Lars Mueller <lmuelle@suse.de>
#
# /etc/init.d/nmb
# and its symbolic link
# /usr/sbin/rcnmb
#
### BEGIN INIT INFO
# Provides: nmb
# Required-Start: $network syslog
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Samba NetBIOS naming service over IP
### END INIT INFO

NMBD_BIN="/usr/sbin/nmbd"
NMBD_NAMELIST="/var/lib/samba/namelist.debug"
SMB_CONF="/etc/samba/smb.conf"
PID_FILE="/var/run/samba/nmbd.pid"

. /etc/rc.status
rc_reset

# Check for missing binary
if [ ! -x ${NMBD_BIN} ]; then
echo -n >&2 "Samba NMB daemon, ${NMBD_BIN} is not installed. "
rc_status -s
exit 5
fi

case "$1" in
start)
echo -n "Starting Samba NMB daemon "
if [ ! -f ${SMB_CONF} ]; then
echo -n >&2 "Samba configuration file, ${SMB_CONF} does not exist. "
rc_status -s
exit 6
fi
checkproc -p ${PID_FILE} ${NMBD_BIN}
case $? in
0) echo -n "- Warning: daemon already running. " ;;
1) echo -n "- Warning: ${PID_FILE} exists. " ;;
esac
startproc -p ${PID_FILE} ${NMBD_BIN} -D -s ${SMB_CONF}
rc_status -v
;;
stop)
echo -n "Shutting down Samba NMB daemon "
checkproc -p ${PID_FILE} ${NMBD_BIN} || \
echo -n " Warning: daemon not running. "
killproc -p ${PID_FILE} -t 10 ${NMBD_BIN}
rc_status -v
;;
try-restart|condrestart)
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset
fi
rc_status
;;
restart)
$0 stop
$0 start
rc_status
;;
force-reload)
$0 try-restart
rc_status
;;
reload)
echo -n "Reloading Samba NMB daemon "
rc_failed 3
rc_status -v
;;
dump-nmbd)
echo -n "Dump Samba NMB daemon namelists to ${NMBD_NAMELIST}. "
checkproc -p ${PID_FILE} ${NMBD_BIN} || \
echo -n " Warning: daemon not running. "
killproc -p ${PID_FILE} -HUP ${NMBD_BIN}
rc_status -v
;;
status)
echo -n "Checking for Samba NMB daemon "
checkproc -p ${PID_FILE} ${NMBD_BIN}
rc_status -v
;;
probe)
test ${SMB_CONF} -nt ${PID_FILE} && echo restart
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe|dump-nmbd}"
exit 1
;;
esac
rc_exit
smb:
#! /bin/sh
# Copyright (c) 2002-2004 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# Author: Lars Mueller <lmuelle@suse.de>
#
# /etc/init.d/nmb
# and its symbolic link
# /usr/sbin/rcnmb
#
### BEGIN INIT INFO
# Provides: nmb
# Required-Start: $network syslog
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Samba NetBIOS naming service over IP
### END INIT INFO

NMBD_BIN="/usr/sbin/nmbd"
NMBD_NAMELIST="/var/lib/samba/namelist.debug"
SMB_CONF="/etc/samba/smb.conf"
PID_FILE="/var/run/samba/nmbd.pid"

. /etc/rc.status
rc_reset

# Check for missing binary
if [ ! -x ${NMBD_BIN} ]; then
echo -n >&2 "Samba NMB daemon, ${NMBD_BIN} is not installed. "
rc_status -s
exit 5
fi

case "$1" in
start)
echo -n "Starting Samba NMB daemon "
if [ ! -f ${SMB_CONF} ]; then
echo -n >&2 "Samba configuration file, ${SMB_CONF} does not exist. "
rc_status -s
exit 6
fi
checkproc -p ${PID_FILE} ${NMBD_BIN}
case $? in
0) echo -n "- Warning: daemon already running. " ;;
1) echo -n "- Warning: ${PID_FILE} exists. " ;;
esac
startproc -p ${PID_FILE} ${NMBD_BIN} -D -s ${SMB_CONF}
rc_status -v
;;
stop)
echo -n "Shutting down Samba NMB daemon "
checkproc -p ${PID_FILE} ${NMBD_BIN} || \
echo -n " Warning: daemon not running. "
killproc -p ${PID_FILE} -t 10 ${NMBD_BIN}
rc_status -v
;;
try-restart|condrestart)
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset
fi
rc_status
;;
restart)
$0 stop
$0 start
rc_status
;;
force-reload)
$0 try-restart
rc_status
;;
reload)
echo -n "Reloading Samba NMB daemon "
rc_failed 3
rc_status -v
;;
dump-nmbd)
echo -n "Dump Samba NMB daemon namelists to ${NMBD_NAMELIST}. "
checkproc -p ${PID_FILE} ${NMBD_BIN} || \
echo -n " Warning: daemon not running. "
killproc -p ${PID_FILE} -HUP ${NMBD_BIN}
rc_status -v
;;
status)
echo -n "Checking for Samba NMB daemon "
checkproc -p ${PID_FILE} ${NMBD_BIN}
rc_status -v
;;
probe)
test ${SMB_CONF} -nt ${PID_FILE} && echo restart
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe|dump-nmbd}"
exit 1
;;
esac
rc_exit
smbfs:
#! /bin/sh
# Copyright (c) 2002-2004 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# Author: Lars Mueller <lmuelle@suse.de>
#
# /etc/init.d/nmb
# and its symbolic link
# /usr/sbin/rcnmb
#
### BEGIN INIT INFO
# Provides: nmb
# Required-Start: $network syslog
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Samba NetBIOS naming service over IP
### END INIT INFO

NMBD_BIN="/usr/sbin/nmbd"
NMBD_NAMELIST="/var/lib/samba/namelist.debug"
SMB_CONF="/etc/samba/smb.conf"
PID_FILE="/var/run/samba/nmbd.pid"

. /etc/rc.status
rc_reset

# Check for missing binary
if [ ! -x ${NMBD_BIN} ]; then
echo -n >&2 "Samba NMB daemon, ${NMBD_BIN} is not installed. "
rc_status -s
exit 5
fi

case "$1" in
start)
echo -n "Starting Samba NMB daemon "
if [ ! -f ${SMB_CONF} ]; then
echo -n >&2 "Samba configuration file, ${SMB_CONF} does not exist. "
rc_status -s
exit 6
fi
checkproc -p ${PID_FILE} ${NMBD_BIN}
case $? in
0) echo -n "- Warning: daemon already running. " ;;
1) echo -n "- Warning: ${PID_FILE} exists. " ;;
esac
startproc -p ${PID_FILE} ${NMBD_BIN} -D -s ${SMB_CONF}
rc_status -v
;;
stop)
echo -n "Shutting down Samba NMB daemon "
checkproc -p ${PID_FILE} ${NMBD_BIN} || \
echo -n " Warning: daemon not running. "
killproc -p ${PID_FILE} -t 10 ${NMBD_BIN}
rc_status -v
;;
try-restart|condrestart)
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset
fi
rc_status
;;
restart)
$0 stop
$0 start
rc_status
;;
force-reload)
$0 try-restart
rc_status
;;
reload)
echo -n "Reloading Samba NMB daemon "
rc_failed 3
rc_status -v
;;
dump-nmbd)
echo -n "Dump Samba NMB daemon namelists to ${NMBD_NAMELIST}. "
checkproc -p ${PID_FILE} ${NMBD_BIN} || \
echo -n " Warning: daemon not running. "
killproc -p ${PID_FILE} -HUP ${NMBD_BIN}
rc_status -v
;;
status)
echo -n "Checking for Samba NMB daemon "
checkproc -p ${PID_FILE} ${NMBD_BIN}
rc_status -v
;;
probe)
test ${SMB_CONF} -nt ${PID_FILE} && echo restart
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe|dump-nmbd}"
exit 1
;;
esac
rc_exit
3. Hast du noch Lust und Zeit, mir zu helfen? Würde mich sehr freuen! Wenn ich mir die Scripts durchlese, verstehe ich nicht viel davon, bzw. kann nicht beurteilen, ob und was angepaßt werden muß.

MfG
s.o.p.
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

Die Fehlermeldungen in dem Skript scheinen eher syntaktischer Natur zu sein und mit der Eingabe der IP des Sambaservers zusammenzuhängen.
Wie hast du das Skript angepasst?


mfG
gaw
s.o.p.
Newbie
Newbie
Beiträge: 12
Registriert: 11. Dez 2004, 23:05

Beitrag von s.o.p. »

smb.conf:
### neu hinzugefügt
interfaces = 192.168.100.100
### ende
Ich wollte somit dem Samba-Server diese IP-Adresse zuteilen. Wie gesagt, die Fehlermeldungen sind die gleichen mit Ausnahme der IP-Adresse (jetzt 192.168.100.100).

Was mir noch aufgefallen ist:
Mit "ip neigh show" hatte ich geprüft, welche IP-Adresse nun Samba verwendet. Es wurde 192.168.100.239 angezeigt, jedoch erst, nachdem ich auf "Netzwerk-Browser" -> "Windows-Netzwerk" -> "Arbeitsgruppe" geklickt hatte. Die Verzeichnis- und Druckerfreigaben sind jedoch von Anfang an erreichbar, also ohne daß sich jemand am System anmelden muß.

Der Linux-Rechner verwendet übrigens 192.168.100.16 auf eth0; diese wird statisch festgelegt und nicht dynamisch vom DHCP-Server (Router) bezogen.

So, und nun ist Schluß mit PC und Linux. Fahre jetzt in die Weihnachtsferien und werde mir diesen Beitrag erst wieder am 3.1.2005 ansehen. Ich wünsche allen - insbesondere gaw - ein frohes Fest und einen guten Rutsch ins neue Jahr. Und nicht vergessen, "Dinner for one" am 31.12. anzuschauen !!!!! '8)'
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

Wie ich vermutet habe, die Fehlermeldung resultiert aus fehlerhaften Einträgen im Skript, von denen es wahrscheinlich noch mehr gibt. Außerdem scheint einiges an der Konfiguration merkwürdig zu sein.

So kann es nicht funktionieren:

Code: Alles auswählen

interfaces = 192.168.100.100
Entweder so

Code: Alles auswählen

interfaces=192.168.100.100
oder besser so

Code: Alles auswählen

interfaces="192.168.100.100"
Die Fehlermeldungen tauchen aber auch bei der IP des Sambaservers auch und der hat die Nummer 192.168.100.239. Ich vermute fast dass auch hier eine eigene Anpassung durch Einstreuung willkürlicher Leerzeichen zu den Fehlermedlungen führen.

Ich bitte darum, in dem Skript keine Leerzeichen einzustreuen, das führt nur zu einer endlosen Folge von Fehlermeldungen die dich anscheinend nicht nach der Quelle suchen lassen sondern dazu inspirieren weitere eigene Anpassungen vorzunehmen. Die Sambaskripte solltest du gar nicht verändern, das führt zu noch mehr Chaos.

Desweiteren verwendete ich in meinem Skript keine Variable interfaces, so dass ich mich frage, ob, wo und wie du sie einsetzt. Du musst dich schon an die Vorgaben im Skript halten wenn du möchtest dass es funktioniert. Das Verändern einzelner Einträge ohne zu wissen was man macht ist nicht sehr sinnvoll. Und wenn ich dich schon frage, was du verändert hast dann meine ich alles, auch Dir anscheinen unwichtig erscheinenden Einzelheiten wie willkürlich eingestreute Leerzeichen- *Kopf schüttel*.

Deine anderen Einwürfe sind ein Rätsel. In meinem Script gehe ich davon aus, dass du eine feste IP verwendest. Dort steht nirgends etwas davon, dass die IP über dhcp bezogen wird, so dass deine diesbezüglichen Bemerkungen keinen Sinn ergeben.

Nur deinem Angaben sind sehr widersprüchlich und paradox. Du scheinst mal die eine und mal die andere Adresse für deinen Linuxrechner zu verwenden. Was denn nun, soll er die IP 192.168.100.100 oder die Nummer 192.169.100.239 oder die Nummer 192.168.100.16 besitzen? Dein Host benötigt nur eine einzige, jedenfalls wenn er so im Netz eingesetzt werden soll wie du hier geschieldert hast. Du musst für den Samba Service keine extra IP vergeben. Aus deinen ersten geposteten Meldungen konnte ich extrahieren dass du anfangs die 192.168.100.239 verwenden wolltest und habe sie deshalb eintragen. Wenn du dich entscheidest eine andere zu benutzen solltest du den und nur den Eintrag ändern.

Welche du letztlich einträgst ist letztendlich deine Entscheidung, es sollte aber die IP-Adresse des Linuxrechner sein auf dem der Sambaserver läuft und keine andere. Also die IP-Adresse die mit eth0 assoziiert ist und keine andere.

Und genau diese IP sollte in der Variablen INTERFACE_INT meines Skriptes stehen. Und nicht in der Variable interfaces, die ich überhaupt nicht verwende. Und bitte genau so wie im Originalskript ohne willkürlich eingestreute Leerzeichen. Danach sollten wir uns über Fehlermeldungen unterhalten, falls das noch notwendig ist. Und die Bootscripte des Sambaservers solltest du unangetastet lassen.

Bashskripte sind Quellcode, in denen man nicht willkürlich rumpfuscht, es sei denn man weiß was man macht.


mfG
gaw
Antworten