Herunterladen von AIX-ISO-Images von IBM

In diesem Beitrag wird das Herunterladen von AIX Installations ISO-Images von der IBM Website IBM Entitled Systems Support gezeigt. Für den Download wird eine gültige IBMid und ein aktueller IBM Softwarewartungsvertrag (SWMA) benötigt. Als Beispiel zeigen wir den Download der AIX Installations ISO-Images für AIX 7.2 TL5. Auf die gleiche Weise können aber auch ISO-Images für andere AIX-Versionen, oder andere Software, z.B. PowerHA, heruntergeladen werden.

AIX und andere Software kann über die IBM Entitled Systems Support Webseite heruntergeladen werden. Der URL für die Webseite ist:

https://www.ibm.com/servers/eserver/ess

IBM Entitled Systems Support (ESS)
Klicken Sie auf „Log in“, um sich bei IBM Entitled Systems Support (ESS) anzumelden.

Um sich Einloggen zu können, benötigt man eine gültige IBMid und einen gültigen Softwarewartungsvertrag. Nach Klicken auf die blaue Schaltfläche „Log in“ erscheint eine Login-Maske.

Entitled Systems Support (ESS) Log in
Angeben der IBMid und anschließend die Schaltfläche „Continue“ anklicken.

Nach Eingabe einer gültigen IBMid und bestätigen mit der Schaltfläche „Continue“ erfolgt eine Passwort-Abfrage.

Entitled Systems Support (ESS) Passwort
Nach Eingabe des Passwortes mit der Schaltfläche „Log in“ einloggen.

Nach Angabe des Passworts erscheint die Hauptseite des Entitled Systems Support.

Entitled Systems Support
Für den Download von Software kann „My Entitled Software“ ausgewählt werden.

Für den Download von Software sollte „My Entitled Software“ ausgewählt werden.

ESS My Entitled Software
Um AIX oder andere Software herunterzuladen, muss der Link „Software Downloads“ ausgewählt werden.

Aus der angezeigten Auswahl vom Möglichkeiten sollte der Link „Software Downloads“ angeklickt werden.

ESS Software Downloads
Kategorie „AIX“ und Gruppe „V7R2 (GA)“ für AIX 7.2 auswählen. Anschließend muss die Lupe angeklickt werden.

Die herunterzuladende Software kann entweder durch Angabe der Kategorie, oder des Machinen-Typs, oder durch direkte Auswahl eines Produktes ausgewählt werden. Gezeigt ist die Variante über Auswahl der Kategorie „AIX“ und der gewünschten Version „V7R2 (GA)“ für AIX 7.2.

ESS AIX 7.2 TL Support
Für den Download eines bestimmten AIX 7.2 TL sollte „AIX 7.2 TL support“ ausgewählt werden und die Auswahl dann mit der Schaltfläche „Continue“ bestätigt werden.

Aus der Liste mit verfügbaren „AIX 7.2“ Produkten sollte „AIX 7.2 TL support“ ausgeählt werden.

ESS AIX 7.2 TL5
Auswahl des AIX 7.2 TLs 05 und bestätigen mit „Continue“.

Aus der Liste der verfügbaren Pakete sollte das Paket für den gewünschten TL (AIX 7.2 TL05) ausgewählt werden. Durch Drücken der Schaltfläche „Continue“ wird die Auswahl bestätigt.

Bevor die Software dann letztlich heruntergeladen werden kann, müssen noch die allgemeinen Geschäftsbedingungen von IBM bestätigt werden.

ESS Software Downloads Terms and Conditions
Hier müssen die allgemeinen Geschäftsbedingungen bestätigt werden.

Als nächstes muss ausgewählt werden, ob der Download über den Browser oder mit Hilfe des Download-Directors erfolgen soll. Wir haben uns hier für den Download mittels Browser entschieden.

ESS Software Download method
Wir wählen hier Download mit dem Browser aus und bestätigen mit „Continue“.

Als nächstes werden die verfügbaren Images angezeigt. Wir Wählen die Install Images „AIX v7.2 Install DVD 1“, „AIX v7.2 Install DVD 2“ und „AIX v7.2 Install flash“ aus.

ESS Software Download Start
Starten des Downloads der AIX 7.2 TL5 ISO-Images durch anklicken von „AIX v7.2 Install DVD 1“ und „AIX v7.2 Install DVD 2“.

Der Fortschritt des Downloads kann über den Browser verfolgt werden:

ESS Software Download Progress
Anzeige des Download Fortschritts über den Browser.

Auf die gleiche Art kann auch PowerHA, PowerVM oder jede andere Software über IBM Entitled Systems Support (ESS) heruntergeladen. Voraussetzung ist aber immer ein gültiger Softwarewartungsvertrag für die entsprechende Software.

 

ANS1592E Failed to initialize SSL protocol.

Bei einer TSM Operation tritt die folgende Fehlermeldung auf:

# dsmc q sess -se=TSM01
IBM Spectrum Protect
Command Line Backup-Archive Client Interface
  Client Version 8, Release 1, Level 9.0
  Client date/time: 12/09/22   08:33:24
(c) Copyright by IBM Corporation and other(s) 1990, 2019. All Rights Reserved.

Node Name: aixdbt01
ANS1592E Failed to initialize SSL protocol.

#

Eine mögliche Ursache ist das Fehlen des Zertifikats der zugehörigen TSM-Instanz, im obigen Fall TSM01. Das fehlende Zertifikat findet man auf dem TSM-Server im Verzeichnis der Instanz. Das Instanz-Verzeichnis wird in der Regel dem TSM-Server-Prozeß (dsmserv) beim Starten mit der Option „-i“ mitgegeben:

# ps -ef|grep dsmser[v]
   tsm01 29295008        1 1198   Nov 08      - 54389:56 /opt/tivoli/tsm/server/bin/dsmserv -i /appdata/cf/TSM01 -o /appdata/cf/TSM01/TSM01.opt -q
#

In diesem Fall ist /appdata/cf/TSM01 das Instanz-Verzeichnis. In diesem Verzeichnis befindet sich das Zertifikat der Instanz in der Datei cert256.arm:

# ls -l /appdata/cf/TSM01/cert256.arm
-rw-r--r--    1 tsm01    tsm            1164 Apr 13 2021  /appdata/cf/TSM01/cert256.arm
#

Das Zertifikat cert256.arm sollte dann auf das Client-System kopiert werden, wir gehen davon aus das es nach /tmp kopiert wurde.

Das Kommando dsmcert zum Verwalten von Zertifikaten befindet sich unter /usr/tivoli/tsm/client/ba/bin64. Mit dem folgenden Aufruf kann dann das Zertifikat installiert (hinzugefügt) werden:

# cd /usr/tivoli/tsm/client/ba/bin64
# ./dsmcert -add -server TSM01 -file /tmp/cert256.arm
IBM Spectrum Protect
dsmcert utility
  dsmcert Version 8, Release 1, Level 9.0
  dsmcert date/time: 12/09/22   08:44:26
(c) Copyright by IBM Corporation and other(s) 1990, 2019. All Rights Reserved.

Result : Success
#

Ein anschließender Zugriff auf die TSM-Instanz mittels z.B. „dsmc q sess“ sollte dann funktionieren:

# dsmc q sess -se=TSM01
IBM Spectrum Protect
Command Line Backup-Archive Client Interface
  Client Version 8, Release 1, Level 9.0
  Client date/time: 12/09/22   08:44:55
(c) Copyright by IBM Corporation and other(s) 1990, 2019. All Rights Reserved.

