小紅帽技術論壇 在這裡你可以看到你訂閱的主題,悄悄話,編輯個人資料及環境設定 免費註冊! 行事曆 搜尋其他會員 常見問題
搜尋 小紅帽流量分析 小紅帽專用irc 聊天室 Web 版!建議安裝使用 hmirc 軟體! 回首頁 登出
小紅帽技術論壇 : Powered by vBulletin version 2.2.9 小紅帽技術論壇 > 電腦類 > Unix-like 系統討論板 > Linux 系統討論板 > 《教學》實作在 Linux 上使用FreeS/WAN 建立 LAN-To-LAN VPN 及 Windows 2K/XP client VPN connection
  上一篇主題   下一篇主題
作者
主題、內容    發表新的文章     回覆文章

adersun
新進會員


註冊日期: Nov 2001
來自:
發表文章數: 10

《教學》實作在 Linux 上使用FreeS/WAN 建立 LAN-To-LAN VPN 及 Windows 2K/XP client VPN connection

實作在 Linux 上使用FreeS/WAN 建立 LAN-To-LAN VPN 及 Windows 2K/XP client VPN connection

作者 : adersun

FreeS/WAN 是一個使用 IPSec 協定的 VPN 軟體, 它利用 OpenSSL強大的加密能力來建立功能齊全的 VPN 環境, 但是一開始因為它沒有應用在 Windows base client的功能, 所以一般都把它用來使用在 LAN-to-LAN base 為基礎的VPN環境.
但是現在有越來越多的一般企業有 Windows client 需要使用 VPN 來聯絡自己公司內部網路的需求, 因此就有些 FreeS/WAN 的使用者位它開發了支援 Windows client 的Patch 及 Tools.
本文在說明如何在 Linux 系統上以 FreeS/WAN 建立 LAN-to-LAN 及 Windows 2K/XP 客戶端的 VPN 環境.

測試環境 :

Red Hat 7.3, kernel- 2.4.18-3

您所需要的套件 :

FreeS/WAN (get 1.9.9 or later) : http://download.freeswan.ca/freeswan-1.99.tar.gz
RedHat kernel IPSec module enable RPM : ftp://ftp.xs4all.nl/pub/crypto/free...es/RedHat-RPMs/ freeswan-module-1.99_2.4.18_3-0.i386.rpm
X.509 Patch for FreeS/WAN : http://www.strongsec.com/freeswan/x...wan-1.99.tar.gz
OpenSSL 0.9.7a or later : http://www.openssl.org/source/openssl-0.9.7a.tar.gz
Windows 2000/XP VPN Tool : http://vpn.ebootis.de
Windows 2000 ipesecpol.exe Tool Version 1.22 該程式式在 Windows 2000 Resource Kit.您可以在此 download: http://agent.microsoft.com/windows2.../ipsecpol-o.asp



因為要加入 Patch, 所以在這裡使用的均為 tar ball 安裝.

首先必須先 Compile 您的 kernel, 加入支援 IPSec, GRE, …及其他所需的網路選項, 在 RedHat 中您需要在 kernel 裡加入支援 IPSec, 目前已有RPM file 可用, 至於如何 compile kernel 在此不再作說明.

安裝 OpenSSL :

code:
 # cd /tmp

# cp ./openssl-0.9.7a.tar.gz /usr/src
# cd /usr/src
# tar zxvf openssl-0.9.7a.tar.gz
# cd openssl-0.9.7a
# ./configure
# make;make test;make install


安裝FreeS/WAN + X.509 Patches :

我們需要讓 Windows client 可以使用 VPN, 所以在 server 端必須加上 X.509 patch

code:
# cd /tmp

# cp ./ freeswan-1.99.tar.gz /usr/src
# cd /usr/src
# tar zxvf freeswan-1.99.tar.gz
# cd freeswan-1.99
# gzip –cd /tmp/x509patch-0.9.25-freeswan-1.99.tar.gz | patch –p1
# make programs
# make install


建立認證權仗 (Certificate Authority) <-(小弟學淺, 不知道是不是這樣翻譯??) :

