# IPSec Roadwarrior-VPN via racoon

Dieses Dokument beschreibt die Konfiguration und den Betrieb eines VPN mit Preshared-Keys und Racoon unter Fedora Core 4.

<div id="bkmrk-falls-nicht-vorhande"><div>- <div>Falls nicht vorhanden, das Verzeichnis „/etc/racoon“ anlegen, hier werden alle Configfiles abgelegt</div>

</div></div>/etc/racoon/setkey.conf

<div id="bkmrk-%23%21%2Fsbin%2Fsetkey--f-%23-"><div>```
#!/sbin/setkey -f

# Flush the SAD and SPD
flush;
spdflush;

############################################################
# Roadwarrior <-> Gateway

# 123.123.123.123 = externe IP des Gateways
# 192.168.1.0/24  = internes Netz auf Gateway-Seite

# HOST to HOST
spdadd 123.123.123.123 0.0.0.0 any -P out ipsec
   esp/tunnel/123.123.123.123-0.0.0.0/require;
spdadd 0.0.0.0 123.123.123.123 any -P in ipsec
   esp/tunnel/0.0.0.0-123.123.123.123/require;

# HOST to LAN
spdadd 192.168.1.0/24 0.0.0.0 any -P out ipsec
   esp/tunnel/123.123.123.123-0.0.0.0/require;
spdadd 0.0.0.0 192.168.1.0/24 any -P in ipsec
   esp/tunnel/0.0.0.0-123.123.123.123/require;
############################################################
```

- <div>mit „chmod 0700 /etc/racoon/setkey.conf“ lesen/schreiben/ausführen für root setzen.</div>

</div></div>/etc/racoon/racoon.conf

<div id="bkmrk-path-include-%22%2Fetc%2Fr"><div>```
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

# Preshared Keys
remote anonymous {
        exchange_mode aggressive, main, base;
        #doi ipsec_doi;
        nat_traversal on;
        generate_policy on;
        passive on;
        #my_identifier address 212.34.164.18;
        peers_identifier user_fqdn;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm md5;
                authentication_method pre_shared_key;
                dh_group modp1024;
        }
}

sainfo anonymous {
        pfs_group modp1024;
        encryption_algorithm 3des;
        authentication_algorithm hmac_md5;
        compression_algorithm deflate;
}
```

- <div>mit „chmod 0600 /etc/racoon/racoon.conf“ lesen/schreiben für root setzen.</div>

</div></div>/etc/racoon/psk.txt enthält die PresharedKeys in folgendem Format:

<div id="bkmrk-roadwarrior001%40gatew"><div>```
roadwarrior001@gateway.de MpfeEuwPEkov7ScUtKtmAa4FGWVda9jjtruesrkJKUx8sWC4u9
```

- <div>mit „chmod 0600 /etc/racoon/psk.txt“ lesen/schreiben für root setzen.</div>

</div></div>/etc/sysconfig/racoon

<div id="bkmrk-opts%3D%22-f-%2Fetc%2Fracoon"><div>```
OPTS="-f /etc/racoon/racoon.conf -l /var/log/racoon -v"
```

- <div>mit „chmod 0644 /etc/sysconfig/racoon“ die Berechtigungen setzen</div>

</div></div>/etc/init.d/racoon

