====== AIX best practice ====== **Most accurate CIS Benmark level is CIS Controls v8 IG 1 Mapped Recommendations** http://und.edu/cio/it-security/policy/_files/docs/cis-ibm-aix-7-1-benchmark-v1-1-0.pdf https://www.scribd.com/document/298646787/Cis-Ibm-Aix-7-1-Benchmark-v1-1-0 https://github.com/prench/Hardening-CIS/tree/master https://www.ibm.com/docs/en/powersc-standard/2.1?topic=scac-center-internet-security-cis-benchmarks-compliance-aix-72 https://github.com/lyonys/AIX-Host-Review/blob/master/aix_host_review_1.0.sh [[aix:script_security_aix|link to AIX security check scripts]] ^Description^command^recommended value^ |Utilisation d'AIX Expert pour renforcer la configuration du système d'exploitation AIX lors de sa configuration initiale|N/A|Utiliser AIX Expert| |Politique de mots de passe locale et du domaine - Nombre minimal de caractères requis pour la définition d'un nouveau mot de passe, non présents au sein de l'ancien mot de passe|"lssec -f /etc/security/user -s default -a mindiff lsuser -R LDAP ALL"|default mindiff=3| |Politique de mots de passe locale et du domaine - Durée de vie minimale des mots de passe utilisateurs, en nombre de semaines|"lssec -f /etc/security/user -s default -a minage lsuser -R LDAP ALL"|default minage=1| |Politique de mots de passe locale et du domaine - Durée de vie maximale des mots de passe utilisateurs, en nombre de semaines|"lssec -f /etc/security/user -s default -a maxage lsuser -R LDAP ALL"|default maxage=13| |Politique de mots de passe locale et du domaine - Longueur minimale pour les mots de passe utilisateurs|"lssec -f /etc/security/user -s default -a minlen lsuser -R LDAP ALL"|default minlen=8| |Politique de mots de passe locale et du domaine - Nombre minimal de caractères correspondant à des lettres alphabétiques|"lssec -f /etc/security/user -s default -a minalpha lsuser -R LDAP ALL"|default minalpha=2| |Politique de mots de passe locale et du domaine - Nombre minimal de caractères ne correspondant pas à des lettres alphabétiques|"lssec -f /etc/security/user -s default -a minother lsuser -R LDAP ALL" |default minother=2| |Politique de mots de passe locale et du domaine - Nombre de répétitions maximal pour un caractère donné|"lssec -f /etc/security/user -s default -a maxrepeats lsuser -R LDAP ALL"|default maxrepeats=2 | |Politique de mots de passe locale et du domaine - Période de temps (en semaines) pendant laquelle un utilisateur ne peut pas réutiliser un mot de passe précédent|"lssec -f /etc/security/user -s default -a histexpire lsuser -R LDAP ALL"|default histexpire=13| |Politique de mots de passe locale et du domaine - Nombre de mots de passe utilisés précédemment qu'un utilisateur ne peut pas réutiliser|"lssec -f /etc/security/user -s default -a histsize lsuser -R LDAP ALL"|default histsize=20| |Politique de mots de passe locale et du domaine - Nombre de semaines après maxage lorsque l'utilisateur sera en mesure de réinitialiser son mot de passe|"lssec -f /etc/security/user -s default -a maxexpired lsuser -R LDAP ALL"|default maxexpired=2| |Connexion interactive - Interval de temps, en secondes, à partir duquel une connexion interactive est stoppée dès lors que l'utilisateur n'a pas été en mesure de s'authentifier sur le système|lssec -f /etc/security/login.cfg -s default -a logininterval|default logininterval=300| |Connexion interactive - Nombre maximal de tentatives d'authentification en erreur à partir duquel une connexion interactive est stoppée|lssec -f /etc/security/login.cfg -s default -a logindisable|default logindisable=10| |Connexion interactive - Délai de déverrouillage automatique d'une connexion préalablement stoppée, en minutes|lssec -f /etc/security/login.cfg -s default -a loginreenable|default loginreenable=360| |Connexion interactive - Nombre maximal de secondes pendant lesquelles un mot de passe doit être entré par un utilisateur cherchant à s'authentifier|lssec -f /etc/security/login.cfg -s usw -a logintimeout|usw logintimeout=30| |Connexion interactive - Nombre maximal de secondes d'attente entre chaque tentative d'authentification erronée|lssec -f /etc/security/login.cfg -s default -a logindelay|default logindelay=10 | |Connexion interactive - Nombre maximal de tentatives d'authentification en erreur à partir duquel un compte utilisateur sera verrouillé|lssec -f /etc/security/user -s default -a loginretries|default loginretries=3| |Stockage des mots de passe utilisateurs - Algorithme de chiffrement utilisé pour stocker les mots de passe des utilisateurs du système|lssec -f /etc/security/login.cfg -s usw -a pwd_algorithm|usw pwd_algorithm=ssha256| |Connexion interactive - définir un interpréteur de commandes non valide pour le compte système daemon |"lsuser -a login rlogin daemon Analyse du fichier /etc/security/passwd"|daemon login=false rlogin=false| |Connexion interactive - définir un interpréteur de commandes non valide pour le compte système bin|"lsuser -a login rlogin bin Analyse du fichier /etc/security/passwd"|bin login=false rlogin=false| |Connexion interactive - éfinir un interpréteur de commandes non valide pour le compte système sys|"lsuser -a login rlogin sys Analyse du fichier /etc/security/passwd"|sys login=false rlogin=false| |Connexion interactive - définir un interpréteur de commandes non valide pour le compte système adm |"lsuser -a login rlogin adm Analyse du fichier /etc/security/passwd"|adm login=false rlogin=false| |Connexion interactive - éfinir un interpréteur de commandes non valide pour le compte système nobody|"lsuser -a login rlogin nobody Analyse du fichier /etc/security/passwd"|nobody login=false rlogin=false| |Connexion interactive - définir un interpréteur de commandes non valide pour le compte système uucp| "lsuser -a login rlogin uucp Analyse du fichier /etc/security/passwd"|uucp login=false rlogin=false| |Connexion interactive - définir un interpréteur de commandes non valide pour le compte système lpd|"lsuser -a login rlogin lpd Analyse du fichier /etc/security/passwd"|lpd login=false rlogin=false| |Connexion à distance - Empêcher le compte root de se connecter interactivement|lssec -f /etc/security/user -s root -a rlogin|root rlogin=false| |Comptes utilisateurs - Identification des comptes utilisateurs locaux ayant le droit de s'authentifier sur le système (non désactivés)|"Analyse du fichier /etc/passwd Analyse du fichier /etc/security/passwd"|Un nombre restreint d'utilisateurs locaux devraient être présents| |Comptes utilisateurs - Présence de comptes utilisateurs locaux bénéficiant de privilèges élevés|Analyse du fichier /etc/group|Seuls des utilisateurs légitimes doivent être membres du groupe system| |Groupes utilisateurs - Présence de groupes utilisateurs locaux ne semblant pas être utilisés|Analyse du fichier /etc/group|Absence de groupes utilisateurs non utilisés| |Elévation de privilèges - Restreindre l'utilisation de l'utilitaire su|lssec -f /etc/security/user -s root -a sugroups -a su|root sugroups= su=true| |Connexion interactive - Présence de comptes utilisateurs non utilisés|egrep 'uucp|nuucp|lpd|printq' |/etc/passwd|*** Valeur vide ***| |Services systèmes non nécessaires - Prévenir l'utilisation des "Super" démons|Analyse du contenu des fichiers /etc/rc.tcpip et /etc/inetd.conf|"Fichier /etc/rc.tcpip:Services mentionnés doivent être commentés"| |Services systèmes non nécessaires - qdaemon (service d'impression)|lsitab qdaemon|*** Valeur vide ***| |Services systèmes non nécessaires - lpd (service d'impression)|lsitab lpd|*** Valeur vide ***| |Services systèmes non nécessaires - piobe (service d'impression)|lsitab piobe|*** Valeur vide ***| |Services systèmes non nécessaires - dt (environnement graphique CDE)|lsitab dt|*** Valeur vide ***| |Services systèmes non nécessaires - rcnfs (lance les services NFS)|lsitab rcnfs|*** Valeur vide ***| |Services systèmes non nécessaires - rcp|ls -l /usr/bin/rcp|awk {print $1}|----------| |Services systèmes non nécessaires - rlogin|ls -l /usr/bin/rlogin|awk {print $1}|----------| |Services systèmes non nécessaires - rsh|ls -l /usr/bin/rsh|awk {print $1}|----------| |Services systèmes non nécessaires - rlogind|ls -l /usr/sbin/rlogind|awk {print $1}|----------| |Services systèmes non nécessaires - rshd|ls -l /usr/sbin/rshd|awk {print $1} |----------| |Services systèmes non nécessaires - tftpd|ls -l /usr/sbin/tftpd|awk {print $1}|----------| |Services systèmes non nécessaires - communauté SNMP|grep ^#community[[:blank:]]*private etc/snmpd.conf|#community private 127.0.0.1 255.255.255.255 readWrite| |Contrôle des accès réseaux - Utilisation de TCP Wrappers|cat /etc/hosts.deny|ALL: ALL| |Configuration - Désactivation des connexions de type "séries"|lsitab -a|egrep respawn:/usr/sbin/getty|on:/usr/sbin/getty|cons:0123456789:respawn:/usr/sbin/getty /dev/console | |Service non nécessaire - i4ls | lsitab i4ls | *** Valeur vide *** | |Service non nécessaire - rcncs | lsitab rcncs | *** Valeur vide *** | |Service non nécessaire - httpdlite | lsitab httpdlite | *** Valeur vide *** | |Service non nécessaire - pmd | lsitab pmd | *** Valeur vide *** | |Service non nécessaire - writesrv | lsitab writesrv | *** Valeur vide *** | |Service non nécessaire - FTP | cat /etc/ftpusers | cat: cannot open /etc/ftpusers | |Connexion Interactive - Présence d'une bannière d'avertissement post authentification | cat /etc/motd | Présence d'une bannière dissuasive | |Tâches planifiées - Présence d'un fichier at.allow afin de restreindre la possibilité de créer une tâche planifiée via at | cat /var/adm/cron/at.allow | "root adm" | |Tâches planifiées - Présence d'un fichier cron.allow afin de restreindre la possibilité de créer une tâche planifiée via Cron | cat /var/adm/cron/cron.allow | "root adm" | |Connexion interactive - Tous les comptes utilisateurs locaux doivent avoir un mot de passe | pwdck -n ALL | *** Valeur vide *** | |Recherche de fichiers sensibles - présence de fichiers .netrc | find / -name ".netrc" -print |*** Valeur vide *** | |Recherche de fichiers sensibles - présence de fichiers .rhosts | find / -name ".rhosts" -print |*** Valeur vide *** | |Authentification - présence d'entrées non commentées au sein du fichier hosts.equiv | grep -v ^\s*# /etc/hosts.equiv | *** Valeur vide *** | |TCP/IP - Refuser les paquets IPV4 de type "source-routed" | no -a | grep ipsrcrouteforward[[:blank:]]=[[:blank:]]0 | ipsrcrouteforward = 0 | |TCP/IP - Refuser les paquets IP de type Redirect | no -a | grep ipignoreredirects[[:blank:]]=[[:blank:]]1 | ipignoreredirects = 1 | |TCP/IP - Bloquer les attaques de type "SYN Flood" | no -a | grep clean_partial_conns[[:blank:]]=[[:blank:]]1 | clean_partial_conns = 1 | |TCP/IP - Empêcher le système AIX d'envoyer des paquets "source-routed" | no -a | grep ipsrcroutesend[[:blank:]]=[[:blank:]]0 | ipsrcroutesend = 0 | |TCP/IP - Refuser le routage des paquets TCP / IP | no -a | grep ipforwarding[[:blank:]]=[[:blank:]]0 | ipforwarding = 0 | |TCP/IP - Refuser le transfert des paquets TCP/IP redirigés | no -a | ipsendredirects[[:blank:]]=[[:blank:]]0 | ipsendredirects = 0 | |TCP/IP - Empêcher le système AIX d'envoyer des paquets "source-routed" IPv6 | no -a | grep ip6srcrouteforward[[:blank:]]=[[:blank:]]0 | ip6srcrouteforward = 0 | |TCP/IP - Refuser l'envoi de broadcast ciblé | no -a | grep directed_broadcast[[:blank:]]=[[:blank:]]0 | directed_broadcast = 0 | |TCP/IP - Refuser la découverte de la valeur de transmission maximale (MTU) pour TCP | no -a | grep tcp_pmtu_discover[[:blank:]]=[[:blank:]]0 | tcp_pmtu_discover = 0 | |TCP/IP - Refuser la réponse aux requêtes ICMP de type broadcast | no -a | grep bcastping[[:blank:]]=[[:blank:]]0 | bcastping = 0 | |TCP/IP - Refuser les réponses aux requêtes ICMP de type NetMask | no -a | grep icmpaddressmask[[:blank:]]=[[:blank:]]0 | icmpaddressmask = 0 | |TCP/IP - Refuser la découverte de la valeur de transmission maximale (MTU) pour UDP | no -a | grep udp_pmtu_discover[[:blank:]]=[[:blank:]]0 | udp_pmtu_discover = 0 | |TCP/IP - Refuser les paquets de type "source-routed" #1 | no -a | grep ipsrcrouterecv[[:blank:]]=[[:blank:]]0 | ipsrcrouterecv = 0 | |TCP/IP - Refuser les paquets de type "source-routed" #2 | no -a | grep nonlocsrcroute[[:blank:]]=[[:blank:]]0 | nonlocsrcroute = 0 | |TCP/IP - Protéger le système contre certaines attaques connues (fake SYN, fake RST, fake data) | no -a | grep tcp_tcpsecure[[:blank:]]=[[:blank:]]7 | tcp_tcpsecure = 7 | |TCP/IP - Pourcentage de ressources mémoires alloué aux processus réseaux | no -a | grep sockthresh[[:blank:]]=[[:blank:]]60 | sockthresh = 60 | |TCP/IP - Autoriser la fenêtre de congestion TCP à être supérieure à 64 KB | no -a | grep rfc1323[[:blank:]]=[[:blank:]]1 | rfc1323 = 1 | |TCP/IP - Taille de la mémoire tampon pour l'envoi de données via TCP | no -a | grep tcp_sendspace[[:blank:]]=[[:blank:]]262144 | tcp_sendspace = 262144 ou valeur supérieure | |TCP/IP - Taille de la mémoire tampon pour la récéption de données via TCP | no -a | grep tcp_recvspace[[:blank:]]=[[:blank:]]262144 | tcp_recvspace = 262144 ou valeur supérieure | |TCP/IP - Taille maximale pour les segments TCP/IP | no -a | grep tcp_mssdflt[[:blank:]]=[[:blank:]]1448 | tcp_mssdflt = 1448 | |TCP / IP - Refuser les requêtes clientes NFS qui ne proviennent pas d'une plage de ports légitimes |nfso -a | egrep (portcheck|nfs_use_reserved_ports)[[:blank:]]=[[::blank::]]1 | "portcheck = 1 nfs_use_reserved_ports = 1" | |Comptes utilisateurs - Suppression du compte guest | lsuser guest | *** Valeur vide ***| |Permissions fichiers - Les permissions paramétrées par défaut lors de la création d'un fichier / dossier doivent être suffisamment restrictives | lssec -f /etc/security/user -s default -a umask | default umask=27 | |Services systèmes non nécessaires - Désactiver les "core dumps" | lssec -f /etc/security/limits -s default -a core -a core_hard | default core=0 core_hard=0 | |Audit - une partition /audit doit être créée et montée | df -k /audit | La partition /audit a été créée et est montée | |Audit - activation automatique des stratégies d'audit à la création des comptes utilisateurs | lssec -f /usr/lib/security/mkuser.default -s user -a auditclasses | user auditclasses = general,SRC,cron,tcpip, etc. | |Audit - définition d'une tâche qui vérifie l'espace libre sur la partition /audit | crontab -l | Présence d'une tâche planifiée | |Audit - lancement du service d'audit | lsitab audit | audit:2:boot:audit start > /dev/console 2>&1 | |Audit - refuser les messages syslog provenant du réseau | ps -ef | grep syslogd | /usr/sbin/syslogd -r | |Audit - les stratégies d'audit du système sont correctement configurées | Contenu du fichier /etc/security/audit/config | N/A | |Audit - la configuration de syslog est adéquate | Contenu du fichier /etc/syslog.conf |N/A | |Connexion interactive - la configuration du service SSH est sécurisée | Contenu du fichier /etc/ssh/sshd_config | N/A | |Elévation de privilèges - Restreindre l'utilisation de l'utilitaire sudo | Contenu du fichier /etc/sudoers | N/A | |Recherche de fichiers sensibles - présence de fichiers .shosts | find / -name ".shosts" -print |*** Valeur vide *** | |Authentification - présence d'entrées non commentées au sein du fichier shosts.equiv | ls /etc/shosts.equiv|/etc/shosts.equiv not found| |Système de fichiers - Permissions restrictives | ls -l /etc/ssh/sshd_config | awk {print $1 " " $3 " " $4 " " $9} | -rw------- root system /etc/ssh/sshd_config | |Système de fichiers - Permissions restrictives | ls -l /etc/ssh/ssh_config | awk {print $1 " " $3 " " $4 " " $9} | -rw-r--r-- root system /etc/ssh/ssh_config | |Interface graphique - présence de CDE | lslpp -L | grep -i CDE | *** Valeur vide *** | |Interface graphique - présence de CDE | lsitab dt | *** Valeur vide *** | |Interface graphique - présence de CDE | ls -l /usr/dt/bin/dtaction | /usr/dt/bin/dtaction not found | |Interface graphique - présence de CDE | ls -l /usr/dt/bin/dtappgather | /usr/dt/bin/dtappgather not found | |Interface graphique - présence de CDE | ls -l /usr/dt/bin/dtprintinfo | usr/dt/bin/dtprintinfo not found | |Interface graphique - présence de CDE | ls -l /usr/dt/bin/dtsession | /usr/dt/bin/dtsession not found | |Interface graphique - présence de CDE | grep ^Dtlogin.requestPort:[[::space::]] /etc/dt/config/Xconfig | grep: can't open /etc/dt/config/Xconfig | |Interface graphique - présence de CDE | egrep dtsession\*saverTimeout:|dtsession\*lockTimeout: /etc/dt/config/*/sys.resources | egrep: can't open /etc/dt/config/*/sys.resources | |Interface graphique - présence de CDE | egrep Dtlogin\*greeting.labelString|Dtlogin\*greeting.persLabelString: /etc/dt/config/*/Xresources | egrep: can't open /etc/dt/config/*/Xresources | |Interface graphique - présence de CDE | ls -l /etc/dt/config/Xconfig | awk {print $1 " " $3 " " $4 " " $9} | /etc/dt/config/Xconfig not found | |Interface graphique - présence de CDE | ls -l /etc/dt/config/Xservers | /etc/dt/config/Xservers not found | |Interface graphique - présence de CDE | ls -l /etc/dt/config/*/Xresources | awk {print $1 " " $3 " " $4 " " $9} | /etc/dt/config/*/Xresources not found | |Système de fichiers - Permissions restrictives | ls -l /etc/security/passwd | -rw------- root | |Système de fichiers - Permissions restrictives | ls -ld /etc/security | drwxr-x--- root security /etc/security | |Système de fichiers - Permissions restrictives | ls -l /etc/group | -rw-r--r-- root security /etc/group | |Système de fichiers - Permissions restrictives | ls -l /etc/passwd | -rw-r--r-- root security /etc/passwd | |Système de fichiers - Permissions restrictives | ls -ld /etc/security/audit | drwxr-x--- root audit /etc/security/audit | |Système de fichiers - Permissions restrictives | ls -ld /audit | drwxr-x--- root audit /audit | |Système de fichiers - Permissions restrictives | ls -l /smit.log | -rw-r----- root system /smit.log | |Système de fichiers - Permissions restrictives | ls -l /var/adm/cron/log | -rw-rw---- root cron /var/adm/cron/log | |Système de fichiers - Permissions restrictives | ls -ld /var/spool/cron/crontabs | drwxrwx--- root cron /var/spool/cron/crontabs | |Système de fichiers - Permissions restrictives | ls -l /var/adm/cron/at.allow | N/A | |Système de fichiers - Permissions restrictives | ls -l /var/adm/cron/cron.allow | N/A | |Système de fichiers - Permissions restrictives | ls -l /etc/motd | -r--r--r-- bin bin /etc/motd | |Système de fichiers - Permissions restrictives | ls -l /var/adm/ras | awk {print $1 " " $3 " " $4 " " $9} | Fichiers non "world readable" | |Système de fichiers - Permissions restrictives | ls -l /var/ct/RMstart.log | -rw-r----- root system /var/ct/RMstart.log | |Système de fichiers - Permissions restrictives | ls -l /var/tmp/dpid2.log | -rw-r----- root system /var/tmp/dpid2.log | |Système de fichiers - Permissions restrictives | ls -l /var/tmp/hostmibd.log | -rw-r----- root system /var/tmp/hostmibd.log | |Système de fichiers - Permissions restrictives | ls -l /var/tmp/snmpd.log | -rw-r----- root system /var/tmp/snmpd.log | |Système de fichiers - Permissions restrictives | ls -ld /var/adm/sa | drwxr-xr-x adm adm /var/adm/sa | |Configuration - Suppression du chemin courant du chemin usuel (PATH) pour le compte root | "su - root -c echo /usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java5/jre/bin:/usr/java5/bin | awk /((:[ \t]*:)|(:[ \t]*$)|(^[ \t]*:)|(^.:)|(:.$)|(:.:))/ " | *** Valeur vide *** et absence d'entrées de type "." ou "::" du PATH | |Système de fichiers - Partitionnement système | mount | N/A | |Recherche de fichiers sensibles - présence de fichiers SUID | find / \{ -fstype jfs -o -fstype jfs2 \} \{ -perm -04000 -o -perm -02000 \} -type f -ls | *** Valeur vide *** | |Recherche de fichiers sensibles - présence de fichiers "world writable" | find / \{ -fstype jfs -o -fstype jfs2 \} \{ -type -d -o -type f\} -perm -o+w -ls | *** Valeur vide *** | |Vulnérabilités - Vulnérabilités connues impactant la version du logiciel utilisée et pour lesquelles des codes d'exploitation ont été rendus publics | Recherche de vulnérabilités en utilisant des ressources publiques connues | N/A | |Sécurisation des flux LDAP en utilisant TLS / SSL | Utilisation de LDAPS | N/A | |Vérification des tâches planifiées via at et cron | crontab -l | Absence de tâche planifiée sensible | |Permissions des fichiers utilisés via SUDO | ls -al | Le compte utilisateur dont l'identité est usurpée au travers de l'utilitaire sudo doit être le seul à bénéficier des privilèges lecture / écriture pour les programmes appelés | |Comptes utilisateurs du domaines autorisés à se connecter au système | "Analyse du fichier /etc/security/user Paramètre SYSTEM sous default:" | Par défaut, seuls les utilisateurs LDAP explicitement autorisés devraient pouvoir se connecter au système AIX | |Comptes utilisateurs du domaines disposant de privilèges élevés|lsgroup -R LDAP all|Seuls des utilisateurs légitimes doivent être membres du groupe system| ===== Additionnal settings ===== echo "TMOUT=600; TIMEOUT=600; export TMOUT TIMEOUT" >> /etc/security/.profile echo "TMOUT=600; TIMEOUT=600; export TMOUT TIMEOUT" >> /etc/profile chsec -f /etc/security/login.cfg -s default -a herald="Unauthorized use of this system is prohibited.\n\nlogin:" chsec -f /etc/security/login.cfg -s usw -a mkhomeatlogin=true echo "******************************************************************************* * * * IT IS AN OFFENSE TO CONTINUE WITHOUT PROPER AUTHORIZATION. * * * * This system is for the use of authorized users only. Individuals using * * this computer system without authority, or in excess of their authority, * * are subject to having all of their activities on this system monitored and * * recorded by system personnel. In the course of monitoring individuals * * improperly using this system, or in the course of system maintenance, the * * activities of authorized users may also be monitored. Anyone using this * * system expressly consents to such monitoring and is advised that if such * * monitoring reveals possible evidence of criminal activity, system * * personnel may provide the evidence of such monitoring to law enforcement * * officials. * * * *******************************************************************************" > /etc/motd