LPIC102/110.1 Administrationsaufgaben für Sicherheit durchführen: Unterschied zwischen den Versionen
K Textersetzung - „ “ durch „ “ |
|||
(43 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
==Auffinden von Dateien mit gesetztem SUID/SGID-Bit== | ==Auffinden von Dateien mit gesetztem SUID/SGID-Bit== | ||
Zeile 18: | 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== | |||
== | === passwd === | ||
*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 80: | Zeile 79: | ||
===socket=== | ===socket=== | ||
*Linux Socket Interface | *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== | ||
Zeile 88: | Zeile 96: | ||
===ulimit=== | ===ulimit=== | ||
*Ressourcengrenze ausgeben lassen oder neu setzen | *Ressourcengrenze ausgeben lassen oder neu setzen | ||
*Einstellungen hierfür sollten genauso wie die initiale PATH-Variable in der Datei ''/etc/profile'' festgelegt werden | |||
Zeile 99: | Zeile 108: | ||
*Überblick verschaffen, welche Grenzen gesetzt werden können mit: | *Überblick verschaffen, welche Grenzen gesetzt werden können mit: | ||
<pre> | <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 | *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 121: | Zeile 130: | ||
===lsof=== | ===lsof=== | ||
*steht für | *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 132: | Zeile 141: | ||
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> | ||
Zeile 140: | Zeile 149: | ||
<pre>root@archangel:~# lsof -i :80</pre> | <pre>root@archangel:~# lsof -i :80</pre> | ||
===fuser=== | ===fuser=== | ||
Zeile 154: | Zeile 162: | ||
*Ermittlung des verwendeten Programms ist nun kein | *Ermittlung des verwendeten Programms ist nun kein Problem mehr | ||
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== | ||
Zeile 169: | Zeile 174: | ||
====su==== | ====su==== | ||
*für '''s'''ubstitute '''u'''ser | |||
*einen Befehl unter anderer Benutzer- oder Gruppenkennung ausführen | *einen Befehl unter anderer Benutzer- oder Gruppenkennung ausführen | ||
Zeile 187: | Zeile 193: | ||
<pre>root@archangel:~# su -l dominik | <pre>root@archangel:~# su -l dominik | ||
dominik@archangel:~$</pre> | dominik@archangel:~$</pre> | ||
===Sudoer=== | ===Sudoer=== | ||
Zeile 194: | Zeile 199: | ||
*ein einziges Kommando mit root-Rechten ausführen | *ein einziges Kommando mit root-Rechten ausführen | ||
Berechtigungen müssen in der Datei /etc/sudoers definiert werden. | *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 208: | Zeile 214: | ||
====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 215: | Zeile 221: | ||
====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 226: | Zeile 232: | ||
====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 | ||
Zeile 234: | 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