<div id="bkmrk-%23%21%2Fbin%2Fbash-%23-%23-raco">```
<span class="co0">#!/bin/bash</span>
<span class="co0">#</span>
<span class="co0"># racoon             Start/Stop the racoon IKE daemon.</span>
<span class="co0">#</span>
<span class="co0"># chkconfig: 2345 90 60</span>
<span class="co0"># description: racoon is the IKE daemon of the KAME tools. Use it with \</span>
<span class="co0">#              the native Linux 2.6 IPsec-Stack</span>
 
<span class="co0"># processname: racoon</span>
<span class="co0"># config: /etc/racoon/racoon.conf</span>
<span class="co0"># pidfile: /var/run/racoon.pid</span>
 
<span class="co0"># Source function library.</span>
. <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>functions
 
<span class="re2">OPTS</span>=<span class="st0">""</span>
 
<span class="br0">[</span> <span class="re5">-f</span> <span class="sy0">/</span>etc<span class="sy0">/</span>sysconfig<span class="sy0">/</span>racoon <span class="br0">]</span> <span class="sy0">&&</span> . <span class="sy0">/</span>etc<span class="sy0">/</span>sysconfig<span class="sy0">/</span>racoon
 
<span class="re2">RETVAL</span>=<span class="nu0">0</span>
 
<span class="re2">prog</span>=<span class="st0">"racoon"</span>
 
start<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
  <span class="sy0">/</span>etc<span class="sy0">/</span>racoon<span class="sy0">/</span>setkey.conf
  <span class="kw3">echo</span> <span class="re5">-n</span> $<span class="st0">"Starting <span class="es2">$prog</span>: "</span>
  daemon racoon <span class="re1">$OPTS</span>
  <span class="re2">RETVAL</span>=<span class="re4">$?</span>
  <span class="kw3">echo</span>
  <span class="br0">[</span> <span class="re1">$RETVAL</span> <span class="re5">-eq</span> <span class="nu0">0</span> <span class="br0">]</span> <span class="sy0">&&</span> <span class="kw2">touch</span> <span class="sy0">/</span>var<span class="sy0">/</span>lock<span class="sy0">/</span>subsys<span class="sy0">/</span>racoon
  <span class="kw3">return</span> <span class="re1">$RETVAL</span>
<span class="br0">}</span>
 
stop<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
  <span class="kw3">echo</span> <span class="re5">-n</span> $<span class="st0">"Stopping <span class="es2">$prog</span>: "</span>
  killproc racoon
  <span class="re2">RETVAL</span>=<span class="re4">$?</span>
  <span class="kw3">echo</span>
  <span class="br0">[</span> <span class="re1">$RETVAL</span> <span class="re5">-eq</span> <span class="nu0">0</span> <span class="br0">]</span> <span class="sy0">&&</span> <span class="kw2">rm</span> <span class="re5">-f</span> <span class="sy0">/</span>var<span class="sy0">/</span>lock<span class="sy0">/</span>subsys<span class="sy0">/</span>racoon
  <span class="kw3">return</span> <span class="re1">$RETVAL</span>
<span class="br0">}</span>
 
rhstatus <span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
  status racoon
<span class="br0">}</span>
 
restart <span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
  stop
  start
<span class="br0">}</span>
 
reload <span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
  <span class="kw3">echo</span> <span class="re5">-n</span> $<span class="st0">"Reloading racoon daemon configuration: "</span>
  killproc racoon <span class="re5">-HUP</span>
  <span class="re2">RETVAL</span>=<span class="re4">$?</span>
  <span class="kw3">echo</span>
  <span class="kw3">return</span> <span class="re1">$RETVAL</span>
<span class="br0">}</span>
 
<span class="kw1">case</span> <span class="st0">"$1"</span> <span class="kw1">in</span>
  start<span class="br0">)</span>
    start
    <span class="sy0">;;</span>
  stop<span class="br0">)</span>
    stop
    <span class="sy0">;;</span>
  restart<span class="br0">)</span>
    restart
    <span class="sy0">;;</span>
  reload<span class="br0">)</span>
    reload
    <span class="sy0">;;</span>
  status<span class="br0">)</span>
    rhstatus
    <span class="sy0">;;</span>
  condrestart<span class="br0">)</span>
    <span class="br0">[</span> <span class="re5">-f</span> <span class="sy0">/</span>var<span class="sy0">/</span>lock<span class="sy0">/</span>subsys<span class="sy0">/</span>crond <span class="br0">]</span> <span class="sy0">&&</span> restart <span class="sy0">||</span> :
    <span class="sy0">;;</span>
  <span class="sy0">*</span><span class="br0">)</span>
    <span class="kw3">echo</span> $<span class="st0">"Usage: $0 {start|stop|status|reload|restart|condrestart}"</span>
    <span class="kw3">exit</span> <span class="nu0">1</span>
<span class="kw1">esac</span>
 
<span class="kw3">exit</span> <span class="re4">$?</span>
```

- <div>mit „chmod 0744 /etc/init.d/racoon“ die Berechtigungen setzen.</div>
- <div>ein „chkconfig –add racoon“ aktiviert das Script beim Booten</div>
- <div>mit „service racoon start“ die Security Policy Database (SPD) laden (setkey.conf) und den Racoon-Dämon starten</div>
- <div>geloggt wird nach /var/log/racoon</div>
- <div>Um den Debuglevel zu erhöhen ggf. in /etc/sysconfig/racoon die -v Option um weitere v ergänzen, z.B.</div>

```
OPTS="-f /etc/racoon/racoon.conf -l /var/log/racoon -vvv"
```

</div>