为使本站长期运行,请各位仁兄点击一下站点上的广告;本站会使用广告的收入来持续维护此站点;欢迎有兴趣帮助建设本站点的仁兄联系我,我会给你开一个账号一起编写文章;本站QQ群:834777412;本站讨论内容不限,但禁止讨论政治类、敏感类话题,禁止传谣、造谣

MENU

搭建GateOne详细流程

December 26, 2018 • Linux

环境

CentOS 7.4

python 2.7.5+

准备

安装pip

bash <(curl -sL a.ublili.cn) -a pip 1    #下载pip安装程序到当前目录
python get-pip-2018-12-03.py    #安装pip

安装依赖

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install git python-devel python-pam openssl openssl-devel wget make gcc-c++ patch pam_radius pyOpenSSL perl
pip install tornado==4.1    #不要安装最新版本,不然会出问题
pip install html5lib
pip install Pillow
pip install tornado kerberos

安装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

"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";
       }
}



Archives QR Code Tip
QR Code for this page
Tipping QR Code