Node Name: aixdbt01
Session established with server TSM01: AIX
  Server Version 8, Release 1, Level 16.000
  Server date/time: 12/09/22   08:44:56  Last access: 12/09/22   03:02:56

IBM Spectrum Protect Server Connection Information

Home Server Name........: TSM01
Server Type.............: AIX
Archive Retain Protect..: "No"
Server Version..........: Ver. 8, Rel. 1, Lev. 16.0
Last Access Date........: 12/09/22   03:02:56
Delete Backup Files.....: "No"
Delete Archive Files....: "No"
Deduplication...........: "Server Only"

Node Name...............: aixdbt01
User Name...............: root

SSL Information.........: TLSv1.2 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

Secondary Server Information
Not configured for failover

#

CVE-2021-25220: AIX ist aufgrund von ISC BIND vulnerabel für Cache-Poisoning

Der CVE-2021-25220 beschreibt eine Schwachstelle in ISC BIND. Unter Verwendung unseres Tools „apar“ werden nachfolgend einige Fragestellungen untersucht und beantwortet, wie z.B. ist mein System von dieser Schwachstelle betroffen, wo finde ich eine genauere Beschreibung der Schwachstelle, wo finde ich einen Fix zur Schließung der Schwachstelle, gibt es andere Schwachstellen von denen mein System betroffen ist?

Hinweis: Das Tool „apar“ ist in unserem Download-Bereich in Versionen für AIX (VIOS), Linux und MacOS verfügbar. Es enthält eine zeitlich begrenzte Test-Lizenz. In dem Beitrag Verwalten und Zugriff auf APARs finden sich weitere Informationen zur Verwendung des Tools.

Ist mein System von dieser Schwachstelle betroffen?

Mit Hilfe des Kommandos „apar show“ und dem Argument „CVE-2021-25220“ können Informationen zu der Schwachstelle angezeigt werden:

$ apar show CVE-2021-25220
type:         sec
product:      aix
versions:     7300-00-01,7300-00-02
abstract:     AIX is vulnerable to cache poisoning due to ISC BIND
apars:        CVE-2021-25220,IJ40614
fixedIn:      7300-00-03
ifixes:       IJ40614m2b.220718.epkg.Z
bulletinUrl:  https://aix.software.ibm.com/aix/efixes/security/bind_advisory21.asc
filesets:     bos.net.tcp.bind:7.3.0.0-7.3.0.1,bos.net.tcp.bind_utils:7.3.0.0-7.3.0.1
issued:       20220728
updated:      
siblings:    
download:     https://aix.software.ibm.com/aix/efixes/security/bind_fix21.tar
cvss:         CVE-2021-25220:6.8
reboot:       no
…
$

Es werden mehrere Datensätze angezeigt. Für verschiedene AIX– bzw. VIOS Versionen gibt es jeweils eigene Datensätze.  Jeder Datensatz enthält eine Zeile mit den zugehörigen AIX bzw. VIOS Versionen (Zeile „versions: …“). Außerdem sind die jeweils betroffenen Filesets inklusive Version aufgelistet (Zeile „filesets: …“). Ist auf meinem System z.B. AIX 7300-00-01 oder 7300-00-02 installiert (Kommando „oslevel –s“) und habe ich eine der aufgelisteteten Fileset Versionen (Kommando „lslpp –l bos.net.tcp.bind bos.net.tcp.bind_utils“), dann ist mein System von der Schwachstelle betroffen.

Wo finde ich eine genauere Beschreibung der Schwachstelle?

Genauere Informationen zu einer Schwachstelle bietet IBM typischerweise über ein sogenanntes Bulletin an. Der URL für das Bulletin wird in der Ausgabe von „apar show“ (oben) in der Zeile beginnend mit „bulletinUrl: …“ ausgegeben. Im Falle oben ist das https://aix.software.ibm.com/aix/efixes/security/bind_advisory21.asc . Dieser URL kann in einem Browser angegeben werden. Bei Verwendung des „apar“ Kommandos kann man das Bulletin aber auch direkt auf der Kommandozeile anzeigen, das geht mit dem Kommando „apar bulletin“ und der Nummer des CVE (hier CVE-2021-25220) oder der Fix- oder APAR-Nummer (z.B. IJ40614):

$ apar bulletin CVE-2021-25220
IBM SECURITY ADVISORY

First Issued: Thu Jul 28 13:24:22 CDT 2022

The most recent version of this document is available here:
http://aix.software.ibm.com/aix/efixes/security/bind_advisory21.asc
https://aix.software.ibm.com/aix/efixes/security/bind_advisory21.asc
ftp://aix.software.ibm.com/aix/efixes/security/bind_advisory21.asc

Security Bulletin: AIX is vulnerable to cache poisoning due to ISC BIND
    (CVE-2021-25220)

===============================================================================

SUMMARY:

    A vulnerability in ISC BIND could allow a remote attacker to poison the
    cache (CVE-2021-25220). AIX uses ISC BIND as part of its DNS functions.


===============================================================================

VULNERABILITY DETAILS:

    CVEID: CVE-2021-25220
        http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-25220
        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-25220
    DESCRIPTION: ISC BIND could allow a remote attacker to bypass security
        restrictions, caused by an error when using DNS forwarders. An
        attacker could exploit this vulnerability to poison the cache with
        incorrect records leading to queries being made to the wrong servers,
        which might also result in false information being returned to
        clients.
    CVSS Base Score: 6.8
    CVSS Temporal Score: See
        https://exchange.xforce.ibmcloud.com/vulnerabilities/221991
        for the current score
    CVSS Environmental Score*: Undefined
    CVSS Vector: (CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:C/C:N/I:H/A:N)
…
$

Im Bulletin sind in der Regel alle zugehörigen APARs aufgelistet. Außerdem findet man eine Zuordnung welcher Fix für welche Version zu verwenden ist.

Wo finde ich einen Fix zur Schließung der Schwachstelle?

In den oben ausgegebenen Datensätzen findet man auch eine Auflistung der zugehörigen Fixes in der Zeile beginnend mit „ifixes: …“. Im genannten Fall ist das der Fix IJ40614m2b.220718.epkg.Z. In vielen Fällen werden mehrere Fixes aufgelistet und man muss den richtigen Fix aus der Liste heraussuchen. Hilfreich ist dabei die Beschreibung im Bulletin, mit einer Aufstellung welcher Fix für welche Version zu verwenden ist.

Der URL für den Download des oder der Fixe(s) ist in der Zeile beginnend mit „download: …“ angegeben, in aktuellen Fall ist das der folgende URL:

https://aix.software.ibm.com/aix/efixes/security/bind_fix21.tar

Der Fix kann z.B. mit einem Browser heruntergeladen werden. Bei Verwendung des Kommandos „apar“ geht das aber einfacher über die Kommandozeile. Das Kommando kann mit dem Argument „download“ und der CVE-Nummer oder Fix-Nummer aufgerufen werden und lädt dann den Fix herunter und speichert diesen im aktuellen Arbeitsverzeichnis ab:

$ apar download CVE-2021-25220
downloading bind_fix21.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 19.1M  100 19.1M    0     0  1480k      0  0:00:13  0:00:13 --:--:-- 1672k
$

Der Fix wird unter dem im URL verwendeten Namen, hier bind_fix21.tar, abgespeichert.

Gibt es weitere Schwachstellen von denen mein System betroffen ist?

Um ein System auf bekannte Schwachstellen zu untersuchen, kann „apar check“ verwendet werden. Damit das Kommando auf die Informationen zu den installierten Fixes zugreifen kann, muss das Kommando mit root-Rechten gestartet werden.

Hier ein Beispiel eines Systems auf dem alle relevanten Fixes installiert sind:

