配置RouterOS兼容的OpenVPN服务端

RouterOS上就没有什么非常安全的配置,所以本文主要的目标是可用,增强安全性相关的操作都会被标为可选。

RouterOS 6.x的OpenVPN有很多限制:

  • 支持的传输层:TCP
  • 支持的Cipher: none BF-CBC AES-128-CBC AES-192-CBC AES-256-CBC
  • 支持的Digest算法: none MD5 SHA1
  • 支持的验证模式:必选用户名密码认证,可选客户端证书认证
  • 即使在TAP模式下也不支持MPLS

服务端配置

服务端基于Debian 10来做例子。

安装OpenVPN

创建CA和服务器证书

出于方便,这里CA在同一台机子上配置。注意这样是不安全的做法。安全的做法是在air-gapped电脑上创建离线CA,在VPN服务器上创建CSR,把CSR复制到CA上签名,再把签名过的证书复制回来。

创建服务器配置文件

创建用户名密码认证脚本

OpenVPN服务端默认支持的用户名密码认证有两种方式。一种是PAM插件,需要你在服务器上创建对应的用户,这样还得处理用户的登录权限问题,我们不这么做。另一种是写一个程序来自己处理认证:程序启动时会获得一个文件名作为参数,文件内容的第一行是用户名,第二行是密码,程序返回0表示认证成功。我们快速写一个简单的bash脚本来做用户认证:

把这个文件保存到 user-pass-auth.sh 并且记得给执行权限。

(可选)把接口自动放进VRF

客户端配置

(可选)创建客户端认证证书

  1. 客户端创建私钥和CSR
  2. 把CSR传输到CA服务器上
  3. CA服务器签名CSR,获得证书
  4. 把签名的证书导入客户端

(可选)导入CA证书

  1. 把CA导入客户端

创建接口

如果你导入了CA证书,那么勾选Verify Server Certificate选项。如果你创建了客户端认证证书,那么需要在Certificate下拉选单中选择你的客户端证书。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据