1. 編輯 /use/ share/ssl/openssl.cnf 檔, 將 default_bits =1024 改為 default_bits = 2048, 把 default_days = 365 改為 3650.
2. 建立一個目錄放置等一下我們做出來的各個認證檔, 通常我會建在 /root/vpn 下, 在將此目錄權限改為 700, 如此建立出來的認證檔就只有 root 有權限 access.
3. 編輯 /usr/share/ssl/misc/CA檔, 將 DAYS="days -365" 改為 DAYS="days -3650",
4. # cd /root/vpn
# /usr/share/ssl/misc/CA –newca
接下來則會問你一連串的問題, 請依據您實際狀況輸入, 千萬不要輸入特殊字元如 : # ,+, / …, 以下為範例 :

code:

# /usr/share/ssl/misc/CA -newca
CA certificate filename (or enter to create)
(enter)
Making CA certificate ...
Using configuration from /usr/lib/ssl/openssl.cnf
Generating a 2048 bit RSA private key
.............................................................................+++
........................................+++
writing new private key to './demoCA/private/./cakey.pem' <- 告訴你它將會建立 cakey.pem 這個檔.
Enter PEM pass phraseabcdefg) 這個 password 將作為以後建立其他?#123;證時所需要鍵入的 password.
Verifying password - Enter PEM pass phraseabcdefg) 再輸入一次 password.
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:TW(enter) 輸入你的國碼
State or Province Name (full name) [Some-State]:Taiwan(enter) 輸入你的洲 / 省
Locality Name (eg, city) []:Hsinchu(enter) 輸入您所在的城市名.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ader’s Personal Studio(enter) 輸入您公司的寶號
Organizational Unit Name (eg, section) []enter)輸入您的組織名稱, 通常我留空白, 直接按 enter.
Common Name (eg, your name or your server’s hostname) []:linux-test(enter) 輸入你想要的Certificate Authority 名字, 通常我輸入我 linux 主機的 hostname.
Email Address []:ca@example.com(enter) abcd@abcd.com.tw 輸入你的 email address.
#


現在我們已經建立一個可以用來製造 client 認證的認證權仗(certificate authority).

製造認證 (generate certificates) :

1. 首先我們需要先為 我們的 VPN Gateway製造一個認證出來

code:

# /usr/share/ssl/misc/CA -newreq
Using configuration from /usr/lib/ssl/openssl.cnf
Generating a 2048 bit RSA private key
...................................+++
...............................+++
writing new private key to 'newreq.pem'
Enter PEM pass phraseabcdefg)
Verifying password - Enter PEM pass phraseabcdefg)
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:TW(enter)
State or Province Name (full name) [Some-State]:Taiwan(enter)
Locality Name (eg, city) []:Hsinchu(enter)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ader’s Personal Studio(enter)
Organizational Unit Name (eg, section) []enter)
Common Name (eg, YOUR name) []:linux-test(enter)
Email Address []:abcd@abcd.com.tw (enter)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []enter)
An optional company name []enter)
Request (and private key) is in newreq.pem
#


現在要註冊這個認證 :

code:

# # /usr/share/ssl/misc/CA -sign
Using configuration from /usr/share/ssl/openssl.cnf
Enter PEM pass phrase:
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName :PRINTABLE:'TW'
stateOrProvinceName :PRINTABLE:'Taiwan'
localityName :PRINTABLE:'Hsinchu'
organizationName :PRINTABLE:'Ader's Personal Studio'
commonName :PRINTABLE:'linux-test'
emailAddress :IA5STRING:'abcd@abcd.com.tw'
Certificate is to be certified until Mar 22 10:01:37 2013 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
(然後會 show出一大堆編碼)
Signed certificate is in newcert.pem <- 告訴你?#123;證已註冊.


2. 現在我們要把剛剛製造出來的檔案改名成我們可以辨識的檔案

code:

# mv newcert.pem vpn@linux-test.abcd.com.tw.pem
# mv newreq.pem vpn@linux-test.abcd.com.tw.key


3. 編輯我們剛才更名的 vpn@linux-test.abcd.com.tw.key 檔, 將

code:

-----BEGIN CERTIFICATE REQUEST----- 後的那一段全部刪除, 只留下-----BEGIN RSA PRIVATE KEY----- 到-----END RSA PRIVATE KEY----- 這一段內容.


