Ciphwall
Aus Ciphron Knowledge Base
Inhaltsverzeichnis |
Grundeinrichtung
Zugriff via Seriell
Für die Erstkonfiguration empfiehlt sich der Login via seriellem Kabel. Benutzen Sie dazu bei der CiphWall MINI G1 den ausgewiesenen COM Port, bei anderen CiphWall Geräten den Port CONSOLE.
Die Verbindungeinstellungen lauten wie folgt: 38400 8/N/1
38400 baud 8 Datenbits kein Stopbit 1 Paritätsbit
Unter Windows können Sie das Programm HyperTerm (Start -> Programme -> Zubehör -> HyperTerminal) nutzen, unter Linux, FreeBSD oder OpenBSD empefhlen wir Minicom.
Interfaces
Die Konfiguration der Interfaces erfolgt in der Datei /etc/ciphos.cfg:
Relevant sind die Parameter:
if_cnt - Anzahl der *aktiven* Interfaces
if_* - Konfigurationsblock pro Interface
Aktivieren der Konfiguration via Neustart des Systems.
Anzeigen der Netzwerkinterfaces
ifconfig -a
Kurzfristiges Umkonfigurieren von Interfaces:
- IP Addresse setzen / ändern:
ifconfig <INTERFACE> <IP_ADDRESSE> netmask <NETMASK> up
- Alias hinzufügen:
ifconfig <INTERFACE> alias <IP_ADDRESSE> netmask <NETMASK>
- IP Addresse entfernen:
ifconfig <INTERFACE> delete <IP_ADDRESSE>
Routen
Grundsätzlich kann jede Netzmaske auch in CIDR (/XX) angegeben werden.
Einrichtung des Default Gateways
Temporär
/sbin/route delete default # route entfernen /sbin/route add default <IP_ADDRESS>
Dauerhaft
vi /etc/ciphos.cfg
anpassen des Parameters 'gw':
gw=1.2.3.4
und anschliessender reboot mittels:
reboot
Einrichten von Host und Netzrouten
Temporär hinzufügen:
/sbin/route add -net xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy zzz.zzz.zzz.zzz #(Netzroute) /sbin/route add -host xxx.xxx.xxx.xxx zzz.zzz.zzz.zzz #(Hostroute)
Temporär löschen:
/sbin/route delete -net xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy
Statisch:
Editieren Sie die Datei /etc/route.conf mit vi oder nano:
# Netzroute /sbin/route add -net xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy zzz.zzz.zzz.zzz
# Hostroute /sbin/route add -host xxx.xxx.xxx.xxx zzz.zzz.zzz.zzz
Legende:
xxx.xxx.xxx.xxx <- Netzwerkaddresse
yyy.yyy.yyy.yyy <- Subnetzmaske
zzz.zzz.zzz.zzz <- Gateway IP
Features
Dynamic DNS
DSL Zugang
Bridging
Wireless
Firewalling
Einführung PF
NAT
Paketfilter
Loadbalancing
Traffic Shaping / QoS
FTP
Beispiele
Asterisk / SIP
Webseiten
VPN
IPSEC
Laden von Konfigurationen
isakmpd -K
ipsecctl -f /etc/ipsec.conf
Beenden von IPSEC
Damit Sie den IPSEC Prozess neu initialisieren können, müssen Sie als erstes die ProcessID (PID) ermitteln:
# ps auxwww | grep isakmpd root 23911 0.0 0.4 992 468 ?? I 11:47AM 0:00.01 isakmpd: monitor [priv] (isakmpd) _isakmpd 10585 0.0 1.9 2360 2424 ?? S 11:47AM 0:01.66 isakmpd -K -DA=40 -d
Die PID finden Sie in der zweiten Spalte (hier 23911 und 10585). Nun beenden Sie bitte den Prozess mit:
kill <PID>
Es ist dabei egal, ob Sie die PID aus Zeile 1 oder Zeile 2 nutzen, wenn wir also Zeile 1 nutzen, lautet der Aufruf wie folgt:
kill 23911
Nun ist der Prozess beendet.
Neustarten von IPSEC
Um IPSEC neuzustarten, müßen Sie den isakmpd beenden und ihn dann erneut starten. Siehe Abschnitt Beenden von IPSEC und Laden von Konfigurationen.
Einrichten von Tunneln
Grundlagen IPSEC:
Unterstütze Modi:
Main-Mode
Authentication Key Length hmac-md5 128 bits hmac-sha1 160 bits hmac-sha2-256 256 bits hmac-sha2-384 384 bits hmac-sha2-512 512 bits
Cipher Key Length des 56 bits 3des 168 bits aes 128 bits blowfish 160 bits cast 128 bits skipjack 80 bits
Quick-Mode:
Authentication Key Length hmac-md5 128 bits hmac-ripemd160 160 bits hmac-sha1 160 bits hmac-sha2-256 256 bits hmac-sha2-384 384 bits hmac-sha2-512 512 bits
Cipher Key Length des 56 bits 3des 168 bits aes 128 bits aesctr 160 bits blowfish 160 bits cast 128 bits skipjack 80 bits
Struktur:
für passives IKE (eingehende Verbindungen):
ike passive esp from <QUELL_NETZ>/<CIDR> to <ZIEL_NETZ>/<CIDR> \
local <EIGENE_IP> peer <IP_GEGENSEITE> \
main auth <AUTH_ALG> enc <CRYPTO_ALG> group <DH_GROUP> \
quick auth <AUTH_ALG> enc <CRYPTO_ALG> group <DH_GROUP> \
psk <PRESHARED_KEY>
für IKE (wir etablieren die Verbindung):
ike esp from <QUELL_NETZ>/<CIDR> to <ZIEL_NETZ>/<CIDR> \
local <EIGENE_IP> peer <IP_GEGENSEITE> \
main auth <AUTH_ALG> enc <CRYPTO_ALG> group <DH_GROUP> \
quick auth <AUTH_ALG> enc <CRYPTO_ALG> group <DH_GROUP> \
psk <PRESHARED_KEY>
Beispiel:
ike passive esp from 10.0.0.0/16 to 10.1.0.0/16 \
local 1.2.3.4 peer 5.6.7.8 \
main auth hmac-sha1 enc 3des group modp1536 \
quick auth hmac-sha1 enc 3des group none \
psk XXXXXXXXX
Anzeigen von Tunneln
das Anzeigen von etablierten Tunneln erfolgt mit dem Befehl:
netstat -rn -f encap
Fehleranalyse
den ISAKMPD Prozess im Debugging Mode starten:
isakmpd -K -DA=40 -d
Nun wird auf der Kommandozeile gelogt.
Bitte beachten, dass das IPSEC Regelwerk noch via
ipsecctl -f /etc/ipsec.conf
geladen werden sollte.
Client Installation
Windows
OpenBSD
Linux
OpenVPN
Anzeigen der etablierten Tunnel
Exkurs: X.509 Zertifikate
Inkurs: Lieber PGP benutzen.
Generieren von Zertifikaten
Sperren von Zugängen
Client Installation
Windows
OpenBSD
Linux
Ciphwall Management
Assoziieren der Ciphwall zum Ciphwall Management
- Das System muss über einen festen Hostnamen (besser: feste IP-Adresse) erreichbar sein
- Damit das Management Center die CiphWall verwalten kann, muss der Management-SSH-Key auf dem Zielsystem authorisiert werden:
$ ssh root@ZIELSYSTEM "mkdir -p /root/.ssh" $ scp /var/ciphwall-mgn/manager_key/manager.pub root@ZIELSYSTEM:/root/.ssh/authorized_keys
- Ausserdem muss die ciphos.cfg auf dem Zielsystem entsprechend angepasst werden:
openvpn="yes" httpd="yes" CWMGM="yes"
- Damit ein Kunde eine IP aus dem Transfernetz (192.168.19.0/24) bekommt, muss der DHCPd in /etc/ciphos.cfg und /etc/dhcpd.conf konfiguriert sein.
- Damit ein Kunde surfen kann, müssen DNS-Client (/etc/resolv.conf) und DNS-Server (DNSSRV="" in /etc/ciphos.cfg) auf der Mini konfiguriert sein.
Ciphwall Management spezifische Befehle
Webservices
Lastverteilung auf Webserver
HTTPS auf HTTP Reverse Proxy
Die Konfiguration eines HTTPS/HTTP Reverse Proxy erfolgt in der Datei /etc/pound.conf.
Hier wird folgendes Szenario exemplarisch geschildert:
INTERNET ------------ CiphWall ------------- Interner Webserver (HTTP)
Die Ciphwall hat die externe IP 81.1.2.3 der Interne Webserver hat die IP 10.10.10.10
Um nun die Webseite vom Internen Webserver, die via HTTP bereitgestellt wird, ins Internet unter HTTPS zu publizieren, muss folgendes beachtet werden:
- ein gültiges SSL Zertifikat inklusive Privatekey im PEM Format in einer Datei muss vorhanden sein. Dieses muss zB mit WinSCP unter /etc/pound/server.pem gespeichert werden.
- der Zugriff auf die Ciphwall via HTTPS muss moeglich sein (/etc/pf.conf):
pass in quick on $Ext_if from any to 81.1.2.3 port 443 keep state
- der Interne Webserver muss Anfragen der CiphWall auf Port 80 bearbeiten können:
- Test mittels telnet 10.10.10.10 80 auf der CiphWall
Konfigurationsdatei /etc/pound/pound.cfg:
# debugging only:
#Daemon 0
#LogFacility -
#LogLevel 5
ListenHTTPS
Address 81.1.2.3
Port 443
Cert "/etc/pound/server.pem"
Service
BackEnd
Address 10.10.10.10
Port 80
End
End
End
Starten von Pound:
pound -f /etc/pound/pound.conf
Pound Start beim Booten:
echo "/usr/local/sbin/pound -f /etc/pound/pound.conf" >> /etc/rc.local
Beenden von pound:
ps auxwww | grep pound
kill <PID_VON_POUND>
oder
pkill pound
Weiterfuehrende Literatur:
Pound Webseite: http://www.apsis.ch/pound/
Anmerkungen:
ACHTUNG! Fuer Pound Version 1 (CiphOS < 4.3.4) gilt eine andere Konfigurationssyntax:
Version ist erkennbar, dadurch, dass pound -V keine Ausgabe bzw Fehler liefert.
Obiges Beispiel in pound V1:
LogLevel 3 ListenHTTPS 81.1.2.3,443 /etc/pound/server-test.pem UrlGroup ".*" BackEnd 10.10.10.10,80,1 EndGroup
HTTP Proxy
Netzwerkanalyse
Antwortzeiten und Erreichbarkeit
ping
ping ist ein Programm mit dem man sehr einfach testen kann ob ein Gerät über Netzwerk zu erreichen ist. Dazu öffnen Sie ein Terminal und geben Sie ping -c3 und die IP-Adresse des Gerätes ein. Die Zeile muss in etwa so aussehen.
ping -c3 10.0.0.40
Wenn Sie Windows benutzen lassen Sie das -c3 weg also
ping 10.0.0.40
Wenn Ausgabe von ping wie folgt aussieht ist das Gerät erreichbar. Die Zahl hinter time= ist die Antwortzeit in millisekunden.
PING 10.0.0.40 (10.0.0.40) 56(84) bytes of data. 64 bytes from 10.0.0.40: icmp_seq=1 ttl=64 time=2.58 ms 64 bytes from 10.0.0.40: icmp_seq=2 ttl=64 time=2.14 ms 64 bytes from 10.0.0.40: icmp_seq=3 ttl=64 time=2.11 ms --- 10.0.0.40 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 2.111/2.277/2.580/0.221 ms
Falls die Ausgabe so aussieht ist das Gerät garnicht oder unter einer andern IP-Adresse zu erreichen.
PING 10.0.0.40 (10.0.0.10) 56(84) bytes of data. From 10.0.0.49 icmp_seq=1 Destination Host Unreachable From 10.0.0.49 icmp_seq=2 Destination Host Unreachable From 10.0.0.49 icmp_seq=3 Destination Host Unreachable --- 10.0.0.10 ping statistics --- 3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 1999ms , pipe 3
Bandbreitenmessung
Trafficanalyse
FAQ
Logfile Analyse über Reboots hinweg
Um die Logfiles von zum Beispiel Ihrer CiphWall auch nach einem Neustart noch analysieren zu können gibt es die Möglichkeit die Logs auf einem Server (Host) speichern zu lassen. Dazu müssen Sie auf dem der Ciphwall in der Datei /etc/syslog.conf die folgende Zeile hinzufügen.
*.* @ip-Adresse-des-Hosts
Auf der Host muss der Syslog jetzt noch so eingestellt werden dass er die Logs der CiphWall annimmt.
OpenBSD Host
Unter OpenBsd muss der syslogd mit dem Parameter -u gestartet werden.
Linux Host
Unter Linux muss der syslogd mit dem Parameter -r gestartet werden.
Windows Host
Unter Windows kann der "Kiwi Syslog Daemon" die Logs von Ihrer CiphWall empfangen. [[1]]
