Centos单网卡内网搭建open***服务拓扑图如下概述:1. 实现的功能:... 12. 安装前准备:13. 安装open***. 24. 生成证书文件:... 25. 创建服务端配置文件...
.
Centos单网卡内网搭建open***服务
拓扑图如下
概述:
1. 实现的功能:... 1
2. 安装前准备:1
3. 安装open***. 2
4. 生成证书文件:... 2
5. 创建服务端配置文件... 2
6. 配置内核路由转发和iptables转发:... 3
7. 创建客户端配置文件:... 4
8. 客户端的安装及配置:4
1. 实现的功能:
通过open***客户端连接上***,能够获取ip,能够访问内网工作区PC
2. 安装前准备:
关闭selinux
将外网ip地址端口映射到open***服务器的1194端口
3. 安装open***
# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum -y install
openssl openssl-devel lzo open*** easy-rsa
4. 生成证书文件:
# cd
/usr/share/easy-rsa/2.0/
# rm -rf vars&& vi vars
exportEASY_RSA="`pwd`"
exportOPENSSL="openssl"
exportPKCS11TOOL="pkcs11-tool"
exportGREP="grep"
exportKEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
exportKEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run./clean-all, I will be doing a rm -rf on $KEY_DIR
exportPKCS11_MODULE_PATH="dummy"
exportPKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
exportKEY_EXPIRE=3650
exportKEY_COUNTRY="CN"
exportKEY_PROVINCE="GD"
exportKEY_CITY="Zhuhai"
exportKEY_ORG="smartsoft"
exportKEY_EMAIL="[email protected]"
exportKEY_OU="smartsoft"
exportKEY_NAME="EasyRSA"
# source vars //重新初始化证书信息环境变量
# ./clean-all //清除keys目录下所有与证书相关的文件
# ./build-ca //生成根证书ca.crt和根密钥ca.key(一路按回车即可)
# ./build-key-server server //为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
# ./build-key smartsoft //为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
# ./build-dh //创建迪菲·赫尔曼密钥,会生成dh2048.pem文件
# open*** –genkey –secret keys/ta.key //生成ta.key文件(防DDos***、UDP淹没等恶意***)
5.创建服务端配置文件
# mkdir /etc/open***/keys
# cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/open***/keys/
# vim /etc/open***/server.conf
;mode server
;tls-server
port 1194
proto tcp
;topology subnet
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
script-security 3
username-as-common-name
;plugin /usr/lib64/open***/plugin/lib/open***-auth-ldap.so "/etc/open***/server/ldap.conf"
server 10.10.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway"
push "route 172.16.112.0 255.255.255.0"
push "route 0.0.0.0 0.0.0.0"
push "dhcp-option DNS 192.168.21.2"
push "dhcp-option DNS 114.114.114.114"
duplicate-cn
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status open***-status.log
#通过使用用户验证密码文件来验证***登录用户
auth-user-pass-verify /etc/open***/users/checkpsw.sh via-env
;client-cert-not-required
username-as-common-name
verb 5
mute 10
reneg-sec 1800
创建用户验证脚本文件
# vi /etc/open***/users/checkpsw.sh
#!/bin/sh
###########################################################
# checkpsw.sh (C) 2004 Mathias Sundman <mathias@open***.se>
#
# This script will authenticate Open××× users against
# a plain text file. The passfile should simply contain
# one row per user with the username first followed by
# one or more space(s) or tab(s) and then the password.
#用户密码文件
PASSFILE="/etc/open***/users/psw-file"
LOG_FILE="/etc/open***/users/open***-password.log"
TIME_STAMP=`date "+%Y-%m-%d %T"`
###########################################################
if [ ! -r "${PASSFILE}" ]; then
echo "${TIME_STAMP}: Could not open password file /"${PASSFILE}/" for reading." >> ${LOG_FILE}
exit 1
fi
CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`
if [ "${CORRECT_PASSWORD}" = "" ]; then
echo "${TIME_STAMP}: User does not exist: username=/"${username}/", password=/"${password}/"." >> ${LOG_FILE}
exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
echo "${TIME_STAMP}: Successful authentication: username=/"${username}/"." >> ${LOG_FILE}
exit 0
fi
echo "${TIME_STAMP}: Incorrect password: username=/"${username}/", password=/"${password}/"." >> ${LOG_FILE}
exit 1
# chmod 777 /etc/open***/users/checkpsw.sh
//创建用户密码文件
# vi /etc/open***/users/psw-file
test1 123456
test2 123456
# chown nobody:nobody /etc/open***/users/psw-file
# chmod 777 /etc/open***/users/psw-file
6. 配置内核路由转发和iptables转发:
# sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
# sysctl -p
//可以先去熟悉如何定义iptables策略
# vi /etc/sysconfig/iptables(红色部分表示重要的策略)
# Generated by iptables-save v1.4.7 on Mon Nov 2 19:19:12 2015
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#不允许访问10.0.9/8/7/6.*网段,这是因为内网网络是跟另外一个网络建立了***连接,所以不想用Open***直接访问另外一个网络
-A PREROUTING -d 10.0.9.0/24 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.8.0/27 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.8.128/25 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.8.32/27 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.8.64/27 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.7.0/25 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.7.128/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.7.192/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.6.0/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.6.64/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.6.128/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 10.0.6.192/26 -p tcp -m tcp --dport 22 -j DNAT --to-destination 127.0.0.1
#伪装10.10.10.0/24的数据
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
#地址转换
-A POSTROUTING -s 10.10.10.0/24 -d 172.16.112.0/24 -j SNAT --to-source 172.16.112.171
COMMIT
# Completed on Mon Nov 2 19:19:12 2015
# Generated by iptables-save v1.4.7 on Mon Nov 2 19:19:12 2015
*filter
:INPUT ACCEPT [603:48381]
:FORWARD ACCEPT [594:717393]
:OUTPUT ACCEPT [1777:901584]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 389 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 943 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8088 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3389 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -s 172.16.112.0/24 -p tcp -j ACCEPT
-A INPUT -s 172.16.113.0/24 -p tcp -j ACCEPT
-A INPUT -s 172.16.114.0/24 -p tcp -j ACCEPT
-A INPUT -s 192.168.21.0/24 -p tcp -j ACCEPT
-A INPUT -s 10.10.10.0/24 -d 172.16.112.0/24 -i eth0 -p tcp -m tcp --dport 1194 -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
COMMIT
# Completed on Mon Nov 2 19:19:12 2015
# service open*** start
# chkconfig open*** on
# chkconfig iptables on
# service iptables restart
7. 创建客户端配置文件:
//创建文件命名为smartsoft.o***
# vi client.o***
client
dev tun
proto tcp
remote 1.1.1.1 1010
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert smartsoft.crt
key smartsoft.key
ns-cert-type server
comp-lzo
verb 5
8. 客户端的安装及配置:
//Open××× 2.3.3 Windows 32位 安装文件:
http://swupdate.open***.org/community/releases/open***-install-2.3.3-I002-i686.exe
//Open××× 2.3.3 Windows 64位 安装文件:
http://swupdate.open***.org/community/releases/open***-install-2.3.3-I002-x86_64.exe
//将Open×××服务器上的smartsoft.o***、ca.crt、smartsoft.crt、smartsoft.key、ta.key上传到Windows客户端安装 目录下的config文件夹(C:/Program Files/Open×××/config)
//打开服务管理器,启动open***服务
//启动Open××× GUI
在电脑右下角的open***图标上右击,选择“Connect”。正常情况下应该能够连接成功,分配正常的IP。
最终终于可以通过open***客户端连接open***服务了,并且终于可以访问公司内网了,不能访问公司内网22端口与合作公司的网络建立的***网络,多多少少实现了对合作公司的网络安全