#############
# IPsec VPN #
#############
Scenariu:
Code:
A.B.C.D X.Y.Z.T
[ Gateway A ] ---------- { INTERNET } ---------- [ Gateway B ]
| |
| 192.168.0.1 | 192.168.1.1
| |
| |
( LAN A ) ( LAN B )
192.168.0.0/24 192.168.1.1/24
Gateway A = FreeBSD sau OpenBSD
Gateway B = FreeBSD sau OpenBSD
*************************************
* Creare tunel intre LAN A si LAN B *
*************************************
+++++++++++++
+ Gateway A +
+++++++++++++
-------
FreeBSD
-------
Manual:
Code:
ifconfig gif0 tunnel A.B.C.D X.Y.Z.T mtu 1500
ifconfig gif0 inet 192.168.0.1 192.168.1.1 netmask 255.255.255.255
route add -net 192.168.1.0/24 192.168.1.1
Automat:
In rc.conf se adauga:
Code:
gifconfig_gif0="A.B.C.D X.Y.Z.T mtu 1500"
ifconfig_gif0="inet 192.168.0.1 192.168.1.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.1.0 192.168.1.1 netmask 0xffffff00"
-------
OpenBSD
-------
Manual:
Code:
ifconfig gif0 tunnel A.B.C.D X.Y.Z.T mtu 1500
ifconfig gif0 inet 192.168.0.1 192.168.1.1 netmask 255.255.255.255
route add -net 192.168.1.0/24 192.168.1.1
Automat:
Se creaza in /etc fisierul hostname.gif0 si se adauga:
Code:
up create
up tunnel A.B.C.D X.Y.Z.T mtu 1500
up inet 192.168.0.1 192.168.1.1 netmask 255.255.255.255
!/sbin/route add -net 192.168.1.0/24 192.168.1.1
+++++++++++++
+ Gateway B +
+++++++++++++
-------
FreeBSD
-------
Manual:
Code:
ifconfig gif0 tunnel X.Y.Z.T A.B.C.D mtu 1500
ifconfig gif0 inet 192.168.1.1 192.168.0.1 netmask 255.255.255.255
route add -net 192.168.0.0/24 192.168.0.1
Automat:
In rc.conf se adauga:
Code:
gifconfig_gif0="X.Y.Z.T A.B.C.D mtu 1500"
ifconfig_gif0="inet 192.168.1.1 192.168.0.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.0.0 192.168.0.1 netmask 0xffffff00"
-------
OpenBSD
-------
Manual:
Code:
ifconfig gif0 tunnel X.Y.Z.T A.B.C.D mtu 1500
ifconfig gif0 inet 192.168.1.1 192.168.0.1 netmask 255.255.255.255
route add -net 192.168.0.0/24 192.168.0.1
Automat:
Se creaza in /etc fisierul hostname.gif0 si se adauga:
Code:
up create
up tunnel X.Y.Z.T A.B.C.D mtu 1500
up inet 192.168.1.1 192.168.0.1 netmask 255.255.255.255
!/sbin/route add -net 192.168.0.0/24 192.168.0.1
*************************************
*(2) IPsec cu schimb manual de chei *
*************************************
Algoritmul de criptare a traficului este 3DES iar cel de autentificare a gateway-urilor intre ele
este SHA1.
+++++++++++++
+ Gateway A +
+++++++++++++
-------
FreeBSD
-------
Se creaza in /etc fisierul ipsec.conf si se adauga:
Code:
# cheile de autentificare si criptare intre cele doua gateway-uri
add A.B.C.D X.Y.Z.T esp 0x1000 -E 3des-cbc 0xCHEIE_CRIPTARE -A hmac-sha1 0xCHEIE_AUTENTIFICARE;
add X.Y.Z.T A.B.C.D esp 0x1001 -E 3des-cbc 0xCHEIE_CRIPTARE -A hmac-sha1 0xCHEIE_AUTENTIFICARE;
# criptare IPsec a traficului LAN A - LAN B
# any inseamna criptare oricarui trafic ( tcp, udp, etc)
spdadd 192.168.0.0/24 192.168.1.0/24 any -P out ipsec esp/tunnel/A.B.C.D-X.Y.Z.T/require;
spdadd 192.168.1.0/24 192.168.0.0/24 any -P in ipsec esp/tunnel/X.Y.Z.T-A.B.C.D/require;
# criptare IPsec a traficului Gateway A - Gateway B
# any inseamna criptare oricarui trafic ( tcp, udp, etc)
spdadd A.B.C.D X.Y.Z.T any -P out ipsec esp/tunnel/A.B.C.D-X.Y.Z.T/require;
spdadd X.Y.Z.T A.B.C.D any -P in ipsec esp/tunnel/X.Y.Z.T-A.B.C.D/require;
Atentie !!!
CHEIE_CRIPTARE este un string format din 48 de litere si cifre (3DES foloseste o cheie pe 192 de biti = 48 * 4 biti)
CHEIE_AUTENTIFICARE este un string format din 40 de litere si cifre (SHA1 foloseste o cheie pe 160 de biti = 40 * 4 biti)
Ambele string-uri trebuie sa fie identice pe cele doua gateway-uri.
"0x" este folosit pentru compatibilitatea cu OpenBSD care foloseste cheile in sistem hexa decimal.
Pentru generarea cheilor se poate folosi openssl.
Generare CHEIE_CRIPTARE:
Code:
# openssl rand 24 | hexdump -e '24/1 "%02x"'
Generare CHEIE_AUTENTIFICARE:
Code:
# openssl rand 20 | hexdump -e '20/1 "%02x"'
Se adauga in /etc/rc.conf:
Code:
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
-------
OpenBSD
-------
Se creaza directorul ipsec in /etc in care se vor crea cheile de autentificare si criptare
si script-ul de creare a SAD-urilor si SPD-urilor.
Code:
# mkdir /etc/ipsec
# chown root.wheel /etc/ipsec
# cd /etc/ipsec
# touch ipsec
# chmod 500 ipsec
In fisierul ipsec se adauga:
Code:
/sbin/ipsecadm new esp -src A.B.C.D -dst X.Y.Z.T -forcetunnel -spi 1000 -enc 3des -auth sha1 \
-keyfile /etc/ipsec/enc_key \
-authkeyfile /etc/ipsec/auth_key
/sbin/ipsecadm new esp -src X.Y.Z.T -dst A.B.C.D -forcetunnel -spi 1001 -enc 3des -auth sha1 \
-keyfile /etc/ipsec/enc_key \
-authkeyfile /etc/ipsec/auth_key
/sbin/ipsecadm flow -transport esp -src A.B.C.D -dst X.Y.Z.T -bypass -out -addr A.B.C.D/32 X.Y.Z.T/32
/sbin/ipsecadm flow -transport esp -src A.B.C.D -dst X.Y.Z.T -bypass -in -addr X.Y.Z.T/32 A.B.C.D/32
/sbin/ipsecadm flow -proto esp -src A.B.C.D -dst X.Y.Z.T -require -out -addr A.B.C.D/32 X.Y.Z.T/32
/sbin/ipsecadm flow -proto esp -src A.B.C.D -dst X.Y.Z.T -require -in -addr X.Y.Z.T/32 A.B.C.D/32
/sbin/ipsecadm flow -proto esp -src A.B.C.D -dst X.Y.Z.T -require -out -addr A.B.C.D/32 192.168.1.0/24
/sbin/ipsecadm flow -proto esp -src A.B.C.D -dst X.Y.Z.T -require -in -addr 192.168.1.0/24 A.B.C.D/32
/sbin/ipsecadm flow -proto esp -src A.B.C.D -dst X.Y.Z.T -require -out -addr 192.168.0.0/24 X.Y.Z.T/32
/sbin/ipsecadm flow -proto esp -src A.B.C.D -dst X.Y.Z.T -require -in -addr X.Y.Z.T/32 192.168.0.0/24
/sbin/ipsecadm flow -proto esp -src A.B.C.D -dst X.Y.Z.T -require -out -addr 192.168.0.0/24 192.168.1.0/24
/sbin/ipsecadm flow -proto esp -src A.B.C.D -dst X.Y.Z.T -require -in -addr 192.168.1.0/24 192.168.0.0/24
Se genereaza cheile.
Generare cheie criptare:
Code:
# openssl rand 24 | hexdump -e '24/1 "%02x"' > /etc/ipsec/enc_key
Generare cheie autentificare:
Code:
# openssl rand 20 | hexdump -e '20/1 "%02x"' > /etc/ipsec/auth_key
Se seteaza permisiunile:
Code:
# chown root.wheel /etc/ipsec/enc_key
# chown root.wheel /etc/ipsec/auth_key
# chmod 600 /etc/ipsec/enc_key
# chmod 600 /etc/ipsec/auth_key
Observatie !
Ca alternativa OpenBSD pune la dispozitie un script (/usr/share/ipsec/rc.vpn) ce seteaza la rulare SAD-urile si SPD-urile.
Acest script trebuie modificat conform nevoilor si va inlocui script-ul /etc/ipsec/ipsec creat anterior.
+++++++++++++
+ Gateway B +
+++++++++++++
-------
FreeBSD
-------
Se creaza in /etc fisierul ipsec.conf si se adauga:
Code:
# cheile de autentificare si criptare intre cele doua gateway-uri
add A.B.C.D X.Y.Z.T esp 0x1000 -E 3des-cbc 0xCHEIE_CRIPTARE -A hmac-sha1 0xCHEIE_AUTENTIFICARE;
add X.Y.Z.T A.B.C.D esp 0x1001 -E 3des-cbc 0xCHEIE_CRIPTARE -A hmac-sha1 0xCHEIE_AUTENTIFICARE;
# criptare IPsec a traficului LAN B - LAN A
# any inseamna criptare oricarui trafic ( tcp, udp, etc)
spdadd 192.168.1.0/24 192.168.0.0/24 any -P out ipsec esp/tunnel/X.Y.Z.T-A.B.C.D/require;
spdadd 192.168.0.0/24 192.168.1.0/24 any -P in ipsec esp/tunnel/A.B.C.D-X.Y.Z.T/require;
# criptare IPsec a traficului Gateway B - Gateway A
# any inseamna criptare oricarui trafic ( tcp, udp, etc)
spdadd X.Y.Z.T A.B.C.D any -P out ipsec esp/tunnel/X.Y.Z.T-A.B.C.D/require;
spdadd A.B.C.D X.Y.Z.T any -P in ipsec esp/tunnel/A.B.C.D-X.Y.Z.T/require;
Se adauga in /etc/rc.conf:
Code:
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
Atentie !!!
CHEIE_CRIPTARE si CHEIE_AUTENTIFICARE trebuie sa coincida cu cele de pe Gateway A.
0x1000 si 0x1001 reprezinta parametri SPI si trebuie sa coincida cu cei de pe Gateway A pentru
aceeasi directie a treficului (de ex. 0x1000 pentru Gateway A - Gateway B si 0x1001 invers).
-------
OpenBSD
-------
Se creaza directorul ipsec in /etc si fiserele ipsec, enc_key si auth_key.
Code:
# mkdir /etc/ipsec
# chown root.wheel /etc/ipsec
# cd /etc/ipsec
# touch ipsec enc_key auth_key
# chmod 500 ipsec
In fisierul ipsec se adauga:
Code:
/sbin/ipsecadm new esp -src X.Y.Z.T -dst A.B.C.D -forcetunnel -spi 1001 -enc 3des -auth sha1 \
-keyfile /etc/ipsec/enc_key \
-authkeyfile /etc/ipsec/auth_key
/sbin/ipsecadm new esp -src A.B.C.D -dst X.Y.Z.T -forcetunnel -spi 1000 -enc 3des -auth sha1 \
-keyfile /etc/ipsec/enc_key \
-authkeyfile /etc/ipsec/auth_key
/sbin/ipsecadm flow -transport esp -src X.Y.Z.T -dst A.B.C.D -bypass -out -addr X.Y.Z.T/32 A.B.C.D/32
/sbin/ipsecadm flow -transport esp -src X.Y.Z.T -dst A.B.C.D -bypass -in -addr A.B.C.D/32 X.Y.Z.T/32
/sbin/ipsecadm flow -proto esp -src X.Y.Z.T -dst A.B.C.D -require -out -addr X.Y.Z.T/32 A.B.C.D/32
/sbin/ipsecadm flow -proto esp -src X.Y.Z.T -dst A.B.C.D -require -in -addr A.B.C.D/32 X.Y.Z.T/32
/sbin/ipsecadm flow -proto esp -src X.Y.Z.T -dst A.B.C.D -require -out -addr X.Y.Z.T/32 192.168.0.0/24
/sbin/ipsecadm flow -proto esp -src X.Y.Z.T -dst A.B.C.D -require -in -addr 192.168.0.0/24 X.Y.Z.T/32
/sbin/ipsecadm flow -proto esp -src X.Y.Z.T -dst A.B.C.D -require -out -addr 192.168.1.0/24 A.B.C.D/32
/sbin/ipsecadm flow -proto esp -src X.Y.Z.T -dst A.B.C.D -require -in -addr A.B.C.D/32 192.168.1.0/24
/sbin/ipsecadm flow -proto esp -src X.Y.Z.T -dst A.B.C.D -require -out -addr 192.168.1.0/24 192.168.0.0/24
/sbin/ipsecadm flow -proto esp -src X.Y.Z.T -dst A.B.C.D -require -in -addr 192.168.0.0/24 192.168.1.0/24
In enc_key si auth_key se adauga cheile create pe Gateway A.
Se seteaza permisiunile:
Code:
# chown root.wheel /etc/ipsec/enc_key
# chown root.wheel /etc/ipsec/auth_key
# chmod 600 /etc/ipsec/enc_key
# chmod 600 /etc/ipsec/auth_key
Observatie !
Ca alternativa OpenBSD pune la dispozitie un script (/usr/share/ipsec/rc.vpn) ce seteaza la rulare SAD-urile si SPD-urile.
Acest script trebuie modificat conform nevoilor si va inlocui script-ul /etc/ipsec/ipsec creat anterior.
**************************************************************
* IPsec cu schimb automat de chei folosind daemon-ul isakmpd *
* cu autentificare pe baza de password *
**************************************************************
+++++++++++++
+ Gateway A +
+++++++++++++
-------
FreeBSD
-------
Instalam isakmpd din port-uri:
Code:
# cd /usr/ports/security/isakmpd
# make install clean
# cd /usr/local/etc/
# mkdir isakmpd
# cd isakmpd
# touch isakmpd.conf isakmpd.policy
# chmod 600 isakmpd.conf isakmpd.policy
Fisierul de configurare este /usr/local/etc/isakmpd/isakmpd.conf.
Fisierul ce stabileste autentificarea intre gateway-uri este /usr/local/etc/isakmpd/isakmpd.policy.
isakmpd.conf:
Code:
[General]
Listen-on= A.B.C.D
[Phase 1]
X.Y.Z.T= ISAKMP-peer-GatewayB
[Phase 2]
Connections= IPsec-LANA-LANB,IPsec-GatewayA-GatewayB
[ISAKMP-peer-GatewayB]
Phase= 1
Address= X.Y.Z.T
Configuration= Default-main-mode
Authentication= password
[IPsec-LANA-LANB]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayB
Configuration= Default-quick-mode
Local-ID= LANA
Remote-ID= LANB
[LANA]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.0.0
Netmask= 255.255.255.0
[LANB]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[IPsec-GatewayA-GatewayB]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayB
Configuration= Default-quick-mode
Local-ID= GatewayA
Remote-ID= GatewayB
[GatewayA]
ID-type= IPV4_ADDR
Address= A.B.C.D
[GatewayB]
ID-type= IPV4_ADDR
Address= X.Y.Z.T
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-PFS-SUITE
isakmpd.policy:
Code:
KeyNote-Version: 2
Authorizer: "POLICY"
Licensees: "passphrase:password"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg == "3des" &&
esp_auth_alg == "hmac-sha" -> "true";
Atentie !!!
password (cel din isakmpd.conf trebuie sa fie identic cu cel din isakmpd.policy)
trebuie inlocuit cu un string de preferinta cat mai random ce trebuie sa fie acelasi
cu cel din isakmpd.conf si isakmpd.policy de pe GatewayB.
In rc.conf trebuie modificat ipsec_enable="YES" in ipsec_enable="NO" deoarece
isakmpd seteaza automat atat SAD-urile cat si SPD-urile.
Cream un script de pornire pentru isakmpd:
Code:
# cd /usr/local/etc/rc.d
# touch isakmpd.sh
# chown root:wheel isakmpd.sh
# chmod 500 isakmpd.sh
In isakmpd.sh adaugam:
Code:
#!/bin/sh
# start
isakmpd_enable=${isakmpd_enable-"NO"}
isakmpd_flags=${isakmpd_flags-"-c /usr/local/etc/isakmpd/isakmpd.conf"}
isakmpd_pidfile=${isakmpd_pidfile-"/var/run/utility.pid"}
. /etc/rc.subr
name="isakmpd"
rcvar=`set_rcvar`
command="/usr/local/sbin/isakmpd"
load_rc_config $name
pidfile="${isakmpd_pidfile}"
start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${isakmpd_flags} ${command_args}"
run_rc_command "$1"
# end
Pentru a fi pornit la start-up e necesar sa adaugam in rc.conf isakmpd_enable="YES".
-------
OpenBSD
-------
OpenBSD vine cu isakmpd instalat default.
Fisierul de configurare este /etc/isakmpd/isakmpd.conf.
Fisierul ce stabileste autentificarea intre gateway-uri este /etc/isakmpd/isakmpd.policy.
isakmpd.conf:
Code:
[General]
Listen-on= A.B.C.D
[Phase 1]
X.Y.Z.T= ISAKMP-peer-GatewayB
[Phase 2]
Connections= IPsec-LANA-LANB,IPsec-GatewayA-GatewayB
[ISAKMP-peer-GatewayB]
Phase= 1
Address= X.Y.Z.T
Configuration= Default-main-mode
Authentication= password
[IPsec-LANA-LANB]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayB
Configuration= Default-quick-mode
Local-ID= LANA
Remote-ID= LANB
[LANA]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.0.0
Netmask= 255.255.255.0
[LANB]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[IPsec-GatewayA-GatewayB]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayB
Configuration= Default-quick-mode
Local-ID= GatewayA
Remote-ID= GatewayB
[GatewayA]
ID-type= IPV4_ADDR
Address= A.B.C.D
[GatewayB]
ID-type= IPV4_ADDR
Address= X.Y.Z.T
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-PFS-SUITE
isakmpd.policy:
Code:
KeyNote-Version: 2
Authorizer: "POLICY"
Licensees: "passphrase:password"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg == "3des" &&
esp_auth_alg == "hmac-sha" -> "true";
Atentie !!!
password (cel din isakmpd.conf trebuie sa fie identic cu cel din isakmpd.policy)
trebuie inlocuit cu un string de preferinta cat mai random ce trebuie sa fie acelasi
cu cel din isakmpd.conf si isakmpd.policy de pe GatewayB.
+++++++++++++
+ Gateway B +
+++++++++++++
-------
FreeBSD
-------
Instalam isakmpd din port-uri:
Code:
# cd /usr/ports/security/isakmpd
# make install clean
# cd /usr/local/etc/
# mkdir isakmpd
# cd isakmpd
# touch isakmpd.conf isakmpd.policy
# chmod 600 isakmpd.conf isakmpd.policy
Fisierul de configurare este /usr/local/etc/isakmpd/isakmpd.conf.
Fisierul ce stabileste autentificarea intre gateway-uri este /usr/local/etc/isakmpd/isakmpd.policy.
isakmpd.conf:
Code:
[General]
Listen-on= X.Y.Z.T
[Phase 1]
A.B.C.D= ISAKMP-peer-GatewayA
[Phase 2]
Connections= IPsec-LANB-LANA,IPsec-GatewayB-GatewayA
[ISAKMP-peer-GatewayA]
Phase= 1
Address= A.B.C.D
Configuration= Default-main-mode
Authentication= password
[IPsec-LANB-LANA]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayA
Configuration= Default-quick-mode
Local-ID= LANB
Remote-ID= LANA
[LANB]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[LANA]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.0.0
Netmask= 255.255.255.0
[IPsec-GatewayB-GatewayA]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayA
Configuration= Default-quick-mode
Local-ID= GatewayB
Remote-ID= GatewayA
[GatewayB]
ID-type= IPV4_ADDR
Address= X.Y.Z.T
[GatewayA]
ID-type= IPV4_ADDR
Address= A.B.C.D
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-PFS-SUITE
isakmpd.policy:
Code:
KeyNote-Version: 2
Authorizer: "POLICY"
Licensees: "passphrase:password"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg == "3des" &&
esp_auth_alg == "hmac-sha" -> "true";
Atentie !!!
password (cel din isakmpd.conf trebuie sa fie identic cu cel din isakmpd.policy)
trebuie inlocuit cu un string de preferinta cat mai random ce trebuie sa fie acelasi
cu cel din isakmpd.conf si isakmpd.policy de pe GatewayB.
In rc.conf trebuie modificat ipsec_enable="YES" in ipsec_enable="NO" deoarece
isakmpd seteaza automat atat SAD-urile cat si SPD-urile.
Cream un script de pornire pentru isakmpd:
Code:
# cd /usr/local/etc/rc.d
# touch isakmpd.sh
# chown root:wheel isakmpd.sh
# chmod 500 isakmpd.sh
In isakmpd.sh adaugam:
Code:
#!/bin/sh
# start
isakmpd_enable=${isakmpd_enable-"NO"}
isakmpd_flags=${isakmpd_flags-"-c /usr/local/etc/isakmpd/isakmpd.conf"}
isakmpd_pidfile=${isakmpd_pidfile-"/var/run/utility.pid"}
. /etc/rc.subr
name="isakmpd"
rcvar=`set_rcvar`
command="/usr/local/sbin/isakmpd"
load_rc_config $name
pidfile="${isakmpd_pidfile}"
start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${isakmpd_flags} ${command_args}"
run_rc_command "$1"
# end
Pentru a fi pornit la start-up e necesar sa adaugam in rc.conf isakmpd_enable="YES".
-------
OpenBSD
-------
OpenBSD vine cu isakmpd instalat default.
Fisierul de configurare este /etc/isakmpd/isakmpd.conf.
Fisierul ce stabileste autentificarea intre gateway-uri este /etc/isakmpd/isakmpd.policy.
isakmpd.conf:
Code:
[General]
Listen-on= X.Y.Z.T
[Phase 1]
A.B.C.D= ISAKMP-peer-GatewayA
[Phase 2]
Connections= IPsec-LANB-LANA,IPsec-GatewayB-GatewayA
[ISAKMP-peer-GatewayA]
Phase= 1
Address= A.B.C.D
Configuration= Default-main-mode
Authentication= password
[IPsec-LANB-LANA]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayA
Configuration= Default-quick-mode
Local-ID= LANB
Remote-ID= LANA
[LANB]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[LANA]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.0.0
Netmask= 255.255.255.0
[IPsec-GatewayB-GatewayA]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayA
Configuration= Default-quick-mode
Local-ID= GatewayB
Remote-ID= GatewayA
[GatewayB]
ID-type= IPV4_ADDR
Address= X.Y.Z.T
[GatewayA]
ID-type= IPV4_ADDR
Address= A.B.C.D
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-PFS-SUITE
isakmpd.policy:
Code:
KeyNote-Version: 2
Authorizer: "POLICY"
Licensees: "passphrase:password"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg == "3des" &&
esp_auth_alg == "hmac-sha" -> "true";
Atentie !!!
password (cel din isakmpd.conf trebuie sa fie identic cu cel din isakmpd.policy)
trebuie inlocuit cu un string de preferinta cat mai random ce trebuie sa fie acelasi
cu cel din isakmpd.conf si isakmpd.policy de pe GatewayB.
**************************************************************
* IPsec cu schimb automat de chei folosind daemon-ul isakmpd *
* cu autentificare pe baza de certificate x509 *
**************************************************************
+++++++++++++
+ Gateway A +
+++++++++++++
-------
FreeBSD
-------
Devenim Certificate Authority:
Code:
# cd /etc/ssl
Generam cheia privata cu care vom semna certificatul:
Code:
# openssl genrsa -out private/ca.key 2048
Cream certification request:
Code:
# openssl req -new -key private/ca.key -out ca.csr
Cream certificatul x509:
Code:
# openssl x509 -req -days 730 -in ca.csr -signkey private/ca.key -extfile x509v3.cnf -extensions x509v3_CA -out ca.crt
Code:
# cd /usr/local/etc/isakmpd
Generam cheia privata:
Code:
# openssl genrsa -out private/local.key 2048
# chmod 400 private/local.key
Cream certification request:
Code:
# openssl req -new -key private/local.key -out private/A.B.C.D.csr
Cream certificatul x509 pentru Gateway A:
Code:
# openssl x509 -req -days 730 -in private/A.B.C.D.csr -CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial -out \
certs/A.B.C.D.crt
Patch-uim certificatul:
Code:
# certpatch -i A.B.C.D -k /etc/ssl/private/ca.key certs/A.B.C.D.crt certs/A.B.C.D.crt
Copiem ca.crt in /usr/local/etc/isakmpd/ca
Code:
# cp -p /etc/ssl/ca.crt ca/
isakmpd.conf:
Code:
[X509-certificates]
CA-directory= /usr/local/etc/isakmpd/ca/
Cert-directory= /usr/local/etc/isakmpd/certs/
Private-key= /usr/local/etc/isakmpd/private/local.key
[General]
Listen-on= A.B.C.D
[Phase 1]
X.Y.Z.T= ISAKMP-peer-GatewayB
[Phase 2]
Connections= IPsec-LANA-LANB,IPsec-GatewayA-GatewayB
[ISAKMP-peer-GatewayB]
Phase= 1
Address= X.Y.Z.T
Configuration= Default-main-mode
Local-ID= GatewayA-ID
Remote-ID= GatewayB-ID
[GatewayA-ID]
ID-Type= IPV4_ADDR
Address= A.B.C.D
[GatewayB-ID]
ID-Type= IPV4_ADDR
Address= X.Y.Z.T
[IPsec-LANA-LANB]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayB
Configuration= Default-quick-mode
Local-ID= LANA
Remote-ID= LANB
[LANA]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.0.0
Netmask= 255.255.255.0
[LANB]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[IPsec-GatewayA-GatewayB]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayB
Configuration= Default-quick-mode
Local-ID= GatewayA
Remote-ID= GatewayB
[GatewayA]
ID-type= IPV4_ADDR
Address= A.B.C.D
[GatewayB]
ID-type= IPV4_ADDR
Address= X.Y.Z.T
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA-RSA_SIG
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-PFS-SUITE
isakmpd.policy:
Code:
Keynote-version: 2
Authorizer: "POLICY"
Licensees: "DN:xxx"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg == "3des" &&
esp_auth_alg == "hmac-sha" -> "true";
unde xxx este inlocuit cu output-ul comenzii:
Code:
# openssl x509 -in /usr/local/etc/isakmpd/ca/ca.crt -noout -subject
Atentie !!! Se inlocuieste numai ce este dupa subject= din output-ul de mai sus.
-------
OpenBSD
-------
Devenim Certificate Authority:
Code:
# cd /etc/ssl
Generam cheia privata cu care vom semna certificatul:
Code:
# openssl genrsa -out private/ca.key 2048
Cream certification request:
Code:
# openssl req -new -key private/ca.key -out ca.csr
Cream certificatul x509:
Code:
# openssl x509 -req -days 730 -in ca.csr -signkey private/ca.key -extfile x509v3.cnf -extensions x509v3_CA -out ca.crt
Code:
# cd /etc/isakmpd
Generam cheia privata:
Code:
# openssl genrsa -out private/local.key 2048
# chmod 400 private/local.key
Cream certification request:
Code:
# openssl req -new -key private/local.key -out private/A.B.C.D.csr
Cream certificatul x509 pentru Gateway A:
Code:
# openssl x509 -req -days 730 -in private/A.B.C.D.csr -CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial -out \
certs/A.B.C.D.crt
Patch-uim certificatul:
Code:
# certpatch -i A.B.C.D -k /etc/ssl/private/ca.key certs/A.B.C.D.crt certs/A.B.C.D.crt
Copiem ca.crt in /etc/isakmpd/ca
Code:
# cp -p /etc/ssl/ca.crt ca/
isakmpd.conf:
Code:
[X509-certificates]
CA-directory= /usr/local/etc/isakmpd/ca/
Cert-directory= /usr/local/etc/isakmpd/certs/
Private-key= /usr/local/etc/isakmpd/private/local.key
[General]
Listen-on= A.B.C.D
[Phase 1]
X.Y.Z.T= ISAKMP-peer-GatewayB
[Phase 2]
Connections= IPsec-LANA-LANB,IPsec-GatewayA-GatewayB
[ISAKMP-peer-GatewayB]
Phase= 1
Address= X.Y.Z.T
Configuration= Default-main-mode
Local-ID= GatewayA-ID
Remote-ID= GatewayB-ID
[GatewayA-ID]
ID-Type= IPV4_ADDR
Address= A.B.C.D
[GatewayB-ID]
ID-Type= IPV4_ADDR
Address= X.Y.Z.T
[IPsec-LANA-LANB]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayB
Configuration= Default-quick-mode
Local-ID= LANA
Remote-ID= LANB
[LANA]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.0.0
Netmask= 255.255.255.0
[LANB]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[IPsec-GatewayA-GatewayB]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayB
Configuration= Default-quick-mode
Local-ID= GatewayA
Remote-ID= GatewayB
[GatewayA]
ID-type= IPV4_ADDR
Address= A.B.C.D
[GatewayB]
ID-type= IPV4_ADDR
Address= X.Y.Z.T
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA-RSA_SIG
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-PFS-SUITE
isakmpd.policy:
Code:
Keynote-version: 2
Authorizer: "POLICY"
Licensees: "DN:xxx"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg == "3des" &&
esp_auth_alg == "hmac-sha" -> "true";
unde xxx este inlocuit cu output-ul comenzii:
Code:
# openssl x509 -in /etc/isakmpd/ca/ca.crt -noout -subject
Atentie !!! Se inlocuieste numai ce este dupa subject= din output-ul de mai sus.
+++++++++++++
+ Gateway B +
+++++++++++++
-------
FreeBSD
-------
Se copiaza /etc/ssl/ca.crt si /etc/ssl/private/local.key de pe Gateway A in /etc/ssl/ si respectiv /etc/ssl/private.
Code:
# cd /usr/local/etc/isakmpd
Generam cheia privata:
Code:
# openssl genrsa -out private/local.key 2048
# chmod 400 private/local.key
Cream certification request:
Code:
# openssl req -new -key private/local.key -out private/X.Y.Z.T.csr
Cream certificatul x509 pentru Gateway B:
Code:
# openssl x509 -req -days 730 -in private/X.Y.Z.T.csr -CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial -out \
certs/X.Y.Z.T.crt
Patch-uim certificatul:
Code:
# certpatch -i X.Y.Z.T -k /etc/ssl/private/ca.key certs/X.Y.Z.T.crt certs/X.Y.Z.T.crt
Copiem ca.crt in /usr/local/etc/isakmpd/ca
Code:
# cp -p /etc/ssl/ca.crt ca/
isakmpd.conf:
Code:
[X509-certificates]
CA-directory= /usr/local/etc/isakmpd/ca/
Cert-directory= /usr/local/etc/isakmpd/certs/
Private-key= /usr/local/etc/isakmpd/private/local.key
[General]
Listen-on= X.Y.Z.T
[Phase 1]
A.B.C.D= ISAKMP-peer-GatewayA
[Phase 2]
Connections= IPsec-LANB-LANA,IPsec-GatewayB-GatewayA
[ISAKMP-peer-GatewayA]
Phase= 1
Address= A.B.C.D
Configuration= Default-main-mode
Local-ID= GatewayB-ID
Remote-ID= GatewayA-ID
[GatewayB-ID]
ID-Type= IPV4_ADDR
Address= X.Y.Z.T
[GatewayA-ID]
ID-Type= IPV4_ADDR
Address= A.B.C.D
[IPsec-LANB-LANA]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayA
Configuration= Default-quick-mode
Local-ID= LANB
Remote-ID= LANA
[LANB]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[LANA]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.0.0
Netmask= 255.255.255.0
[IPsec-GatewayB-GatewayA]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayA
Configuration= Default-quick-mode
Local-ID= GatewayB
Remote-ID= GatewayA
[GatewayB]
ID-type= IPV4_ADDR
Address= X.Y.Z.T
[GatewayA]
ID-type= IPV4_ADDR
Address= A.B.C.D
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA-RSA_SIG
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-PFS-SUITE
isakmpd.policy:
Code:
Keynote-version: 2
Authorizer: "POLICY"
Licensees: "DN:xxx"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg == "3des" &&
esp_auth_alg == "hmac-sha" -> "true";
unde xxx este inlocuit cu output-ul comenzii:
Code:
# openssl x509 -in /usr/local/etc/isakmpd/ca/ca.crt -noout -subject
Atentie !!! Se inlocuieste numai ce este dupa subject= din output-ul de mai sus.
-------
OpenBSD
-------
Se copiaza /etc/ssl/ca.crt si /etc/ssl/private/local.key de pe Gateway A in /etc/ssl/ si respectiv /etc/ssl/private.
Code:
# cd /etc/isakmpd
Generam cheia privata:
Code:
# openssl genrsa -out private/local.key 2048
# chmod 400 private/local.key
Cream certification request:
Code:
# openssl req -new -key private/local.key -out private/X.Y.Z.T.csr
Cream certificatul x509 pentru Gateway B:
Code:
# openssl x509 -req -days 730 -in private/X.Y.Z.T.csr -CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial -out \
certs/X.Y.Z.T.crt
Patch-uim certificatul:
Code:
# certpatch -i X.Y.Z.T -k /etc/ssl/private/ca.key certs/X.Y.Z.T.crt certs/X.Y.Z.T.crt
Copiem ca.crt in /etc/isakmpd/ca
Code:
# cp -p /etc/ssl/ca.crt ca/
isakmpd.conf:
Code:
[X509-certificates]
CA-directory= /usr/local/etc/isakmpd/ca/
Cert-directory= /usr/local/etc/isakmpd/certs/
Private-key= /usr/local/etc/isakmpd/private/local.key
[General]
Listen-on= X.Y.Z.T
[Phase 1]
A.B.C.D= ISAKMP-peer-GatewayA
[Phase 2]
Connections= IPsec-LANB-LANA,IPsec-GatewayB-GatewayA
[ISAKMP-peer-GatewayA]
Phase= 1
Address= A.B.C.D
Configuration= Default-main-mode
Local-ID= GatewayB-ID
Remote-ID= GatewayA-ID
[GatewayB-ID]
ID-Type= IPV4_ADDR
Address= X.Y.Z.T
[GatewayA-ID]
ID-Type= IPV4_ADDR
Address= A.B.C.D
[IPsec-LANB-LANA]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayA
Configuration= Default-quick-mode
Local-ID= LANB
Remote-ID= LANA
[LANB]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[LANA]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.0.0
Netmask= 255.255.255.0
[IPsec-GatewayB-GatewayA]
Phase= 2
ISAKMP-peer= ISAKMP-peer-GatewayA
Configuration= Default-quick-mode
Local-ID= GatewayB
Remote-ID= GatewayA
[GatewayB]
ID-type= IPV4_ADDR
Address= X.Y.Z.T
[GatewayA]
ID-type= IPV4_ADDR
Address= A.B.C.D
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA-RSA_SIG
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-PFS-SUITE
isakmpd.policy:
Code:
Keynote-version: 2
Authorizer: "POLICY"
Licensees: "DN:xxx"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg == "3des" &&
esp_auth_alg == "hmac-sha" -> "true";
unde xxx este inlocuit cu output-ul comenzii:
Code:
# openssl x509 -in /etc/isakmpd/ca/ca.crt -noout -subject