Dokumentation und Spickzettel

Kurzreferenzen zum Offenhalten bei der Arbeit. Durchsuche alle Spickzettel gleichzeitig.

Cybersicherheit

OWASP Top 10 (2021)

Die zehn kritischsten Sicherheitsrisiken für Webanwendungen und ihre Bedeutung.

RisikoWas es bedeutet
A01Fehlerhafte Zugriffskontrolle: Nutzer greifen auf Daten oder Aktionen zu, für die sie keine Berechtigung haben.
A02Kryptografische Fehler: sensible Daten werden ohne starke Verschlüsselung übertragen oder gespeichert.
A03Injection: Eingaben werden als SQL-, Shell- oder anderer Code ausgeführt. Umfasst auch Cross-Site-Scripting.
A04Unsicheres Design: Sicherheit wurde nicht von Anfang an eingeplant.
A05Sicherheitsfehlkonfiguration: Standardpasswörter, offene Speicher, zu ausführliche Fehlermeldungen.
A06Anfällige und veraltete Komponenten: alte Bibliotheken mit bekannten Sicherheitslücken.
A07Fehler bei Identifikation und Authentifizierung: schwache Anmeldesicherheit, keine MFA, unsichere Sitzungen.
A08Fehler bei Software- und Datenintegrität: ungeprüfte Updates und Pipelines.
A09Fehler bei Sicherheitsprotokollierung und -überwachung: Angriffe bleiben unbemerkt.
A10Server-Side Request Forgery: Der Server wird dazu gebracht, interne Adressen aufzurufen.

Cybersicherheit

Schritte der Reaktion auf Sicherheitsvorfälle

Der NIST-Lebenszyklus zur Reaktion auf Sicherheitsvorfälle – in der Reihenfolge, in der du ihn durchläufst.

SchrittWas du tust
VorbereitungHalte Pläne, Kontakte, Tools und Backups bereit, bevor etwas passiert.
Erkennung und AnalyseErkenne den Vorfall, bestätige ihn und bewerte seinen Schweregrad.
EindämmungStoppe die Ausbreitung: Isoliere Rechner und sperre Konten oder Adressen.
BeseitigungDie Ursache beseitigen: Malware, Backdoors und kompromittierte Konten.
WiederherstellungSysteme aus sauberen Backups wiederherstellen und genau überwachen.
Gewonnene ErkenntnisseDokumentiere den Vorfall und schließe die Lücken, damit er sich nicht wiederholt.

Netzwerktechnik

Gängige Ports

Ports, denen du auf Servern, bei Scans und in Firewall-Regeln begegnest.

PortDienst
20/tcp · FTP dataDatenkanal für Dateiübertragungen. Unverschlüsselt: besser SFTP verwenden.
21/tcp · FTPSteuerung der Dateiübertragung. Sendet Passwörter im Klartext.
22/tcp · SSHSichere Remote-Anmeldung und Dateiübertragung (SFTP, SCP).
23/tcp · TelnetVeraltete Remote-Anmeldung ohne Verschlüsselung. Deaktivieren und SSH verwenden.
25/tcp · SMTPE-Mail-Zustellung zwischen Mailservern.
53/tcp/udp · DNSAbfragen von Domainnamen.
67/udp · DHCPVergibt IP-Adressen in einem lokalen Netzwerk.
80/tcp · HTTPUnverschlüsselter Webverkehr. Leite ihn auf HTTPS um.
110/tcp · POP3E-Mails herunterladen (veraltet, unverschlüsselt).
123/udp · NTPZeitsynchronisierung.
143/tcp · IMAPE-Mails auf dem Server lesen (unverschlüsselt).
161/udp · SNMPÜberwachung von Netzwerkgeräten. Standard-Community-Strings ändern.
389/tcp · LDAPVerzeichnisdienste wie Active Directory.
443/tcp · HTTPSVerschlüsselter Webverkehr (HTTP über TLS).
445/tcp · SMBWindows-Dateifreigabe. Niemals über das Internet zugänglich machen.
587/tcp · SMTP submissionE-Mails aus einer App oder einem E-Mail-Client mit TLS versenden.
993/tcp · IMAPSE-Mails über TLS lesen.
1433/tcp · MS SQLMicrosoft SQL Server-Datenbank.
3306/tcp · MySQLMySQL- und MariaDB-Datenbanken. Nicht öffentlich zugänglich machen.
3389/tcp · RDPWindows Remote Desktop. Ein beliebtes Angriffsziel: nur über ein VPN zugänglich machen.
5432/tcp · PostgreSQLPostgreSQL-Datenbank. Nicht öffentlich zugänglich machen.
6379/tcp · RedisRedis-Cache. Oft ohne Passwort öffentlich zugänglich.
8080/tcp · HTTP altHäufig verwendeter Port für Entwicklungsserver und Proxys.
27017/tcp · MongoDBMongoDB-Datenbank. Nicht öffentlich zugänglich machen.

