Shrew VPN op OpenSUSE

Een van de hulpmiddelen die wordt gebruikt om verbinding te maken met netwerken via VPN is Shrew. Shrew wordt vooral gebruikt voor Juniper Networks.
Er zijn al vele pogingen gedaan om shrew op openSUSE aan het werk te krijgen maar met weinig of wisselend resultaat.
Nu blijkt ook openSUSE inmiddels een versie van Shrew in een repository te hebben. In dit document wordt uiteengezet wat je moet doen om Shrew werkend te krijgen.

Installatie Shrew
De installatie bestaat uit de volgende punten. Deze punten zullen verderop in het document stapsgewijs worden beschreven.

  • Toevoegen additionele software bron (repository)
  • Installatie Shrew software (IKE)
  • Init start en stop scripts.
  • Snelkoppeling

Toevoegen software bron
Om Shrew te installeren moet je eerst in Yast2 een extra software bron toevoegen.

Start Yast2 Ga naar de sectie oftware Kies voor Software Reposities

  • Klik op ADD.
  • Kies voor Specify URL… en klik next Geeft de repository een naam. Bijvoorbeeld : security De URL van de repository is:Index of /repositories/security/openSUSE_11.3
  • Klik op Next. Er komt nu een melding voor GNUPG key. Deze kun je importeren.
  • Klik vervolgens op OK en sluit de Repository management af.

Installatie Shrew
Na het toevoegen van de installatie bron, is het tijd om de software zelf te installeren.

Start Yast2.
Ga naar de sectie: SoftwareKies voor Software ManagementGebruik de zoek filter en vul daar “ike” inUit de lijst met beschikbare software selecteer “ike”
klik op Apply en wacht tot de installatie voltooid is.Sluit Yast2.

Init script
Voordat de Shrew client gebruikt kan worden moet de IKE deamon gestart zijn. Dit kan met de hand worden gedaan door als root het volgende commando uit te voeren:

/usr/sbin/iked

Om ervoor te zorgen dat de ike deamon gestart wordt wanneer het systeem gestart wordt is het handiger om een init script te maken. Hiervoor moet je wel root rechten hebben op het systeem.

Het init script zit er als volgt uit:


#! /bin/sh
#
# Author: Harald van Bree, 2011
#
# /etc/init.d/iked
#   and its symbolic link
# /usr/sbin/iked
### BEGIN INIT INFO
# Provides:          iked
# Required-Start:    $network $local_fs
# Required-Stop:
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: ike – The Shrew Soft VPN Client
# Description:  The Shrew Soft VPN Client for Unix is a free IPsec Client for FreeBSD, NetBSD and Linux based operating systems.
#                It was originally developed to provide secure communications between mobile Windows hosts and open source VPN
#                gateways that utilize standards compliant software such as ipsec-tools, OpenSWAN, FreeSWAN, StrongSWAN, isakmpd.
#                It now offers many of the advanced features only found in expensive commercial software solutions and provides
#                compatibility for VPN appliances produced by vendors such as Cisco, Juniper, Checkpoint, Fortinet, Netgear,
#                Linksys, Zywall and many others. It supports most of the features availalble in the Windows VPN Client version
#                with the exception of those which are not cross platform compatible.
### END INIT INFO
# Check for missing binaries
IKED_BIN=/usr/sbin/iked
test -x $IKED_BIN || { echo “$IKED_BIN not installed”;
if  "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
# Check for existence of needed config file and read it
#BAR_CONFIG=/etc/bar.cfg
#test -r $BAR_CONFIG || { echo “$BAR_CONFIG not existing”;
#        if  "$1" = "stop" ]; then exit 0;
#        else exit 6; fi; }
# Read config
#. $BAR_CONFIG
# Load the rc.status script for this service.
. /etc/rc.status
# Reset status of this service
rc_reset
case “$1″ in
start)
echo -n “Starting IKE Deamon”
## Start daemon with startproc(8). If this fails
## the return value is set appropriately by startproc.
startproc $IKED_BIN
# Remember status and be verbose
rc_status -v
;;
stop)
echo -n “Shutting down IKE Deamin ”
## Stop daemon with killproc(8) and if this fails
## killproc sets the return value according to LSB.
killproc -TERM $IKED_BIN
# Remember status and be verbose
rc_status -v
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
reload)
# If it supports signaling:
echo -n “Reload service bar ”
killproc -HUP $IKED_BIN
#touch /var/run/iked.pid
rc_status -v
## Otherwise if it does not support reload:
#rc_failed 3
#rc_status -v
;;
status)
echo -n “Checking for service IKED ”
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# Return value is slightly different for the status command:
# 0 – service up and running
# 1 – service dead, but /var/run/  pid  file exists
# 2 – service dead, but /var/lock/ lock file exists
# 3 – service not running (unused)
# 4 – service status unknown )
# 5–199 reserved (5–99 LSB, 100–149 distro, 150–199 appl.)
# NOTE: checkproc returns LSB compliant status values.
checkproc $IKED_BIN
# NOTE: rc_status knows that we called this init script with
# “status” option and adapts its messages accordingly.
rc_status -v
;;
*)
## If no parameters are given, print which are avaiable.
echo “Usage: $0 {start|stop|status|restart|reload}”
exit 1
;;
esac

sla dit bestand op in /etc/init.d/iked en maakt het executable door

chmod 744 /etc/init.d/iked

En plaats een symlink van het bestand in /sbin

ln -s /etc/init.d/iked /sbin/rciked

Nu beschikken we over een start en stop script voor de IKE deamon. Deze kan worden gestart en gestopt door middel van “rciked start” en “rciked stop”
Om ervoor te zorgen dat de IKE deamon gestart wordt tijdens het opstarten van de machine moet je het volgende commando als root uitvoeren:

chkconfig -a iked

Start nu de IKE Deamon door “rciked start” als root uit te voeren.

Snelkoppeling
De laatste stap is om ervoor te zorgen dat je de Shrew client kunt starten vanaf je desktop.
Klik met de rechter muisknop op je bureaublad en kies voor “Create Launcher…”

Vul de volgende velden in zoals weer gegeven in de onderstaande tabel:

Type: Application
Name: Shrew
Command: /usr/bin/ikea
Comment: Shrew VPN client

Klik vervolgens op OK en nu kun je een VPN verbinding opzetten met Shrew.

Dit werkt ook op OpenSUSE 11.4. Het enige wat dan anders is, is de repositoy. Je moet dan de volgende repository gebruiken:Index of /repositories/security/openSUSE_11.4

Een tunnel opzetten is geen probleem als je de voorgaande stappen hebt genomen. Echter zit er in de meeste Kernel configuraties een beveiliging die ervoor zorgt dat er geen verkeer door de tunnel gaat. Om dit probleem op te lossen moet je als root het bestand /etc/sysctl.conf bewerken. Hiervoor moet je overigens wel root rechten hebben. In dit bestand moet je de de volgende regel zetten:

# enable route verification on all interfaces
net.ipv4.conf.all.rp_filter = 0

That’s it. Happy tunneling