IPsec Manual Keying
Version vom 5. Oktober 2016, 07:39 Uhr von Janning (Diskussion | Beiträge)
Installation/Vorraussetzungen
Für diese Art der Verbindung wird das Programm "setkey" benötigt, dass im Paket "ipsec-tools" vorhanden ist
- apt-get install ipsec-tools
Konfigurationsdatei erstellen
- In einem beliebigen Verzeichnis eine Datei mit folgendem Inhalt erstellen
#!/usr/sbin/setkey -f
flush;
spdflush;
# ESP
add 192.168.244.2 192.168.242.1 esp 15701 -m tunnel
-E 3des-cbc "123456789012123456789012"
-A hmac-sha1 "this is the test key";
add 192.168.242.1 192.168.244.2 esp 24501 -m tunnel
-E 3des-cbc "123456789012123456789012"
-A hmac-sha1 "this is the test key";
spdadd 10.88.88.0/24 10.44.44.0/24 any -P out ipsec
esp/tunnel/192.168.242.1-192.168.244.2/require;
spdadd 10.44.44.0/24 10.88.88.0/24 any -P in ipsec
esp/tunnel/192.168.244.2-192.168.242.1/require;
- Auf der Gegenseite muss die selbe Datei erstellt werden, lediglich die IP-Addressen müssen vertauscht werden
Starten
- chmod + x /usr/local/sbin/tunnel.sh
- ./ /usr/local/sbin/tunnel.sh
Überprüfung des Tunnels
- setkey -D
192.168.242.1 192.168.244.2 esp mode=tunnel spi=24501(0x00005fb5) reqid=0(0x00000000) E: 3des-cbc 31323334 35363738 39303132 31323334 35363738 39303132 A: hmac-sha1 74686973 20697320 74686520 74657374 206b6579 seq=0x00000000 replay=0 flags=0x00000000 state=mature created: Oct 5 09:31:55 2016 current: Oct 5 09:32:01 2016 diff: 6(s) hard: 0(s) soft: 0(s) last: hard: 0(s) soft: 0(s) current: 0(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 0 hard: 0 soft: 0 sadb_seq=1 pid=15756 refcnt=0 192.168.244.2 192.168.242.1 esp mode=tunnel spi=15701(0x00003d55) reqid=0(0x00000000) E: 3des-cbc 31323334 35363738 39303132 31323334 35363738 39303132 A: hmac-sha1 74686973 20697320 74686520 74657374 206b6579 seq=0x00000000 replay=0 flags=0x00000000 state=mature created: Oct 5 09:31:55 2016 current: Oct 5 09:32:01 2016 diff: 6(s) hard: 0(s) soft: 0(s) last: hard: 0(s) soft: 0(s) current: 0(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 0 hard: 0 soft: 0 sadb_seq=0 pid=15756 refcnt=0
Anmerkung
Diese Konfiguration ist aus Sicherheitstechnischer Sicht bedenklich und sollte in der praktischen Anwendung nicht verwendet werden. Sie kann jedoch zu Demonstrationszwecken eingesetzt werden, etwa um vorzuführen wie eine VPN gehackt und entschlüsselt werden kann.
Siehe hierzu: Wireshark VPN entschlüsseln
Alternative
- /usr/local/sbin/tunnel.sh
#!/bin/bashWireshark VPN entschlüsseln
if [ "$4" == "" ]; then
echo "usage: $0 <local_ip> <remote_ip> <new_local_ip> <new_remote_ip>"
echo "creates an ipsec tunnel between two machines"
exit 1
fi
SRC="$1"; shift
DST="$1"; shift
LOCAL="$1"; shift
REMOTE="$1"; shift
KEY1=0x`dd if=/dev/urandom count=32 bs=1 2> /dev/null| xxd -p -c 64`
KEY2=0x`dd if=/dev/urandom count=32 bs=1 2> /dev/null| xxd -p -c 64`
echo KEY1 = $KEY1
echo KEY2 = $KEY2
ID=0x`dd if=/dev/urandom count=4 bs=1 2> /dev/null| xxd -p -c 8`
echo "spdflush; flush;" | sudo setkey -c
echo ip xfrm state add src $SRC dst $DST proto esp spi $ID reqid $ID mode tunnel auth sha256 $KEY1 enc aes $KEY2
sudo ip xfrm state add src $SRC dst $DST proto esp spi $ID reqid $ID mode tunnel auth sha256 $KEY1 enc aes $KEY2
echo ip xfrm state add src $DST dst $SRC proto esp spi $ID reqid $ID mode tunnel auth sha256 $KEY1 enc aes $KEY2
sudo ip xfrm state add src $DST dst $SRC proto esp spi $ID reqid $ID mode tunnel auth sha256 $KEY1 enc aes $KEY2
echo ip xfrm policy add src $LOCAL dst $REMOTE dir out tmpl src $SRC dst $DST proto esp reqid $ID mode tunnel
sudo ip xfrm policy add src $LOCAL dst $REMOTE dir out tmpl src $SRC dst $DST proto esp reqid $ID mode tunnel
echo ip xfrm policy add src $REMOTE dst $LOCAL dir in tmpl src $DST dst $SRC proto esp reqid $ID mode tunnel
sudo ip xfrm policy add src $REMOTE dst $LOCAL dir in tmpl src $DST dst $SRC proto esp reqid $ID mode tunnel
#echo 5
#sudo ip addr add $LOCAL dev lo
#echo 6
#sudo ip route add $REMOTE dev eth0 src $LOCAL
ssh $DST /bin/bash << EOF
echo "spdflush; flush;" | sudo setkey -c
sudo ip xfrm state add src $SRC dst $DST proto esp spi $ID reqid $ID mode tunnel auth sha256 $KEY1 enc aes $KEY2
sudo ip xfrm state add src $DST dst $SRC proto esp spi $ID reqid $ID mode tunnel auth sha256 $KEY1 enc aes $KEY2
sudo ip xfrm policy add src $REMOTE dst $LOCAL dir out tmpl src $DST dst $SRC proto esp reqid $ID mode tunnel
sudo ip xfrm policy add src $LOCAL dst $REMOTE dir in tmpl src $SRC dst $DST proto esp reqid $ID mode tunnel
# sudo ip addr add $REMOTE dev lo
# sudo ip route add $LOCAL dev eth0 src $REMOTE
EOF