Press "Enter" to skip to content

Tag: SSH

CentOS 6安装配置OpenVPN

CentOS 6 64bit安装配置OpenVPN的完整过程,本文于2014年12月24日重新整理,简化了安装过程。

如果是VPS,可能需要检测一下是否支持TUN/TAB

$ cat /dev/net/tun
cat: /dev/net/tun: File descriptor in bad state  #开启成功,可以继续安装OpenVPN

一,安装OpenVPN

安装基础软件包
$ yum install gcc gcc-c++ openssl openssl-devel lzo lzo-devel easy-rsa -y

安装epel的源
$ wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ rpm -ivh epel-release-6-8.noarch.rpm

然后就可以直接使用yum安装OpenVPN了
$ yum install openvpn -y

复制配置文件
$ cp -R /usr/share/easy-rsa/ /etc/openvpn/
$ cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn

二,生成CA证书、Server Key和Client Key

1,制作CA证书

$ cd /etc/openvpn/easy-rsa/2.0/
$ vim vars   #修改如下内容:
export KEY_COUNTRY="CN"
export KEY_PROVINCE="GD"
export KEY_CITY="GZ"
export KEY_ORG="SZUniversity"
export KEY_EMAIL="[email protected]"
export KEY_OU="SZUniversity"
……
export KEY_CN="fuckgfw"
全部回车即可,CN指Common Name,OU指Organizational Unit Name

$ source ./vars    #使修改的变量生效
$ ./clean-all      #清除原有不需要的证书文件
$ ./build-ca       #生成证书,初始化参数一路按回车默认即可

2,建立服务端证书Server Key

$ ./build-key-server myserver  #这里指定服务端的证书名为myserver
一路按回车默认即可,此时CN会变成myserver,不用修改,可以直接回车,“A challenge password”也可以直接回车,最后弹出询问,按Y即可

3,建立客户端证书Client Key

$ ./build-key client1  #这里指定客户端的证书名为client1
一路按回车默认即可,此时CN会变成client1,不用修改,可以直接回车,“A challenge password”也可以直接回车,最后弹出询问,按Y即可
如果要创建多个vpn帐户,则同样如client1一样生成其他客户端证书

$ ./build-dh  #证书加密,dh指Diffie Hellman

所有的创建文件,都会在/etc/openvpn/easy-rsa/2.0/keys 目录下。

三,创建OpenVPN服务端和客户端配置文件

1,建立服务端配置文件

$ vim /etc/openvpn/server.conf    #将以下内容复制其中
local 1.1.1.1    #改为你的VPS IP地址
port 1194        #默认端口,建议改成53,别问我为什么
proto udp
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/myserver.crt
key /etc/openvpn/easy-rsa/2.0/keys/myserver.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem     #请注意,网络上有些教程是dh1024.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt  #记录客户端和分配IP的对应表,客户端重新连接会获得同样的IP
client-to-client               #让客户端之间能直接通讯
keepalive 10 120               #服务端检测的间隔和超时时间
comp-lzo                       #使用lzo压缩数据,服务端和客户端都要启用
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 4    #设定日志级别

push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
创建日志目录
$ mkdir /var/log/openvpn

$ vim /etc/sysctl.conf
net.ipv4.ip_forward=1
$ sysctl -p

$ iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source VPS的IP地址
$ /etc/init.d/iptables save
$ /etc/init.d/iptables restart

启动OpenVPN服务端
$ openvpn --config /etc/openvpn/server.conf &

加入开机自启动
$ vim /etc/rc.local  #加入如下一行
/usr/sbin/openvpn --config /etc/openvpn/server.conf > /dev/null 2>&1 &

2,建立客户端配置文件

$ vim /etc/openvpn/client.ovpn    #将以下内容复制其中
client
dev tun         #定义使用路由IP模式,与服务端一致
proto udp
remote 1.1.1.1 1194 #改成VPS的IP地址与端口
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

3,下载客户端配置文件

cp /etc/openvpn/client.ovpn /etc/openvpn/easy-rsa/2.0/keys/
tar -zcvf /root/keys.tar.gz /etc/openvpn/easy-rsa/2.0/keys/

然后把/root/keys.tar.gz文件下载到本地。

四,windows客户端安装设置

终于配置到了客户端了,在Windows 系统下的安装OpenVPN GUI程序就比较简单了

1,下载安装和服务器端配套的OpenVPN GUI For Windows(http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe),直接点next安装即可;

2,将刚才下载到本地的keys.tar解压,全部放到OpenVPN GUI For Windows安装目录下的config目录下,检查一下至少要包含以下6个文件:
ca.crt | ca.key | client1.crt | client1.csr | client1.key | client.ovpn

