CentOS 6.5基於Open×××的×××服務器構建

wKiom1NfCxeBdGB-AAElmlhgkU8836.jpg

外部用戶透過路由器從open***服務器映射出的1194端口,鏈接×××服務器,從而訪問公司內部服務。vim

http://down.51cto.com/data/1142891bash

這裏我已經有將open***軟件進行打包(包含了open***-2.3.3.tar.gz服務器安裝包 open*** 32/64位客戶端 lzo-2.0.6.tar.gz依賴包   easy-rsa證書製做工具)服務器


1.時間校對網絡

開始沒有對時,致使後來沒法聯入×××app

yum -y install unzip pam-devel ntpdate openssl openssl-devel
#unzip用於解壓軟件
#pam-devel是安裝open***必要的依賴包
#ntpdate是網絡校時工具
ntpdate time.nist.gov
echo "/usr/sbin/ntpdate time.nist.gov" >> /etc/rc.local
echo "* */2 * * * /usr/sbin/ntpdate time.nist.gov" >> /etc/crontab

2.lzo的安裝dom

unzip open***-2.3.3.zip
cd open***-2.3.3
tar zxvf lzo-2.06.tar.gz
cd lzo-2.06
./configure --prefix=/usr
 make && make install
/sbin/ldconfig
cd ..

3.open***的安裝ssh

mkdir -p /data/open***/conf
#用於存放配置文件
mkdir -p /data/open***/log
#用於存放open***日誌
mkdir -p /data/open***/easy-rsa
#用於存放密鑰生成工具及密鑰
tar zxvf open***-2.3.3.tar.gz
cd open***-2.3.3
./configure --prefix=/data/open***
make && make install
cp sample/sample-config-files/server.conf /data/open***/conf/
#拷貝實例配置文件
cd ..

4.easy-rsa的解壓tcp

unzip easy-rsa.zip
cd easy-rsa/2.0/
cp -rf * /data/open***/easy-rsa/
cd /data/open***/easy-rsa/
chmod +x *

5.修改vars文件
ide

vim vars
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=365
export KEY_COUNTRY="CN"
export KEY_PROVINCE="GD"
export KEY_CITY="ShenZhen"      城市隨便填一個便可
export KEY_ORG="Example INC"      組織單位
export KEY_EMAIL="ca@example.com"    郵箱地址能夠隨便填寫
export KEY_OU="Manager"        組織容器能夠隨便填寫
export KEY_NAME="×××Service"   名稱能夠隨便填寫

wKioL1Nm9lOBQ7MWAACJ7ur7gH0814.png

source vars
#使之生效

6.生成證書工具