aix01 # apar check
SUMMARY: 2/2 fixes installed
aix01 #

Und nachfolgend ein Beispiel eines Systems auf dem nur einige relevante Fixes installiert sind:

aix02 # apar check
SUMMARY: 4/8 fixes installed (2 APARs have no fix specified)
aix02 #

Von den 8 bekannten (von IBM bekannt gegebenen) Schwachstellen sind nur für 4 der Schwachstellen die zugehörigen Fixes installiert. Möchte man wissen welche Schwachstellen offen sind, kann eine der Optionen „-b“ (brief report) oder „-l“ (long report) verwendet werden:

aix02 # apar check -b
20220817  sec  aix  CVE-2022-1292,CVE-2022-2068,CVE-2022-2097  AIX is vulnerable to arbitrary command execution due to OpenSSL
INSTALLED: no fix installed

20220912  sec  aix  CVE-2022-36768  AIX is vulnerable to a privilege escalation vulnerability due to invscout
INSTALLED: no fix installed

20220923  sec  aix  CVE-2021-20266,CVE-2021-20271,CVE-2021-3421  AIX is vulnerable to arbitrary code execution and RPM database corruption and denial of service due to RPM.
INSTALLED: no fix installed

20220928  sec  aix  CVE-2018-25032  AIX is vulnerable to denial of service due to zlib and zlibNX
INSTALLED: no fix installed

SUMMARY: 4/8 fixes installed (2 APARs have no fix specified)
aix02 #

Das Kommando „apar“ unterstützt noch eine ganze Reihe weiterer Möglichkeiten, die im Beitrag Verwalten und Zugriff auf APARs beschrieben sind.

Verwalten und Zugriff auf APARs

AIX und Virtual-I/O-Server bezüglich HIPER und SECURITY Fixes auf dem aktuellen Stand zu halten, hat in den letzten Jahren enorm an Bedeutung gewonnen. Hierzu müssen die Systeme regelmäßig auf eventuell fehlende Fixes überprüft werden. Die entsprechenden Fixes müssen heruntergeladen und dann installiert werden. Um zu entscheiden welcher Fix auf einem bestimmten System genau installiert werden muss, erfordert häufig das Aufrufen von Bulletin mit einem Web-Browser. PowerCampus 01 stellt zum vereinfachten Verwalten von Fixes das Kommando ‚apar‘ zur Verfügung. Dieses erleichtert die Arbeit mit Fixes und APARs sowie CVEs enorm.

Einige Beispiel-Anwendungen des Kommandos ‚apar

Das Kommando ‚apar‘ erlaubt den Download von HIPER und SECURITY Fixes, die Überprüfung von Systemen (AIX und VIOS) auf installierte und fehlende Fixes, sowie die Anzeige und gezielte Suche nach Fixes. Um alle Funktionalitäten nutzen zu können, wird eine direkte Internet-Anbindung oder die Anbindung über einen http-Proxy Server benötigt. Das Kommando ist in Versionen für AIX, Linux und MacOS erhältlich. Nachfolgend sind eine Reihe von Beispiel-Aufrufen gezeigt.

Beispiel 1: Welche Fixes sind während der letzten 30 Tage erschienen?

$ apar last
20220817  sec  aix  CVE-2022-1292,CVE-2022-2068,CVE-2022-2097  AIX is vulnerable to arbitrary command execution due to OpenSSL
20220912  sec  vios  CVE-2022-29824,IJ42339,IJ42378,IJ42379  AIX is vulnerable to a denial of service due to libxml2 for VIOS
20220912  sec  vios  CVE-2022-29824,IJ42339,IJ42378,IJ42379  AIX is vulnerable to a denial of service due to libxml2 for VIOS
20220912  sec  aix  CVE-2022-29824,IJ42339,IJ42378,IJ42379  AIX is vulnerable to a denial of service due to libxml2
20220912  sec  aix  CVE-2022-29824,IJ42341  AIX is vulnerable to a denial of service due to libxml2
20220912  sec  aix  CVE-2022-29824,IJ42381  AIX is vulnerable to a denial of service due to libxml2
20220912  sec  vios  CVE-2022-29824,IJ42381  AIX is vulnerable to a denial of service due to libxml2 for VIOS
20220912  sec  vios  CVE-2022-34356,IJ41396,IJ41685,IJ41795  AIX kernel is vulnerable to a privilege escalation vulnerability for VIOS
20220912  sec  aix  CVE-2022-34356,IJ41396,IJ41685,IJ41795  AIX kernel is vulnerable to a privilege escalation vulnerability
20220912  sec  vios  CVE-2022-34356,IJ41396,IJ41685,IJ41795  AIX kernel is vulnerable to a privilege escalation vulnerability for VIOS
20220912  sec  aix  CVE-2022-34356,IJ41687  AIX kernel is vulnerable to a privilege escalation vulnerability
20220912  sec  aix  CVE-2022-34356,IJ41688  AIX kernel is vulnerable to a privilege escalation vulnerability
20220912  sec  vios  CVE-2022-34356,IJ41706  AIX kernel is vulnerable to a privilege escalation vulnerability for VIOS
20220912  sec  aix  CVE-2022-34356,IJ41706  AIX kernel is vulnerable to a privilege escalation vulnerability
20220912  sec  aix  CVE-2022-36768  AIX is vulnerable to a privilege escalation vulnerability due to invscout
$

Beispiel 2: Anzeigen von Informationen zur APAR ID IJ42341.

$ apar show IJ42341
type:         sec
product:      aix
versions:     7300-00-01,7300-00-02
abstract:     AIX is vulnerable to a denial of service due to libxml2
apars:        CVE-2022-29824,IJ42341
fixedIn:      7300-00-04
ifixes:       IJ42341s2a.220907.epkg.Z
bulletinUrl:  https://aix.software.ibm.com/aix/efixes/security/libxml2_advisory3.asc
filesets:     bos.rte.control:7.3.0.0-7.3.0.1
issued:       20220912
updated:      
siblings:    
download:     https://aix.software.ibm.com/aix/efixes/security/libxml2_fix3.tar
cvss:         CVE-2022-29824:5.5
reboot:       no
$

Beispiel 3: Anzeigen des Bulletin für die APAR ID IJ42341.

$ apar bulletin IJ42341
IBM SECURITY ADVISORY

First Issued: Mon Sep 12 15:07:01 CDT 2022

The most recent version of this document is available here:
http://aix.software.ibm.com/aix/efixes/security/libxml2_advisory3.asc
https://aix.software.ibm.com/aix/efixes/security/libxml2_advisory3.asc
ftp://aix.software.ibm.com/aix/efixes/security/libxml2_advisory3.asc

Security Bulletin: AIX is vulnerable to a denial of service due to libxml2
    (CVE-2022-29824)
…

    REMEDIATION:

        A. APARS
           
            IBM has assigned the following APARs to this problem:

            AIX Level APAR     Availability  SP        KEY
            -----------------------------------------------------
            7.2.4     IJ42381  **            N/A       key_w_apar
            7.2.5     IJ42339  **            SP06      key_w_apar
            7.3.0     IJ42341  **            SP04      key_w_apar
…
$

Beispiel 4: Download des Fixes für APAR IJ42341.

$ apar download IJ42341
downloading libxml2_fix3.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 30.8M  100 30.8M    0     0  1522k      0  0:00:20  0:00:20 --:--:-- 1638k
$

Der Fix wird in das aktuelle Arbeitsverzeichnis heruntergeladen.

Beispiel 5: Suchen nach Fixes für die Schlagworte ‚memory‘ und ‚leak‘.

