LPIC102/110.1 Administrationsaufgaben für Sicherheit durchführen: Unterschied zwischen den Versionen
K Textersetzung - „ “ durch „ “ |
|||
(51 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= | ==Auffinden von Dateien mit gesetztem SUID/SGID-Bit== | ||
Zeile 15: | Zeile 14: | ||
Suche nach Programmen mit setztem SUID: | Suche nach Programmen mit setztem SUID: | ||
<pre> | <pre> # find / -perm -u+s </pre> | ||
Suche nach Programmen mit setztem SGID: | Suche nach Programmen mit setztem SGID: | ||
<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== | ||
Zeile 27: | Zeile 25: | ||
=== passwd === | === passwd === | ||
*von | *von '''passw'''or'''d''', ändert die Passwörter eines Benutzers oder einer ganzen Gruppe | ||
*passwd greift auf ''/etc/passwd zu | |||
Link weiterführende Information zu ''/etc/passwd'': | |||
[https://wiki.itw-berlin.net/index.php?title=Passwd:_Die_Datei_/etc/passwd#Die_Datei_.2Fetc.2Fpasswd 'Die Datei /etc/passwd'] | |||
Zeile 40: | Zeile 43: | ||
===chage=== | ===chage=== | ||
*Ändert die Informationen über die Gültigkeit eines Userpassworts | |||
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, netstat und socket== | ||
Zeile 52: | Zeile 61: | ||
===nmap=== | ===nmap=== | ||
*für '''N'''etwork '''Map'''per ist ein Portscanner | |||
allgemeine Syntax | allgemeine Syntax | ||
Zeile 59: | Zeile 69: | ||
===netstat=== | ===netstat=== | ||
*ist ein Diagnose-Werkzeug um Status der Netzwerkschnittstelle(n) auszulesen | |||
allgemeine Syntax | allgemeine Syntax | ||
<pre>netstat [OPTIONEN]</pre> | <pre>netstat [OPTIONEN]</pre> | ||
===socket=== | ===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 | |||
<pre>user@ubuntu-server:~$ socket -wslqvp "Echo Socket!" 1938</pre> | |||
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== | ==Ressourcenverwendung kontrollieren== | ||
===ulimit=== | ===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 81: | Zeile 105: | ||
[n] für Number | [n] für Number | ||
*Überblick verschaffen, welche Grenzen gesetzt werden können mit: | |||
*folgende ulimit-Werte werden z. B. 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># ulimit -a</pre> | ||
*folgende ulimit-Werte werden z. B. 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 100: | Zeile 126: | ||
ulimit -S -v 20000</pre> | ulimit -S -v 20000</pre> | ||
==Offene Dateien== | |||
===lsof=== | ===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, | |||
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 | ||
kann auch zur Überprüfung von Netzwerkdiensten genutzt werden | |||
Zeile 114: | Zeile 138: | ||
<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 | ||
=> Ergebnisübergabe durch Pipe an andere Programme, z. B. an Wc | => Ergebnisübergabe durch Pipe an andere Programme, z. B. an Wc | ||
<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 125: | Zeile 151: | ||
===fuser=== | ===fuser=== | ||
*Identifizieren von Prozessen mithilfe von Dateien oder Sockets | |||
Besonderheit: kann auch ermitteln, von wem oder was Sockets verwendet werden | *Alternative für lsof | ||
*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 133: | Zeile 161: | ||
=> 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== | |||
===Superuser=== | ===Superuser=== | ||
====su==== | ====su==== | ||
*für '''s'''ubstitute '''u'''ser | |||
*einen Befehl unter anderer Benutzer- oder Gruppenkennung ausführen | |||
Zeile 157: | Zeile 187: | ||
<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 166: | Zeile 197: | ||
====sudo==== | ====sudo==== | ||
*ein einziges Kommando mit root-Rechten ausführen | |||
*Berechtigungen müssen in der Datei /etc/sudoers definiert werden. | |||
Neue Sudoer könne dort direkt angelegt werden – praktischer ist indirekte Zuweisung über Grupperzugehörigkeiten, z.B. in Gruppe admin | *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, z. B. in Gruppe admin | |||
Versuch sudo zu verwenden, wird protokolliert und kann per Mail an root gesendet werden | *Versuch sudo zu verwenden, wird protokolliert und kann per Mail an root gesendet werden | ||
<pre>harald@archangel:~$ sudo apt-get install orca | |||
[sudo] password for harald:</pre> | |||
==Feststellen, wer an einem System angemeldet ist oder war== | ==Feststellen, wer an einem System angemeldet ist oder war== | ||
Zeile 182: | Zeile 214: | ||
====w==== | ====w==== | ||
*zeigt an, wer angemeldet ist und was sie tun, verwendet die Datei ''/var/run/utmp'' | |||
allgemeine Syntax: | allgemeine Syntax: | ||
Zeile 189: | Zeile 221: | ||
====who==== | ====who==== | ||
*anzeigen, wer angemeldet ist, verwendet ebenfalls die Datei ''/var/run/utmp'' | |||
allgemeine Syntax: | allgemeine Syntax: | ||
Zeile 199: | Zeile 231: | ||
====last==== | ====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 | allgemeine Syntax | ||
Zeile 206: | Zeile 240: | ||
==Quellen== | ==Quellen== | ||
Buch LPIC1 Version 5 (Kapitel 110.1 S 435-443) [https://wiki.ubuntuusers.de ubuntuusers] Manpages von find, passwd, chage, nmap, netstat, socket, ulimit, lsof, fuser, su, sudo, w, who, last | Buch LPIC1 Version 5 (Kapitel 110.1 S 435-443) [https://wiki.ubuntuusers.de ubuntuusers][https://de.wikipedia.org Wikipedia] Manpages von find, passwd, chage, nmap, netstat, socket, ulimit, lsof, fuser, su, sudo, w, who, last | ||
[[Kategorie:Linux/LPIC/102]] | |||
[[Kategorie:Linux/Sicherheit]] |
Aktuelle Version vom 28. Mai 2023, 11:30 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:
'Die Datei /etc/passwd'
Die allgemeine Syntax zum Verwalten (Sperren, Löschen etc.) 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 z. B. 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, z. B. 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, z. B. 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) ubuntuusersWikipedia Manpages von find, passwd, chage, nmap, netstat, socket, ulimit, lsof, fuser, su, sudo, w, who, last