安裝認證到您的VPN Gateway :

code:

# cp ./vpn@linux-test.abcd.com.tw.key /etc/ipsec.d/private
# cp ./vpn@linux-test.abcd.com.tw.pem /etc/ipsec.d
# cp ./ demoCA/cacert.pem /etc/ipsec.d/cacerts
# openssl ca -gencrl -out /etc/ipsec.d/crls/crl.pem
Using configuration from /usr/share/ssl/openssl.cnf
Enter PEM pass phrase : (abcdefg)
#


設定您的 VPN Gateway :

1. 設定 /etc/ipsec.secrets
: RSA host.example.com.key "password"
“password”這是您剛剛在 generate SSL 時打的 password.
2. 設定 /etc/ipsec.conf :
ipsec.conf 應該看起來長的這樣 :

code:

config setup
interfaces=%defaultroute
klipsdebug=none
plutodebug=none
plutoload=%search
plutostart=%search
uniqueids=yes

conn %default
keyingtries=1
compress=yes
disablearrivalcheck=no
authby=rsasig
leftrsasigkey=%cert
rightrsasigkey=%cert

conn roadwarrior-net
leftsubnet=(你的subnet)/(你子網路的netmask)
also=roadwarrior

conn roadwarrior
right=%any
left=%defaultroute
leftcert=vpn@linux-test.abcd.com.tw.pem
auto=add
pfs=yes



請注意上面的編排, 每一個 section 的第一行需凸出該段落的其他部分,
請不要問我為何, 請問作者…. 我曾經試過好幾次失敗, 就是因為這地方
沒注意到.
上述的設定是任何人只要是有剛剛您在前面步驟所做出的憑證, 就可以
連接上你的 gateway .
上面的設定有兩個 roadwarrior 段落值得注意, 第一個設定的是提供直接
連線到您的 VPN Gateway, 另一個是提供您的 client 到 VPN Gateway 後
方的網路區域.

Client 設定 ( Linux 機器, 這可能是單機, 也可以是另一個子網路的 gateway.. )

1. 請重複上面generate certificates 的步驟, 在建立一個 certificate, 然後將它
命名為 client-1@linux-test.abcd.com.tw.pem .client-1@linux-test.abcd.com.tw.key ç名字請自取, 只要能辨認就行.

2. 使用 scp , wscp 或secure-ftp 之類的加密傳輸軟體將下列我們製造出來的
認證複製到您的 client 機器.
vpn@linux-test.abcd.com.tw.pem
client-1@linux-test.abcd.com.tw.pem
client-1@linux-test.abcd.com.tw.key
cacert.pem
crl.pem

3. 將上述檔案複製到適合的位置 :

code:

# cp client-1@linux-test.abcd.com.tw.key /etc/ipsec.d/private
# cp client-1@linux-test.abcd.com.tw.key/etc/ipsec.d
# cp vpn@linux-test.abcd.com.tw.pem /etc/ipsec.d
# cp crl.pem /etc/ipsec.d/crls
# cp cacert.pem /etc/ipsec.d/cacerts/cacert.pem


4. 設定 client 端的 ipsec :
ipsec.secrets:

: RSA client-1@linux-test.abcd.com.tw.key "password" <--這是您剛剛在 generate SSL 時打的 password

ipsec.conf :

code:

config setup
interfaces=%defaultroute
klipsdebug=none
plutodebug=none
plutoload=%search
plutostart=%search
uniqueids=yes

conn %default
keyingtries=0
compress=yes
disablearrivalcheck=no
authby=rsasig
leftrsasigkey=%cert
rightrsasigkey=%cert

conn roadwarrior-net
left=(ip.of.host)
leftsubnet=(你的subnet)/(你子網路的netmask)
also=roadwarrior
conn roadwarrior
left=(ip.of.host)
leftcert=host.example.com.pem
right=%defaultroute
rightcert=client-1@linux-test.abcd.com.tw.pem
auto=add
pfs=yes


如果您想讓它自動連線, 將上面的auto=add 改成auto=start

5. 連線您的 VPN :

code:

# ipsec auto --up roadwarrior
# ipsec auto --up roadwarrior-net


Client 設定 ( Windows 2K/XP 機器 ):

