diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..92d35f9d8 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,71 @@ + +名词解释 +------ + + +* **用户** 用户是授权和登陆的主体,将来为每个员工建立一个账户,用来登录跳板机, + 将资产授权给该用户,查看用户登陆记录命令历史等 + +* **用户组** 多个用户可以组合成用户组,为了方便进行授权,可以将一个部门或几个用户 + 组建成用户组,在授权中使用组授权,该组中的用户拥有所有授权的主机权限 + +* **资产** 资产通常是我们的服务器、网络设备等,将资产授权给用户,用户则会有权限登 + 录资产,执行命令等 + +* **管理账户** 添加资产时需要添加一个管理账户,该账户是该资产上已有的有管理权限的用户, + 如root,或者有 NOPASSWD: ALL sudo权限的用户,该管理账户用来向资产推送系统用户, + 为系统用户添加sudo,获取资产的一些硬件信息 + +* **资产组** 同用户组,是资产组成的集合,为了方便授权 + +* **机房** 又称IDC,不解释 + +* **Sudo** 这里的sudo其实是Linux中的sudo命令别名,一个sudo别名包含多个命令, + 系统用户关联sudo就代表该系统用户有权限sudo执行这些命令 + +* **系统用户** 系统用户是服务器上建立的一些真实存在的可以ssh登陆的用户,如 dev, + sa, dba等,系统用户可使用jumpserver推送到服务器上,也可以利用自己公司 + 的工具进行推送,授权时将用户、资产、系统用户关联起来则表明用户有权限登陆该资产的 + 这个系统用户 如:用户 **小明** 以 **dev** 系统用户登陆 **172.16.1.1**资产 + +* **授权规则** 授权规则是将 **资产** **系统用户** 和 **用户** 关联起来,用来完成授权。 + 这样用户就可以以某个系统用户账号登陆资产 + +* **日志审计** + * **在线** 查看当前在线的用户(非web在线),可以监控用户的命令执行,强制结束用户 + 登录。 + * **登录历史** 查看以往用户的登录历史,可以查看用户登陆操作的命令,可以回放用户 + 执行命令的录像 + * **命令记录** 查看用户批量执行命令的历史,包含执行命令的主机,执行的命令,执行的结果 + + * **上传下载** 查看用户上传下载文件的记录 + + +快速开始 +------ +********** + +#### 1. 添加用户 +用户管理 - 查看用户 - 添加用户 填写基本信息,完成用户添加 + +用户添加完成后,根据提示记住用户账号密码,换个浏览器登录下载key,登录jumpserver测试 + +#### 2. 添加资产 +资产管理 - 查看资产 - 添加资产 填写基本信息,完成资产添加 + +#### 3. 添加sudo +授权管理 - Sudo - 添加别名 输入别名名称和命令,完成sudo添加 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/install/developer_doc.txt b/install/developer_doc.txt new file mode 100644 index 000000000..aa7b0db9f --- /dev/null +++ b/install/developer_doc.txt @@ -0,0 +1,36 @@ +# coding: utf8 + +Jumpserver开发者文档 + +开发规范: + 1. 遵守PE8规范 1) 命名规范 2) 导入模块规范 3) 空行规范 4) 长度规范 + 2. 缩进统一4个空格 + 3. 变量命名明了易懂多个单词下划线隔开 + 4. 注释到位 + + +框架说明: + 1. 项目名称 Jumpserver + 2. APP: + juser 用户管理 + jasset 资产管理(设备管理) + jpermission 授权管理 + jlog 日志管理 + 3. connect.py 用户登录入口程序 + 4. logs 日志保存目录 + 5. jumpserver.conf 配置文件 + 6. docs 文档目录 + 7. static 静态文件目录 + 8. templates 模板目录 + + +connect.py逻辑说明: + 用户登录系统,运行该脚本,p调用get_user_host函数查看有权限的服务器ip + 输入部分IP,verify_connect匹配该部分ip,如果是匹配到多个,就显示ip + 匹配到0了就显示没有权限或者主机, + 匹配到1个则继续 + 查询该服务器是否支持ldap 如果是,获得ldap用户密码登陆 + 如果否,查询授权表,查看该服务器授权的系统用户,并返回对应账号密码,登陆 + connect函数是登陆函数,采用paramiko 使用channel登陆,posix_shell 来完成交互,并记录日志 + signal模块来完成窗口改变导致的tty大小随之改变 + PyCrypt是对称加密类 \ No newline at end of file diff --git a/install/initial_data.yaml b/install/initial_data.yaml new file mode 100644 index 000000000..1d82565cb --- /dev/null +++ b/install/initial_data.yaml @@ -0,0 +1,9 @@ +- model: juser.user + pk: 5000 + fields: + username: admin + name: admin + password: pbkdf2_sha256$20000$jBIDGPB2j5JT$orxqGgzzjzykColYm1BswPjgHOiERjZkcgkuVIkD2Hc= + email: admin@jumpserver.org + role: SU + is_active: 1 diff --git a/install/requirements.txt b/install/requirements.txt new file mode 100644 index 000000000..23ab9d3b0 --- /dev/null +++ b/install/requirements.txt @@ -0,0 +1,17 @@ +#sphinx-me==0.3 +django==1.6 +pycrypto==2.6.1 +paramiko==1.16.0 +ecdsa==0.13 +MySQL-python==1.2.5 +#django-uuidfield==0.5.0 +psutil==3.3.0 +xlsxwriter==0.7.7 +xlrd==0.9.4 +django-bootstrap-form==3.2 +tornado==4.3 +ansible==1.9.4 +pyinotify==0.9.6 +passlib==1.6.5 +argparse==1.4.0 +django_crontab==0.6.0 \ No newline at end of file diff --git a/install/zzjumpserver.sh b/install/zzjumpserver.sh new file mode 100644 index 000000000..98598ff18 --- /dev/null +++ b/install/zzjumpserver.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [ "$USER" == "admin" ] || [ "$USER" == "root" ] || [ "$USER" == "" ];then + echo "" +else + python /opt/jumpserver/connect.py + if [ $USER == 'guanghongwei' ];then + echo + else + exit 3 + echo + fi +fi