众所周知,我是个努力想成为专业运维而又业余的网管。今天是六月的第十一天,周四, 前两天我们聊了聊Docker的部署及使用方法 ,以及Docker镜像Dockerfile编写规则,昨天也聊了Docker容器的编排工具Docker-compose。过段时间咱可以讲讲现在市面上最火热另两门技术容器编排工具 Kubernetes 和 围绕着容器监控的Prometheus。
Docker使用方法之Docker-compose 公众号:星河皆念你Linux系统Docker使用方法之Docker-compose
今天我们主要给大家讲的是Linux安全审计系统,想象一下比如你是个运维人员。你所管理着有成百上千台服务器以及网络设备。这时候你需要给身边的开发同事 或者运维同事 开通服务器权限。总不能直接在服务器后台开通不同账号,这个管理也不方面且不安全。无法做到很好的防护 当然也可以用ansible这些命令。但最终不是理想状态。
这时候比如有个统一的单点Web登陆系统。你在这个系统上登记添加你所有的服务器 网络设备等。然后通过web给不同的同事 开通账号 并分配不同权限。做到统一管理,并且在同事登陆的此服务器的时候 操作了哪些命令 都能实时保存下来。比如删库跑路。你之后需要事后溯源等。这时候就需要用到堡垒机这类产品。那么今天给大家讲的是Jumpserver,
我们先了解一下堡垒机 具体的形象描述 :
堡垒机,也叫做运维安全审计系统,它的核心功能是 4A:
身份验证 Authentication
账号管理 Account
授权控制 Authorization
安全审计 Audit
简单总结一句话:堡垒机是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。
堡垒机分为商业堡垒机和开源堡垒,开源软件毫无疑问将是未来的主流。
为啥会讲Jumpserver,因为Jumpserver 是全球首款完全开源的堡垒机,是符合 4A 的专业运维审计系统,4A 规范(包含认证Authentication 、授权 Authorization、账号 Accounting 和审计 Auditing)的运维安全审计系统,Jumpserver 通过软件订阅服务或者软硬件一体机的方式,向企业级用户交付多云环境下更好用的堡垒机。
与传统堡垒机相比, Jumpserver 采用了分布式架构设计,支持多云环境并可灵活扩展。资产管理方面, Jumpserver 无并发和资产数量限制,支持水平扩容。Jumpserver 采用了业界领先的容器化部署方式,并且提供体验极佳的 Web Terminal 。Jumpserver 还可实现基于 Web 的文件传输,并且支持用户将运维审计录像保存在云端(例如 AWS S3 、阿里云 OSS 、 ElasticSearch 等)。
GitHub Star 数超过 1.1 万,Star 趋势就可以看出其受欢迎程度。
当然市面上也有其他好的开源堡垒机系统 ,比如携程公司、 jimmy大佬开源的堡垒机 大家有时间可以看看star支持下 (手动@jimmy 广告打了赶紧打钱)
Webterminal bastion server (瓦特堡垒机) https://github.com/jimmy201602/webterminal
话不多说 老规矩 第一步先部署:
官网上提供了很多部署方法 包括容器部署, 分布式 快速部署 等等。正好昨天我们讲到Docker-compose 。这里我们就是用Docker-compose的方式来部署:
环境准备 :机器配置 2核4G 40G(最低)系统版本 Centos 7 x86_64
安装环境 Docker Docker-compose Git 和Vim
先看其他部署方法可看官网链接 https://jumpserver.readthedocs.io/
首先git clone https://github.com/jumpserver/Dockerfile.git将Docker-compose.yaml文件从github上clone下来[root@ansible-Jumpserver ~]# cd Dockerfile/[root@ansible-Jumpserver Dockerfile]# lsallinone core docker-compose-build.yml docker-compose-external.yml docker-compose.yml guacamole koko LICENSE mysql nginx README.md redis[root@ansible-Jumpserver Dockerfile]# cat .env# 版本号可以自己根据项目的版本修改Version=1.5.9# MySQLDB_HOST=mysqlDB_PORT=3306DB_USER=jumpserverDB_PASSWORD=nu4x599Wq7u0Bn8EABh3J91GDB_NAME=jumpserver# RedisREDIS_HOST=redisREDIS_PORT=6379REDIS_PASSWORD=8URXPL2x3HZMi7xoGTdk3Upj# CoreSECRET_KEY=B3f2w8P2PfxIAS7s4URrD9YmSbtqX4vXdPUL217kL9XPUOWrmyBOOTSTRAP_TOKEN=7Q11Vz6R2J6BLAdO### SECRET_KEY 保护签名数据的密匙, 首次安装请一定要修改并牢记, 后续升级和迁移不可更改, 否则将导致加密的数据不可解密。# BOOTSTRAP_TOKEN 为组件认证使用的密钥, 仅组件注册时使用。组件指 koko、guacamole我们只需一条命令即可创建并启动Jumpserverdocker-compose up -d
这里我们看一下docker-compose.yml 写的是什么
version: '3'services: mysql: image: jumpserver/jms_mysql:${Version} container_name: jms_mysql restart: always tty: true environment: DB_PORT: $DB_PORT DB_USER: $DB_USER DB_PASSWORD: $DB_PASSWORD DB_NAME: $DB_NAME volumes: - mysql-data:/var/lib/mysql networks: - jumpserver redis: image: jumpserver/jms_redis:${Version} container_name: jms_redis restart: always tty: true environment: REDIS_PORT: $REDIS_PORT REDIS_PASSWORD: $REDIS_PASSWORD volumes: - redis-data:/var/lib/redis/ networks: - jumpserver core: image: jumpserver/jms_core:${Version} container_name: jms_core restart: always tty: true environment: SECRET_KEY: $SECRET_KEY BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN DB_HOST: $DB_HOST DB_PORT: $DB_PORT DB_USER: $DB_USER DB_PASSWORD: $DB_PASSWORD DB_NAME: $DB_NAME REDIS_HOST: $REDIS_HOST REDIS_PORT: $REDIS_PORT REDIS_PASSWORD: $REDIS_PASSWORD depends_on: - mysql - redis volumes: - core-data:/opt/jumpserver/data networks: - jumpserver koko: image: jumpserver/jms_koko:${Version} container_name: jms_koko restart: always tty: true environment: CORE_HOST: http://core:8080 BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN depends_on: - core - mysql - redis volumes: - koko-keys:/opt/koko/data/keys ports: - 2222:2222 networks: - jumpserver guacamole: image: jumpserver/jms_guacamole:${Version} container_name: jms_guacamole restart: always tty: true environment: JUMPSERVER_SERVER: http://core:8080 BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN JUMPSERVER_KEY_DIR: /config/guacamole/keys GUACAMOLE_HOME: /config/guacamole GUACAMOLE_LOG_LEVEL: ERROR JUMPSERVER_ENABLE_DRIVE: 'true' depends_on: - core - mysql - redis volumes: - guacamole-keys:/config/guacamole/keys networks: - jumpserver nginx: image: jumpserver/jms_nginx:${Version} container_name: jms_nginx restart: always tty: true depends_on: - core - koko - mysql - redis volumes: - core-data:/opt/jumpserver/data ports: - 80:80 networks: - jumpservervolumes: mysql-data: redis-data: core-data: koko-keys: guacamole-keys:networks: jumpserver: #这里 前端nginx 和koko 是对外暴露的端口 nginx 访问web版本d登录koko负责ssh登录,如80 2222 这两个端口被占用 可以自定义修改成其他端口
启动完毕之后:可用docker ps 查看
[root@ansible-Jumpserver Dockerfile]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESebef2a6327e4 jumpserver/jms_nginx:1.5.9 "nginx -g 'daemon of…" 7 days ago Up 7 days 0.0.0.0:80->80/tcp jms_nginx6ba67ef4aec2 jumpserver/jms_koko:1.5.9 "./entrypoint.sh" 7 days ago Up 7 days 0.0.0.0:2222->2222/tcp jms_koko936039ca89ac jumpserver/jms_guacamole:1.5.9 "./entrypoint.sh" 7 days ago Up 7 days jms_guacamole4b3482f7542a jumpserver/jms_core:1.5.9 "./entrypoint.sh" 7 days ago Up 7 days jms_core0da9943d1584 jumpserver/jms_redis:1.5.9 "./entrypoint.sh" 7 days ago Up 7 days jms_redis0fdeeeb24f92 jumpserver/jms_mysql:1.5.9 "./entrypoint.sh" 7 days ago Up 7 days jms_mysql这里我们可以看到Jumpserver 所使用的组件 redis mysql nginx 等等在防火墙上开通80 和2222 这两个端口。firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=2222/tcp --permanentfirewall-cmd --reload
安装完即可访问
浏览器访问: http://
SSH 访问: ssh -p 2222
XShell 等工具请添加 connection 连接, 默认 ssh 端口 2222
默认管理员账户 admin 密码 admin (登录后建议立即修改)
OK ,部署的部分就这些 明天给大家讲如何使用Jumpserver ,使公司服务器做到防护统一管理等。
如有问题可随时私信我,我是星河一个努力想成为专业运维的业余网管。