1. 建立 windows client 認證 :
請重複上面generate certificates 的步驟, 在建立一個 certificate, 然後將它
命名為 client-2@linux-test.abcd.com.tw.pem .client-2@linux-test.abcd.com.tw.key ç名字請自取, 只要能辨認就行.

2. 匯出上面的認證成 windows 認識的 *.p12 檔 :
# openssl pkcs12 -export -in client-2@linux-test.abcd.com.tw.pem -inkey client-2@linux-test.abcd.com.tw.key -certfile demoCA/cacert.pem -out client-2@linux-test.abcd.com.tw.p12
然後run 一下下面的指令, 並記下其輸出的結果, 待會我們會用到 :
$ openssl x509 -in demoCA/cacert.pem -noout –subject

3. 將上面檔案複製到你的 windows client 上, 並下載文章最前所述的Windows 2000/XP VPN Tool 並解壓到適當位置 ( 如 : c:\ipsec )

4. 建立IPSEC + Certificates MMC ( 我工作用的 PC 為 windows 2000 英文版, 所以很抱歉我以英文寫出以下步驟 )
Start/Run/MMC
Console - Add/Remove Snap-in
點擊 'Add'
點擊 'Certificates' - 'Add'
選擇 'Computer Account', 'Next'.
選擇 'Local computer', 'Finish'.
點擊 'IP Security Policy Management', 'Add'.
選擇 'Local Computer', 'Finish'
點擊'Close', 'OK'

5. 加入認證 :
點擊'Certificates (Local Computer)' 旁的 + 號
右鍵 'Personal', 點選 'All Tasks' - 'Import' – Next
鍵入 .p12 檔的路徑, 'Next'
鍵入 password, Next
選擇 'Automatically select the certificate store based on the type of certificate', Next
點擊 Finish, - 然後一路 yes
存檔離開 mmc

6. 設定Windows 2000/XP VPN Tool :
安裝您download 下來的ipsecpol.exe (Windows 2000), 如果您是 XP , XP已經在他原版 CD 裡附有ipseccmd.exe 這個檔, 然後在該機器上編輯ipsec.conf 檔, 將 "RightCA" 置換成剛剛'openssl x509 -in demoCA/cacert.pem -noout -subject' 這步時所輸出的內容, 且改寫其他內容如下所述 :

code:

conn roadwarrior
left=%any
right=(ip_of_remote_system)
rightca="C=TW,S=Taiwan,L=Hsinchu,O=Ader's Personal Studio,CN=linux-test,Email=abcd@abcd.com.tw"
network=auto
auto=start
pfs=yes

conn roadwarrior-net
left=%any
right=(ip_of_remote_system)
rightsubnet=(your_subnet)/(your_netmask)
rightca="C=TW,S=Taiwan,L=Hsinchu,O=Ader's Personal Studio,CN=linux-test,Email=abcd@abcd.com.tw"
network=auto
auto=start
pfs=yes


Note : 以上 :
rightca="C=TW,S=Taiwan,L=Hsinchu,O=Ader's Personal Studio,CN=linux-test,Email=abcd@abcd.com.tw"
為同一行.

7. 開始建立 windows client VPN 連線, 以下為執行 ipsec.exe 時之輸出:

code:

C:\ipsec>ipsec
IPSec Version 2.1.4 (c) 2001,2002 Marcus Mueller
Getting running Config ...
Microsoft's Windows 2000 identified
Host name is: (adersun-laptop)
No RAS connections found.
LAN IP address: (xxx.xxx.xxx.xxx)
Setting up IPSec ...

Deactivating old policy...
Removing old policy...

Connection roadwarrior:
MyTunnel : (xxx.xxx.xxx.xxx)
MyNet : (xxx.xxx.xxx.xxx)/255.255.255.255
PartnerTunnel: (yyy.yyy.yyy.yyy)
PartnerNet : (yyy.yyy.yyy.yyy)/255.255.255.255
CA (ID) : C=TW,S=Taiwan,L=Hsinchu,O=Ader's Personal Studio,...
PFS : y
Auto : start
Auth.Mode : MD5
Rekeying : 3600S/50000K
Activating policy...