$ apar search memory leak
20141029  CVE-2014-3513,CVE-2014-3566,CVE-2014-3567  AIX OpenSSL Denial of Service due to memory leak in  DTLS / AIX OpenSSL Patch to mitigate CVE-2014-3566 / AIX OpenSSL Denial of Service due to memory consumption
20150319  IV71217  NODE DOWN IN CAA CLUSTER DUE TO CONFIGRM MEMORY LEAK
20150319  IV71217  NODE DOWN IN CAA CLUSTER DUE TO CONFIGRM MEMORY LEAK
20150319  IV71219  NODE DOWN IN CAA CLUSTER DUE TO CONFIGRM MEMORY LEAK
$

Beispiel 6: Überprüfen des aktuellen Systems (AIX oder VIOS).

# time apar check
SUMMARY: 6/21 fixes installed (3 APARs have no fix specified)

Real   2.00
User   0.40
System 0.23
#

Zur Überprüfung eines Systems auf Fixes werden root-Rechte benötigt um die Liste der installierten Fixes zu ermitteln.

Der Check hat 2 Sekunden gedauert und hat ermittelt das lediglich 6 von 21 der existierenden Fixes installiert sind.

Über die Option ‚-b‘ (brief listing) oder ‚-l‘ (long listing) lassen sich die fehlenden Fixes anzeigen:

# time apar check -b
20210315  sec  aix  CVE-2020-14779,CVE-2020-14781,CVE-2020-14782,CVE-2020-14796,CVE-2020-14797,CVE-2020-14798,CVE-2020-14803,CVE-2020-27221,CVE-2020-2773  Multiple vulnerabilities in IBM Java SDK affect AIX
INSTALLED: no fix installed

20210730  sec  aix  CVE-2021-29741,IJ30557  There is a vulnerability in Korn Shell (ksh) that affects AIX
INSTALLED: no fix installed

20210819  hiper  aix  IJ34376  Applications can terminate on systems with active IPv6 traffic
INSTALLED: no fix installed

20210825  sec  aix  CVE-2021-29727,CVE-2021-29801,CVE-2021-29862,IJ32631  There are multiple vulnerabilities in the AIX kernel
INSTALLED: no fix installed

20210915  sec  aix  CVE-2021-2161,CVE-2021-2369,CVE-2021-2432  Multiple vulnerabilities in IBM Java SDK affect AIX
INSTALLED: no fix installed

20211116  sec  aix  CVE-2021-29860,IJ32714,IJ32736  There is a vulnerability in the libc.a library that affects AIX
INSTALLED: no fix installed

20211116  sec  aix  CVE-2021-29861,IJ35078,IJ35211  There is a vulnerability in EFS that affects AIX
INSTALLED: no fix installed

20220106  sec  aix  CVE-2021-3712  There is a vulnerability in OpenSSL used by AIX.
INSTALLED: no fix installed

20220106  sec  aix  CVE-2021-41617  Vulnerabilities in OpenSSH affect AIX.
INSTALLED: no fix installed

20220223  sec  aix  CVE-2021-2341,CVE-2021-35556,CVE-2021-35559,CVE-2021-35560,CVE-2021-35564,CVE-2021-35565,CVE-2021-35578,CVE-2021-35586,CVE-2021-41035  Multiple vulnerabilities in IBM Java SDK affect AIX
INSTALLED: no fix installed

20220223  sec  aix  CVE-2021-38994,CVE-2021-38995,IJ37012  There are multiple vulnerabilities in the AIX kernel.
INSTALLED: no fix installed

20220228  sec  aix  CVE-2021-38955,IJ38117,IJ38119  There is a vulnerability in the AIX audit user commands.
INSTALLED: no fix installed

20220301  sec  aix  CVE-2021-38996,CVE-2022-22350,IJ36682,IJ37512  There are multiple vulnerabilities in AIX CAA.
INSTALLED: no fix installed

20220304  sec  aix  CVE-2021-38989,IJ37488,IJ37778  There is a vulnerability in the AIX pmsvcs kernel extension.
INSTALLED: no fix installed

20220304  sec  aix  CVE-2022-22351,IJ36681,IJ37706  There is a vulnerability in the AIX nimsh daemon.
INSTALLED: no fix installed

SUMMARY: 6/21 fixes installed (3 APARs have no fix specified)

Real   1.90
User   0.32
System 0.18
#

Beispiel 7: Herunterladen aller Fixes für die IOS Version 3.1.3.21.

$ apar download 3.1.3.21
downloading lpd_fix2.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  270k  100  270k    0     0   197k      0  0:00:01  0:00:01 --:--:--  197k
downloading bind_fix21.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 19.1M  100 19.1M    0     0  1498k      0  0:00:13  0:00:13 --:--:-- 1665k
downloading vios_fix.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 32.7M  100 32.7M    0     0  1571k      0  0:00:21  0:00:21 --:--:-- 1750k
downloading kernel_fix4.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  138M  100  138M    0     0  1618k      0  0:01:27  0:01:27 --:--:-- 1671k
downloading libxml2_fix3.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 30.8M  100 30.8M    0     0  1537k      0  0:00:20  0:00:20 --:--:-- 1643k
$
$ ls -l
total 453952
-rw-r--r--    1 user01  staff   20080640 Sep 17 10:48 bind_fix21.tar
-rw-r--r--    1 user01  staff  145326080 Sep 17 10:50 kernel_fix4.tar
-rw-r--r--    1 user01  staff   32378880 Sep 17 10:51 libxml2_fix3.tar
-rw-r--r--    1 user01  staff     276480 Sep 17 10:48 lpd_fix2.tar
-rw-r--r--    1 user01  staff   34355200 Sep 17 10:49 vios_fix.tar
$

Analog können durch Angabe der AIX Version auch alle Fixes zu einer bestimmten AIX Version heruntergeladen werden!

Beispiel 8: Überprüfen von NIM-Clients auf Fixes

# apar check aix01 aix02 vios1
aix01: 13/16 fixes installed
aix02: 4/12 fixes installed (1 APAR has no fix specified)
vios1: 17/20 fixes installed (3 APARs have no fix specified)
#

Es können beliebig viele NIM-Clients angegeben werden. Auch NIM-Gruppen (mac_group) können angegeben werden.

Beispiel 9: Überprüfen eines NIM-Clients und Herunterladen von fehlenden Fixes

# apar check -d aix07
aix07: 13/16 fixes installed
downloading efs_fix.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5010k  100 5010k    0     0  1079k      0  0:00:04  0:00:04 --:--:-- 1241k
downloading kernel_fix3.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  142M  100  142M    0     0  1637k      0  0:01:29  0:01:29 --:--:-- 1684k
downloading bind_fix20.tar ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 19.1M  100 19.1M    0     0  1494k      0  0:00:13  0:00:13 --:--:-- 1596k
#

Die Fixes werden im aktuellen Verzeichnis abgelegt.

Beispiel 10: Anzeigen von Fixes für ein bestimmtes Fileset

$ apar show bos.cluster.rte
type:         hiper
product:      vios
versions:     2.2.3.80,2.2.3.90
abstract:     CAA:SLOW GOSSIP RECEIPT ON BOOT MAY CAUSE PARTITIONED CLUSTER
apars:        IV97148
fixedIn:      See Advisory
ifixes:       IV97148s8a.170613.61TL09SP08.epkg.Z,IV97148s8a.170613.epkg.Z,IV97148s9b.171030.61TL09SP09.epkg.Z,IV97148s9b.171030.epkg.Z
bulletinUrl:  http://www-01.ibm.com/support/docview.wss?uid=isg1IV97148
filesets:     bos.cluster.rte:6.1.9.200-6.1.9.201
issued:       20171108
updated:      
siblings:     6100-09:IV97148 7100-04:IV97265 7200-01:IV97266
download:     https://aix.software.ibm.com/aix/ifixes/iv97148/
cvss:         
reboot:       yes
…
$

