鸬鹚洲 发表于 2017-2-25 11:08:02

CentOS7 开源跳板机(堡垒机) Jumpserver

  开源跳板机(堡垒机)Jumpserver
  环境 CentOS 7   x64       关闭 selinuxfirewalld
  jumpserver: 172.24.0.14
  testserver: 172.24.0.15
  一. 部署ldapserver
  1.1 安装ldapserver
  yum install -y openldap openldap-servers openldap-clients openldap-devel
  1.2 准备配置文件      (centos7 slapd.conf.obsolete 并不存在,所以我从centos6 里拷贝了一个过来)
  cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
  ## 该文件是slapd的配置文件
  cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG      
  ## 数据库的配置文件
  1.3 修改配置文件
  vim /etc/openldap/slapd.conf
  ...
  loglevel      1
  ...
  suffix          "dc=jicki,dc=com"
  rootdn          "cn=admin,dc=jicki,dc=com"
  rootpw          jicki123
  ...
  #说明:
  loglevel:设置日志级别
  suffix:其实就是BaseDN
  rootdn: 超级管理员的dn
  rootpw: 超级管理员的密码
  1.4 修改系统日志配置文件
  vim /etc/rsyslog.conf
  搜索local7.*          在下面添加一行
  local4.*                                                /var/log/ldap.log
  保存以后重启服务
  systemctl restartrsyslog.service
  1.5 启动slapd, 查看启动情况
  systemctl startslapd.service
  删除ladp 原来配置
  rm -rf /etc/openldap/slapd.d/*
  重新生成新的配置
  slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
  授权
  chown -R ldap:ldap /etc/openldap/slapd.d/
  重启服务
  systemctl restartslapd.service
  1.6 导入ldif数据库框架和测试用户,base.ldif,group.ldif,passwd.ldif 修改文件其中的dc=yolu,dc=com替换成你的baseDN,然后导入,密码是rootpw设置的密码
  上传base.ldif,group.ldif,passwd.ldif 文件至/tmp 目录下
  cd /tmp
  ldapadd -x -W -D "cn=admin,dc=jicki,dc=com" -f base.ldif
  ldapadd -x -W -D "cn=admin,dc=jicki,dc=com" -f group.ldif
  ldapadd -x -W -D "cn=admin,dc=jicki,dc=com" -f passwd.ldif
  #说明:测试用户是testuser 密码是testuser123
  二. testserver部署ldapclient
  2.1 安装LDAP客户端
  yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap
  2.2 设置自动创建目录
  echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/system-auth
  2.3 备份原来authconfig,然后设置使用LDAP认证
  authconfig --savebackup=auth.bak
  authconfig --enableldap --enableldapauth --enablemkhomedir --enableforcelegacy --disablesssd --disablesssdauth --ldapserver=172.24.0.14 --ldapbasedn="dc=jicki,dc=com" --update
  2.4 CentOS7 系统 必须注释掉这里才能从 ladp 验证通过.( 否则 提示登录失败: password refused )
  vi /etc/pam.d/password-auth-ac
  #auth      requisite   pam_succeed_if.so uid >= 1000 quiet_success
  2.5 启动nslcd 否则报 ( pam_ldap(sshd:auth): error opening connection to nslcd: No such file or directory )
  service nslcd start
  2.6 从jumpserver连接testuser测试
  ssh testuser@172.24.0.15
  密码是testuser123 如果连接成功则继续 ( Creating directory '/home/testuser'. )
  三. 在jumpserver 中配置 LDAP负责sudo   
  3.1 拷贝sudo schema,centos版本不一样,可能sudo的版本不是1.8.6,其他的也可以
  cp /usr/share/doc/sudo-1.8.6p7/schema.OpenLDAP /etc/openldap/schema/sudo.schema
  3.2 修改文件导入schema
  vim /etc/openldap/slapd.conf
  添加 如下一行:
  include         /etc/openldap/schema/sudo.schema
  3.3 重新生成配置文件,重启slapd
  rm -rf /etc/openldap/slapd.d/*
  slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
  chown -R ldap:ldap /etc/openldap/slapd.d/*
  systemctl restartslapd.service
  3.4 导入sudo.ldif到ldapserver
  ldapadd -x -W -D "cn=admin,dc=jicki,dc=com" -f sudo.ldif
  #说明:将sudo.ldif中的dc=jicki,dc=com换作你的baseDN
  四 testserver设置sudo使用ldap
  说明: centos7上sudo使用的ldap配置文件是 /etc/sudo-ldap.conf,sudo版本不同使用的配置文件可能也有所不同,sudo -V | grep 'ldap.conf' 查看
  sudo -V | grep 'ldap.conf'
  echo -e "uri ldap://172.24.0.14\nSudoers_base ou=Sudoers,dc=jicki,dc=com" > /etc/sudo-ldap.conf
  echo "Sudoers: files ldap" >>/etc/nsswitch.conf
  4.1 测试sudo
  ssh testuser@172.24.0.15
  sudo su
  whoami
  #说明:密码是testuser123,sudo su如果不提示输入密码,则成功
  五. 部署jumpserver
  5.1 安装mysql数据库,创建库( yum 安装 只用于存储信息CentOS7 mysql 已替换为 mariadb)
  yum -y install mariadb mariadb-server mariadb-devel
  service mariadb start
  mysqladmin -u root password '12345678'
  mysql -uroot -p
  运行如下命令
  create database jumpserver charset='utf8';
  grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'mysql123';
  grant all on jumpserver.* to 'jumpserver'@'localhost' identified by 'mysql234';
  5.2 下载最新Jumpserver项目
  yum -y install git
  cd /opt
  git clone https://github.com/ibuler/jumpserver.git
  5.3 安装setuptools 和 pip
  yum -y install python-setuptools gcc python-devel ncurses ncurses-devel
  easy_install pip
  5.4 安装依赖库
  cd /opt/jumpserver/docs
  pip install -r requirements.txt -i http://pypi.douban.com/simple
  -----------------------------------------------------------------------------
  Successfully installed readline
  Cleaning up...
  -----------------------------------------------------------------------------
  表示安装完成
  5.5 修改Jumpserver配置文件
  cd /opt/jumpserver
  vim jumpserver.conf
  #coding: utf8
  
  ip = 172.24.0.14
  port = 80
  key = 88aaaf7ffe3c6c04
  
  host = 127.0.0.1
  port = 3306
  user = jumpserver
  password = mysql234
  database = jumpserver
  
  ldap_enable = 1
  host_url = ldap://127.0.0.1:389
  base_dn = dc=jicki, dc=com
  root_dn = cn=admin,dc=jicki,dc=com
  root_pw = jicki123
  
  web_socket_host = 172.24.0.14:3000
  
  email_host = smtp.exmail.qq.com
  email_port = 25
  email_host_user = jicki@qq.com
  email_host_password = jicki123
  email_use_tls = False
  # 说明:
  # db里是数据库的设置,相信你看一眼就知道了
  # jumpserver中
  # key是加密时需要的字符,可以更改但需要是16位
  # ldap_host,ldap_base_dn,admin_cn,admin_pass都是与上面ldapserver设置的一致
  # admin_cn 对应ldap中的rootdn,必须一致
  # admin_pass是ldap的密码,对应ldap.conf中的 rootpw ,必须使用明文
  # web_socket_host是websocket的url,把ip改为jumpserver的IP地址,需要修改,3000是默认端口
  # 配置mail服务器,用来发送邮件,本版本添加用户会自动发邮件给用户的email
  5.6 修改logs目录权限
  cd /opt/jumpserver
  mkdir logs
  chmod 777 logs
  5.7 django sync db 到数据库
  cd /opt/jumpserver/
  python manage.py syncdb
  Would you like to create one now? (yes/no): no
  5.8 测试运行
  python manage.py runserver 0.0.0.0:80
  python log_handler.py
  #说明:两个窗口分别打开
  5.9 初始化jumpserver浏览器打开
  http://172.24.0.14/install
  -------------------------------------
  成功:安装成功
  -------------------------------------
  六. 安装node.js为了实现实时监控,使用了node.js来完成websocket
  6.1 下载node.js
  官方地址:http://www.nodejs.org/download/
  wget http://nodejs.org/dist/v0.12.0/node-v0.12.0.tar.gz
  6.2 编译安装
  yum -y install gcc-c++ bzip2*
  tar zxvf node-v0.12.0.tar.gz
  cd node-v0.12.0
  ./configure --prefix=/opt/node/
  make && make install
  6.3 设置path
  vim /etc/profile.d/node.sh
  export PATH=$PATH:/opt/node/bin
  source /etc/profile.d/node.sh
  6.4 安装项目依赖module,或使用下载好的
  cd /opt/jumpserver/websocket
  npm install      # 可能下载需要几分钟,可以更省时
  6.5 测试启动websocket
  node index.js
  说明:新窗口运行
  6.6 访问页面
  http://172.24.0.14
  测试所有功能
  七. 收尾工作
  7.1 修改sshd配置,禁止密码登录#
  vim /etc/sshd/sshd_config
  PasswordAuthentication no
  service sshd restart
  7.2 让用户登录jumpserver自动运行系统
  cd /opt/jumpserver/docs
  vim jumpserver.sh
  ...
  if [ $USER == 'admin' ] || [ $USER == 'root' ] || [ $USER == 'jicki' ];then       # 修改特殊用户,结束后不退出
  ...
  cp jumpserver.sh /etc/profile.d/
  7.3 正常运行jumpserver系统
  cd /opt/jumpserver/
  chmod +x service.sh
  ./service.sh start                     #启动
  ./service.sh stop                        #关闭
  http://172.24.0.14/                  用户名 admin    密码admin
页: [1]
查看完整版本: CentOS7 开源跳板机(堡垒机) Jumpserver