Connection roadwarrior-net:
MyTunnel : (xxx.xxx.xxx.xxx)
MyNet : (xxx.xxx.xxx.xxx)/255.255.255.255
PartnerTunnel: (yyy.yyy.yyy.yyy)
PartnerNet : (yyy.yyy.yyy.yyy)/(255.255.255.0)
CA (ID) : C=TW,S=Taiwan,L=Hsinchu,O=Ader's Personal Studio,...
PFS : y
Auto : start
Auth.Mode : MD5
Rekeying : 3600S/50000K
Activating policy...

C:\ipsec>


大功告成 !!

參考資料 :

http://www.jacco2.dds.nl/networking/freeswan-l2tp.html
http://www.jacco2.dds.nl/networking...p-freeswan.html
http://www.jacco2.dds.nl/networking/msl2tp.html
http://www.natecarlson.com/linux/ipsec-x509.php
http://vpn.ebootis.de/
http://www.strongsec.com/freeswan/
http://www.freeswan.org/

文章編號:0 | 向板主反映這篇文章 | 顯示 IP

adersun 已離線! Old Post 04-21-2003 13:41
點選這裡查看 adersun 的個人檔案 點選這裡寄送 Email 給 adersun 按這裡傳送悄悄話給 adersun 按這裡搜尋 adersun 所發表的文章 按這裡將 adersun 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

adersun
新進會員


註冊日期: Nov 2001
來自:
發表文章數: 10

sorry, 以上文件為我在公司內為了以後新進人員寫的, 因分好幾天寫的, 如有檔名及輸出入字串上下不符, 請閱讀者自行斟酌.....

如有廖誤, 敬請指教

多謝 !!

文章編號:1 | 向板主反映這篇文章 | 顯示 IP

adersun 已離線! Old Post 04-21-2003 15:17
點選這裡查看 adersun 的個人檔案 點選這裡寄送 Email 給 adersun 按這裡傳送悄悄話給 adersun 按這裡搜尋 adersun 所發表的文章 按這裡將 adersun 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

new-gary
初級會員


註冊日期: May 2001
來自: Taipei/士林
發表文章數: 170

在一個網站理已有將X.509包含在裡面的程式了...!!

不需要自己去更新Patch了...!!

http://www.freeswan.ca

超酷的說....!!



---------------------------------------------------------- 簽名列 -----------

操~~見鬼了.....
庵也是RHCE8.0 + CCNA + CCNP 了.....下個目標CCSP.....努力中...^___^"

文章編號:2 | 向板主反映這篇文章 | 顯示 IP

new-gary 已離線! Old Post 06-11-2003 09:23
點選這裡查看 new-gary 的個人檔案 點選這裡寄送 Email 給 new-gary 按這裡傳送悄悄話給 new-gary 參觀 new-gary 的個人首頁! 按這裡搜尋 new-gary 所發表的文章 按這裡將 new-gary 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

joy6811
技術顧問


註冊日期: Nov 2001
來自: 很台的台灣
發表文章數: 333

感謝上面兩位大大的用心
讓小弟增進不少.
謝謝

文章編號:3 | 向板主反映這篇文章 | 顯示 IP

joy6811 已離線! Old Post 06-20-2003 13:02
點選這裡查看 joy6811 的個人檔案 按這裡傳送悄悄話給 joy6811 按這裡搜尋 joy6811 所發表的文章 按這裡將 joy6811 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

目前使用的時域為(台北時間),現在時間是 19:43 。    發表新的文章     回覆文章
上一篇主題   下一篇主題
友善列印 | 把這一篇寄給好朋友! | 訂閱這個主題

跳至:
評分主題:
 

討論區權限說明:
不可以 發表新文章
不可以 回覆文章
不可以 上傳附加檔案
不可以 修改你發表的文章
HTML code 目前狀態是 關閉
vB code 目前狀態是 開啟
表情符號 目前狀態是 開啟
[IMG] code 目前狀態是 開啟



< 聯絡我們 - 小紅帽全球資訊網 >

中文化:第一版 by Eric 第二版 by Jolin 於 小紅帽全球資訊網
(版權所有,翻拷必究)
小紅帽技術論壇創立於 2000/09/15 ,使用 vBulletin 合法註冊版權