Es kann zusätzlich auch eine Version angegeben werden:

$ apar show bos.cluster.rte:7.2.5.1
type:         sec
product:      aix
versions:     7200-05-01,7200-05-01-2038,7200-05-01-2039,7200-05-02,7200-05-02-2114,7200-05-03-2135,7200-05-03-2136,7200-05-03-2148
abstract:     There are multiple vulnerabilities in AIX CAA.
apars:        CVE-2021-38996,CVE-2022-22350,IJ36682,IJ37512
fixedIn:      7200-05-04
ifixes:       IJ36682s3a.220228.epkg.Z,IJ36682s3b.220228.epkg.Z,IJ37512s1a.220228.epkg.Z,IJ37512s2a.220228.epkg.Z
bulletinUrl:  https://aix.software.ibm.com/aix/efixes/security/caa_advisory2.asc
filesets:     bos.cluster.rte:7.2.5.0-7.2.5.1,bos.cluster.rte:7.2.5.100-7.2.5.101
issued:       20220301
updated:      
siblings:    
download:     https://aix.software.ibm.com/aix/efixes/security/caa_fix2.tar
cvss:         CVE-2022-22350:6.2 / CVE-2021-38996:6.2
reboot:       yes
…
$

Informationen zum Kommando ‚apar

Zum Download von Dateien wird das Kommando curl verwendet. Dieses steht z.B. über die AIX-Toolbox zur Verfügung. Ist kein curl installiert oder besteht keine Anbindung an das Internet (mit oder ohne Proxy), dann kann die Download-Funktionalität des Kommandos ‚apar‘ nicht genutzt werden. Allerdings können alle anderen Funktionen, wie Anzeigen von APARs, Überprüfung auf Fixes oder Suchen nach bestimmten APARs auch ohne eine solche Anbindung verwendet werden.

Wird ein Proxy benötigt, kann dieser über eine der beiden Dateien /opt/pwrcmps/etc/tools.cfg oder ~/.tools.cfg konfiguriert werden, z.B.:

# The HTTP proxy to use
# Default: (none)
HttpProxy: http://172.168.10.12:3333

Wir empfehlen für die Proxy-Konfiguration die Datei /opt/pwrcmps/etc/tools.cfg zu verwenden, da diese für alle Benutzer gültig ist.

Das Kommando ‚apar‘ benötigt die CSV-Datei apar.csv welche Datensätze aller HIPER und SECURITY Fixes enthält. Diese Datei wird von IBM über den folgenden URL zur Verfügung gestellt:

https://esupport.ibm.com/customercare/flrt/doc?page=aparCSV

Per Default sucht das Kommando ‚apar‘ diese Datei zunächst im Home-Verzeichnis des Benutzers und dann unter /opt/pwrcmps/etc. Sollte die Datei an beiden Stellen nicht verfügbar sein, wird die Datei über den obigen URL von IBM heruntergeladen. Das Verhalten kann über eine der beiden Dateien /opt/pwrcmps/etc/tools.cfg oder ~/.tools.cfg konfiguriert werden:

# The order of locations to look for the apar.csv file
# Default: ~,/opt/pwrcmps/etc,ibmwebsite
#AparCsvResolve:

Wir empfehlen die Datei mit Hilfe eines crontab-Eintrags regelmäßig herunterzuladen und unter /opt/pwrcmps/etc/apar.csv abzulegen. Die Datei kann dann von allen Benutzern verwendet werden, ohne das sie für jeden Kommando-Aufruf neu heruntergeladen werden muss.

Der Download kann z.B. über den folgenden Aufruf erfolgen:

$ apar getcsv
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 2834k    0 2834k    0     0  1240k      0 --:--:--  0:00:02 --:--:-- 1240k
$

Die Datei wird im aktuellen Verzeichnis abgelegt. Ein crontab-Aufruf von root zum regelmäßigen Download könnte so aussehen:

( cd /opt/pwrcmps/etc; apar getcsv )

In unserem Download-Bereich kann das Kommando ‚apar‘ heruntergeladen werden, es ist eine zeitlich begrenzte Test-Lizenz für Evaluierungszwecke enthalten.

Das Kommando chrctcp

chrctcp

Unter AIX wird der System Resource Controller (SRC) zum kontrollieren von Subsystemen und Subservern verwendet. Die Kommandos lssrc, startsrc und stopsrc dürften jedem AIX Administrator bekannt sein. Nicht ganz so bekannt ist das Kommando chrctcp mit dem Subsysteme, die über /etc/rc.tcpip gestartet werden, verwaltet werden können. Durch Nutzung dieses Kommandos kann das Editieren des Start-Skriptes /etc/rc.tcpip vermieden werden. Die meisten Administratoren kennen und verwenden nur die Optionen „-a“ (add/activate), „-d“ (delete/deactivate) und „-S“ (start, stop or restart subsystem). Das Kommando chrctcp hat aber über die Optionen „-c“ (change) und „-s“ (show) noch mehr Funktionalität zu bieten, was von SMIT auch genutzt wird. (Letztlich wurde chrctcp wohl auch eigens für die Verwendung durch SMIT geschrieben.)

Eine Reihe von Subsystemen wird beim Booten über /etc/rc.tcpip gestartet. Allerdings nur wenn es einen Eintrag der folgenden Form im Skript /etc/rc.tcpip gibt:

start /usr/sbin/inetd "$src_running"

Soll ein bestimmtes Subsystem beim Booten nicht gestartet werden, muss das entsprechende Subsystem in /etc/rc.tcpip auskommentiert werden:

#start /usr/sbin/inetd "$src_running"

Im Prinzip kann die Änderung mit einem Editor durchgeführt werden. Es gibt aber über das Kommando chrctcp einen viel eleganteren Weg. Das Kommando chrctcp kann die Datei /etc/rc.tcpip automatisiert editieren. Soll ein bestimmter Dienst beim nächsten Booten nicht mehr gestartet werden, kann chrctcp mit der Option „-d“ verwendet werden, um den Dienst auszukommentieren:

# chrctcp -d inetd
# grep /usr/sbin/inet /etc/rc.tcpip
#start /usr/sbin/inetd "$src_running"
#

Dies hat keinen Einfluß auf das aktuell laufende Subsystem. Möchte man das laufende Subsystem zusätzlich stoppen, kann man entweder zusätzlich das Kommando „stopsrc –s“ verwenden, oder, was deutlich einfacher ist, einfach die Option „-S“ von chrctcp zusätzlich verwenden:

# chrctcp -S -d inetd
0513-044 The /usr/sbin/inetd Subsystem was requested to stop.
#

Das Subsystem wird in /etc/rc.tcpip auskommentiert und zusätzlich wird das eventuell laufende Subsystem gestoppt.

Ähnlich kann man vorgehen, wenn man einen bisher ungenutzten Dienst aus /etc/rc.tcpip nutzen möchte. Um den entsprechenden Eintrag zu aktivieren, kann die Option „-a“ verwendet werden:

# grep /usr/sbin/inetd /etc/rc.tcpip
#start /usr/sbin/inetd "$src_running"
# chrctcp -a inetd
# grep /usr/sbin/inetd /etc/rc.tcpip
start /usr/sbin/inetd "$src_running"
#

Hinweis: Der Eintrag ‚#start /usr/sbin/inetd „$src_running“‚ muss schon in auskommentierter Form an der richtigen Stelle in der Datei stehen!

