2020年Jumpserver1.5.8企业生产部署指南
Posted hellojackyleon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020年Jumpserver1.5.8企业生产部署指南相关的知识,希望对你有一定的参考价值。
1、 jumpserver 简介
Jumpserver 采用了分布式架构设计, 支持多云环境 并可灵活扩展。 资产管理方面,
Jumpserver 无并发和资产数量限制, 支持水平扩容。 Jumpserver 采用了业界领先的容器化
部署方式, 并且提供体验极佳的 Web Terminal 。 Jumpserver 还可实现基于 Web 的文件
传输, 并且支持用户将运维审计录像保存在云端( 例如 AWS S3 、 阿里云 OSS 、 ElasticSearch
等) 。 Jumpserver 是全球首款完全开源、 符合 4A 规范( 包含认证 Authentication 、 授权
Authorization、 账号 Accounting 和审计 Auditing ) 的运维安全审计系统, Jumpserver 通过
软件订阅服务或者软硬件一体机的方式, 向企业级用户交付多云环境下更好用的堡垒机
2、 为何要学习 jumpserver
企业应用当中, 监控系统 (zabbix,prometheus),日志分析系统(filebeat+kafka+elk) 几乎是每个
公司必不可少的, 同样 jumpserver 也是非常重要的统一登录入口堡垒机,对运维审计及安全 起到非常重要的作用,完全有必要应用到你的公司,接下来我将按照企业生产标准带领大家一步一步部署jumpserver
3.本次实验环境相关软件版本 如下
[root@jumpserver ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
nginx-1.16.0.tar.gz
Python-3.6.7.tar.xz
redis-5.0.8.tar.gz
jumpserver1.5.8
相关软件包已提前下载好
4、NGINX编译部署
[root@jumpserver src]# yum install pcre pcre-devel openssl-devel -y ##安装依赖 [root@jumpserver nginx-1.16.0]# useradd -s /sbin/nologin -M nginx [root@jumpserver src]# wget http://nginx.org/download/nginx-1.16.0.tar.gz [root@jumpserver src]# tar xf nginx-1.16.0.tar.gz [root@jumpserver src]# cd nginx-1.16.0 [root@jumpserver nginx-1.16.0]# ./configure --prefix=/usr/local/nginx-1.16.0 --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-stream [root@jumpserver nginx-1.16.0]# make && make install [root@jumpserver nginx-1.16.0]# ln -s /usr/local/nginx-1.16.0/ /usr/local/nginx nginx启动 /usr/local/nginx/sbin/nginx
5、redis编译部署
1、 Redis 简介
Redis 是完全开源免费的, 遵守 BSD 协议, 是一个高性能的 key-value 数据库。
Redis 支持数据的持久化, 可以将内存中的数据保存在磁盘中, 重启的时候可以再次加载进
行使用。
Redis 不仅仅支持简单的 key-value 类型的数据, 同时还提供 list, set, zset, hash 等数据结
构的存储
redis部署
tar xf redis-5.0.8.tar.gz cd redis-5.0.8 make PREFIX=/usr/local/redis5.0.8 install ln -s /usr/local/redis5.0.8/ /usr/local/redis echo "export PATH=$PATH:/usr/local/redis/bin/" >> /etc/profile source /etc/profile 创建配置文件及数据持久化目录 [root@jumpserver redis-5.0.8]# mkdir /usr/local/redis/{etc,data} redis 简单配置 cat /usr/local/redis/etc/redis.conf ### 以守护进程模式启动 daemonize yes ### 绑定的主机地址 bind 0.0.0.0 ### 监听端口 port 6379 ### pid 文件和 log 文件的保存地址 pidfile "/var/run/redis_6379.pid" logfile "/var/log/redis_6379.log" ### 指定本地持久化文件的文件名,默认是 dump.rdb dbfilename redis_6379.rdb ### 本地数据库的目录 dir /usr/local/redis/data/ redis启动 [root@jumpserver redis-5.0.8]# redis-server /usr/local/redis/etc/redis.conf
检查结果
3、Python3编译部署
1、 先安装相关依赖包
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel
tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
2、 Python 源码部署
[root@jumpserver src]# wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
[root@jumpserver src]# tar xf Python-3.6.6.tgz
[root@jumpserver src]# cd Python-3.6.6
[root@jumpserver Python-3.6.6]# ./configure --prefix=/usr/local/python3
[root@jumpserver Python-3.6.6]# make && make install
3、 设定环境变量
[root@jumpserver Python-3.6.6]# echo "export PATH=$PATH:/usr/local/python3/bin/" >>
/etc/profile
[root@jumpserver Python-3.6.6]# source /etc/profile
4、MySQL5.7.28 二进制版本规范化部署
去 mysql 官网下载 mysql5.7.28 二进制版本
https://downloads.mysql.com/archives/community/
MySQL部署
[root@jumpserver software]# useradd -s /sbin/nologin -M mysql #创建数据库运行账户 [root@jumpserver software]# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz #解压软件包 [root@jumpserver software]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql-5.7.28 [root@jumpserver software]# ln -s /usr/local/mysql-5.7.28/ /usr/local/mysql [root@jumpserver software]# mkdir /data/mysql/mysql3306/{data,logs,tmp} -p #建立目录 [root@jumpserver software]# chown -R mysql.mysql /usr/local/mysql/ /data/mysql/ ##授权 mysql 账户 [root@jumpserver software]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile [root@jumpserver software]# source /etc/profile #配置环境变量 ###注意如果之前有 mariadb 请先卸载干净 这里提供一份生产配置文件 [root@jumpserver software]# cat /data/mysql/mysql3306/my3306.cnf #my.cnf [client] port = 3306 #socket = /tmp/mysql3306.sock [mysql] prompt="\\u@\\h:\\p [\\d]>" no-auto-rehash [mysqld] user = mysql basedir = /usr/local/mysql datadir = /data/mysql/mysql3306/data server_id = 23306 port = 3306 socket = /tmp/mysql3306.sock event_scheduler = 0 interactive_timeout = 300 wait_timeout = 300 #character set character-set-server = utf8 open_files_limit = 65535 max_connections = 100 max_connect_errors = 100000 lower_case_table_names =1explicit_defaults_for_timestamp=1 #logs log-output=file slow_query_log = 1 slow_query_log_file = slow.log log-error = /data/mysql/mysql3306/logs/error.log pid-file = mysql.pid long_query_time = 1 log-slow-slave-statements = 1 #binlog binlog_format = row log-bin = /data/mysql/mysql3306/logs/mysql-bin binlog_cache_size = 1M max_binlog_size = 256M sync_binlog = 0 expire_logs_days = 10 #procedure log_bin_trust_function_creators=1 # gt id-mode = on enforce-gtid-consistency=1 #relay log skip_slave_start = 1 max_relay_log_size = 128M relay_log_purge = 1 relay_log_recovery = 1 relay-log=relay-bin relay-log-index=relay-bin.index log_slave_updates #slave-skip-errors=1000,1001,1002 #skip-grant-tables #buffers & cache table_open_cache = 2048 table_definition_cache = 2048 table_open_cache = 2048 max_heap_table_size = 96M sort_buffer_size = 128Kjoin_buffer_size = 128K thread_cache_size = 200 query_cache_size = 0 query_cache_type = 0 query_cache_limit = 256K query_cache_min_res_unit = 512 thread_stack = 192K tmp_table_size = 96M key_buffer_size = 8M read_buffer_size = 2M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 32M #myisam myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 #innodb innodb_buffer_pool_size = 100M ##这里跟进生产实际情况调整, 因为虚拟机, 这里设置的 比较小 innodb_buffer_pool_instances = 1 innodb_data_file_path = ibdata1:100M:autoextend innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 8M innodb_log_file_size = 100M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 50 innodb_file_per_table = 1 innodb_rollback_on_timeout innodb_status_file = 1 innodb_io_capacity = 2000 transaction_isolation = READ-COMMITTED innodb_flush_method = O_DIRECT loose_tokudb_cache_size=100M loose_tokudb_directio=ON loose_tokudb_fsync_log_period=1000 loose_tokudb_commit_sync=0
初始化MySQL
[root@jumpserver software]# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf --initialize [root@jumpserver local]# grep password /data/mysql/mysql3306/data/error.log 2020-04-21T13:52:57.356296Z 1 [Note] A temporary password is generated for root@localhost: 2loA_aBNk0?I ##这个代表初始随机密码
检查结果
[root@jumpserver software]# ll /data/mysql/mysql3306/data/ 总用量 409676 -rw-r----- 1 mysql mysql 56 4 月 21 14:17 auto.cnf -rw------- 1 mysql mysql 1676 4 月 21 14:17 ca-key.pem -rw-r--r-- 1 mysql mysql 1112 4 月 21 14:17 ca.pem -rw-r--r-- 1 mysql mysql 1112 4 月 21 14:17 client-cert.pem -rw------- 1 mysql mysql 1676 4 月 21 14:17 client-key.pem -rw-r----- 1 mysql mysql 1062 4 月 21 14:17 error.log -rw-r----- 1 mysql mysql 425 4 月 21 14:17 ib_buffer_pool -rw-r----- 1 mysql mysql 104857600 4 月 21 14:17 ibdata1 -rw-r----- 1 mysql mysql 104857600 4 月 21 14:17 ib_logfile0 -rw-r----- 1 mysql mysql 104857600 4 月 21 14:17 ib_logfile1 -rw-r----- 1 mysql mysql 104857600 4 月 21 14:17 ib_logfile2 drwxr-x--- 2 mysql mysql 4096 4 月 21 14:17 mysql drwxr-x--- 2 mysql mysql 8192 4 月 21 14:17 performance_schema -rw------- 1 mysql mysql 1680 4 月 21 14:17 private_key.pem -rw-r--r-- 1 mysql mysql 452 4 月 21 14:17 public_key.pem -rw-r--r-- 1 mysql mysql 1112 4 月 21 14:17 server-cert.pem -rw------- 1 mysql mysql 1680 4 月 21 14:17 server-key.pem-rw-r----- 1 mysql mysql 184 4 月 21 14:17 slow.log drwxr-x--- 2 mysql mysql 8192 4 月 21 14:17 sys MySQL启动 [root@jumpserver software]# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &
登陆和修改初始密码
[root@jumpserver software]# mysql -uroot -p -S /tmp/mysql3306.sock Enter password: mysql> alter user user() identified by ‘123456‘;
5.docker部署
1、 docker 简介
docker 通过内核虚拟化技术(namespace 及 cgroups 等) 来提供容器的资源隔离与安全保障
等, 由于 docker 通过操作系统层的虚拟化实现隔离, 所以 docker 容器在运行时, 不需要类
似虚拟机额外的操作系统开销, 提供资源利用率
2、 docker vs kvm
3.docker部署
https://docs.docker.com/engine/install/centos/ 如之前有安装就先卸载 yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io -y
4.docker基础操作
配置 docker 镜像加速 [root@jumpserver ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } s ystemctl enable docker systemctl start docker Docker info 查看版本及加速情况 [root@jumpserver ~]# docker pull centos ##拉取 centos 镜像 [root@jumpserver ~]# docker save -o centos.tar centos ##导出镜像 [root@jumpserver ~]# docker load -i cnetos.tar ##导入镜像 [root@jumpserver ~]# docker run --name docker-demo -itd centos /bin/bash ##生成容器 [root@jumpserver ~]# docker container ls #查看容器
6.jumpserver部署
组件说明
JumpServer 为管理后台, 管理员可以通过 Web 页面进行资产管理、用户管理、资产授权等操作, 用户可以通过 Web 页面进行资产登录, 文件管理等操作
koko 为 SSH Server 和 Web Terminal Server 。用户可以使用自己的账户通过 SSH 或者 Web Terminal 访问 SSH 协议和 Telnet 协议资产
Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件
Guacamole 为 RDP 协议和 VNC 协议资产组件, 用户可以通过 Web Terminal 来连接 RDP 协议和 VNC 协议资产 (暂时只能通过 Web Terminal 来访问)
端口说明
JumpServer 默认 Web 端口为 8080/tcp, 默认 WS 端口为 8070/tcp, 配置文件 jumpserver/config.yml
koko 默认 SSH 端口为 2222/tcp, 默认 Web Terminal 端口为 5000/tcp 配置文件在 koko/config.yml
Guacamole 默认端口为 8081/tcp, 配置文件 /config/tomcat9/conf/server.xml
Nginx 默认端口为 80/tcp
Redis 默认端口为 6379/tcp
Mysql 默认端口为 3306/tcp
jumpserver部署
# 创建数据库 JumpServer 并授权 $ DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24` # 生成随机数据库密码 $ echo -e "