Cisco IOS DHCP Server

Cisco Router können als DHCP-Server fungieren.

Folgendes wird angenommen:

Netz: 10.0.0.0/8
DHCP-Bereich: 10.6.0.0 bis 10.8.17.4
DNS: 10.11.12.13
Gateway: 10.0.0.1

!
ip dhcp pool DHCP_POOL
network 10.0.0.0 255.0.0.0
default-router 10.0.0.1
dns-server 10.11.12.13
class DEFAULT
address range 10.6.0.0 10.8.17.4
!
!
ip dhcp class DEFAULT
!

Zu beachten ist, dass die ACL für das Netzwerk-Interface folgendes mit drin hat:

access-list 142 permit udp any any eq bootpc
access-list 142 permit udp any any eq bootps

Ab jetzt verteilt der Router die IP-Adressen für das Netz.

Transparenter Squid Proxy

Transparenter Squid Proxy auf Ubuntu 8.04.1 Server

Im Internet kursieren verschiedene Anleitungen, wie man einen transparenten Squid Proxy aufsetzt. Leider sind einige veraltet, beziehen sich auf den alten Squid oder sonst etwas älteres. Ich habe mir vorgenommen eine aktuelle Anleitung zu schreiben, die auf dem Ubuntu Server 8.04.1 (Hardy Heron) basiert.

Der Server braucht mindestens 2 Netzwerkkarten, bevorzugt Inten PRO-1000. Ich nehme an, das lokale Netz ist 192.168.0.0/24, der Router hat die IP 192.168.0.1 und unser Proxy bekommt die IP 192.168.0.2 und die Nameserver haben die IPs 193.101.111.20 sowie 193.101.111.10.

Zuerst ist eine Ubuntu-Installation vorzunehmen. Diese wird normal gemacht, aber am Ende wird nur noch der SSH-Server installiert.

Nach der Installation installieren wir einige Pakete:

# apt-cache search squid | grep -e "^squid " -e "^sqcwa " -e "^squid-prefetch " -e "^bridge-utils "
squid - Internet object cache (WWW proxy cache)
sqcwa - Workaround for Squid not caching some pages
squid-prefetch - Simple page-prefetch for Squid web proxy
bridge-utils - Utilities for configuring the Linux ethernet bridge
# apt-get install squid sqcwa squid-prefetch bridge-utils

In /etc/squid/squid.conf suchen wir die folgende Zeilen:

http_port 3128
#acl our_networks src 192.168.1.0/24 192.168.2.0/24
#http_access allow our_networks

und ändern es in:

http_port 3128 transparent
acl our_networks src 192.168.0.0/24
http_access allow our_networks

Danach ersetzen wir den Inhalt von /etc/network/interfaces durch:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto br0
iface br0 inet static
pre-up brctl addbr br0
pre-up brctl addif br0 eth0
pre-up brctl addif br0 eth1
pre-up ifconfig eth0 0.0.0.0
pre-up ifconfig eth1 0.0.0.0
post-down brctl delbr br0
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
bridge_fd 0
bridge_hello 0
bridge_stp off

Dann noch DNS in /etc/resolv.conf:

nameserver 193.101.111.20
nameserver 193.101.111.10

Vor dem Ende kommt noch die magische iptables-Regel in die /etc/rc.local:

/sbin/iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Sollten wir irgendwann einen Paketfilter auf iptables-Basis haben so fügen wir diese Regel dort ein.

Am Ende shutdown. Jetzt stellen wir den Proxy neben dem Router, schliessen eine Netzwerkkarte an den Router direkt und die andere an das Netzwerk. Welche wohin ist vollkommen egal.

Das Ganze ist natürlich beliebig ausbaufähig…

Einschalten, fertig ;)

Das böse ICMP

“ICMP ist Böse.” Warum eigentlich?

Frühertm, als das Internet noch aus wenigen (einigen Tausenden) Nodes bestand gab es ein großes Problem, das Ping of Death. Packete, die eine bestimmte größe hatten brachten den IP-Stack mancher Betriebssysteme zum Absturz. Dies wurde auch ausgenutzt.

Heute verrichtet ICMP verschiedene nutzliche Sachen. Es unterrichtet die beiden Seiten einer TCP-Übertragung darüber, dass eine Leitung voll ist oder eine Anwendung nicht schnell genug die Daten verarbeitet, ein Router schickt eine Nachricht, dass ein Host nicht erreichbar ist usw… also im Prinzip nichts böses.

Im Prinzip, also in der Theorie. In der Praxis kann man schon böses damit anstellen. Wenn man nur bischen kriminelle Energie hat ;)

ICMP lebt auf Layer 4 im OSI-Schichtmodell, neben UDP, TCP usw. Es hat die Protokollnummer 1. Nebenbei: TCP hat 6 und UDP 17.

Wie wir bei IANA (http://www.iana.org/assignments/icmp-parameters) nachlesen können gibt es einige Nachrichten, die versandt oder empfangen werden können:

Type Name Reference


0 Echo Reply [RFC792]
1 Unassigned [JBP]
2 Unassigned [JBP]
3 Destination Unreachable [RFC792]
4 Source Quench [RFC792]
5 Redirect [RFC792]
6 Alternate Host Address [JBP]
7 Unassigned [JBP]
8 Echo [RFC792]
9 Router Advertisement [RFC1256]
10 Router Solicitation [RFC1256]
11 Time Exceeded [RFC792]
12 Parameter Problem [RFC792]
13 Timestamp [RFC792]
14 Timestamp Reply [RFC792]
15 Information Request [RFC792]
16 Information Reply [RFC792]
17 Address Mask Request [RFC950]
18 Address Mask Reply [RFC950]
19 Reserved (for Security) [Solo]
20-29 Reserved (for Robustness Experiment) [ZSu]
30 Traceroute [RFC1393]
31 Datagram Conversion Error [RFC1475]
32 Mobile Host Redirect [David Johnson]
33 IPv6 Where-Are-You [Bill Simpson]
34 IPv6 I-Am-Here [Bill Simpson]
35 Mobile Registration Request [Bill Simpson]
36 Mobile Registration Reply [Bill Simpson]
37 Domain Name Request [RFC1788]
38 Domain Name Reply [RFC1788]
39 SKIP [Markson]
40 Photuris [RFC2521]
41 ICMP messages utilized by experimental [RFC4065]
   mobility protocols such as Seamoby
42-255 Reserved [JBP]

Sollte man also ICMP auf der Firewall komplett blocken?

Meine Antwort lautet NEIN. Auf keinen Fall. Eine gut eingerichtete Firewall antwortet wohl auf z.B. ICMP Echo. Nur weil eine, beispielweise, IPSEC Firewall nicht auf “ping” antwortet heisst nicht, dass man nicht rausfinden kann ob sie da ist.

ICMP-Typen die auf jeden fall durchgelassen werden sollten sind:

0,3,4,5,6,8,11,12,30

Dann funktioniert die Firewall richtig und es gibt keine merkwürdigen Probleme. Man kann aber durchaus komplett ICMP erlauben. Es ist nicht Böse! ;)

Viel wichtiger ist es z.B. FTP abzusichern, da es “Löcher” bohren kann oder aufzupassen, dass die Hosts nicht von Innen nach Aussen Verbindungen aufbauen, was z.B. bei geknackten Rechnern der Fall sein kann, der Tunneling über DNS.

Also, lass uns pingen…