Soll nicht nur die Datei /etc/rc.tcpip angepasst werden, sondern der Dienst auch sofort gestartet werden, kann wieder die Option „-S“ zusätzlich verwendet werden:

# grep /usr/sbin/inetd /etc/rc.tcpip
#start /usr/sbin/inetd "$src_running"
# chrctcp -S -a inetd
0513-059 The inetd Subsystem has been started. Subsystem PID is 5636582.
# grep /usr/sbin/inetd /etc/rc.tcpip
start /usr/sbin/inetd "$src_running"
#

Im folgenden bleiben wir exemplarisch beim inetd als Beispiel. Das Beschriebene gilt aber in gleicher Weise für andere Subsysteme.

Dienste wie inetd, syslogd und andere besitzen häufig Optionen und Argumente, die beim Start angegeben werden können. Z.B. bietet inetd die folgenden Optionen und Argumente:

-d   Versenden von Debugging Informationen an syslogd

-6   Unterstützung von IPv6

file  Angabe einer Konfigurationsdatei die anstelle von /etc/inetd.conf verwendet werden soll.

Mit dem Kommando chrctcp und der Option „-s“ lassen sich die verwendeten Optionen und Argumente anzeigen:

# chrctcp -s inetd
#debug_mode:ipv6_mode:config_file
no:no:
#

Die Beispiel-Ausgabe zeigt das Debugging und IPv6 deaktiviert sind und keine alternative Konfigurationsdatei angegeben wurde.

Mit der Option „-c“ (change) kann man die Optionen und Argumente ändern. Attribute können mit der Option „-f“ angegeben werden. Als Beispiel aktivieren wir Debugging und erlauben IPv6:

# chrctcp -c inetd -f debug=yes -f ipv6=yes
# grep /usr/sbin/inetd /etc/rc.tcpip
start /usr/sbin/inetd "$src_running" " -d  -6 "
#

Ein Blick in /etc/rc.tcpip zeigt das der Start von inetd um die Optionen „-d“ (Debugging) und „-6“ (IPv6) ergänzt wurde! Geändert wurde aber wieder nur die Start-Datei /etc/rc.tcpip, ein eventuell schon laufender inetd bleibt von der Änderung unberührt:

# ps -ef|grep ine[t]d
    root  5636582  4587924   0 18:34:47      -  0:00 /usr/sbin/inetd
#

Wie beim Aktivieren und Deaktivieren von Subsystemen kann auch beim Ändern die Option „-S“ verwendet werden:

# chrctcp -S -c inetd -f debug=yes -f ipv6=yes
0513-044 The inetd Subsystem was requested to stop.
0513-059 The inetd Subsystem has been started. Subsystem PID is 5636584.
#

Der Dienst wird dann gestoppt und sofort wieder gestartet. Natürlich dann mit den geänderten Optionen und Argumenten:

# ps -ef|grep ine[t]d
    root  5636584  4587924   0 18:49:25      -  0:00 /usr/sbin/inetd -d -6
#

Die beim nächsten Booten verwendeten Optionen und Argumente lassen sich mit der Option „-s“ auflisten:

# chrctcp -s inetd
#debug_mode:ipv6_mode:config_file
yes:yes:
#

Etwas unglücklich ist die Tatsache, das die im Header angezeigten Bezeichnungen (debug_mode, ipv6_mode, config_file) nicht ganz mit den zu verwendenden Attributnamen übereinstimmen. Die korrekten unterstützten Attributnamen im Falle von inetd sind debug, ipv6 und file.

In einem der nächsten Beiträge werden wir die unterstützten Attribute für weitere Subsysteme einmal auflisten und tabellarisch zur Verfügung stellen.

Pfad zum Executable eines laufenden AIX Prozesses herausfinden

Wurde ein Prozeß nicht mit absolutem Pfad gestartet, dann ist es überraschend schwierig den absoluten Pfad für das zugehörige Executable herauszufinden.

Wir demonstrieren dies am Beispiel von Splunk:

$ ps -ef |grep splun[k]d
    root  7143802  5702116   0   Apr 23      - 23:26 splunkd --nodaemon -p 8089 _internal_exec_splunkd
    root 31916484  7143802   0   Apr 23      -  0:00 [splunkd pid=7143802] splunkd --nodaemon -p 8089 _internal_exec_splunkd [process-runner]
$

Beim Start des Prozesses mit der PID 31916484 wurde zusätzlich das Argument 0 abgeändert.

Ein Teil der Informationen zu einem Prozeß sind über das Prozeß-Dateisystem /proc verfügbar. Da Splunk unter der Kennung von root läuft, sind root-Rechte notwendig, um auf die Informationen unter /proc zum Prozeß zuzugreifen.

Unterhalb von /proc gibt es für jeden aktiven Prozeß ein Unterverzeichnis mit der PID als Verzeichnisname.

# ls -l /proc/31916484
total 32
-rw-------    1 root     system            0 Apr 28 15:17 as
-r--------    1 root     system          128 Apr 28 15:17 cred
--w-------    1 root     system            0 Apr 28 15:17 ctl
lr-x------   38 root     system            0 Apr 28 13:31 cwd -> /root/
dr-x------    1 root     system            0 Apr 28 15:17 fd
dr-xr-xr-x    1 root     system            0 Apr 28 15:17 lwp
-r--------    1 root     system            0 Apr 28 15:17 map
-r--------    1 root     system            0 Apr 28 15:17 mmap
dr-x------    1 root     system            0 Apr 28 15:17 object
-r--r--r--    1 root     system          448 Apr 28 15:17 psinfo
lr-x------   48 root     system            0 Apr 28 09:02 root -> /
-r--------    1 root     system        12288 Apr 28 15:17 sigact
-r--------    1 root     system         1520 Apr 28 15:17 status
-r--r--r--    1 root     system            0 Apr 28 15:17 sysent
#

Im Unterverzeichnis object ist neben den geöffneten Dateien auch das Executable verfügbar:

# ls -l /proc/31916484/object
total 854216
-r-xr-xr-x    1 root     system    194980846 Nov 16 2019  a.out
-r-xr-xr-x    1 bin      bin           10749 Sep 21 2015  jfs2.10.5.103039
-r--r--r--    1 bin      bin        12858422 May 28 2019  jfs2.10.5.225767
-r-xr-xr-x    1 bin      bin           77411 Mar 25 2021  jfs2.10.5.4157
-r-xr-xr-x    1 bin      bin        13438344 Jul 27 2021  jfs2.10.5.4205
-r--r--r--    1 bin      bin         1351386 Mar 09 2021  jfs2.10.5.4209
-r--r--r--    1 bin      bin           80450 Jul 27 2021  jfs2.10.5.4220
-r-xr-xr-x    1 root     system    194980846 Nov 16 2019  jfs2.10.9.139342
-r-xr-xr-x    1 root     system      3487967 Nov 12 2019  jfs2.10.9.155672
-r-xr-xr-x    1 root     system       228087 Nov 12 2019  jfs2.10.9.155673
-r-xr-xr-x    1 root     system      2688333 Nov 16 2019  jfs2.10.9.155675
-r-xr-xr-x    1 root     system       901800 Nov 12 2019  jfs2.10.9.155677
-r-xr-xr-x    1 root     system      4256593 Nov 12 2019  jfs2.10.9.155679
-r-xr-xr-x    1 root     system       568791 Nov 16 2019  jfs2.10.9.155684
-r-xr-xr-x    1 root     system      6166802 Nov 12 2019  jfs2.10.9.155685
-r-xr-xr-x    1 root     system      1239656 Nov 12 2019  jfs2.10.9.155686
-r-xr-xr-x    1 root     system       124218 Nov 16 2019  jfs2.10.9.155690
#