3,在客户端双击client.ovpn即可启动OpenVPN GUI For Windows客户端,不用输入账号密码即可连接至vpn服务器;

4,如果多个客户端要用到多个vpn账号,OpenVPN的配置和上面相同,再将config文件目录里的 client1.crt,client1.csr,client1.key 替换成对应的 client2harry.xxx 即可,最后在client.ovpn中修改cert client1.crt 和key client1.key;

11 Comments

wget命令用法简介

wget 是一个命令行的下载工具,直接HTTP,HTTPS,FTP协议,支持断点续传,在宽带状态不佳的情况下,wget能表现出很强的稳定性。wget的用法并不复杂。一般的Linux发行版都已自带了wget工具。下面就简单介绍一下wget的一些用法。

$ wget http://example.com/yarkee

此命令下载整个网页http://example.com/yarkee到当前目录下,如果加上参数-x则会建立一个与服务器同名的目录,下载内容保存在该目录下。

6 Comments

Firefox设置SSH代理以后,无法观看youtube视频的解决方法

话说小荷塘最近迷上了SSH代理,真的比VPN爽(小荷塘用的是yardvps的SSH代理,看youtube的480P竟然十分流畅,看720P也只是稍稍有些卡)……代理软件小荷塘向大家推荐Tunnelier,使用方法见此,然后在浏览器里设置一下SOCKS5(套接字)代理即可。

但是这样出现一个问题,挂上代理以后,部分网站可以访问了,youtube可以正常访问,但视频无法正常观看,推特也无法访问。这是为什么呢?

根本原因在于DNS污染。只要我们打开Firefox的远程DNS解析就行了。方法为:

在Firefox地址栏中,输入 about:config,按确认,修改里面的一项数值,改成 network.proxy.socks_remote_dns=true 就可以了。

13 Comments

在VPS上建立最低权限的SSH帐号用于代理服务

最近基于SSH tunnel的代理方式越来越流行了,本文将教会大家如何在VPS上开设公用SSH帐号用于突破封锁(翻҉墙҉)。方法非常简单,只要两步就可以实现:

1,登陆VPS,输入如下命令创建一个权限最低的用户(将username改为你想要的用户名):

useradd -M -s /sbin/nologin -n username

2,修改该用户的密码:

passwd username

根据提示输入两遍新密码。仅仅如此而已!然后你就尽情地享受SSH代理带来的乐趣吧!

14 Comments

我的SSH安全设定

分享一下自己的SSH安全设定(本文基于Ubuntu 18.04 64bit). 大概方面有3个: 1, 建立普通用户zhang3, 并授予sudo权限; 2, 禁止root登陆; 3, 禁用密码登陆, 使用pub key登陆.

1, 建立普通用户zhang3, 并授予相关权限

平时主要使用zhang3用户来登陆, 因此需要客户端的pub key交给zhang3, 让zhang3做好免密码登陆相关设定.

user=zhang3
useradd -m -s /bin/bash $user
passwd $user

# 授予用户sudo权限
echo "$user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$user

# 上传公钥, 这里我将公钥上传到$user用户的home目录
cd /home/$user
rz -bey           # 选择 id_rsa.pub 上传

su - $user
mkdir ~/.ssh; \
cat id_rsa.pub >> ~/.ssh/authorized_keys && \
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

2, 设定SSH相关权限

sudo sed -i 's/^\#\?PermitRootLogin.*/PermitRootLogin no/g' /etc/ssh/sshd_config
sudo sed -i 's/^\#\?PubkeyAuthentication.*/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
sudo sed -i 's/^\#\?PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config
sudo sed -i 's/^\#\?PermitEmptyPasswords.*/PermitEmptyPasswords no/g' /etc/ssh/sshd_config
sudo sed -i 's/^\#\?MaxAuthTries.*/MaxAuthTries 3/g' /etc/ssh/sshd_config

解释:
PermitRootLogin no                 #禁止root远程登陆
PubkeyAuthentication yes           #启用pubkey登陆
PasswordAuthentication no          #禁用密码登陆
PermitEmptyPasswords no            #禁止空密码
MaxAuthTries                       #允许最大失败次数,默认为6


# 也可以最后再确认一下
egrep '^(PermitRoot|Pubkey|Password|MaxAuthTries)' /etc/ssh/sshd_config
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

有些老版本的sshd_config里面可能会有一项”RSAAuthentication”, 该项也表示启用pub key登陆, 但这是第1代ssh通讯协议使用的配置项, 该选项在CentOS 7及ubuntu 16.04版本以上均已弃用(如果强行加上此选项会收到一个”Deprecated option RSAAuthentication”的提示), 也可以在sshd_config里添加一项”Protocol 2″来表示使用第几代通讯协议.

2 Comments