This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
aix:marc [2022/03/29 10:29] manu |
aix:marc [2025/08/23 23:37] (current) |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| ===== Register a new AD user ===== | ===== Register a new AD user ===== | ||
| - | If the user **-it** still exist, check the UID on a <fc #ff0000>linux server</fc> connected to Active Directory (sssd process will convert Windows SID to an UNIX UID; Else create it first into active directory | + | If the user **-it** still exist, check the UID on a linux server connected to Active Directory (sssd process will convert Windows SID to an UNIX UID; Else create it first into active directory |
| <cli prompt='#'> | <cli prompt='#'> | ||
| [root@LINUX ~]# id user01 | [root@LINUX ~]# id user01 | ||
| Line 11: | Line 11: | ||
| We need uid=1200123421(user01@test.lu) and 1200123456(aix-users@test.lu) | We need uid=1200123421(user01@test.lu) and 1200123456(aix-users@test.lu) | ||
| - | <fc #800080>For AIX users the following field must be fulfill into Active Directory</fc> | + | **For AIX users the following field must be fulfill into Active Directory** |
| - | <csv> | + | |
| - | Parameter,Value,comment | + | |
| - | uid,user01,lowercase | + | |
| - | unixHomeDirectory,/home/user01,lowercase | + | |
| - | loginShell,/usr/bin/bash,shell: keep bash everywhere | + | |
| - | gidNumber,1200123456,primary group ID (always aix-users) | + | |
| - | uidNumber,1200123421,userID | + | |
| - | </csv> | + | |
| - | <fc #800080>For AIX groups the following field must be fulfill into Active Directory (For group aix-users)</fc> | + | ^Parameter^Value^comment^ |
| - | <csv> | + | |uid|user01|lowercase| |
| - | Parameter,Value | + | |unixHomeDirectory|/home/user01|lowercase| |
| - | gidNumber,1200123456 | + | |loginShell|/bin/bash|shell: keep bash everywhere| |
| - | </csv> | + | |gidNumber|1200123456|primary group ID (always aix-users)| |
| + | |uidNumber|1200123421|userID| | ||
| + | |||
| + | **For AIX groups the following field must be fulfill into Active Directory (For group aix-users)** | ||
| + | |||
| + | ^Parameter^Value^ | ||
| + | |gidNumber|1200123456| | ||
| ===== config LDAP ===== | ===== config LDAP ===== | ||
| Line 53: | Line 51: | ||
| users SEC_LIST member m na yes | users SEC_LIST member m na yes | ||
| </cli> | </cli> | ||
| + | |||
| + | |||
| + | AD registration in secure mode, using CA certificate | ||
| + | <code> | ||
| + | gsk8capicmd_64 -keydb -create -db /etc/security/ldap/ldap.kdb -pw $pwd1 -type cms -stash | ||
| + | gsk8capicmd_64 -keydb -list -db /etc/security/ldap/ldap.kdb -pw $pwd1 -stash | ||
| + | gsk8capicmd_64 -cert -add -db /etc/security/ldap/ldap.kdb -pw $pwd1 -type pem -file /tmp/ca2.ad.cer -label 'AD_LU_ca2.cer' | ||
| + | gsk8capicmd_64 -cert -list -db /etc/security/ldap/ldap.kdb -pw $pwd1 | ||
| + | gsk8capicmd_64 -cert -details -db /etc/security/ldap/ldap.kdb -pw $pwd1 -label 'AD_LU_ca2.cer' | ||
| + | mksecldap -c -h ldap_srv.test.lu -n 636 -k /etc/security/ldap/ldap.kdb -w $pwd1 -j SSL -a 'CN=ldapuser,OU=Users Misc,OU=Users,OU=....,DC=aaa,DC=test,DC=lu' -p $pwd2 -d 'OU=Users,OU=Users & Groups,DC=aaa,DC=test,DC=lu' -A ldap_auth -u NONE | ||
| + | </code> | ||
| + | |||
| + | If mksecldap command failed, maybe you are not looking at right tree into AD, change the OU | ||
| <cli prompt='#'> | <cli prompt='#'> | ||
| Line 76: | Line 87: | ||
| </cli> | </cli> | ||
| + | Check if LDAP is present, else add the 3 following lines (added by mksecldap command) | ||
| <cli prompt='#'> | <cli prompt='#'> | ||
| [root@aixsrv]/etc# cat /etc/methods.cfg | [root@aixsrv]/etc# cat /etc/methods.cfg | ||
| Line 85: | Line 97: | ||
| </cli> | </cli> | ||
| + | Change default user authentification to default LDAP, or files (both required) | ||
| + | chsec -f /etc/security/user -s default -a registry=files | ||
| + | chsec -f /etc/security/user -s default -a "SYSTEM=files or LDAP" | ||
| + | chsec -f /etc/security/login.cfg -s usw -a mkhomeatlogin=true | ||
| + | |||
| + | Check into the files user and login.cfg | ||
| <cli prompt='#'> | <cli prompt='#'> | ||
| [root@aixsrv]/etc# cat /etc/security/user | [root@aixsrv]/etc# cat /etc/security/user | ||
| Line 90: | Line 108: | ||
| default: | default: | ||
| ... | ... | ||
| - | SYSTEM = "LDAP or files" | + | SYSTEM = "files or LDAP" |
| registry = "files" | registry = "files" | ||
| ... | ... | ||
| </cli> | </cli> | ||
| + | |||
| + | ===== Enable PAM on AIX ===== | ||
| + | |||
| + | PAM is more flexible to control access protocols compared to AIX standard authentifications | ||
| + | |||
| + | You can comment unused services | ||
| + | |||
| + | To use PAM with access control for user and groups | ||
| + | <cli prompt='#'> | ||
| + | [root@aixsrv]/etc # cat /etc/pam.conf | ||
| + | # IBM_PROLOG_BEGIN_TAG | ||
| + | # This is an automatically generated prolog. | ||
| + | # | ||
| + | # bos720 src/bos/etc/pam/pam.conf 1.8.1.1 | ||
| + | # | ||
| + | # Licensed Materials - Property of IBM | ||
| + | # | ||
| + | # COPYRIGHT International Business Machines Corp. 2003,2012 | ||
| + | # All Rights Reserved | ||
| + | # | ||
| + | # US Government Users Restricted Rights - Use, duplication or | ||
| + | # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. | ||
| + | # | ||
| + | # IBM_PROLOG_END_TAG | ||
| + | # | ||
| + | # PAM Configuration File | ||
| + | # | ||
| + | # This file controls the PAM stacks for PAM enabled services. | ||
| + | # The format of each entry is as follows: | ||
| + | # | ||
| + | # <service_name> <module_type> <control_flag> <module_path> [module_options] | ||
| + | # | ||
| + | # Where: | ||
| + | # <service_name> is: | ||
| + | # The name of the PAM enabled service. | ||
| + | # | ||
| + | # <module_type> is one of: | ||
| + | # auth, account, password, session | ||
| + | # | ||
| + | # <control_flag> is one of: | ||
| + | # required, requisite, sufficient, optional | ||
| + | # | ||
| + | # <module_path> is: | ||
| + | # The path to the module. If the field does not begin with '/' | ||
| + | # then /usr/lib/security/ is prefixed for 32-bit services, | ||
| + | # /usr/lib/security/64/ is prefixed for 64-bit services. | ||
| + | # If the module path is specified as full path,then it | ||
| + | # directly uses for 32-bit services, for 64-bit services | ||
| + | # module path derived as <module_path>/64/<module_name>. | ||
| + | # | ||
| + | # [module_options] is: | ||
| + | # An optional field. Consult the specified modules documentation | ||
| + | # for valid options. | ||
| + | # | ||
| + | # The service name OTHER controls the behavior of services that are PAM | ||
| + | # enabled but do not have an explicit entry in this file. | ||
| + | # | ||
| + | |||
| + | # | ||
| + | # Authentication | ||
| + | # | ||
| + | authexec auth required pam_aix | ||
| + | dtaction auth required pam_aix | ||
| + | dtsession auth required pam_aix | ||
| + | dtlogin auth required pam_aix | ||
| + | ftp auth required pam_aix | ||
| + | imap auth required pam_aix | ||
| + | login auth required pam_aix | ||
| + | rexec auth required pam_aix | ||
| + | rlogin auth sufficient pam_rhosts_auth | ||
| + | rlogin auth required pam_aix | ||
| + | rsh auth required pam_rhosts_auth | ||
| + | snapp auth required pam_aix | ||
| + | sshd auth requisite pam_permission file=/etc/auth.allow found=allow | ||
| + | sshd auth required pam_aix | ||
| + | su auth sufficient pam_allowroot | ||
| + | su auth required pam_aix | ||
| + | swrole auth required pam_aix | ||
| + | telnet auth required pam_aix | ||
| + | xdm auth required pam_aix | ||
| + | OTHER auth required pam_prohibit | ||
| + | |||
| + | # | ||
| + | # Account Management | ||
| + | # | ||
| + | authexec account required pam_aix | ||
| + | dtlogin account required pam_aix | ||
| + | ftp account required pam_aix | ||
| + | login account required pam_aix | ||
| + | rexec account required pam_aix | ||
| + | rlogin account required pam_aix | ||
| + | rsh account required pam_aix | ||
| + | sshd account required pam_aix | ||
| + | su account sufficient pam_allowroot | ||
| + | su account required pam_aix | ||
| + | sudo account sufficient pam_allowroot | ||
| + | sudo account required pam_aix | ||
| + | swrole account required pam_aix | ||
| + | telnet account required pam_aix | ||
| + | xdm account required pam_aix | ||
| + | OTHER account required pam_prohibit | ||
| + | |||
| + | # | ||
| + | # Password Management | ||
| + | # | ||
| + | authexec password required pam_aix | ||
| + | dtlogin password required pam_aix | ||
| + | login password required pam_aix | ||
| + | passwd password required pam_aix | ||
| + | rlogin password required pam_aix | ||
| + | sshd password required pam_aix | ||
| + | su password required pam_aix | ||
| + | sudo password required pam_aix | ||
| + | telnet password required pam_aix | ||
| + | xdm password required pam_aix | ||
| + | OTHER password required pam_prohibit | ||
| + | |||
| + | # | ||
| + | # Session Management | ||
| + | # | ||
| + | dtlogin session required pam_aix | ||
| + | ftp session required pam_aix | ||
| + | imap session required pam_aix | ||
| + | login session required pam_aix | ||
| + | rexec session required pam_aix | ||
| + | rlogin session required pam_aix | ||
| + | rsh session required pam_aix | ||
| + | snapp session required pam_aix | ||
| + | sshd session required pam_aix | ||
| + | sshd session optional pam_mkuserhome | ||
| + | su session required pam_aix | ||
| + | sudo session required pam_aix | ||
| + | sudo session optional pam_mkuserhome | ||
| + | swrole session required pam_aix | ||
| + | telnet session required pam_aix | ||
| + | xdm session required pam_aix | ||
| + | OTHER session required pam_prohibit | ||
| + | |||
| + | #Support for IBM MQ | ||
| + | ibmmq auth required pam_aix | ||
| + | ibmmq account required pam_aix | ||
| + | </cli> | ||
| + | |||
| + | Create the access control file | ||
| + | <cli prompt='#'> | ||
| + | [root@aixsrv]/etc # cat /etc/auth.allow | ||
| + | root | ||
| + | @users | ||
| + | @dba_group | ||
| + | user01 | ||
| + | </cli> | ||
| + | |||
| + | Enable PAM into SSH | ||
| + | <cli prompt='#'> | ||
| + | [root@aixsrv]/etc # cat /etc/ssh/sshd_config | grep '^UsePAM' | ||
| + | UsePAM yes | ||
| + | [root@aixsrv]/etc # stopsrc -s sshd | ||
| + | [root@aixsrv]/etc # startsrc -s sshd | ||
| + | </cli> | ||
| + | |||
| + | Change default authentification mechanism | ||
| + | <cli prompt='#'> | ||
| + | [root@aixsrv]/etc # lssec -f /etc/security/login.cfg -s usw -a auth_type | ||
| + | usw auth_type=STD_AUTH | ||
| + | [root@aixsrv]/etc # chsec -f /etc/security/login.cfg -s usw -a auth_type=PAM_AUTH | ||
| + | </cli> | ||
| + | |||
| + | <code> | ||
| + | check_nimclient.sh | ||
| + | #!/usr/bin/ksh | ||
| + | #set -x | ||
| + | ################################################## | ||
| + | #@(#) Check NIM CPUID | ||
| + | ################################################## | ||
| + | # version: 1.0 2023-02 emmiff4 | ||
| + | ################################################## | ||
| + | |||
| + | dir=`dirname $0` | ||
| + | . $dir/.env | ||
| + | |||
| + | |||
| + | ########################################################################### | ||
| + | # usage () | ||
| + | # | ||
| + | # Display usage message and exit | ||
| + | # | ||
| + | # Parameters: | ||
| + | # - none | ||
| + | ########################################################################### | ||
| + | usage() | ||
| + | { | ||
| + | echo "Usage:" | ||
| + | echo "no parameter, will check CPUID on master and client, and change if not OK" | ||
| + | echo "-c reset -l <client_name> : will delete the nim client and recreate" | ||
| + | exit 0 | ||
| + | } | ||
| + | |||
| + | #------------------------------------------------ | ||
| + | reset_cpuid () { | ||
| + | |||
| + | MASTERCPUID=$(uname -m) | ||
| + | for lpar in $(lsnim -t standalone | awk '{print $1}' | grep -v vio) | ||
| + | do | ||
| + | CPUID=$(ssh -o ConnectTimeout=10 $lpar 'uname -m' 2>/dev/null) | ||
| + | lenght=${#CPUID} | ||
| + | if [ "$lenght" -ne "12" ] | ||
| + | then | ||
| + | echo "$lpar: no CPUID $CPUID $lenght" | ||
| + | else | ||
| + | NIMCPUID=$(lsnim -l $lpar | grep cpuid | rev | awk '{print $1}' | rev) | ||
| + | CLIENTCPUID=$(ssh $lpar "grep NIM_MASTERID /etc/niminfo" | sed 's/=/\ /g' | rev | awk '{print $1}' | rev) | ||
| + | cmd=$(echo sed "'s/"${CLIENTCPUID}"/"${MASTERCPUID}"/'") | ||
| + | if [ "$NIMCPUID" == "$CPUID" ] | ||
| + | then | ||
| + | #echo "$CPUID $CLIENTCPUID $NIMCPUID" | tr ' ' '\n' | sort -u | ||
| + | if [ "$MASTERCPUID" == "$CLIENTCPUID" ] | ||
| + | then | ||
| + | echo "$lpar: MASTERCPUID OK" | ||
| + | else | ||
| + | echo "$lpar: client $CPUID /etc/niminfo ERROR" | ||
| + | echo "$lpar: changed" | ||
| + | ssh $lpar "cp /etc/niminfo /etc/niminfo.old ; cat /etc/niminfo | $cmd > /etc/niminfo.new ; mv /etc/niminfo.new /etc/niminfo ; stopsrc -s nimsh ; startsrc -s nimsh" | ||
| + | fi | ||
| + | else | ||
| + | echo "$lpar: nimserver $CPUID $NIMCPUID ERROR" | ||
| + | nim -o change -a cpuid=${CPUID} $lpar | ||
| + | if [ "$MASTERCPUID" != "$CLIENTCPUID" ] | ||
| + | then | ||
| + | echo "$lpar: client $CPUID /etc/niminfo ERROR" | ||
| + | echo "$lpar: changed" | ||
| + | ssh $lpar "cp /etc/niminfo /etc/niminfo.old ; cat /etc/niminfo | $cmd > /etc/niminfo.new ; mv /etc/niminfo.new /etc/niminfo ; stopsrc -s nimsh ; startsrc -s nimsh" | ||
| + | fi | ||
| + | fi | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | } | ||
| + | |||
| + | #------------------------------------------------ | ||
| + | recreate_client () { | ||
| + | echo $lpar $COMMAND | ||
| + | echo "nim -o remove $lpar" | ||
| + | echo "ssh $lpar ""'"rm /etc/niminfo"'" | ||
| + | echo "ssh $lpar ""'"stopsrc -s nimsh"'" | ||
| + | echo "ssh $lpar ""'"niminit -a name=$lpar -a pif_name=en0 -a master=$master -a platform=chrp -a connect=nimsh -a cable_type='"'N/A'"'"'" | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | ############################################# | ||
| + | # main | ||
| + | ############################################# | ||
| + | main() | ||
| + | { | ||
| + | master=$(hostname -s) | ||
| + | |||
| + | if [ -z "$1" ] | ||
| + | then | ||
| + | echo "OK" | ||
| + | reset_cpuid | ||
| + | else | ||
| + | while (( "$#" )); do | ||
| + | case $1 in | ||
| + | help|-h|-help) usage ;; | ||
| + | -c) shift && COMMAND="$1" ;; | ||
| + | -l) shift && lpar="$1" | ||
| + | recreate_client ;; | ||
| + | esac | ||
| + | shift | ||
| + | done | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | main $* | tee $logname 2>&1 | ||
| + | </code> | ||
| + | |||