הקמת VPN של L2TP/IPSEC

מתוך He Ikoula wiki
גרסה מ־13:36, 9 בפברואר 2017 מאת Ikbot (שיחה | תרומות) (יצירת דף עם התוכן "<br />מאמר זה הוא התוצאה של תרגום אוטומטי המבוצע על ידי תוכנה. אתה יכול להציג את מקור המאמר [...")
(הבדל) → הגרסה הקודמת | הגרסה האחרונה (הבדל) | הגרסה הבאה ← (הבדל)
Jump to navigation Jump to search


מאמר זה הוא התוצאה של תרגום אוטומטי המבוצע על ידי תוכנה. אתה יכול להציג את מקור המאמר כאן.

מבוא

VPN (רשת פרטית וירטואלית) est un système permettant de créer un lien direct entre des ordinateurs distants. On utilise notamment ce terme dans le milieu de la dématérialisation fiscale et dans le travail à distance, ainsi que pour l'accès à des structures de type מחשוב ענן. L'avantage du L2TP (שכבה 2 פרוטוקול Tunelling) réside dans l'utilisation d'une clé pré partagée en plus des identifiants de connexion habituels. A cela s'ajoute IPSEC, une technologie d'encapsulation cryptée dans la trame IP.

תנאים מוקדמים

כדי לעקוב אחר לימוד זו עליך :

  • מכונת תחת הפצת לינוקס (דביאן 8פדורה, CentOS, אובונטו, פאי פטל...) לא עובד תחת דביאן 8 בגלל המאגר של OpenSwan שאינם קיימים עוד
  • יודע את כתובת ה-ip הציבורית שלך, אם אתה לא יודע . כאן!

ערכת לימוד

ראשית, להיכנס לך שורש (או באמצעות משתמש שיש לו זכויות משתמש). באפשרותך להשתמש פוטי להתחבר למחשב מרחוק באמצעות SSH או פשוט לפתוח מסוף, אם יש לך גישה לממשק הגרפי של המחשב שלך.

חבילות העדכון והתקנה

ראשית, לעדכן את המחשב שלך ולהתקין המאגר נחוץ :

apt-get update && apt-get upgrade -y
apt-get install openswan xl2tpd ppp lsof

OpenSwan ישאל אותך כמה שאלות, תשובות y עם ערכי ברירת המחדל.'.

הוספת כללי חומת האש

לאחר מכן נוסיף כלל ל iptables כדי לאפשר תעבורה VPN (החלף %SERVERIP% על ידי ה-ip של שלך שרת) :

iptables -t nat -A POSTROUTING -j SNAT --to-source %SERVERIP% -o eth0


לאחר מכן הפעל את הפקודות הבאות כדי להפעיל את ניתוב מנות IP:

echo "net.ipv4.ip_forward = 1" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.accept_redirects = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_source_route = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" |  tee -a /etc/sysctl.conf
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
sysctl -p

להפוך את מתמיד כדי הפעלה מחדש של המחשב :

nano /etc/rc.local

לאחר מכן, הוסף בסוף ממש לפני יציאה 0 :

for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
iptables -t nat -A POSTROUTING -j SNAT --to-source %SERVERIP% -o eth+


מימושIPSEC


ליצור קובץ תצורה חדשה ipsec :

mv /etc/ipsec.conf /etc/ipsec.conf.bak && nano /etc/ipsec.conf

אז תדחפי את זה : לא לשכוח להחליף %SERVERIP% על ידי כתובת ה-IP של שרת

version 2 # conforms to second version of ipsec.conf specification

config setup
    dumpdir=/var/run/pluto/
    #in what directory should things started by setup (notably the Pluto daemon) be allowed to dump core?

    nat_traversal=yes
    #whether to accept/offer to support NAT (NAPT, also known as "IP Masqurade") workaround for IPsec

    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v6:fd00::/8,%v6:fe80::/10
    #contains the networks that are allowed as subnet= for the remote client. In other words, the address ranges that may live behind a NAT router through which a client connects.

    protostack=netkey
    #decide which protocol stack is going to be used.

    force_keepalive=yes
    keep_alive=60
    # Send a keep-alive packet every 60 seconds.

