Il protocollo di tunneling di livello 2 (L2TP) con IPsec viene utilizzato per garantire la crittografia end-to-end poiché L2TP non supporta le funzionalità di sicurezza. Lo strumento OpenSwan viene utilizzato per stabilire un tunnel IPsec che verrà compilato sulla distribuzione Ubuntu. La funzione di sicurezza dell'autenticazione è implementata utilizzando il server FreeRadius. Lo scopo del server di autenticazione è autenticare l'utente di VPN L2TP. I client Android e Windows supportano L2TP/IPsec PSK con CHAPv2, pertanto verrà stabilito un canale sicuro tra smartphone e server.
Pacchetti richiesti
I seguenti pacchetti verranno installati utilizzando openswan-l2tp-installation.sh copione.
Strumenti
- Server/Client Freeradius (installazione di base di origine)
- xl2tpd
- Server Poptop
- Server/client MySQL
- OpenSwan (installazione di base del sorgente)
Pacchetti di sviluppo
- Bisonte
- Flessibile
- Libreria GMP
Il contenuto dello script è mostrato nell'istantanea seguente.
#!/bin/bash
##NOTE: Adding a proper date in lastaccounting filed to fix the invalid default value issue in /etc/freeradius/sql/mysql/cui.sql.
##-installation of tools-##
apt-get update
apt-get install -y mysql-server mysql-client freeradius-mysql pptpd xl2tpd build-essential libgmp3-dev bison flex
echo "Installing freeradius client --"
wget https://github.com/FreeRADIUS/freeradius-client/archive/master.zip
unzip master.zip
cd freeradius-client-master
./configure --prefix=/
make
make install
echo "Installation of OpenSwan "
wget https://download.openswan.org/openswan/openswan-latest.tar.gz
tar -xvzf openswan-latest.tar.gz
cd openswan-*
make programs
make install
echo " OpenSwan installed"
Immettere la password "test" per l'utente root del server MySql.
Configurazione
Un altro script "openswan-l2tp-configuration.sh " viene utilizzato per configurare l'inoltro dei pacchetti su Ubuntu, le regole di iptables per la sottorete xl2tpd, l'impostazione del server/client FreeRadius per i meccanismi di autenticazione e il tunnel IPsec di OpenSwan. Di seguito sono mostrati alcuni snapshot dello script di configurazione.
1. iptables e impostazioni sysctl
2. Impostazione del server FreeRadius tramite mysql
3. Impostazione client FreeRadius
4. Configurazione per servizi pptpd e xl2tpd
5. Configurazione VPN OpenSwan
Prima di eseguire lo script di configurazione, è necessaria una modifica in cui.sql file che esiste in /etc/freeradius/sql/mysql/ . Modifica la riga seguente evidenziata nel file sql specificato.
`lastaccounting` timestamp NOT NULL default '0000-00-00 00:00:00',
`lastaccounting` timestamp NOT NULL default '2016-10-01 00:00:00',
Esegui lo script di configurazione per l'impostazione automatica dei pacchetti installati.
Inserisci nome utente/password nel database di FreeRadius per client L2TP Android/Windows utilizzando il seguente comando.
INSERT INTO radius.radcheck (username, attribute, op, value) VALUES ('test','User-Password',':=','test123');
Esegui il server FreeRadius usando il seguente comando e riavvia anche tutti i servizi richiesti.
freeradius -X
Esegui il seguente comando su localhost per testare la configurazione del server FreeRadius.
radtest test test123 localhost 0 test123
/etc/init.d/xl2tpd restart
/etc/init.d/ipsec restart
Sembra che tutti i servizi richiesti siano configurati e funzionanti correttamente. Ora, configura L2TP/IPsec PSK VPN su client Windows e Android.
Configurazione del client MS Windows 8
Fai clic su "imposta una nuova connessione o rete" in "Centro connessioni di rete e condivisione".
seleziona l'opzione "Connetti a un posto di lavoro" come mostrato nella seguente istantanea.
Come mostrato di seguito. seleziona l'opzione "usa la mia Internet (VPN)" nella finestra successiva.
Inserisci il titolo e l'indirizzo internet (indirizzo ip della macchina) sulla connessione VPN e clicca sul pulsante "crea".
La nuova connessione VPN verrà creata e mostrata nell'elenco delle reti come mostrato di seguito.
Le proprietà predefinite della nuova connessione VPN non funzioneranno con la configurazione corrente del server FreeRadius. Pertanto, sono necessarie poche modifiche alle impostazioni di sicurezza del client VPN MS Windows.
Prima di tutto, cambia il tipo di VPN (protocollo di tunneling di livello 2 su IPsec).
Fare clic su "Impostazioni avanzate" e selezionare l'opzione "utilizza una chiave precondivisa per l'autenticazione".
Seleziona l'opzione "Microsoft CHAP versione 2" nell'impostazione "Consenti questi protocolli".
Dopo aver configurato la connessione VPN L2TP/IPsec, inserire nome utente/password (test/test123) come mostrato di seguito.
La VPN L2TP/IPsec è connessa correttamente al server e l'indirizzo IP è assegnato come mostrato di seguito.
L'istantanea seguente mostra lo stato della connessione VPN L2TP/IPsec.
Configurazione L2TP/IPsec su Android
Per connettere il client Android L2TP al server, creare una connessione L2TP/IPsec su di esso. Fai clic su "impostazioni " . "Altro " e "VPN " opzioni. Ora "Aggiungi rete VPN " e seleziona "L2TP PSK " opzione per la connessione VPN desiderata.
Una volta, viene creata una nuova connessione VPN L2TP/IPsec. Ora, fai clic sul nome della connessione VPN e inserisci il nome utente/password già creato sul server FreeRadius.
Il client L2TP/IPsec è connesso al server come mostrato di seguito.
Stato di FreeRadius
L'istantanea seguente mostra l'autenticazione riuscita dell'utente e il tipo di autenticazione è CHAP.
Stato del tunnel
Come mostrato di seguito, il comando xfrm state fornisce lo stato del tunnel OpenSwan.
ip xfrm state
Un altro comando fornito nello strumento OpenSwan è "ipsec look" che combina informazioni sullo stato di xfrm, qualsiasi regola iptables e routing.
ipsec look
1. output dello stato xfrm nel comando ipsec
2. output della politica xfrm nel comando ipsec
3. Routing e impostazione di iptables nel comando ipsec
Il comando seguente fornisce lo stato automatico del tunnel come mostrato di seguito.
ipsec auto --status
Conclusione
In questo tutorial, viene creato un tunnel al livello 2 utilizzando L2TP con OpenSwan per proteggere la comunicazione tra client e server. Il meccanismo di autenticazione CHAPv2 viene utilizzato tra client e server utilizzando i servizi FreeRadius. Sia i client L2TP basati su Android che quelli basati su Windows vengono utilizzati per dimostrare la connessione dei client con il server.