Die Datei a.out repräsentiert dabei das Executable. Ein Zugriff auf diese Datei wird auf die Datei des Executables umgeleitet. Mit dem Kommando istat lassen sich Informationen wie Inode-Nummer und Gerät (Dateisystem) des Executables heraufinden:

# istat /proc/31916484/object/a.out
Inode 139342 on device 10/9     File
Protection: r-xr-xr-x  
Owner: 0(root)          Group: 0(system)
Link count:   1         Length 194980846 bytes

Last updated:   Tue Jul 27 07:15:40 CEST 2021
Last modified:  Sat Nov 16 01:23:05 CET 2019
Last accessed:  Thu Apr 28 10:38:13 CEST 2022

#

Die Inode-Nummer des Executables ist 139342. Das Dateisystem ist das Dateisystem auf dem Gerät mit der Major-Nummer 10 und der Minor-Nummer 9 („device 10/9“).

Man könnte nun erst einmal das Gerät durch eine Suche unter /dev herausfinden:

$ ls -l /dev | grep "10,  9"
brw-rw----    1 root     system       10,  9 Jul 27 2021  hd10opt
crw-rw----    1 root     system       10,  9 Apr 05 13:36 rhd10opt
$

und dann das zugehörige Dateisystem über df ermitteln:

$ df | grep hd10opt
/dev/hd10opt    12582912   7527920   41%    33349     4% /opt
$

Allerdings geht dies noch einfacher. Man kann einfach den Pfad für die a.out Datei bei df angeben:

# df /proc/31916484/object/a.out
Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd10opt    12582912   7527912   41%    33349     4% /opt
#

Das gesucht Dateisystem ist das /opt-Dateisystem. Nun kann man mit einer Suche nach der Inode-Nummer 139342 in /opt den absoluten Pfad zum Executable herausfinden:

# find /opt -inum 139342
/opt/splunkforwarder/bin/splunkd
#

Der Prozeß mit der PID 31916484 führt also das Executable /opt/splunkforwarder/bin/splunkd aus.

Mit einem kleinen Trick kann man die Suche auch deutlich abkürzen. Dazu benötigt man eine Shell als Benutzer root. In dieser Shell öffnet man die a.out explizit mittels exec und einer (freien) Descriptor-Nummer:

# exec 5</proc/31916484/object/a.out
#

Unsere aktuelle Shell hat damit das Executable geöffnet (über den Filedescriptor 5)! Nun lässt man sich mit dem Kommando procfiles die offenen Dateien dieser Shell anzeigen. Dabei benutzt man die Option „-n“, welche die absoluten Pfade von Dateien anzeigt, die zu einem Filedescriptor gehören:

# procfiles -n $$
19136808 : ksh
  Current rlimit: 10000 file descriptors
   0: S_IFCHR mode:00 dev:10,4 ino:4463 uid:0 gid:0 rdev:21,3
      O_RDWR | O_NOCTTY  name://dev/pts/3
   1: S_IFCHR mode:00 dev:10,4 ino:4463 uid:0 gid:0 rdev:21,3
      O_RDWR | O_NOCTTY  name://dev/pts/3
   2: S_IFCHR mode:00 dev:10,4 ino:4463 uid:0 gid:0 rdev:21,3
      O_RDWR | O_NOCTTY  name://dev/pts/3
   5: S_IFREG mode:0555 dev:10,9 ino:139342 uid:0 gid:0 rdev:0,0
      O_RDONLY size:194980846  name:/opt/splunkforwarder/bin/splunkd
   10: S_IFREG mode:0444 dev:10,5 ino:124151 uid:0 gid:0 rdev:0,0
      O_RDONLY size:5875  name:/usr/lib/nls/msg/EN_US/ksh.cat
   63: S_IFREG mode:0600 dev:10,4 ino:41933 uid:0 gid:0 rdev:0,0
      O_RDWR | O_APPEND size:5494  name://root/.sh_history
#

Hinweis: Die spezielle Variable $$ wird von der Shell durch die PID der Shell ersetzt.

Für den Filedescriptor 5 wird der absolute Pfad /opt/splunkforwarder/bin/splunkd angezeigt.

Anschließend sollte man den Filedescriptor wieder schließen:

# exec 5<&-
#

Passwörter nicht-interaktiv ändern

AIX bietet mit dem Kommando chpasswd die Möglichkeit Passwörter sowohl interaktiv, als auch nicht interaktiv zu ändern. Allerdings ist die Benutzung des Kommandos dem Benutzer root vorbehalten.

Im einfachsten Fall kann der Administrator das Kommando ohne Argumente starten. Es wird dann die interaktive Eingabe von Benutzernamen und zugehörigem Passwort, getrennt durch einen Doppelpunkt „:“, erwartet. Pro Zeile wird ein Benutzername und ein Klartext-Passwort angegeben. Die Eingabe muss mit Control-D beendet werden:

# chpasswd
user01:hello19
<Control>-<D>
#

Es wird per Default das ADMCHG Flag für den Benutzer-Account gesetzt:

# pwdadm -q user01
user01:
        lastupdate = 1650438240
        flags = ADMCHG

#

Damit wird der Benutzer beim nächsten Login aufgefordert sein Passwort zu ändern.

Möchte man das Setzen des Passworts über ein Skript nicht interaktiv machen, kann z.B. ein sogeanntes „here“ Dokument verwendet werden:

# chpasswd -c <<EOF
> user02:hello20
> EOF
#

Diese Variante erfordert keine manuelle Eingabe mehr. Die einzugebenden Benutzer und Passwörter können direkt im Skript eingetragen werden. Um zu Verhindern das die Benutzer beim nächsten Login aufgefordert werden ihr Passwort zu ändern, haben wir die Option „-c“ (clear all password flags) verwendet.

Alternativ könnte man aber auch z.B. eine Pipe mit einem echo-Kommando verwenden:

# echo user03:hello21 | chpasswd -c
#

Verwendet man eine bash, dann gibt es noch die besonders elegante Möglichket eine Eingabe-Umleitung auf eine Zeichenkette einzurichten. Dazu werden 3 Kleiner-Zeichen „<<<“ gefolgt von einer Zeichenkette verwendet:

(bash)# chpasswd -c <<<user04:hello22
(bash)#

In allen obigen Beispielen wurde das Passwort jeweils im Klartext angegeben. Das ist in der Regel bei nicht-interaktivem Setzen des Passworts nicht gewünscht. Man kann das Passwort aber auch in verschlüsselter Form angeben. Dazu muss lediglich die Option „-e“ (encrypted password) verwendet werden. Es erfolgt keine Prüfung durch das chpasswd Kommando, ob das angegebene verschlüsselte Passwort die richtige Länge und Syntax hat, oder ob es überhaupt gültig ist!

Allerdings muss man nun beachten, dass das verschlüsselte Passwort eventuell Sonderzeichen wie „$“ oder „!“ enthält, die von der Shell ausgewertet und eventuell ersetzt werden. Bei Verwendung eines „here“ Dokuments werden Sonderzeichen in der Eingabe durch die Shell interpretiert. Wir demonstrieren dies durch Setzen einer Variable VAR, die dann im verschlüsselten Passwort verwendet wird:

# VAR=hello
# chpasswd -e -c <<EOF
> user02:{ssha512}06TQ.$VAR
EOF
#

Das angegebene verschlüsselte Passwort ist viel zu kurz und daher nicht gültig, es gibt aber keine Fehlermeldung. Der Teil „$VAR“ wird von der Shell durch den Wert „hello“ ersetzt, wie das Anzeigen des gesetzten Passworts zeigt:

