LPIC102/110.1 Administrationsaufgaben für Sicherheit durchführen: Unterschied zwischen den Versionen
K Textersetzung - „–“ durch „-“ |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
== | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
</syntaxhighlight> | |||
== Auffinden von Dateien mit gesetztem SUID/SGID-Bit == | |||
* bestes Beispiel für gesetztes SUID ist das Programm passwd | |||
* user kann als gewöhnlicher Benutzer mit erhöhten Rechten sein Passwort ändern | |||
* gesetztes SUID stellt Sicherheitsbedrohung dar | |||
* => regelmäßiges Durchsuchen des Systems nach entsprechenden Programmen | |||
Suche nach Programmen mit setztem SUID: | Suche nach Programmen mit setztem SUID: | ||
<pre> # find / -perm -u+s </pre> | <pre> # find / -perm -u+s </pre> | ||
Suche nach Programmen mit setztem SGID: | Suche nach Programmen mit setztem SGID: | ||
Zeile 21: | Zeile 16: | ||
<pre># find / -perm -g+s</pre> | <pre># find / -perm -g+s</pre> | ||
==Setzen oder Löschen von Passwörtern und Passwort-Verfallszeiten== | == Setzen oder Löschen von Passwörtern und Passwort-Verfallszeiten == | ||
=== passwd === | === passwd === | ||
*von '''passw'''or'''d''', ändert die Passwörter eines Benutzers oder einer ganzen Gruppe | * von '''passw'''or'''d''', ändert die Passwörter eines Benutzers oder einer ganzen Gruppe | ||
*passwd greift auf ''/etc/passwd zu | * passwd greift auf ''/etc/passwd zu | ||
Link weiterführende Information zu ''/etc/passwd'': | Link weiterführende Information zu ''/etc/passwd'': | ||
[https://wiki.itw-berlin.net/index.php?title=Passwd:_Die_Datei_/etc/passwd#Die_Datei_.2Fund weitere2Fpasswd 'Die Datei /etc/passwd'] | [https://wiki.itw-berlin.net/index.php?title=Passwd:_Die_Datei_/etc/passwd#Die_Datei_.2Fund weitere2Fpasswd 'Die Datei /etc/passwd'] | ||
Die allgemeine Syntax zum Verwalten (Sperren, Löschen und weitere) eines Benutzers lautet | |||
Die allgemeine Syntax zum Verwalten (Sperren, Löschen und weitere) eines Benutzers lautet | |||
<pre>passwd [OPTIONEN] [BENUTZERNAME]</pre> | <pre>passwd [OPTIONEN] [BENUTZERNAME]</pre> | ||
Die allgemeine Syntax zum Festlegen, wann und wie oft das Password geändert werden kann, lautet: | |||
Die allgemeine Syntax zum Festlegen, wann und wie oft das Password geändert werden kann, lautet: | |||
<pre>passwd [-x MAX_TAGE] [-n MIN_TAGE] [-w WARN_TAGE] [-i INAKTIV_TAGE] BENUTZERNAME</pre> | <pre>passwd [-x MAX_TAGE] [-n MIN_TAGE] [-w WARN_TAGE] [-i INAKTIV_TAGE] BENUTZERNAME</pre> | ||
===chage=== | === chage === | ||
*Ändert die Informationen über die Gültigkeit eines Userpassworts | * Ändert die Informationen über die Gültigkeit eines Userpassworts | ||
allgemeine Syntax | allgemeine Syntax | ||
<pre>chage [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E Ablaufdatum] [-W warndays] Benutzername</pre> | <pre>chage [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E Ablaufdatum] [-W warndays] Benutzername</pre> | ||
wichtige Dateien | wichtige Dateien | ||
*''/etc/passwd'' - Useraccount Informationen | * ''/etc/passwd'' - Useraccount Informationen | ||
*''/etc/shadow'' - Sichere Useraccount Informationen | * ''/etc/shadow'' - Sichere Useraccount Informationen | ||
== nmap, netstat und socket == | |||
===nmap=== | === nmap === | ||
*für '''N'''etwork '''Map'''per ist ein Portscanner | * für '''N'''etwork '''Map'''per ist ein Portscanner | ||
allgemeine Syntax | allgemeine Syntax | ||
Zeile 68: | Zeile 53: | ||
<pre>nmap [Art des Scans] <Optionen> Ziel</pre> | <pre>nmap [Art des Scans] <Optionen> Ziel</pre> | ||
===netstat=== | === netstat === | ||
*ist ein Diagnose-Werkzeug um Status der Netzwerkschnittstelle(n) auszulesen | * ist ein Diagnose-Werkzeug um Status der Netzwerkschnittstelle(n) auszulesen | ||
allgemeine Syntax | allgemeine Syntax | ||
Zeile 76: | Zeile 60: | ||
<pre>netstat [OPTIONEN]</pre> | <pre>netstat [OPTIONEN]</pre> | ||
=== socket === | |||
===socket=== | * Linux Socket Interface | ||
*Linux Socket Interface | * erstellt einen TCP- oder UNIX-Domain-Socket und stellt eine Verbindung zu Standard In / Out her | ||
*erstellt einen TCP- oder UNIX-Domain-Socket und stellt eine Verbindung zu Standard In / Out her | * kann u.a. sogar nach außen hin das Vorhandensein eines bestimmten Netzwerkdienstes simulieren, ein Zugriff von außen kann so beobachtet werden | ||
*kann u.a. sogar nach außen hin das Vorhandensein eines bestimmten Netzwerkdienstes simulieren, ein Zugriff von außen kann so beobachtet werden | |||
<pre>user@ubuntu-server:~$ socket -wslqvp "Echo Socket!" 1938</pre> | <pre>user@ubuntu-server:~$ socket -wslqvp "Echo Socket!" 1938</pre> | ||
Ablauf des Befehls: | Ablauf des Befehls: | ||
*erstellt einen Server-Socket an Port 1938 auf dem local host und wartet auf eine Verbindung. | * erstellt einen Server-Socket an Port 1938 auf dem local host und wartet auf eine Verbindung. | ||
*Wenn eine Verbindung akzeptiert wird, wird die Zeichenfolge "Socket!" in den Socket geschrieben. | * Wenn eine Verbindung akzeptiert wird, wird die Zeichenfolge "Socket!" in den Socket geschrieben. | ||
*Es werden keine Daten aus dem Socket gelesen oder in das Programm finger - Suchprogramm für Benutzerinformationen - geschrieben. | * Es werden keine Daten aus dem Socket gelesen oder in das Programm finger - Suchprogramm für Benutzerinformationen - geschrieben. | ||
*Die Verbindung wird geschlossen, wenn eine Dateiende-Bedingung an der Standardausgabe des Programms auftritt. | * Die Verbindung wird geschlossen, wenn eine Dateiende-Bedingung an der Standardausgabe des Programms auftritt. | ||
*Dann wird eine neue Verbindung angenommen. | * Dann wird eine neue Verbindung angenommen. | ||
=== | == Ressourcenverwendung kontrollieren == | ||
=== ulimit === | |||
* Ressourcengrenze ausgeben lassen oder neu setzen | |||
* Einstellungen hierfür sollten genauso wie die initiale PATH-Variable in der Datei ''/etc/profile'' festgelegt werden | |||
allgemeine Syntax | allgemeine Syntax | ||
Zeile 104: | Zeile 85: | ||
[n] für Number | [n] für Number | ||
* Überblick verschaffen, welche Grenzen gesetzt werden können mit: | |||
*Überblick verschaffen, welche Grenzen gesetzt werden können mit: | |||
<pre># ulimit -a</pre> | <pre># ulimit -a</pre> | ||
* folgende ulimit-Werte werden beispielsweise gern eingesetzt, um primitive DOS-(Denial of Service-)Angriffe zu erschweren (natürlich sind die Werte auch abhängig von der Anwendung eines Rechners) und sollten in der ''/etc/profile'' festgelegt werden | |||
*folgende ulimit-Werte werden beispielsweise gern eingesetzt, um primitive DOS-(Denial of Service-)Angriffe zu erschweren (natürlich sind die Werte auch abhängig von der Anwendung eines Rechners) und sollten in der ''/etc/profile'' festgelegt werden | |||
<pre># Core Dumps verhindern | <pre># Core Dumps verhindern | ||
Zeile 126: | Zeile 103: | ||
ulimit -S -v 20000</pre> | ulimit -S -v 20000</pre> | ||
==Offene Dateien== | == Offene Dateien == | ||
=== lsof === | |||
* steht für '''L'''i'''s'''t '''O'''pen '''F'''iles, | |||
* gibt Informationen über geöffnete Dateien ausführen, wichtig bei Problemen beim Aushängen von Datenträgern, | |||
* kann auch zur Überprüfung von Netzwerkdiensten genutzt werden | |||
allgemeine Syntax: | allgemeine Syntax: | ||
<pre>lsof [Option] <Format></pre> | <pre>lsof [Option] <Format></pre> | ||
Nutzung von lsof ohne Option macht wenig Sinn, da Liste geöffneter Dateien sehr lang | Nutzung von lsof ohne Option macht wenig Sinn, da Liste geöffneter Dateien sehr lang | ||
Zeile 144: | Zeile 118: | ||
<pre>root@archangel:/# lsof |wc -l</pre> | <pre>root@archangel:/# lsof |wc -l</pre> | ||
Welche Prozesse stellen Verbindung zum Netzwerk her? | Welche Prozesse stellen Verbindung zum Netzwerk her? | ||
Zeile 150: | Zeile 123: | ||
<pre>root@archangel:~# lsof -i :80</pre> | <pre>root@archangel:~# lsof -i :80</pre> | ||
===fuser=== | === fuser === | ||
*Identifizieren von Prozessen mithilfe von Dateien oder Sockets | * Identifizieren von Prozessen mithilfe von Dateien oder Sockets | ||
*Alternative für lsof | * Alternative für lsof | ||
*Besonderheit: kann auch ermitteln, von wem oder was Sockets verwendet werden | * Besonderheit: kann auch ermitteln, von wem oder was Sockets verwendet werden | ||
<pre>root@fedora ~# fuser -m -u /home/harald/test | <pre>root@fedora ~# fuser -m -u /home/harald/test | ||
Zeile 160: | Zeile 132: | ||
=> PID 1295 von Benutzer harald | => PID 1295 von Benutzer harald | ||
* Ermittlung des verwendeten Programms ist nun kein Problem mehr | |||
*Ermittlung des verwendeten Programms ist nun kein Problem mehr | |||
<pre>[root@fedora ~]# ps aux | grep 12915 | <pre>[root@fedora ~]# ps aux | grep 12915 | ||
harald 12915 0.0 0.1 13664 4204 pts/6 S+ 10:42 0:00 vi test</pre> | harald 12915 0.0 0.1 13664 4204 pts/6 S+ 10:42 0:00 vi test</pre> | ||
==Arbeiten mit erhöhten Rechten== | == Arbeiten mit erhöhten Rechten == | ||
==== | === Superuser === | ||
==== su ==== | |||
* für '''s'''ubstitute '''u'''ser | |||
* einen Befehl unter anderer Benutzer- oder Gruppenkennung ausführen | |||
allgemeine Syntax | allgemeine Syntax | ||
<pre>su [Optionen] [-] [Benutzer [Argument]]</pre> | <pre>su [Optionen] [-] [Benutzer [Argument]]</pre> | ||
ohne Optionen mit root-Password zu root werden | ohne Optionen mit root-Password zu root werden | ||
<pre>user@ubuntu-server:~$ su | <pre>user@ubuntu-server:~$ su | ||
Password:</pre> | Password:</pre> | ||
Identität eines anderen Benuters annehmen, um Umgebung diesses Buntzers zu überprüfen | Identität eines anderen Benuters annehmen, um Umgebung diesses Buntzers zu überprüfen | ||
Zeile 194: | Zeile 159: | ||
dominik@archangel:~$</pre> | dominik@archangel:~$</pre> | ||
===Sudoer=== | === Sudoer === | ||
*Versuch sudo zu verwenden, wird protokolliert und kann per Mail an root gesendet werden | ==== sudo ==== | ||
* ein einziges Kommando mit root-Rechten ausführen | |||
* Berechtigungen müssen in der Datei /etc/sudoers definiert werden. | |||
* Laut Buch sollte ''/etc/sudoers''' mit visudo bearbeitet werden, da dabei ein Syntax-Check durchgeführt wird. | |||
* Neue Sudoer könne dort direkt angelegt werden - praktischer ist indirekte Zuweisung über Grupperzugehörigkeiten, beispielsweise in Gruppe admin | |||
* Versuch sudo zu verwenden, wird protokolliert und kann per Mail an root gesendet werden | |||
<pre>harald@archangel:~$ sudo apt-get install orca | <pre>harald@archangel:~$ sudo apt-get install orca | ||
[sudo] password for harald:</pre> | [sudo] password for harald:</pre> | ||
==Feststellen, wer an einem System angemeldet ist oder war== | ==Feststellen, wer an einem System angemeldet ist oder war == | ||
===w, who, last=== | === w, who, last === | ||
====w==== | ==== w ==== | ||
*zeigt an, wer angemeldet ist und was sie tun, verwendet die Datei ''/var/run/utmp'' | * zeigt an, wer angemeldet ist und was sie tun, verwendet die Datei ''/var/run/utmp'' | ||
allgemeine Syntax: | allgemeine Syntax: | ||
Zeile 220: | Zeile 182: | ||
<pre>w [husfVo] [Benutzer]</pre> | <pre>w [husfVo] [Benutzer]</pre> | ||
====who==== | ==== who ==== | ||
*anzeigen, wer angemeldet ist, verwendet ebenfalls die Datei ''/var/run/utmp'' | * anzeigen, wer angemeldet ist, verwendet ebenfalls die Datei ''/var/run/utmp'' | ||
allgemeine Syntax: | allgemeine Syntax: | ||
Zeile 230: | Zeile 192: | ||
Option -b, - -boot: Anzeige des letzten Systemstarts | Option -b, - -boot: Anzeige des letzten Systemstarts | ||
====last==== | ==== last ==== | ||
*eine Liste der zuletzt angemeldeten Benutzer anzeigen, wichtig für Suche nach Auslöser für Probleme, | * eine Liste der zuletzt angemeldeten Benutzer anzeigen, wichtig für Suche nach Auslöser für Probleme, | ||
*greift je nach Distribution auf Datei ''/var/log/wtmp'' (bei Debian) oder ''/var/log/btmp'', | * greift je nach Distribution auf Datei ''/var/log/wtmp'' (bei Debian) oder ''/var/log/btmp'', | ||
*falls keine vorhanden mit touch einfach jeweilige Datei erzeugen, wird dann nach Neustart automatisch befüllt | * falls keine vorhanden mit touch einfach jeweilige Datei erzeugen, wird dann nach Neustart automatisch befüllt | ||
allgemeine Syntax | allgemeine Syntax | ||
Zeile 239: | Zeile 201: | ||
<pre>last [OPTION] [Benutzername…] [TTY…]</pre> | <pre>last [OPTION] [Benutzername…] [TTY…]</pre> | ||
==Quellen== | == Quellen == | ||
* Buch LPIC1 Version 5 (Kapitel 110.1 S 435-443) | * Buch LPIC1 Version 5 (Kapitel 110.1 S 435-443) | ||
* [https://wiki.ubuntuusers.de ubuntuusers] | * [https://wiki.ubuntuusers.de ubuntuusers] | ||
Manpages | Manpages | ||
* find | * find | ||
* passwd | * passwd | ||
* chage | * chage | ||
* nmap | * nmap | ||
* netstat | * netstat | ||
* socket | * socket | ||
* ulimit | * ulimit | ||
* lsof | * lsof | ||
* fuser | * fuser | ||
* su | * su | ||
* sudo | * sudo | ||
* w | * w | ||
* who | * who | ||
* last | * last | ||
[[Kategorie:Linux/LPIC/102]] | [[Kategorie:Linux/LPIC/102]] | ||
[[Kategorie:Linux/Sicherheit]] | [[Kategorie:Linux/Sicherheit]] |
Aktuelle Version vom 26. September 2025, 09:56 Uhr
Auffinden von Dateien mit gesetztem SUID/SGID-Bit
- bestes Beispiel für gesetztes SUID ist das Programm passwd
- user kann als gewöhnlicher Benutzer mit erhöhten Rechten sein Passwort ändern
- gesetztes SUID stellt Sicherheitsbedrohung dar
- => regelmäßiges Durchsuchen des Systems nach entsprechenden Programmen
Suche nach Programmen mit setztem SUID:
# find / -perm -u+s
Suche nach Programmen mit setztem SGID:
# find / -perm -g+s
Setzen oder Löschen von Passwörtern und Passwort-Verfallszeiten
passwd
- von password, ändert die Passwörter eines Benutzers oder einer ganzen Gruppe
- passwd greift auf /etc/passwd zu
Link weiterführende Information zu /etc/passwd: weitere2Fpasswd 'Die Datei /etc/passwd'
Die allgemeine Syntax zum Verwalten (Sperren, Löschen und weitere) eines Benutzers lautet
passwd [OPTIONEN] [BENUTZERNAME]
Die allgemeine Syntax zum Festlegen, wann und wie oft das Password geändert werden kann, lautet:
passwd [-x MAX_TAGE] [-n MIN_TAGE] [-w WARN_TAGE] [-i INAKTIV_TAGE] BENUTZERNAME
chage
- Ändert die Informationen über die Gültigkeit eines Userpassworts
allgemeine Syntax
chage [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E Ablaufdatum] [-W warndays] Benutzername
wichtige Dateien
- /etc/passwd - Useraccount Informationen
- /etc/shadow - Sichere Useraccount Informationen
nmap, netstat und socket
nmap
- für Network Mapper ist ein Portscanner
allgemeine Syntax
nmap [Art des Scans] <Optionen> Ziel
netstat
- ist ein Diagnose-Werkzeug um Status der Netzwerkschnittstelle(n) auszulesen
allgemeine Syntax
netstat [OPTIONEN]
socket
- Linux Socket Interface
- erstellt einen TCP- oder UNIX-Domain-Socket und stellt eine Verbindung zu Standard In / Out her
- kann u.a. sogar nach außen hin das Vorhandensein eines bestimmten Netzwerkdienstes simulieren, ein Zugriff von außen kann so beobachtet werden
user@ubuntu-server:~$ socket -wslqvp "Echo Socket!" 1938
Ablauf des Befehls:
- erstellt einen Server-Socket an Port 1938 auf dem local host und wartet auf eine Verbindung.
- Wenn eine Verbindung akzeptiert wird, wird die Zeichenfolge "Socket!" in den Socket geschrieben.
- Es werden keine Daten aus dem Socket gelesen oder in das Programm finger - Suchprogramm für Benutzerinformationen - geschrieben.
- Die Verbindung wird geschlossen, wenn eine Dateiende-Bedingung an der Standardausgabe des Programms auftritt.
- Dann wird eine neue Verbindung angenommen.
Ressourcenverwendung kontrollieren
ulimit
- Ressourcengrenze ausgeben lassen oder neu setzen
- Einstellungen hierfür sollten genauso wie die initiale PATH-Variable in der Datei /etc/profile festgelegt werden
allgemeine Syntax
ulimit [Optionen] [n]
[n] für Number
- Überblick verschaffen, welche Grenzen gesetzt werden können mit:
# ulimit -a
- folgende ulimit-Werte werden beispielsweise gern eingesetzt, um primitive DOS-(Denial of Service-)Angriffe zu erschweren (natürlich sind die Werte auch abhängig von der Anwendung eines Rechners) und sollten in der /etc/profile festgelegt werden
# Core Dumps verhindern ulimit -c 0 # keine Dateien größer 512 MB zulassen ulimit -f 512000 # weiches Limit von max. 250 Filedeskriptoren ulimit -S -n 250 # weiches Maximum von 100 Prozessen ulimit -S -u 100 # Speicherbenutzung max. 50 MB ulimit -H -v 50000 # weiches Limit der Speichernutzung 20 MB ulimit -S -v 20000
Offene Dateien
lsof
- steht für List Open Files,
- gibt Informationen über geöffnete Dateien ausführen, wichtig bei Problemen beim Aushängen von Datenträgern,
- kann auch zur Überprüfung von Netzwerkdiensten genutzt werden
allgemeine Syntax:
lsof [Option] <Format>
Nutzung von lsof ohne Option macht wenig Sinn, da Liste geöffneter Dateien sehr lang => Ergebnisübergabe durch Pipe an andere Programme, beispielsweise an Wc
root@archangel:/# lsof |wc -l
Welche Prozesse stellen Verbindung zum Netzwerk her?
root@archangel:~# lsof -i :80
fuser
- Identifizieren von Prozessen mithilfe von Dateien oder Sockets
- Alternative für lsof
- Besonderheit: kann auch ermitteln, von wem oder was Sockets verwendet werden
root@fedora ~# fuser -m -u /home/harald/test /home/harald/test: 12915(harald)
=> PID 1295 von Benutzer harald
- Ermittlung des verwendeten Programms ist nun kein Problem mehr
[root@fedora ~]# ps aux | grep 12915 harald 12915 0.0 0.1 13664 4204 pts/6 S+ 10:42 0:00 vi test
Arbeiten mit erhöhten Rechten
Superuser
su
- für substitute user
- einen Befehl unter anderer Benutzer- oder Gruppenkennung ausführen
allgemeine Syntax
su [Optionen] [-] [Benutzer [Argument]]
ohne Optionen mit root-Password zu root werden
user@ubuntu-server:~$ su Password:
Identität eines anderen Benuters annehmen, um Umgebung diesses Buntzers zu überprüfen
root@archangel:~# su -l dominik dominik@archangel:~$
Sudoer
sudo
- ein einziges Kommando mit root-Rechten ausführen
- Berechtigungen müssen in der Datei /etc/sudoers definiert werden.
- Laut Buch sollte /etc/sudoers' mit visudo bearbeitet werden, da dabei ein Syntax-Check durchgeführt wird.
- Neue Sudoer könne dort direkt angelegt werden - praktischer ist indirekte Zuweisung über Grupperzugehörigkeiten, beispielsweise in Gruppe admin
- Versuch sudo zu verwenden, wird protokolliert und kann per Mail an root gesendet werden
harald@archangel:~$ sudo apt-get install orca [sudo] password for harald:
Feststellen, wer an einem System angemeldet ist oder war
w, who, last
w
- zeigt an, wer angemeldet ist und was sie tun, verwendet die Datei /var/run/utmp
allgemeine Syntax:
w [husfVo] [Benutzer]
who
- anzeigen, wer angemeldet ist, verwendet ebenfalls die Datei /var/run/utmp
allgemeine Syntax:
who [OPTION]... [ FILE | ARG1 ARG2 ]
Besonderheit gegenüber w u.a.: Option -b, - -boot: Anzeige des letzten Systemstarts
last
- eine Liste der zuletzt angemeldeten Benutzer anzeigen, wichtig für Suche nach Auslöser für Probleme,
- greift je nach Distribution auf Datei /var/log/wtmp (bei Debian) oder /var/log/btmp,
- falls keine vorhanden mit touch einfach jeweilige Datei erzeugen, wird dann nach Neustart automatisch befüllt
allgemeine Syntax
last [OPTION] [Benutzername…] [TTY…]
Quellen
- Buch LPIC1 Version 5 (Kapitel 110.1 S 435-443)
- ubuntuusers
Manpages
- find
- passwd
- chage
- nmap
- netstat
- socket
- ulimit
- lsof
- fuser
- su
- sudo
- w
- who
- last