Softwareentwicklung

HTTP-Statuscodes

Was die Zahlen in API-Antworten und Browserfehlern bedeuten.

CodeBedeutung
200 OKDie Anfrage war erfolgreich.
201 CreatedEine neue Ressource wurde erstellt.
204 No ContentEs hat funktioniert und es gibt nichts zurückzusenden.
301 Moved PermanentlyDie Adresse wurde dauerhaft geändert; verwende die neue.
304 Not ModifiedDeine Kopie im Cache ist noch aktuell.
400 Bad RequestDie Anfrage ist fehlerhaft aufgebaut oder ungültig.
401 UnauthorizedNicht angemeldet, oder das Token fehlt oder ist abgelaufen.
403 ForbiddenAngemeldet, aber für diese Aktion nicht berechtigt.
404 Not FoundUnter dieser Adresse ist nichts vorhanden.
409 ConflictDie Anfrage steht im Konflikt mit dem aktuellen Zustand, etwa bei einem Duplikat.
429 Too Many RequestsEin Anfragelimit wurde erreicht. Warte und versuche es erneut.
500 Internal Server ErrorAuf dem Server ist ein Fehler aufgetreten.
502 Bad GatewayEin zwischengeschalteter Server hat eine ungültige Antwort vom nächsten Server erhalten.
503 Service UnavailableDer Server ist überlastet oder wegen Wartungsarbeiten nicht erreichbar.

Softwareentwicklung

Git-Befehlsübersicht

Die Git-Befehle für fast jeden Arbeitstag.

BefehlWas es macht
git clone <url>Ein Repository auf deinen Computer kopieren.
git statusÄnderungen und für den Commit vorgemerkte Inhalte anzeigen.
git add -pPrüfe Änderungen und merke sie anschließend einzeln für den Commit vor.
git commit -m "message"Einen Snapshot mit einer Nachricht speichern.
git switch -c featureEinen Branch erstellen und zu ihm wechseln.
git pull --rebaseDie neuesten Änderungen abrufen und deine Änderungen darauf neu anwenden.
git push -u origin featureDeinen Branch hochladen und Tracking einrichten.
git log --oneline --graphEinen kompakten Verlauf mit Branches anzeigen.
git diffNoch nicht für den Commit vorgemerkte Änderungen anzeigen.
git stashUnfertige Änderungen für später beiseitelegen.
git revert <commit>Einen Commit durch einen neuen Commit rückgängig machen und dabei den Verlauf erhalten.

Cloud & Linux

Spickzettel für Linux-Befehle

Die Befehle, die du täglich auf einem Linux-Server verwendest.