# lsuser -a spassword user02
user02 spassword={ssha512}06TQ.hello
#

Die Ersetzung durch die Shell lässt sich verhindern, indem das Wort „EOF“ in Anführungszeichen gesetzt wird:

# VAR=hello
# chpasswd -e -c <<”EOF”
> user02:{ssha512}06TQ.$VAR
EOF
#

Dieses Mal wurde “$VAR” nicht ersetzt:

# lsuser -a spassword user02
user02 spassword={ssha512}06TQ.$VAR
#

(Das verschlüsselte Passwort ist aber nach wie vor zu kurz und damit ungültig.)

Gruppen-Mitgliedschaft unter AIX mit chgrpmem verwalten

AIX bietet ein elegantes Kommando um die Mitgliedschaft von Benutzern in Gruppen zu ändern: chgrpmem.

Als Beispiel verwenden wir die Benutzer user01, user02, …, sowie die Gruppe mygroup:

$ lsgroup mygroup
mygroup id=225 admin=false users= registry=files
$

Die Gruppe mygroup besitzt aktuell noch keine Mitglieder (users=““).

Um die beiden lokalen Benutzer user01 und user02 der Gruppe mygroup hinzuzufügen, muss die Option „-m“ (Member) verwendet werden. Dann folgt das Zeichen Plus „+“ für Hinzufügen und eine komma-separierte Liste von Benutzernamen. Als letztes Argument muss noch die Gruppe angegeben werden:

# chgrpmem -m + user01,user02 mygroup
#
# lsgroup mygroup
mygroup id=225 admin=false users=user01,user02 registry=files
#

Verwendet man anstelle des Plus-Zeichens „+“ das Gleichheits-Zeichen „=“, dann wird die aktuelle Liste der Benutzer durch die angegebene Liste von Benutzernamen überschrieben:

# chgrpmem -m = user03,user04,user05 mygroup
# 
# lsgroup mygroup
mygroup id=225 admin=false users=user03,user04,user05 registry=files
#

Das Entfernen von Benutzern erfolgt durch Verwenden eines Minus-Zeichens „“ z.B. Entfernen des Benutzers user04:

# chgrpmem -m - user04 mygroup
# 
# lsgroup mygroup
mygroup id=225 admin=false users=user03,user05 registry=files
#

Das Entfernen eines Benutzers aus der Mitgliederliste einer Gruppe muss aber nicht immer erfolgreich sein! Wir legen den Benutzer user06 mit primärer Gruppe mygroup an:

# mkuser pgrp=mygroup user06
# 
# lsgroup mygroup
mygroup id=225 admin=false users=user03,user05,user06 registry=files
#

Die Ausgabe von lsgroup zeigt das der Benutzer user06 ebenfalls Mitglied der Gruppe mygroup ist. Allerdings lässt sich in diesem Fall die Mitgliedschaft nicht aufheben:

# chgrpmem -m - user06 mygroup
Cannot drop "user06" from primary group "mygroup".
#

Ein Benutzer muss immer eine primäre Gruppe haben! Mit dem Kommando chgrpmem können nur die zusätzlichen Mitgliedschaften von Benutzern verwaltet werden. Die primäre Gruppe kann nur mit dem Kommando chuser geändert werden.

Hinweis: Mit dem Kommando chgrpmem und der Option „-a“ können auch die Administratoren einer Gruppe geändert werden. Dies wird in der Praxis aber eher selten verwendet und ist daher hier auch nicht angesprochen.

Ändern der PVID eines Physical Volumes

Jedes Physical Volume das vom AIX LVM verwendet wird, besitzt eine eindeutige Physical Volume ID, kurz PVID. Die PVID ist eine Software-generierte ID, die im Header Bereich einer Platte (Block 0) abgespeichert wird. Wenn eine neue Platte einem AIX System hinzugefügt wird, dann besitzt das neue Physical Volume noch keine PVID. Sobald ein Physical Volume einer Volume Group hinzugefügt wird, wird eine PVID generiert, wenn das Physical Volume noch keine PVID haben sollte. Eine schon existierende PVID wird übernommen.

Eine PVID kann auch manuell mit Hilfe des Kommandos chdev erzeugt werden. Dabei wird das Attribut pv auf den Wert yes gesetzt:

# chdev -l hdisk3 -a pv=yes
hdisk3 changed
#

Die gesetzte PVID kann entweder mit dem Kommando lsattr oder auch einfach mit lspv angezeigt werden:

$ lsattr -El hdisk3 -a pvid -F value
00c276b0084049750000000000000000
$
$ lspv |grep hdisk3
hdisk3          00c276b008404975                    None                       
$

Eine PVID kann auch wieder entfernt werden. Dazu darf das Physical Volume allerdings nicht in Verwendung sein (.z.B. als Teil einer Volume Group).

Um eine PVID eines Physical Volumes zu löschen, kann das Attribut pv auf den Wert clear gesetzt werden:

# chdev -l hdisk3 -a pv=clear
hdisk3 changed
#

Die PVID wurde entfernt, wie die nachfolgenden Aussagen zeigen:

$ lsattr -El hdisk3 -a pvid -F value
none
$
$ lspv |grep hdisk3
hdisk3          none                                None                       
$

Der Versuch die PVID eines Physical Volumes zu löschen, das in Verwendung ist, führt zu der folgenden Fehlermeldung:

# chdev -l hdisk0 -a pv=clear
Method error (/usr/lib/methods/chgdisk):
        0514-062 Cannot perform the requested function because the
                 specified device is busy.
     pv    

#

 

Größe eines Physical Volumes bestimmen

Um die Größe eines Physical Volumes (Disk, LUN) zu bestimmen, gibt es unter AIX eine Reihe verschiedener Möglichkeiten.

Besitzt man root-Rechte, kann das Kommando bootinfo mit der Option „-s“ (size) verwendet werden:

#  bootinfo -s hdisk0
51200
#

Die Größe des Physical Volumes wird in MB ausgegeben. Im Beispiel also 51.200 MB oder ca 50 GB.

Ohne root-Rechte, kann das Kommando getconf verwendet werden. Mit diesem Kommando können systemweite Konfigurationsparameter, aber auch gerätespezifische Variablen angezeigt werden. Um die Größe eines Physical Volumes anzuzeigen, kann die gerätespezifische Variable DISK_SIZE verwendet werden. Das in Frage kommende Physical Volume wird über den absoluten Pfad der Block- oder Character-Gerätedatei des Physical Volumes angegeben:

$ getconf DISK_SIZE /dev/hdisk0
51200
$

Auch hier wird die Größe in MB ausgegeben.

Eine weitere Möglichkeit, die aber wieder root-Rechte erfordert, ist die Verwendung des Kommandos lsmpio. Dieses bietet über die Option „-q“ (query) Daten über ein MPIO Storage Gerät anzuzeigen:

# lsmpio -ql hdisk0
Device:  hdisk0
…
           Capacity:  50.00GiB
…
#

Die Größe wird dieses Mal direkt in GB (GiB) angezeigt.

Ist das Physical Volume Teil einer Volume Group, kann auch das Kommando lspv verwendet werden, um die Größe zumindest abzuschätzen:

$ lspv hdisk0
…
TOTAL PPs:          199 (50944 megabytes)    VG DESCRIPTORS:   2
…                                      
$

Hier wird der für Daten verwendbare Bereich angegeben (50.944 MB), das Physical Volume selbst ist etwas größer, da ja auch noch Platz für Verwaltungsinformationen verwendet wird.