跳转至

FreeIPA Jump Install

跳板机和普通的client区别

如果客户端是centos7系统,则和跳板机之间没有区别。即在centos 7 系统下安装的堡垒机客户端,用户可以登录任意一台有权限登录的客户端服务器,并可以通过这台服务器登录到其他有权限登录的服务器。

如果客户端是centos 6及以下系统。则有区别:因为freeipa 在4.0之上才支持otp认证。而centos 6 只支持3.3版本。所以,如果用户使用passwd+otp认证,则登录client会失败。

1、安装ipa-client

yum install ipa-client -y

配置本地DNS解析

本地有部署的私有DNS,对ipa.vip域 做了转发,所以客户端指向私有DNS即可。如果没有私有DNS,需要将DNS指向ipa-server的地址

Bash
1
2
3
# vim /etc/resolv.conf 
nameserver 172.26.32.48
nameserver 172.26.32.53

2、配置client加入ipa.vip 域

如果是跳板机,hostname命名为jump.ipa.vip

ipa-client-install --domain=ipa.vip --server=server.ipa.vip -U --enable-dns-updates --mkhomedir --hostname=jump.ipa.vip -N -p admin -w xxxxxxxx --force-join ​ 如果只是单纯client 加入域,可以使用本地IP命名格式172-26-32-45.ipa.vip

ipa-client-install --domain=ipa.vip --server=server.ipa.vip -U --enable-dns-updates --mkhomedir --hostname=172-26-32-45.ipa.vip -N -p admin -w xxxxxxxx --force-join

3、配置jump

yum install openldap-clients

jump脚本,可以放在/usr/local/bin/jump

Bash
#!/usr/bin/env bash
# Auther: chaic
# Description:
ldap_serv="server.ipa.vip"
dc1="ipa"
dc2="vip"
host=$1
echo "Input: $host"
if [ "$host" == "" ];then
  echo '=============================='
  echo '$USER Host List:'
  echo '=============================='
  ldapsearch -H ldaps://${ldap_serv} -Y GSSAPI -b 'cn=hbac,dc='"${dc1}"',dc='"${dc2}"'' "(&(memberHost=*)(memberUser=uid=$(whoami)*))" | awk -F '[,|=]' '/^memberHost: / {print $2}'
  echo '=============================='
  exit
fi
if [ "$host" == "list" ];then
  echo '=============================='
  echo 'All Host List:'
  echo '=============================='
  ldapsearch -H ldaps://${ldap_serv} -Y GSSAPI -b 'cn=computers,cn=accounts,dc='"${dc1}"',dc='"${dc2}"'' 'fqdn=*' | awk '/^fqdn: / {print $2}'
  echo '=============================='
  exit
fi
hname=`ldapsearch -H ldaps://${ldap_serv} -Y GSSAPI -b 'cn=computers,cn=accounts,dc='"${dc1}"',dc='"${dc2}"'' 'fqdn=*' | awk '/^fqdn: / {print $2}' | grep -w "${host}" | sort | uniq`
if [ `echo ${hname} | grep -oP "\-${host}" | wc -l` -gt 1 ];then
  echo  -e "\033[031m Hostname is more than one item!  please select one for your needs: \033[0m"
  echo ${hname} | tr ' ' '\n' | awk '{print  "jump " $1}'
  exit 0
fi
if [ "${hname}" == "" ];then
  echo "IP to Hostname not exists."
else
  echo "ssh $hname"
  ssh -o StrictHostKeyChecking=no $hname
fi

添加执行权限

chmod +x /usr/local/bin/jump

以上jump 环境准备完成,需要到server 的 web UI 配置账户

ipa-client-install 参数含义

Bash
Usage: ipa-client-install [options]
Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -U, --unattended      无人值守(un)安装从不提示用户
  --uninstall           卸载现有安装。卸载可以使用——unattended选项运行
  Basic options:
    -p PRINCIPAL, --principal=PRINCIPAL
                        用于加入IPA领域的主体
    --ca-cert-file=FILE
                        从该文件加载CA证书
    --ip-address=IP_ADDRESS
                        指定要加入DNS的IP地址。这选项可以多次使用
    --all-ip-addresses  任何接口上配置的所有可路由的IP地址会被添加到DNS吗
    --domain=DOMAIN_NAME
                        IPA部署的DNS主域(非必须与当前主机名相关)
    --server=SERVER     IPA服务器的FQDN
    --realm=REALM_NAME  IPA部署的Kerberos领域名称(通常为主DNS域的大写名称)
    --hostname=HOST_NAME
                        机器的主机名(FQDN)。如果指定,则主机名将被设置,系统配置将被更新为在重启后持久化。
                        默认情况下从Python的socket模块调用getfqdn()的结果使用。
  Client options:
    -w PASSWORD, --password=PASSWORD
                        加入IPA领域的密码(假定为批量密码)除非校长也已设定)
    -W                  提示输入密码以加入IPA领域
    --noac              不修改nsswitch.conf和PAM配置
    -f, --force         强制设置LDAP/Kerberos配置
    --configure-firefox
                        配置Firefox以使用IPA域凭据
    --firefox-dir=FIREFOX_DIR
                        指定安装Firefox的目录(for)例如:“/usr/lib/firefox”)
    -k KEYTAB, --keytab=KEYTAB
                        从上次注册中备份的密钥选项卡的路径
    --mkhomedir         为用户第一次登录创建主目录
    --force-join        强制客户端注册,即使已经注册
    --ntp-server=NTP_SERVER
                        要使用的NTP服务器。此选项可以多次使用次
    -N, --no-ntp        不配置NTP
    --force-ntpd        停止和禁用任何时间
    --nisdomain=NISDOMAIN
                        NIS域名
    --no-nisdomain      不配置NIS域名
    --ssh-trust-dns     配置OpenSSH客户端信任DNS SSHFP记录
    --no-ssh            不配置OpenSSH客户端
    --no-sshd           do not configure OpenSSH server
    --no-sudo           do not configure SSSD as data source for sudo
    --no-dns-sshfp      不自动创建DNS SSHFP记录
    --kinit-attempts=KINIT_ATTEMPTS
                        尝试获取主机TGT的次数(默认为5)。
    --request-cert      为机器请求证书
  SSSD options:
    --fixed-primary     配置sssd以使用固定服务器作为主IPA服务器
    --permit            默认禁用访问规则,允许所有访问。
    --enable-dns-updates
                        将机器配置为尝试dns更新IP地址变更。
    --no-krb5-offline-passwords
                        配置ssd不存储用户密码服务器脱机
    --preserve-sssd     尽可能保留旧的ssd配置
  Automount options:
    --automount-location=AUTOMOUNT_LOCATION
                        自动安装位置
  Logging and output options:
    -v, --verbose       print debugging information
    -d, --debug         alias for --verbose (deprecated)
    -q, --quiet         output only errors
    --log-file=FILE     log to the given file