BefehlWas es macht
pwdDen aktuellen Ordner anzeigen.
ls -laAlle Dateien mit Details auflisten, einschließlich versteckter Dateien.
cd /var/logIn einen anderen Ordner verschieben.
cat file.txtEine Datei ausgeben.
less file.txtEine lange Datei seitenweise lesen.
grep -i error app.logZeilen finden, die ein Wort enthalten, ohne Groß- und Kleinschreibung zu beachten.
chmod 755 script.shDateiberechtigungen ändern.
chown user:group fileDen Eigentümer einer Datei ändern.
ps auxLaufende Prozesse auflisten.
topCPU- und Speicherauslastung live beobachten.
df -hFreien Speicherplatz anzeigen.
sudo apt update && sudo apt upgradeUpdates unter Debian oder Ubuntu installieren.
ssh user@hostMit einem entfernten Server verbinden.
tail -f /var/log/syslogEine Protokolldatei fortlaufend mitlesen.

Cloud & Linux

Docker- und Kubernetes-Befehle

Erstelle, starte und debugge Container und verwalte sie anschließend in einem Cluster.

BefehlWas es macht
docker build -t app .Erstelle ein Image aus dem Dockerfile in diesem Ordner.
docker run -p 8080:80 appDas Image ausführen und Port 80 als 8080 bereitstellen.
docker psLaufende Container auflisten.
docker logs -f <id>Die Ausgabe eines Containers verfolgen.
docker exec -it <id> shEine Shell in einem laufenden Container öffnen.
kubectl get podsPods im aktuellen Namespace auflisten.
kubectl describe pod <name>Details und aktuelle Ereignisse für einen Pod anzeigen.
kubectl logs <pod>Die Logs eines Pods ausgeben.
kubectl apply -f deploy.yamlRessourcen aus einer Datei erstellen oder aktualisieren.
kubectl rollout undo deployment/appAuf die vorherige Version zurücksetzen.

Netzwerktechnik

DNS-Eintragstypen

Die Einträge in einer DNS-Zone und ihre jeweilige Funktion.

EintragZweck
AOrdnet einem Namen eine IPv4-Adresse zu.
AAAAOrdnet einem Namen eine IPv6-Adresse zu.
CNAMEMacht einen Namen zum Alias eines anderen Namens.
MXGibt an, welche Mailserver E-Mails für die Domain empfangen.
TXTFreitext, verwendet für SPF, DKIM und die Überprüfung der Domaininhaberschaft.
NSListet die für die Domain zuständigen Nameserver auf.
SOAStart of Authority: die wichtigsten Einstellungen und die Seriennummer der Zone.
PTRRückwärtsauflösung: Ordnet einer IP-Adresse einen Namen zu.
SRVVerweist auf den Host und Port eines bestimmten Dienstes.
CAABeschränkt, welche Zertifizierungsstellen Zertifikate ausstellen dürfen.

Netzwerktechnik

Tabelle für CIDR und Subnetzmasken

Präfixlänge, Subnetzmaske, Gesamtzahl der Adressen und nutzbare Hosts.

PräfixMaske · gesamt · nutzbar
/8255.0.0.0 · 16,777,216 · 16,777,214
/16255.255.0.0 · 65,536 · 65,534
/20255.255.240.0 · 4,096 · 4,094
/22255.255.252.0 · 1,024 · 1,022
/24255.255.255.0 · 256 · 254
/25255.255.255.128 · 128 · 126
/26255.255.255.192 · 64 · 62
/27255.255.255.224 · 32 · 30
/28255.255.255.240 · 16 · 14
/29255.255.255.248 · 8 · 6
/30255.255.255.252 · 4 · 2
/32255.255.255.255 · 1 · 1

Netzwerktechnik

Befehle zur Netzwerkdiagnose

Befehle, um herauszufinden, wo eine Verbindung abbricht. Teste nur eigene Systeme oder solche, für die du eine Testerlaubnis hast.

BefehlWas es macht
ping -c 4 example.comPrüfen, ob ein Host antwortet und wie lange es dauert.
traceroute example.comZeige alle Router an, die ein Paket auf seinem Weg passiert.
dig example.com ADNS-Einträge für einen Namen abfragen.
nslookup example.comEine einfachere DNS-Abfrage, die auf den meisten Systemen funktioniert.
curl -I https://example.comNur die Antwort-Header einer Webseite abrufen.
ip addrZeige deine Netzwerkschnittstellen und IP-Adressen an.
ip routeZeige an, wohin der Datenverkehr geleitet wird, einschließlich des Standardgateways.
ss -tulpnPorts im Listen-Modus und die Programme auflisten, die sie geöffnet haben.
nmap -sV 192.168.1.10Scanne einen eigenen Host, um offene Ports und Dienstversionen zu sehen.
tcpdump -i eth0 port 53DNS-Pakete auf einer Schnittstelle erfassen.

