Tento článek je o tunelovacím protokolu vrstvy 2 (L2TP) s protokolem IPsec, který poskytuje end-to-end šifrování ve vrstvě 2 VPN, protože funkce zabezpečení nejsou v L2TP dostupné. Open source implementace IPsec jsou StrongSwan a OpenSwan, obě jsou podporovány ve všech distribucích Linuxu. V tomto tutoriálu se OpenSwan používá k poskytování bezpečnostního kanálu pro L2TP VPN. Freeradius je známý open source nástroj, který uživatelům poskytuje různé typy autentizace. Freeradius se používá k ověření uživatele L2TP VPN před vytvořením zabezpečeného kanálu. Pro zabezpečený tunel založený na L2TP bude použit klient se systémem Android.
Instalace požadovaných balíčků
Následující důležité balíčky budou nainstalovány na Ubuntu 16.04 LTS.
- Server/klient Freeradius
- Poptop Server
- xl2tpd
- Openswan pro IPsec
- Server MySQL/klient
- Bison &Flex
- Knihovna vývoje GMP
Jak je uvedeno níže, většina požadovaných balíčků je k dispozici v úložišti Ubuntu 16.04 LTS.
aktualizace apt-get
apt-get install -y mysql-server mysql-client freeradius-mysql pptpd xl2tpd
Následující snímek obrazovky ukazuje, jak se během procesu instalace nastavuje heslo pro uživatele „root“ databázového serveru MySQL.
Následující balíčky jsou vyžadovány pro instalaci OpenSwan ze zdroje na platformě Ubuntu 16.04.
apt-get install -y build-essential libgmp3-dev bison flex
Klient Freeradius a balíčky OpenSwan nejsou v úložišti dostupné, takže oba nástroje byly nainstalovány ze zdroje.
Instalace klienta Freeradius
Stáhněte si nejnovějšího klienta Freeradius z následujícího odkazu:
wget https://github.com/FreeRADIUS/freeradius-client/archive/master.zip
rozbalte master.zip
mv freeradius-client-master freeradius-client
cd freeradius-client
Nejprve spusťte konfigurační skript s přepínačem předpony a nainstalujte software pomocí příkazu make.
./configure --prefix=/
provést &&provést instalaci
Instalace OpenSwan
Zdrojový kód nástroje OpenSwan IPsec je k dispozici na následujícím odkazu. Stáhněte si archiv a rozbalte jej.
wget https://download.openswan.org/openswan/openswan-latest.tar.gz
tar -xzf openswan-latest.tar.gz
cd openswan-*
Spuštěním následujícího příkazu zkompilujte a nainstalujte OpenSwan.
vytvářet programy
proveďte instalaci
Konfigurace
Než začneme s konfigurací nainstalovaných balíčků, jsou na platformě Ubuntu vyžadovány následující základní konfigurace (iptables a sysctl).
Na terminálu zadejte následující pravidla iptables pro obě sítě (10.20.30.0/24 &10.10.10.0/24).
iptables -t nat -I POSTROUTING -s 10.20.30.0/24 -j SNAT --to 192.168.15.4
iptables -t nat -I POSTROUTING -s 10.10.10.0/24 -j SNAT --to 192.168.15.4
Výše uvedená pravidla by měla být uložena do /etc/iptables.rc soubor použít při spouštění.
chmod +x /etc/iptables.rc
sed -i "/iptables.rc/d" /etc/rc.local
sed -i "1a/etc/iptables.rc" /etc/rc.local
Přidejte následující řádky do /etc/sysctl.conf soubor pro povolení přeposílání na počítači se systémem Linux.
net.ipv4.ip_forward =1
net.ipv4.conf.default.rp_filter =0
net.ipv4.conf.default.accept_source_route =0
net.ipv4.conf. all.send_redirects =0
net.ipv4.conf.default.send_redirects =0
net.ipv4.icmp_ignore_bogus_error_responses =1
Chcete-li použít změny, spusťte následující příkaz.
sysctl -p
Konfigurace serveru Freeradius
Spusťte následující příkaz pro změnu hesla pro freeradius.
sed -i "s/PASSWORD('radpass')/PASSWORD('test')/g" /etc/freeradius/sql/mysql/admin.sql
Následující příkazy MySQL nakonfigurují server Freeradius na Ubuntu.
mysql --protocol=tcp -h localhost -u root -ptest
vytvořit radius databáze # vytvořit poloměr databáze
mysql --protocol=tcp -h localhost -u root -ptest radius
mysql --protocol=tcp -h localhost -u root -ptest radius
Přidání správného data k vyřešení problému s neplatnou výchozí hodnotou v /etc/freeradius/sql/mysql/cui.sql .
Po opravě v /etc/freeradius/sql/mysql/cui.sql soubor a znovu spusťte výše uvedený příkaz, abyste opravili výše uvedenou chybu.
mysql --protocol=tcp -h localhost -u root -ptest radius
mysql --protocol=tcp -h localhost -u root -ptest radius
mysql --protocol=tcp -h localhost -u root -ptest radius
mysql --protocol=tcp -h localhost -u root -ptest radius
Spusťte následující příkaz sed pro změnu výchozího hesla uživatele "radius". V tomto tutoriálu je heslo pro uživatele "radius" "test". Zvolte si na svém serveru bezpečné heslo.sed -i "s/password =\"radpass\"/password =\"test\"/g" /etc/freeradius/sql.conf
Vytvoření měkkého odkazu pro konfiguraci sql v adresáři modules serveru Freeradius.
ln -sf /etc/freeradius/sql.conf /etc/freeradius/modules/sql
Na Ubuntu 16.04 nejsou přítomny následující soubory, proto vytvořte všechny požadované soubory s popsaným obsahem .
- /etc/freeradius/modules/hourlylytraffic
- /etc/freeradius/modules/dailytraffic
- /etc/freeradius/modules/monthlytraffic
/etc/freeradius/modules/hourlytraffic
sqlcounter hourlytrafficcounter {
counter-name =hodinový provoz
check-name =hodinový provoz
sqlmod-inst =sql
klíč =uživatelské jméno
reset =1h
query ="SELECT SUM(acctinputoctets + acctoutputoctets) DIV 1048576 FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime)> '%b'"
}
/etc/freeradius/modules/dailytraffic
sqlcounter dailytrafficcounter {
counter-name =Daily-Traffic
check-name =Daily-Traffic
sqlmod-inst =sql
key =Uživatelské jméno
reset =denně
query ="SELECT SUM(acctinputoctets + acctoutputoctets) DIV 1048576 FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime)> '%b'"
}
/etc/freeradius/modules/monthlytraffic
sqlcounter monthtrafficcounter {
counter-name =Monthly-Traffic
check-name =Monthly-Traffic
sqlmod-inst =sql
klíč =Uživatelské jméno
reset =měsíčně
query ="SELECT SUM(acctinputoctets + acctoutputoctets) DIV 1048576 FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime)> '%b'"
Následující soubor je důležitý pro konfiguraci freeradius serveru. Naše provozní konfigurace jsou uvedeny níže.
/etc/freeradius/sites-enabled/default
autorizovat {
předběžné zpracování
chap
mschap
digest
přípona
eap {
ok =návrat
}
soubory
sql
vypršení platnosti
čas přihlášení
pap
hodinový počítadlo návštěvnosti
denní počítadlo návštěvnosti
měsíční počítadlo návštěvnosti
}
ověření {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
kap
}
Auth-Type MS-CHAP {
mschap
}
přehled
unix
eap
}
preacct {
předzpracování
acct_unique
přípona
soubory
}
účetnictví {
podrobnosti
unix
radutmp
sql
exec
attr_filter.accounting_response
}
relace {
radutmp
sql
}
post-auth {
sql
exec
Post-Auth-Type ODMÍTNOUT {
attr_filter.access_reject
}
}
před proxy {
}
post-proxy {
eap
}
Pomocí následujícího příkazu restartujte server freeradius a ověřte konfiguraci.
/etc/init.d/freeradius restart
Konfigurace klienta Freeradius
Následující příkaz nastaví název hostitele a tajný klíč v souboru "servers" klienta freeradius.
echo -e "localhost\ttesting123">> /etc/radiusclient/servers
Vytvořte konfigurační soubor dictionary.microsoft pro klienty se systémem Windows.
vi /etc/radiusclient/dictionary.microsoft
#
# VSA společnosti Microsoft, z RFC 2548
#
# \$Id:poptop_ads_howto_8.htm,v 1.8 2008/10/02 08:11:48 wskwok Exp \$
#
VENDOR Microsoft 311 Microsoft
ZAČÁTEK VENDORA Microsoft
ATRIBUTE MS-CHAP-Response 1 Řetězec 1 Řetězec Microsoft ŘETĚZC MS-CHAP-CPW-1 3 řetězec Microsoft
ATTRIBUTE MS-CHAP-CPW-2 4 řetězec Microsoft
ATTRIBUTE Microsoft MS- -NT-Enc-PW 6 řetězec Microsoft
ATTRIBUTE MS-MPPE-Encryption-Policy 7 řetězec Microsoft
# Toto je v RFC označováno jako jednotné i množné číslo.
# Množné číslo vypadá jako dává větší smysl.
ATTRIBUTE MS-MPPE-Encryption-Type 8 řetězec Microsoft
ATTRIBUTE MS-MPPE-Encryption-Types 8 řetězec Microsoft
ATTRIBUTE MS-RAS-Vendor 9 Integer Microsoft
Atribut MS-Chap-domain 10 String Microsoft
Atribut MS-Chap-Challenge 11 String Microsoft
Atribut MS-CHAP-MPPE-keys 12 String Microsoft Encrypt =1
ATTRIBUTE MS-BAP-Usage 13 celé číslo Microsoft
ATRIBUTE MS-Link-Utilization-Threshold 14 celé číslo Microsoft - - D pokles
ATTRIBUTE MS-MPPE-Send-Key 16 řetězec Microsoft
ATTRIBUTE MS-MPPE-Recv-Key 17 řetězec Microsoft
ATRIBUTE MS řetězec Microsoft
ATRIBUTE MS- V řetězec Micro -Password 19 string Microsoft
ATTRIBUTE MS-New-ARAP-Password 20 řetězec Microsoft
ATTRIBUTE MS-ARAP-PW-Change-Reason 21 FI 21 Microsoft BR- AT řetězec BR- AT integer Microsoft />AT Tribute MS-ACCT-Auth-Type 23 Integer Microsoft
Atribut MS-ACCT-EAP-Type 24 Integer Microsoft
Atribut MS-CHAP2-Response 25 String Microsoft
Atribut MS-CHAP2-SUCCESS 26 řetězec Microsoft
ATTRIBUTE MS-CHAP2-CPW 27 řetězec Microsoft
ATTRIBUTE MS-Primary-DNS-Server 28 ipaddr
ATTRIBUTE 2 MS - atribut MS pad MS condar MS Primární-NBNS-Server 30 ipaddr Microsoft
ATTRIBUTE MS-Sekundární-NBNS-Server 31 ipaddr Microsoft
#ATTRIBUTE MS-ARAP-Challenge 33 ># řetězec Microsoft # Microsoft # br />#
# Hodnoty využití MS-BAP
HODNOTA Využití MS-BAP Nepovoleno 0
VALUE ed MS-BAP-Využití / Použití Vyžadováno 2
# Hodnoty MS-ARAP-Password-Change-Reason
VALUE MS-ARAP-PW-Change-Reason Just-Change-Password 1
VALUE MS-ARAP-PW-Change-Reason- P - P - P - P - P - P - P - P - P - P - P - P - Důvod Admin-Requires-Password-Change 3
VALUE MS-ARAP-PW-Change-Důvod Heslo je příliš krátké 4
# cc< Hodnota T-Acct A VALUE MS-Acct A -Auth-type Pap 1
Hodnota MS-ACCT-AUTH-TYPE CHAP 2
Hodnota MS-ACCT-AUTH-TYPE MS-CHAP-1 3
Hodnota MS-ACCT-AUTH-TYPE MS-CHAP-2 4
VALUE MS-Acct-Auth-Type EAP 5
# Hodnoty typu MS-Acct-EAP 5
Hodnota MS-ACCT-EAP-TYPE OTP 5
Hodnota MS-ACCT-EAP-Type Generic-Token-Card 6
Hodnota MS-ACCT-EAP-TYPE TLS 13
End-Vendor Microsoft
vi /etc/radiusclient/dictionary.merit
#
# Experimentální rozšíření, pouze konfigurace (pro kontrolní položky)
# Názvy/čísla podle rozšíření MERIT (pokud je to možné).
#
ATTRIBUTE NAS- Identifikátor 32 String
Atribut Proxy-State 33 String
Atribut přihlašovací-latovací-servis 34 String
Atribut Přihlašovací-lat-uzel 35 řetězec
atribut přihlašovací-lat-skupina 36 řetězec
Atribut Framed-AppleTalk-Link 37 Integer
Atribut Framed-AppleTalk-Network 38 Integer
Atribut Framed-AppleTalk-Zone 39 String
Attribute Acct-Input-Packets 47 Integer
ATTRIBUTE Acct-Output-Packets 48 celé číslo
# 8 je rozšíření MERIT.
VALUE Typ služby Authenticate-Only < / br>< > 8
Přidejte následující řádky do /etc/radiusclient/dictionary soubor.
ZAHRNUJTE /etc/radiusclient/dictionary.merit
ZAHRNUJTE /etc/radiusclient/dictionary.microsoft
ATTRIBUTE Hodinový provoz 1000 celé číslo
ATRIBUTE Denní provoz 1001 celé číslo
ATRIBUTE Měsíční návštěvnost 1002 celé číslo
Následující je konfigurace spuštění radius klienta./etc/radiusclient/radiusclient.conf# Obecná nastavení
# určují, která autentizace je na prvním místě, respektive která
# autentizace se používá. možné hodnoty jsou:"radius" a "local".
# pokud zadáte "radius,local", pak se nejprve zeptá serveru RADIUS
# a poté místního. pokud je zadáno pouze jedno klíčové slovo, pouze
# je dotazován tento server.
auth_order radius,local
# maximální počet pokusů o přihlášení uživatel má
login_tries 4
# časový limit pro všechny pokusy o přihlášení
# při překročení této doby je uživatel vyhozen
login_timeout 60
# název souboru nologin, který, pokud existuje, zakáže přihlášení. může být
# rozšířeno o ttyname, což povede k
# zámku specifickému pro terminál (např. /etc/nologin.ttyS2 zakáže
# přihlášení na /dev/ttyS2)
nologin /etc/nologin
# název souboru problému. zobrazí se pouze v případě, že není předáno žádné uživatelské jméno
# na příkazovém řádku radlogin
problém /etc/radiusclient/issue
seqfile /var/run/freeradius/freeradius.pid
## RADIUS poslouchá oddělené dvojtečkou od názvu hostitele. pokud
# není zadán žádný port /etc/services je konzultován s okruhem
authserver localhost
# RADIUS server, který se má použít pro účtování požadavků. Vše, co jsem
# řekl pro authserver, platí také.
acctserver localhost
# soubor obsahující sdílená tajemství používaná pro komunikaci
# mezi klientem RADIUS a serverem
servery /etc/radiusclient/servers
# slovník povolených atributů a hodnot stejně jako v normálních
# distribucích RADIUS
slovníku /etc/radiusclient/dictionary
# program pro volání přihlášení ověřeného RADIUS
login_radius /sbin/login.radius
# soubor, který určuje mapování mezi ttyname a atributem NAS-Port
mapfile /etc/radiusclient/port- id-map
# výchozí autentizační sféra pro připojení ke všem uživatelským jménům, pokud uživatel výslovně nezadal žádnou
# sféru
default_realm
# čas čekání na odpověď ze serveru RADIUS
radius_timeout 10
# odešlete požadavek mnohokrát znovu, než vyzkoušíte další server
radius_retries 3
# místní adresa, ze které je třeba posílat pakety okruhu
bindaddr *
# program ke spuštění pro místní přihlášení
# musí podporovat příznak -f pro předem ověřené přihlášení
login_local /bin/login
Následující konfigurace (která souvisí s IPv6) v souboru /etc/radiusclient/dictionary by měla být zakomentován, aby bylo možné spustit klienta Radius.Atribut NAS-FILTER-RULE 92 String
Atribut původně-line-info 94 String
Atribut NAS-IPV6-Address 95 String
Atribut Framed-Interface-Id 96 String
Atribut Framed-IPV6-PREFIX 97 IPv6PREFIX
Atribut Přihlašovací IPV6-hostitel 98 String
Atribut Framed-IPV6-ROTE 99 String
Atribut Framed-ipv6-Pool 100 Stributs
Error-Cause 101 celé číslo
ATTRIBUTE Název klíče EAP 102 řetězec
#
# dr adresa Add. IP IP /adresa IP 8 atributy RFC 1 / brv6 Atributy RFC 1 / BR V6 >ATRIBUTE DNS-Server-IPv6-Address 169 ipv6addr
ATTRIBUTE Route-IPv6-Information 170 ipv6prefix
Konfigurace serveru Poptop
Přidejte následující konfiguraci do /etc/pptpd.conf soubor.
localip 10.20.30.1
remoteip 10.20.30.2-254
Spusťte následující příkaz sed v /etc/ppp/pptpd-options soubor.
sed -i "/^ms-dns/d" /etc/ppp/pptpd-options
sed -i -e "/radius.so/d" -e "/radattr.so/d" /etc/ppp/pptpd-options
Přidejte následující řádky do /etc/ppp/pptpd-options soubor.
ms-dns 8.8.8.8
ms-dns 8.8.4.4
plugin /usr/lib/pppd/2.4.7/radius.so
plugin /usr/lib/pppd/ 2.4.7/radattr.so
Chcete-li použít výše uvedené změny, restartujte službu pptpd.
restart služby pptpd
Konfigurace xl2tp
Zahrňte následující konfigurační řádky do /etc/xl2tpd/xl2tpd.conf soubor, jak je znázorněno na následujícím obrázku.
[globální]
ipsec saref =ano
[lns výchozí]
rozsah IP =10.10.10.2-10.10.10.255
místní IP =10.10.10.1
odmítnout chap =ano
odmítnout pap =ano
vyžadovat ověření =ano
ladit ppp =ano
pppoptfile =/etc/ppp/options.xl2tpd
bit délky =ano
Konfigurace OpenSwan
Přidejte následující nastavení tajného souboru ipsec do /etc/ipsec.secrets .
192.168.15.4 %any 0.0.0.0:PSK "test"
Konfigurace IPsec pro tunel L2TP je součástí /etc/ipsec.conf soubor.
verze 2.0
nastavení konfigurace
nat_traversal=yes
virtual_private=%v4:192.168.0.0/16,%v4:10.0.0.0/8,%v14:1 .0.0/12,%v4:25.0.0.0/8,%v4:!10.254.253.0/24
protostack=netkey
#protostack=mast # používá se pouze pro rozhraní SAref + MAST
="%defaultroute"
oe=off
conn psk-l2tp
pfs=no
auto=add
rekey=no
# overlapip=yes # pro SAref + MAST
# sareftrack=yes # pro SAref + MAST
type=transport
vlevo=192.168.15.4
7 levý proto port right=%any
rightprotoport=17/%any
rightsubnet=vhost:%priv,%no
authby=secretKonfigurace serveru PPP
Přidejte následující konfiguraci do /etc/ppp/options.xl2tpd soubor.
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
auth
crtscts
idle 1800
mtu 1200
mru 1200
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
plugin /usr/lib/pppd/2.4.7/radius.so
plugin /usr/lib/pppd/2.4.7/radattr.so
Po úspěšné konfiguraci všech požadovaných balíčků nyní restartujte všechny služby a otestujte L2TP VPN.Restartování služeb IPsec a xl2tp.
Následující obrázek ukazuje, že server freeradius běží v režimu démona, což pomáhá identifikovat, že server funguje.
Vložte uživatelský účet do databáze MySQL a otestujte konfiguraci.
INSERT INTO radius.radcheck (username, atribut, op, value) VALUES ('username','User-Password',':=','userpassword');
Následující příkaz zkontroluje, zda server Freeradius funguje na localhost.radtest uživatelské jméno uživatelské heslo localhost 0 testing123
Konfigurace klienta L2TP Android
Přejděte do nastavení ==> Další ==> VPN ==>Přidat síť VPN na telefonu Android a vytvořte nový L2TP PSK VPN, jak je uvedeno níže.
Po vytvoření nové L2TP VPN na ni klikněte a zadejte uživatelské jméno/heslo (nakonfigurováno na serveru freeradius).
Následující obrázek ukazuje, že se L2TP VPN připojuje.
Následující obrazovky ukazují, že L2TP VPN je úspěšně připojena pomocí klienta Android.
Stav L2TP VPN
Freeradius ukazuje úspěšné ověření L2TP klienta Android.
Následující příkaz zobrazuje stav tunelu IPsec
stav xfrm ip
Protokol OpenSwan (/var/log/auth.log ) a protokol xl2tp (/var/log/syslog ) také zobrazuje stav L2TP VPN.
tail -f /var/log/auth.log
tail -f /var/log/syslog
V tomto kurzu je tunelovací protokol vrstvy 2 použit s IPSec a Freeradius k zajištění mechanismů zabezpečení a ověřování. K demonstraci fungování L2TP přes IPsec se používá klient založený na Androidu.
Jak nainstalovat minimální server Ubuntu 16.10 (Yakkety Yak). Jak nainstalovat Django s PostgreSQL a Nginx na Ubuntu 16.04Ubuntu