conn L2TP-PSK-noNAT
    authby=secret
    #shared secret. Use rsasig for certificates.

    pfs=no
    #Disable pfs

    auto=add
    #the ipsec tunnel should be started and routes created when the ipsec daemon itself starts.

    keyingtries=3
    #Only negotiate a conn. 3 times.

    ikelifetime=8h
    keylife=1h

    ike=aes256-sha1,aes128-sha1,3des-sha1
    phase2alg=aes256-sha1,aes128-sha1,3des-sha1
    # https://lists.openswan.org/pipermail/users/2014-April/022947.html
    # specifies the phase 1 encryption scheme, the hashing algorithm, and the diffie-hellman group. The modp1024 is for Diffie-Hellman 2. Why 'modp' instead of dh? DH2 is a 1028 bit encryption algorithm that modulo's a prime number, e.g. modp1028. See RFC 5114 for details or the wiki page on diffie hellmann, if interested.

    type=transport
    #because we use l2tp as tunnel protocol

    left=%SERVERIP%
    #fill in server IP above

    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

    dpddelay=10
    # Dead Peer Dectection (RFC 3706) keepalives delay
    dpdtimeout=20
    #  length of time (in seconds) we will idle without hearing either an R_U_THERE poll from our peer, or an R_U_THERE_ACK reply.
    dpdaction=clear
    # When a DPD enabled peer is declared dead, what action should be taken. clear means the eroute and SA with both be cleared.

On crée ensuite le preshared secret (המפתח המשותף מראש) :

nano /etc/ipsec.secrets

והזינו את הקו הזה :

%SERVERIP%  %any:   PSK "VotreClePlusOuMoinsSecurisee"

לשקול להחליף %SERVERIP% par l'IP de votre שרת. Si vous séchez pour la création de votre clé vous pouvez utilisez la commande suivante :

openssl rand -hex 30


אנחנו לבדוק שהכל בסדר, אז תשתמש בפקודה זו :

ipsec verify

אתה חייב לקבל :

Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.38/K3.13.0-24-generic (netkey)
Checking for IPsec support in kernel                            [OK]
 SAref kernel support                                           [N/A]
 NETKEY:  Testing XFRM related proc values                      [OK]
    [OK]
    [OK]
Checking that pluto is running                                  [OK]
 Pluto listening for IKE on udp 500                             [OK]
 Pluto listening for NAT-T on udp 4500                          [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [WARNING]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]

Configuration de xl2tpd

נתחיל על-ידי עריכת קובץ תצורה חדש :

mv /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.bak && nano /etc/xl2tpd/xl2tpd.conf

אז תדחפי את זה :

[global]
ipsec saref = yes
saref refinfo = 30

;debug avp = yes
;debug network = yes
;debug state = yes
;debug tunnel = yes

[lns default]
ip range = 172.16.1.30-172.16.1.100
local ip = 172.16.1.1
refuse pap = yes
require authentication = yes
;ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

תצורת PPP

עבור חלק זה, שוב ניצור קובץ תצורה חדש (חדש מדי במשפט אחד :3) :

mv /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.bak && nano /etc/ppp/options.xl2tpd

לאחר מכן להוסיף את זה :

require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
auth
mtu 1200
mru 1000
crtscts
hide-password
modem
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

כאן השתמשתי DNS הציבורי ל- Google, אתם יכולים לשנות ולהשתמש אלה של הבחירה שלך ! ;)

הוספת משתמשים

סוף סוף ! שלב קריטי זה יאפשר לכם להגדיר את הכניסה והסיסמאות למשתמשים vpn שלך, פשוט לערוך את הקובץ הזה :

nano /etc/ppp/chap-secrets

מתחת קו אופייני:

jean          l2tpd   0F92E5FC2414101EA            *


'תשומת לב : קובץ זה אינו מקרה רגיש, אם אתה שם אות רישית, עליך לשמור אותו. בעת ההקלדה שלך הכניסה או הסיסמה. "

סוף סוף מחדש :

/etc/init.d/ipsec restart && /etc/init.d/xl2tpd restart



מאמר זה נראה שימושי ?

0



אין באפשרותך לפרסם תגובות.