Softwareentwicklung

SQL-Spickzettel

Die Anweisungen hinter den meisten Datenbankaufgaben. Übergib Nutzereingaben immer als Parameter, niemals durch das Verketten von Zeichenketten.

AnweisungWas es macht
SELECT name, email FROM users;Spalten aus einer Tabelle lesen.
SELECT * FROM orders WHERE total > 100;Zeilen anhand einer Bedingung filtern.
ORDER BY created_at DESC LIMIT 10Sortiere das Ergebnis und behalte nur die ersten Zeilen.
INSERT INTO users (name) VALUES ($1);Eine Zeile hinzufügen. $1 ist ein Parameter, dessen Wert sicher eingesetzt wird.
UPDATE users SET name = $1 WHERE id = $2;Vorhandene Zeilen ändern. WHERE niemals vergessen.
DELETE FROM sessions WHERE expires_at < now();Passende Zeilen entfernen.
JOIN orders ON orders.user_id = users.idZeilen aus zwei Tabellen zusammenführen, die einen gemeinsamen Wert haben.
SELECT status, count(*) FROM orders GROUP BY status;Zeilen gruppieren und zählen oder ihre Werte summieren.
CREATE INDEX ON users (email);Beschleunige die Suche in einer Spalte.
BEGIN; ... COMMIT;Führe mehrere Anweisungen als eine Alles-oder-nichts-Transaktion aus.

Softwareentwicklung

Spickzettel für reguläre Ausdrücke

Muster zum Durchsuchen und Validieren von Text. Probiere sie im Regex-Tester aus.

MusterTreffer
.Ein beliebiges einzelnes Zeichen außer einem Zeilenumbruch.
\d \w \sEine Ziffer, ein Wortzeichen, ein Leerraumzeichen.
^ $Der Anfang und das Ende des Textes.
\bEine Wortgrenze.
* + ?Null oder mehr, eins oder mehr, null oder eins des vorherigen Elements.
{2,4}Zwischen 2 und 4 des vorherigen Elements.
[abc] [^abc]Eines der aufgeführten Zeichen oder ein beliebiges nicht aufgeführtes Zeichen.
(cat|dog)Eine Gruppe, die cat oder dog erkennt und den Treffer speichert.
(?:cat|dog)Dieselbe Gruppe, ohne sie zu speichern.
(?=x)Ein Lookahead: nur wenn x folgt, ohne es zu konsumieren.

Cloud & Linux

Grundlagen der Bash-Skripterstellung

Die Bausteine von Shell-Skripten zur Automatisierung.

SyntaxBedeutung
#!/usr/bin/env bashErste Zeile: welches Programm das Skript ausführt.
set -euo pipefailBei Fehlern, nicht gesetzten Variablen und fehlgeschlagenen Pipes abbrechen. Ein sichererer Standard.
name="web01"; echo "$name"Definiere und verwende eine Variable. Setze sie in Anführungszeichen, damit Leerzeichen erhalten bleiben.
if [ -f "$file" ]; then ... fiFühre Befehle nur aus, wenn eine Bedingung erfüllt ist – hier, wenn eine Datei existiert.
for f in *.log; do ... doneBefehle für jedes Element einer Liste wiederholen.
cmd1 | cmd2Leite die Ausgabe eines Befehls an einen anderen weiter.
cmd > out.txt cmd >> out.txtAusgabe in eine Datei schreiben und dabei den Inhalt ersetzen oder ergänzen.
$?Der Exit-Code des letzten Befehls. 0 bedeutet Erfolg.
cmd1 && cmd2 cmd1 || cmd2Führe den zweiten Befehl nur aus, wenn der erste erfolgreich ist oder wenn er fehlschlägt.
chmod +x script.sh && ./script.shEin Skript ausführbar machen und ausführen.