./clean-all
#初始化
./build-ca
#建立根證書,一路回車便可
Generating a 2048 bit RSA private key
........+++
.+++
writing new private key to 'ca.key'
-----
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) [CN]:
State or Province Name (full name) [GD]:
Locality Name (eg, city) [ShenZhen]:
Organization Name (eg, company) [Example INC]:
Organizational Unit Name (eg, section) [Manager]:
Common Name (eg, your name or your server's hostname) [Example INC CA]:
Name [×××Service]:
Email Address [ca@example.com]:

建立服務器端密鑰

./build-key-server server
Country Name (2 letter code) [CN]:  #回車
State or Province Name (full name) [GD]:  #回車
Locality Name (eg, city) [ShenZhen]:  #回車
Organization Name (eg, company) [Example INC]:  #回車
Organizational Unit Name (eg, section) [Manager]:  #回車
Common Name (eg, your name or your server's hostname) [server]: #回車
Name [×××Service]: #回車
Email Address [ca@example.com]:  #回車
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #回車
An optional company name []:  #回車
Using configuration from /data/open***/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'GD'
localityName          :PRINTABLE:'ShenZhen'
organizationName      :PRINTABLE:'Example INC'
organizationalUnitName:PRINTABLE:'Manager'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'×××Service'
emailAddress          :IA5STRING:'ca@example.com'
Certificate is to be certified until May  5 02:35:08 2015 GMT (365 days)
Sign the certificate? [y/n]:y #輸入y,回車
1 out of 1 certificate requests certified, commit? [y/n]y  #輸入y,回車
Write out database with 1 new entries
Data Base Updated

建立用戶

./build-key client
#建立client用戶
#方法和建立服務器密鑰是同樣的

建立Diffie-Hellman文件

./build-dh


7.配置open***

#本機要偵聽使用的IP地址
local 192.168.1.201
#使用的端口,默認1194
port 1194
#使用的協議,默認使用UDP,若是使用HTTP proxy,必須使用TCP協議
proto udp
#使用的設備可選tap和tun,tap是二層設備,支持鏈路層協議。
#tun是ip層的點對點協議,限制稍微多一些,建議使用tun,若是使用橋接的話,就必需要使用tap
dev tun
#Open×××使用的ROOT CA,使用build-ca生成的,用於驗證客戶是證書是否合法
ca /data/open***/easy-rsa/keys/ca.crt
#Server使用的證書文件
cert /data/open***/easy-rsa/keys/server.crt
#Server使用的證書對應的key,注意文件的權限,防止被盜
key /data/open***/easy-rsa/keys/server.key # This file should be kept secret
#上面提到的生成的Diffie-Hellman文件
dh /data/open***/easy-rsa/keys/dh2048.pem
#防止註銷用戶登陸
#crl-verify /data/open***/easy-rsa/keys/crl.pem
#客戶端使用的地址、子網掩碼
server 10.8.0.0 255.255.255.0
#用於記錄某個Client得到的IP地址,相似於dhcpd.lease文件,
#防止open***從新啓動後「忘記」Client曾經使用過的IP地址
ifconfig-pool-persist /data/open***/log/ipp.txt
#DHCP的DNS選項
push 「dhcp-option DNS 114.114.114.114"
push 「dhcp-option DNS 8.8.4.4"
#經過××× Server往Client push路由,client經過pull指令得到Server push的全部選項並應用
push "route 192.168.100.0 255.255.255.0"
#若是可讓××× Client之間相互訪問直接經過open***程序轉發,
#不用發送到tun或者tap設備後從新轉發,優化Client to Client的訪問效率
client-to-client
#若是Client使用的CA的Common Name有重複了,或者說客戶都使用相同的CA
#和keys鏈接×××,必定要打開這個選項,不然只容許一我的鏈接×××,建議一人一個證書
duplicate-cn
#定義最大鏈接數
max-clients 10
#NAT後面使用×××,若是×××長時間不通訊,NAT Session可能會失效,
#致使×××鏈接丟失,爲防止之類事情的發生,keepalive提供一個相似於ping的機制,
#下面表示每10秒經過×××的Control通道ping對方,若是連續120秒沒法ping通,
#認爲鏈接丟失,並從新啓動×××,從新鏈接
#(對於mode server模式下的open***不會從新鏈接)。
keepalive 10 120
#對數據進行壓縮,注意Server和Client一致
comp-lzo
#經過keepalive檢測超時後,從新啓動×××,不從新讀取keys,保留第一次使用的keys
persist-key
#經過keepalive檢測超時後,從新啓動×××,一直保持tun或者tap設備是linkup的,
#不然網絡鏈接會先linkdown而後linkup
persist-tun
#按期把open***的一些狀態信息寫到文件中,以便本身寫程序計費或者進行其它操做
status /data/open***/log/open***-status.log
#和log一致,每次從新啓動open***後保留原有的log信息,新信息追加到文件最後
log-append /data/open***/log/open***.log
#至關於debug level,具體查看manual
verb 3

8.啓動open***服務

/data/open***/sbin/open*** --config /data/open***/conf/server.conf &

查看是否啓動成功

[root@×××Server easy-rsa]# netstat -ntlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      810/sshd
tcp        0      0 :::22                       :::*                        LISTEN      810/sshd
udp        0      0 0.0.0.0:1194                0.0.0.0:*                               16470/open***

能夠看到1194端口已經啓動,說明open***啓動成功

9.註銷證書

同事離職了,須要將證書進行註銷

#註銷帳戶test
/data/open***/easy-rsa/revoke-full test
Using configuration from /data/open***/easy-rsa/openssl-1.0.0.cnf
Revoking Certificate 03.
Data Base Updated
Using configuration from /data/open***/easy-rsa/openssl-1.0.0.cnf
lushare.crt: C = CN, ST = GD, L = ShenZhen, O = Example INC, OU = Manager, CN = test, name = ×××Service, emailAddress = ca@example.com
error 23 at 0 depth lookup:certificate revoked
#error 23說明證書已經註銷

這個時候仍是能夠利用此證書登陸服務器的,在/data/open***/conf/server.conf下增長一行

crl-verify /data/open***/easy-rsa/keys/crl.pem

再重啓下open***服務便可

killall open***
/data/open***/sbin/open*** --config /data/open***/conf/server.conf &

這個時候open***下的test帳戶已經不能登陸服務器了

10.修改/etc/sysctl.conf

vim /etc/sysctl.conf
將下面值修改成1,開啓Linux ip跳轉
net.ipv4.ip_forward = 1
#保存後執行
sysctl -p

11.防火牆修改

iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
#對IP進行轉發
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 10.8.0.0/24 -j MASQUERADE
service iptables save
service iptables restart


或者上面的也能夠改爲
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.1.0/24 -o eth0 -j SNAT --to-source 192.168.1.10

12.客戶端安裝配置

wKiom1NnIUbh3xeAAABFV1NAItc039.png

裏面有一個32位的安裝客戶端,也有一個64位的,按需安裝便可

,安裝完成後,將C:\Program Files\Open×××\sample-config(我這裏安裝在C:\Program Files\Open×××)目錄下的client.o***

wKiom1NnIs6Beq86AAAgrzFCREA128.png

拷貝到C:\Program Files\Open×××\config

修改client.o***

client
dev tun    #設備類型tun、tap根據服務器來設置
proto udp   #所使用的協議有udp、tcp根據服務器來設置
remote 192.168.100.201 1194   #主服務器
#remote 250.250.250.250 1194   #備用服務器
#remote-random                 #開啓服務器的輪詢,若是設置了多臺服務器的話
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
ca ca.crt                #ca證書是從服務器上下載來的
cert client.crt          #生成的客戶端證書
key client.key           #服務器上生成的密碼
ns-cert-type server
comp-lzo                 #壓縮類型
verb 3

注意:若是是win7/win8的話須要使用管理員權限運行,不然是沒法增長路由的


若是公司使用的是ADSL動態IP上網的話,若是要提供服務的話可使用花生殼(不推薦,至關不穩定),建議本身申請域名使用DNSPOD進行動態解析,設置詳情能夠查看

http://fengwan.blog.51cto.com/508652/1404534

相關文章
相關標籤/搜索