| Start-Scripte |
Bis zur Fertigstellung des Buches verwendete SuSE /sbin/init.d als Pfad für die Init-Scripte
(bis einschließlich SuSE Linux 7.0). Seit SuSE 7.1 finden sich
die Init-Scripte in /etc/init.d.
Außerdem gibt es seit SuSE 7.1 eine Neuordnung der Runlevels:
- 2 = Multiuser ohne Netzwerk (vorher: Netzwerk ohne
X11)
- 3 = Multiuser mit Netzwerk (vorher: Netzwerk + X11)
- 5 = Multiuser, Netzwerk, X11-Oberfläche (neu)
Die Festlegungen beschreiben nur die Absicht, aber meist nicht
exakt das, was tatsächlich gestartet wird. Da auch im Runlevel 2 das
Script "network" gestartet wird (Setzen der Netzwerkinterfaces),
sollte das Firewallscript in den Runleveln 2, 3 und 5 gestartet
werden. Bei anderen Distributionen als SuSE ist der Punkt entsprechend
zu prüfen.
Es empfiehlt sich insbesondere bei Updates - nicht nur von
SuSE bis 7.0 auf höhere Versionen -immer zu prüfen, ob die Firewallscripte
auch tatsächlich beim Systemstart schon ausgeführt werden. Ein
einfaches iptables -nvL zeigt,
ob und welche Regeln gesetzt wurden.
|
ab Kernel 2.4.10
|
Die Kernelparameter bezüglich icmp in /proc/sys/net/ipv4
wurden klammheimlich geändert, so daß die meisten Scripte im Buch hier auf
einen Fehler liefen. Seit Kernel 2.4.19 gibt es wieder Dokumentation dazu
im Kernelbaum:
/usr/src/linux/Documentation/networking/ip-sysctl.txt, dort nach
"icmp_" suchen.
Tip:
echo "5" > /proc/sys/net/ipv4/icmp_ratelimit
tut es erstmal, wer möchte, kann sich den Parameter icmp_ratemask
in der Doku genauer vornehmen, er besitzt aber eine brauchbare
Defaulteinstellung.
|
| smpppd, nicht existente Devices zum Zeitpunkt des
Firewall-Script-Aufrufes |
Der smpppd (ab SuSE 7.3) startet die Devices ziemlich
spät, nach den Beispielen im Buch kann es gerade bei x-DSL zu folgender
Fehlermeldung kommen:
/proc/sys/net/ipv4/conf/ppp0/rp_filter
: no such file or directory
Die Scripte kann man hier so abändern, daß nicht einzelne Devices wie ppp0,
sondern "default" (und/oder "all") gesetzt wird. Dann muß das Interface
zum Zeitpunkt des Scriptstartes nicht existieren:
echo "1" > /proc/sys/net/ipv4/conf/{all,default}/rp_filter
|
| Seite 40
|
traceroute sendet das erste Paket mit TTL=1 (nicht
TTL=0).
|
| Seite 43
|
Die Skizze ist leider ziemlich falsch. Generell nummerieren beide
Seiten unabhängig von einander die Sequenzen. Ein ACK ist dann die letzte
Sequenznummer der Gegenseite +1.
Das Verbindungsende ist in der Zeichnung auch falsch. Das Ende wird
eingeleitet mit einem FIN-Flag. Die Bestätigung des FIN-Flags ist ein normales
ACK-Paket (ohne gesetztes FIN-Flag), das einfach das Paket mit dem FIN-Flag
bestätigt.
In der Gegenrichtung funktioniert das ebenso. Ein Paket mit gesetztem
FIN-Flag wird ebenfalls mit einem normalen ACK (ohne FIN) bestätigt. Verkompliziert
wird das durch den Umstand, daß der Server etwa auf ein FIN-Flag vom Client
im nächsten Paket dieses mit ACK bestätigt und gleichzeitig ein FIN setzt
(ebenfalls Einleitung Verbindungsende). Damit sind dann nur 3 Pakete statt
4 zum vollständigen Verbindungsende erforderlich.
|
| Seite 70 |
Erster grauer Kasten: wenn geprüft werden soll, ob das
ACK gesetzt ist, gleichzeitig aber das SYN-Flag gelöscht ist, muß das
Beispiel so aussehen:
iptables
-A INPUT -p TCP --tcp-flags SYN,ACK ACK ...
|
| Seite 71 |
Bei der Option -m multiport
muß das Schlüsselwort für die Portangabe im Plural angegeben werden:
--source-ports
--destination-ports
--ports
|
| Seite 82 |
Zweiter grauer Kasten: wenn in allen Regelketten die erste
Filterregel ein DROP sein soll, muß das so aussehen:
iptables -I INPUT
1 -j DROP
iptables -I FORWARD 1 -j DROP
iptables -I OUTPUT 1 -j DROP
Im Buch steht bei FORWARD und OUTPUT ein -P für Default Policy.
(Dank an Samuel Kerschbaumer für den Hinweis).
|
Seite 214
|
Beispiel mit SMTP, POP3: die 4 Regel hat vertauschte
Source-/Destination-Ports:
$IPTABLES -A
INPUT -p TCP --dport $p_high \
-s $mail --sport pop3 ! --syn -j
ACCEPT
|
Seite 217
|
Noch ein --sport/--dport Tip-Fehler:
$IPTABLES -A
INPUT -p TCP -s $FRIEND --sport ssh
\
! --syn --dport
$p_ssh -j ACCEPT
|
| Seite 224 |
Das Präfix für den Runlevel-Link sollte S06 statt S04
betragen:
/etc/init.d/rc2.d/S06fw_surfer
/etc/init.d/rc3.d/S06fw_surfer
/etc/init.d/rc5.d/S06fw_surfer
Begründung: die Netzwerkinterfaces werden erst über
S05network gestartet. Existiert das Netzwerkinterface nicht, klappen
die Einstellungen via /proc/sys/net/ipv4/conf/<interface>
nicht, weil das Unterverzeichnis <interface noch nicht existiert.
Auf jeden Fall ab SuSE 7.1 den Runlevel 5 nicht vergessen,
bei anderen Distributionen entsprechend anpassen.
|
Seite 238
Seite 256
Seite 275
Seite 297
Seite 302 |
Fast alle Scripte enthalten weit vorne eine Regel, die
eingehenden Verbindungsaufbau generell ablehnt:
# ----------------------------------------------------------
# Rückkanal: eingehende Pakete
zu einer bestehenden Verbindung
$IPTABLES -A INPUT -m state
--state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES
-A INPUT -m state --state NEW,INVALID -j my_drop
Soll die ident-Abfrage (eingehende Verbindung) wie vorgeschlagen
am Ende des Scriptes rejected werden, muß entweder die REJECT-Regel
vor der INPUT-Regel mit --state NEW,INVALID stehen, oder man
streicht die Regel ganz (nicht erlaubte Pakete werden ja sowieso am
Ende über die Ausputzerregel abgefangen).
|
| Seite 300 |
Das richtige Interface im Script für den äußeren Paketfilter
exa nach drinnen muß lauten:
set DMZ = eth0
Im Text steht eth1:0
|
Seite 309
|
Die Angabe --to-source ist falsch, richtig muß es
heißen:
$IPTABLES -t
nat -A PREROUTING -i $EXT \
-p TCP --sport $p_high --dport
http \
-j DNAT --to-destination $httpsrv
|
Seite 317
|
Die Angabe --to-source ist falsch, richtig muß es
heißen:
$IPTABLES -t
nat -A PREROUTING -i $INT \
-p TCP --sport $p_high --dport
80 \
-j DNAT --to-destination ${squidsrv}:3128
Natürlich stimmt auch der Kommentar in der Überschrift nicht: das
Beispiel hat nichts mit FTP zu tun.
|
| Anhang C: SSH |
Im Text angegeben ist, daß die Konfiguration für ssh und
openssh im wesentlichen identisch ist. Das ist auch richtig.
Aber es gibt kleine Inkompatibilitäten:
- Seite 436: Parameter AllowHosts
ist nur bei ssh gültig, openssh kennt den Parameter nicht.
|
| Literatur-Verzeichnis |
[BSI99] ist unter die Räder gekommen: der richtige Eintrag
heißt:
[BSI99] Bundesamt für Sicherheit
in der Informationstechnik, Herausgeber. IT-Grundschutzhandbuch,
Band 3. Bundesanzeiger Verlag, Bonn, 1999
|