Cloud & Linux

Cron-Zeitplansyntax

Fünf Felder: Minute, Stunde, Tag des Monats, Monat und Wochentag. Probiere sie in der Cron-Erklärung aus.

AusdruckAusführungen
* * * * *Jede Minute.
*/15 * * * *Alle 15 Minuten.
0 * * * *Zu jeder vollen Stunde.
0 2 * * *Täglich um 02:00 Uhr.
30 9 * * 1-5Um 09:30 Uhr an Wochentagen, Montag bis Freitag.
0 0 1 * *Am ersten Tag jedes Monats um Mitternacht.
0 0 * * 0Jeden Sonntag um Mitternacht.
0 8,20 * * *Zweimal täglich, um 08:00 und 20:00 Uhr.

Cloud & Linux

Linux-Berechtigungsmodi

Gängige chmod-Werte und ihre Einsatzbereiche. Lesen ist 4, Schreiben ist 2, Ausführen ist 1.

ModusBedeutung
777 rwxrwxrwxJeder darf alles. Fast nie die richtige Wahl.
755 rwxr-xr-xEigentümer: Vollzugriff, andere: Lesen und Ausführen. Typisch für Programme und Ordner.
750 rwxr-x---Eigentümer: Vollzugriff, Gruppe: Lesen und Ausführen, andere: kein Zugriff.
700 rwx------Nur der Eigentümer hat Zugriff. Gut für private Ordner.
664 rw-rw-r--Eigentümer und Gruppe dürfen bearbeiten, andere dürfen lesen.
644 rw-r--r--Der Eigentümer darf bearbeiten, alle dürfen lesen. Typisch für Webdateien.
640 rw-r-----Der Eigentümer darf bearbeiten, die Gruppe darf lesen. Gut für Konfigurationsdateien mit Passwörtern.
600 rw-------Nur der Eigentümer darf lesen und schreiben. Für private SSH-Schlüssel erforderlich.
400 r--------Nur Lesezugriff für den Eigentümer. Gut für Schlüssel, die sich nie ändern.

Cybersicherheit

Web-Sicherheitsheader und Cookie-Flags

Antwort-Header, die Browser zu sichererem Verhalten verpflichten.

Header oder FlagWas es schützt
Content-Security-PolicyBeschränkt, aus welchen Quellen Skripte, Bilder und Frames geladen werden dürfen. Starker Schutz gegen XSS.
Strict-Transport-SecurityWeist Browser an, für diese Website immer HTTPS zu verwenden.
X-Content-Type-Options: nosniffVerhindert, dass Browser Dateitypen erraten und getarnte Skripte ausführen.
X-Frame-Options: DENYVerhindert, dass andere Websites deine in einem Frame anzeigen (Clickjacking).
Referrer-PolicySteuert, wie viel von deiner Adresse an andere Websites gesendet wird.
Permissions-PolicyDeaktiviert Browserfunktionen wie Kamera oder Standort für die Seite.
Set-Cookie: HttpOnlyVerbirgt das Cookie vor JavaScript, sodass es nicht per XSS gestohlen werden kann.
Set-Cookie: SecureSendet das Cookie nur über HTTPS.
Set-Cookie: SameSite=LaxBeschränkt Cookies bei websiteübergreifenden Anfragen und reduziert so CSRF.
Access-Control-Allow-OriginCORS: Welche anderen Websites Antworten deiner API lesen dürfen.

Cybersicherheit

Kryptografie auf einen Blick

Welche Algorithmen sich für welche Aufgaben eignen und welche man vermeiden sollte.

