IPSec
Internet Protocol Security (IPsec)
IPsec can be used in protecting data flows between a pair of hosts (host-to-host), between a pair of security gateways (network-to-network), or between a security gateway and a host (network-to-host). wikipedia
Host to Host Example
In this example we will use a pre-shared key to encrypt traffic between two hosts.
QuantaStor System Name: qs1.example.net Address: 192.168.0.2
Ubuntu Client Name: client1.example.net Address: 192.168.0.3
Setup
Here are the steps that need to be run on the QuantaStor system as root
- Install strongSwan
- Configure shared key The following command will encode some random data which we will use as the shared key.
- Configure strongSwan Add the following lines to /etc/ipsec.conf
- Restart strongSwan
apt-get update apt-get install strongswan
echo `dd if=/dev/urandom bs=33 count=1 2> /dev/null | base64 -w0`
The output should look something like this:
EGme37ZWlkZTbaRsiSPVw7/n7QrSqt1a8qvpD704EbjM
Add the following line to the /etc/ipsec.secrets file. Be sure to use your own key, not this example. Notice that 0s is prepended to the shared key, this indicates the data is base64 encoded.
@qs1.example.net @client1.example.net : PSK 0sEGme37ZWlkZTbaRsiSPVw7/n7QrSqt1a8qvpD704EbjM
conn %default ikelifetime=60m keylife=20m rekeymargin=3m keyingtries=1 mobike=no keyexchange=ikev2 conn qs-client1 authby=secret left=192.168.0.2 leftid=@qs1.example.net leftfirewall=yes right=192.168.0.3 rightid=@client1.example.net type=transport auto=start
service ipsec restart
Here are the steps that need to be run on the client box as root
- Install strongSwan
- Configure shared key Copy the same line from the QuantaStor box into /etc/ipsec.secrets.
- Configure strongSwan Add the following lines to /etc/ipsec.conf. Note, the only change from the QuantaStor config is the left and right settings are swapped.
- Restart strongSwan
apt-get update apt-get install strongswan
@qs1.example.net @client1.example.net : PSK 0sEGme37ZWlkZTbaRsiSPVw7/n7QrSqt1a8qvpD704EbjM
conn %default ikelifetime=60m keylife=20m rekeymargin=3m keyingtries=1 mobike=no keyexchange=ikev2 conn qs-client1 authby=secret left=192.168.0.3 leftid=@client1.example.net leftfirewall=yes right=192.168.0.2 rightid=@qs1.example.net type=transport auto=start
service ipsec restart
Start the connection, this can be run from either system.
ipsec up qs-client1
At this point all traffic between the two hosts will be encrypted. You can check the status of the connection by running ipsec status
root@qs1:~# ipsec status Security Associations: qs-client1[22]: ESTABLISHED 34 minutes ago, 192.168.0.3[client1.example.net]...192.168.0.2[qs1.example.net] qs-client1{22}: INSTALLED, TRANSPORT, ESP SPIs: c810bccf_i c23fb4e7_o qs-client1{22}: 192.168.0.3/32 === 192.168.0.2/32 qs-client1{23}: INSTALLED, TRANSPORT, ESP SPIs: c551892c_i c4a28aac_o qs-client1{23}: 192.168.0.3/32 === 192.168.0.2/32