MENU

搭建GateOne详细流程

December 26, 2018 • Linux阅读设置

环境

  • CentOS 7.4
  • python 2.7.5+

准备

安装pip

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

如果您使用的是由您的操作系统或其他软件包管理器管理的Python安装,请务必小心。get-pip.py不与这些工具协调,可能会使系统处于不一致状态。

安装依赖

此处内容需要评论回复后方可阅读

安装 dtach

centos7 安装 dtach

安装 Gate One

下载开源项目

cd /usr/local
git clone https://github.com/liftoff/GateOne.git

安装

cd GateOne
python setup.py install

帮助信息

gateone --help

运行

gateone       #前台运行
systemctl start gateone      #后台运行

配置文件

简单介绍一些配置文件的内容,如有错误请指正,更多内容请查看官方文档

  • 配置文件会在第一次运行 gateone 时创建
  • 默认配置文件目录:/etc/gateone/
  • 主要配置文件:/etc/gateone/conf.d/10server.conf
  • 配置文件除最后一条配置项其余以逗号结尾

"log_file_max_size": 104857600   # 设置日志最大大小(字节),注意:Web 服务器日志设置不适用于 Gate One 的用户会话日志记录功能。
"log_file_max_size": 10          # 设置日志的最大备份数量
"log_file_prefix": "/var/log/gateone/gateone.log"    # 日志保存位置
"log_to_stderr": False  # 此选项告诉 Gate One 将 Web 服务器日志发送到 stderr(而不是日志文件)
"logging": "info"       # 指定记录日志级别,分别有 (info|warning|error|none)
"address": ""  # 监听地址,为空表示本机所有 ip,多个时使用;号来作为分隔符
"port": 443    # 监听端口
"api_keys": {
    "ZWVkOWJjZ23yNjNlNDQ1YWE3MThiYmI0M72sujFhODFiZ": "NTg5NTllOTIyMD1lNGU1MzkzZDM4NjVkZWNGNDdlN2RmO"
}    #指定在使用 Gate One 的身份验证 API 执行时可以使用的 API 密钥列表(键:值对)

"api_timestamp_window": "30s"    # 此设置控制 API 身份验证对象在过期之前将持续多长时间,如果 auth 选项设置为 api,则默认为 30 秒,接受 [s/m/h/d] 时间符号。
                                   如果 Gate One 服务器与嵌入它的 Web 服务器之间的时钟漂移值过小,则可能导致 API 身份验证失败。
                                   如果设置太高,则会提供更长的时间窗口,攻击者可以在重新启动 Gate One 服务器时重新使用该令牌。
                                   重要提示: Gate One 会跟踪已使用的身份验证对象,但仅限于内存中。
                                   如果重新启动服务器,则会有一个窗口,其中可以重用 API 身份验证对象(也称为身份验证重放攻击)。
                                   这就是为什么你希望 api_timestamp_window 是短的但不能太短以至于如果时钟有点不同步会导致问题。

"auth": "none"    # 指定 Gate One 如何对客户端进行身份验证,使用其中一个 [none/pam/google/kerberos/api]
"ca_certs": "/opt/gateone/ca_certs.pem"    #默认为无,CA 证书的路径,在 ssl_auth 选项设置为 [optional/required] 时用来验证客户端
"certificate": "/etc/gateone/ssl/certificate.pem"    #SSL 证书的路径,必须使用 PEM 格式
"keyfile": "/etc/gateone/ssl/keyfile.pem"        #SSL 证书 key 文件路径,必须使用 PEM 格式
"disable_ssl": false    #true 为禁用 Gate One 中的 SSL 支持
"https_redirect": false    # 如果启用了 https_redirect,则 Gate One 将侦听端口 80 并使用 HTTPS 将传入连接重定向到 Gate One 的已配置端口
"cache_dir": "/tmp/gateone_cache"    # 缓存路径
"cookie_secret": "MTc5MWFmMDkxMjk4NDg0ZDg5ZDJhZWZmZWM5MjBkNjIzY"    #45 字符的字符串,加密客户端的 cookie,第一次运行时随机生成一个
"debug": false
"gid": "0"
"uid": "0"
"locale": "en_US"    # 此选项告诉 Gate One 在渲染字符串时使用哪种本地翻译(本机语言)。
                       第一次运行 Gate One 时,它将尝试使用 $LANG 环境变量自动检测您的语言环境。如果未设置此变量,则将回退使用 en_US
"session_dir": "/tmp/gateone"  #Gate One 应该保留临时用户会话信息的路径。默认为 /tmp/gateone(如果不存在,将自动创建)。
"session_timeout": "5d"        #会话超时时间,接受 [s/m/h/d] 时间符号
"url_prefix": "/"    # 这指定了 Gate One 从浏览器访问时将存在的 URL 路径。默认情况下,Gate One 将使用 “/” 作为其基本
"user_dir": "/var/lib/gateone/users"    #指定将保留持久用户文件的位置。会话日志,ssh 文件(known_hosts,密钥等)等内容存储在此处。
"user_logs_max_age": "30d"    # 此设置控制 Gate One 在清除旧用户会话日志之前等待的时间,接受 [s/m/h/d] 时间符号

配置 nginx 代理

首先修改 gateone 配置文件:/etc/gateone/conf.d/10server.conf

"address": "127.0.0.1",   #只监听本地
"disable_ssl": true,      #禁用ssl
"port": 1200,             #本地监听端口
"url_prefix": "/gateone"  #这里要跟nginx设置的一样,例如域名是www.example.com,那么访问就是www.example.com/gateone

修改 nginx 配置,添加一个 server

server {
    listen       443 ssl;
    server_name  <域名>;
    ssl_certificate   cert/<证书.pem>;
    ssl_certificate_key  cert/<证书.key>;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    #下面是有关于代理GateOne的配置
    location /gateone/ {    #这里/gateone跟"url_prefix": "/gateone"一样
        proxy_pass    http://127.0.0.1:1200;    #指定本地监听的GateOne
        proxy_redirect off;
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $http_address;
        proxy_set_header X-Scheme $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
       }
}

Last Modified: June 6, 2019
Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment

5 Comments
  1. 三岁

    感谢

  2. lu

    感谢分享

  3. James

    非常感谢 学习一下如何使用

  4. 我确认

  5. Nick

    非常感谢