AlgorithmusWas es ist und wann man es verwendet
AES-256-GCMSchnelle symmetrische Verschlüsselung für gespeicherte und übertragene Daten. Derselbe Schlüssel dient zum Ver- und Entschlüsseln.
ChaCha20-Poly1305Ein modernes symmetrisches Verschlüsselungsverfahren, ideal für Smartphones ohne Hardware-AES.
RSA 2048+Public-Key-Verschlüsselung und Signaturen. Langsamer, hauptsächlich zum Schlüsselaustausch verwendet.
ECDSA / Ed25519Kompakte Public-Key-Signaturen mit kleineren Schlüsseln als bei RSA.
Diffie-HellmanErmöglicht zwei Parteien, über einen offenen Kanal ein gemeinsames Geheimnis zu vereinbaren.
SHA-256Ein kryptografischer Hash für Fingerabdrücke und Integritätsprüfungen. Nicht für Passwörter geeignet.
HMACEin mit einem geheimen Schlüssel kombinierter Hash, der nachweist, dass eine Nachricht nicht verändert wurde.
bcrypt / Argon2Langsame Hashverfahren mit Salt, die zur Speicherung von Passwörtern entwickelt wurden.
TLS 1.3Das Protokoll hinter HTTPS. Verwende es und deaktiviere alte Versionen.
MD5 / SHA-1Für Sicherheitszwecke ungeeignet. Verwende sie niemals für Signaturen oder Passwörter.

Cybersicherheit

Glossar gängiger Angriffe

Leicht verständliche Definitionen der Angriffe, von denen du am häufigsten hören wirst.

AngriffWas es ist
PhishingGefälschte Nachrichten, die Menschen dazu verleiten, Passwörter preiszugeben oder schädliche Links anzuklicken.
RansomwareMalware, die Dateien sperrt und eine Zahlung für deren Freigabe verlangt.
DDoSEinen Dienst mit Datenverkehr von vielen Rechnern überfluten, sodass echte Nutzer keinen Zugriff mehr haben.
Man-in-the-MiddleSich heimlich zwischen zwei Parteien schalten, um ihre Nachrichten zu lesen oder zu verändern.
Brute ForceDas Ausprobieren vieler Passwörter, bis eines funktioniert.
Credential StuffingDas Ausprobieren geleakter Kombinationen aus Benutzernamen und Passwörtern auf anderen Websites.
Zero-DayEin Angriff auf eine Schwachstelle, die dem Hersteller noch nicht bekannt ist und für die daher kein Patch existiert.
LieferkettenangriffKompromittieren eines Lieferanten oder Softwarepakets, um dessen Kunden zu erreichen.
RechteausweitungDas Ausweiten eingeschränkter Zugriffsrechte zu Administratorrechten.
Social EngineeringMenschen statt Computer manipulieren, um Zugriff zu erhalten.
Insider-BedrohungSchaden, den eine Person mit legitimem Zugriff absichtlich oder versehentlich verursacht.

Cybersicherheit

MITRE ATT&CK-Taktiken

Die 14 Phasen, die Angreifer durchlaufen – eine gemeinsame Sprache für Verteidiger.

TaktikDas Ziel des Angreifers
AufklärungInformationen über das Ziel sammeln.
RessourcenentwicklungInfrastruktur, Konten und Tools für den Angriff einrichten.
ErstzugriffEinen ersten Zugang erlangen, zum Beispiel durch Phishing.
AusführungSchadcode auf dem System ausführen.
PersistenzZugriff nach Neustarts und Passwortänderungen beibehalten.
RechteausweitungHöhere Berechtigungen erlangen.
Umgehung von SchutzmaßnahmenVermeiden, erkannt oder blockiert zu werden.
Zugriff auf AnmeldedatenKontonamen und Passwörter stehlen.
ErkundungDie Umgebung und ihre Bestandteile erkunden.
Laterale BewegungVon einem System zu anderen im Netzwerk wechseln.
SammlungDie relevanten Daten sammeln.
Command and ControlMit kompromittierten Systemen kommunizieren, um sie zu steuern.
ExfiltrationDaten aus dem Netzwerk entwenden.
AuswirkungSysteme und Daten stören, zerstören oder sperren.