学林单片机单片机入门学习开发软件和工具 → centos6.8+openvpn实现账户密码连接(通过端口映射的方式)


  共有939人关注过本帖平板打印

主题:centos6.8+openvpn实现账户密码连接(通过端口映射的方式)

美女呀,离线,留言给我吧!
18538579903
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:19 积分:256 威望:0 精华:0 注册:2017-8-21 12:07:14
centos6.8+openvpn实现账户密码连接(通过端口映射的方式)  发帖心情 Post By:2017-8-28 16:18:47

centos6.8+openvpn实现账户密码连接(通过端口映射的方式) #搭建openvpn(编译安装) 初始化环境 #update epel mirror yum install wget -y cd /etc/yum.repos.d && rm -rf * wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #Yum Packs echo "install/update gcc make wget vim ntpdate sysstat" yum install -y gcc gcc-c++ vim ntpdate lsof #disable selinux sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config setenforce 0 #alias vim echo 'alias vi="vim"' >>/etc/profile source /etc/profile #modify UseDNS sed -i '#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config #ntpdate corntab echo 'ntpdate ntp1.aliyun.com' echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com' >> /var/spool/cron/root chmod 600 /var/spool/cron/root ntpdate ntp1.aliyun.com cat << EOF +--------------------------------------------------------------+ | ===System init over=== | +--------------------------------------------------------------+ +---------------------------by liuhuihuang---------------------+ EOF echo "##########################################################" 创建一个专门存放openvpn软件的目录 mkdir -p /home/xianlai/tools/openvpn 通过xftp把lzo-2.06.tar.gz openvpn-2.2.2.tar.gz checkpsw.sh传到/home/xianlai/tools/openvpn目录里 安装 lzo 软件,用于后面文件的压缩 tar zxf lzo-2.06.tar.gz cd lzo-2.06 ./configure && make && make install 通过 yum 安装 openssl,openssl-devel 两个软件,没有它俩 openvpn 的安装就会报错 yum -y install openssl openssl-devel 安装 openvpn 软件 tar zxf openvpn-2.2.2.tar.gz cd openvpn-2.2.2 ./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib make make install 检查 openvpn 是否安装成功,并且查看其版本 which openvpn openvpn --version 备份 var 文件,并且修改模板 cd /home/xianlai/tools/openvpn/openvpn-2.2.2/easy-rsa/2.0 cp vars vars.bak vim vars export KEY_COUNTRY="CN" export KEY_PROVINCE="BJ" export KEY_CITY="BJ" export KEY_ORG="XL" export KEY_EMAIL="528634141@qq.com" export KEY_EMAIL=528634141@qq.com export KEY_CN=CN export KEY_NAME=xianlai export KEY_OU=xianlai export PKCS11_MODULE_PATH=changeme export PKCS11_PIN=1234 执行 source 命令使配置文件生效 source vars ./clean-all 创建 CA 证书,一路回车 ./build-ca 生成服务器端证书和秘钥文件,输入两次y,一路回车 ./build-key-server server Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y 生成客户端证书和 key 文件(用户user1) ./build-key user1 Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y 生成传输进行秘钥交换时用到的交换秘钥协议文件 ./build-dh 生成一个防止恶意攻击的文件(效果似乎一般) openvpn --genkey --secret keys/ta.key 创建 openvpn 目录,用于存放配置文件 mkdir /etc/openvpn 拷贝2.0目录下的 keys 目录,并切换目录拷贝 server.conf client.conf 文件 cp -ap keys/ /etc/openvpn/ cd /home/xianlai/tools/openvpn/openvpn-2.2.2/sample-config-files/ cp client.conf server.conf /etc/openvpn/ 编辑 openvpn 的配置文件,在操作前养成好习惯,先进行备份 cd /etc/openvpn cp server.conf server.conf.bak 可以通过 grep 命令过滤查看配置文件,并通过一个临时文件将过滤后的结果再次导入 server.conf grep -vE "^;|^#|^$" server.conf > tmp.log cat tmp.log > server.conf 编辑过滤后的 server.conf 文件 vim server.conf port 1194 #端口可以更改 proto tcp dev tun ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key # This file should be kept secret dh /etc/openvpn/keys/dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1" push "route 192.168.**.0 255.255.255.0" push "dhcp-option DNS *.*.*.*" keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 3 client-cert-not-required #不使用客户端证书,使用密码进行验证 username-as-common-name #使用认证用户名,不使用证书 script-security 3 system #允许通过环境变量将密码传递给脚本 auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env #指定路径,允许登陆的用户名及密码 打开路由转发功能 vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p 拷贝启动脚本至/etc/init.d目录 cp /home/xianlai/tools/openvpn/openvpn-2.2.2/sample-scripts/openvpn.init /etc/init.d/openvpn chmod 700 /etc/init.d/openvpn chkconfig --add openvpn 修改脚本openvpn 切到148行,把ls *.conf 改为ls server.conf保存即可 #启动openvpn /etc/init.d/openvpn start 切到/etc/openvpn目录下 cd /etc/openvpn cp /home/xianlai/tools/openvpn/checkpsw.sh . 创建psw-file文件 touch psw-file 添加一个用户测试,刑如:liuhuiuhang 123456(用户和密码写在一行,需要添加用户的话往下顺延即可) 分别修改一下这两个文件的权限 chmod +x checkpsw.sh chmod 400 psw-file 导出 client.conf ca.crt sz -y client.conf sz -y keys/ca.crt 创建一个后缀名为 .ovpn 的文件(my.ovpn),内容如下: client dev tun proto tcp remote 公网IP 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt comp-lzo verb 3 auth-user-pass ##特别提示: #配置防火墙,别忘记保存 iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE service iptables save ##端口映射 本文使用的是端口映射的方式做的,具体命令如下: nat server protocol tcp global 公网IP 80 inside 内网IP 80 #windows客户端配置 安装openvpn-2.2.2-install.exe,默认安装,一直默认,然后新建一个文件夹vpn,把client.conf、ca.crt、my.ovpn放至文件夹vpn中,然后把vpn拷贝至openvpn的安装目录中的config目录中。 #MAC客户端配置 下载tunnelblick,然后安装,把vpn文件夹拷贝至MAC电脑中,把my.ovpn放至tunnelblick中即可。具体操作可参考链接:http://www.xitongzhijia.net/xtjc/20150414/45176.html 转载:http://aby028.blog.51cto.com/5371905/1886851 附件:checkpsw.sh如下所示: #!/bin/sh ########################################################### # checkpsw.sh (C) 2004 Mathias Sundman # # This script will authenticate OpenVPN 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/openvpn/psw-file" LOG_FILE="/var/log/openvpn-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

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

centos6.8+openvpn实现账户密码连接(通过端口映射的方式)








签名