IT-Sicherheit
Datum: 21.05.2021
Sicherheitsinstitutionen
Zuerst müssen wir hier natürlich das Bundesamt für Sicherheit in der Informationstechnik erwähnen, das einen Grundschutzkatalog anbietet und die wichtigsten Schutzziele definiert:
Vertraulichkeit
Verfügbarkeit
Integrität
Authentizität
Verbindlichkeit
Anlaufstellen für Sicherheitsvorkommnisse sind jedoch eher diese Organisationen:
Bugtraq: https://www.securityfocus.com/ = eine moderierte Mailingliste
CERT (Computer Emergency Response Team): https://de.wikipedia.org/wiki/Computer_Emergency_Response_Team
CIAC (Computer Incident Advisory Capability): https://en.wikipedia.org/wiki/Computer_Incident_Advisory_Capability
Private Webportale:
Manuelle Untersuchung
In Voraussetzung sollte eine Härtung der Systeme durchgeführt worden sein (unnütze Software entfernen, Nutzeraccounts und ssh-Logins mit ~/.ssh/authorized_keys überprüfen, …), danach stellt sich die Frage, welche Dienste über evl. Routing/Forwarding-Verfahren erreichbar sind.
my@bash $ telnet 10.1.1.3 25
Trying 10.1.1.3...
Connected to 10.1.1.3.
Escape character is '^]'.
220 deb-int1.haus1.tld ESMTP Postfix (Debian/GNU)
helo ichbins
250 deb-int1.haus1.tld
mail from: axel@pemmann.de
250 2.1.0 Ok
rcpt to: tux@localhost
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Willkommen in 2021...
.
250 2.0.0 Ok: queued as E3EA2672D
quit
221 2.0.0 Bye
Connection closed by foreign host.
my@bash $
my@bash $ find /home/*/.maildir/ -cmin -3
/home/tux/.maildir/
/home/tux/.maildir/tmp
/home/tux/.maildir/new
/home/tux/.maildir/new/1609747366.M849266P545.deb-int1,S=395,W=406
/home/tux/.maildir/dovecot.index.log
/home/tux/.maildir/dovecot-uidlist
/home/tux/.maildir/dovecot.index.cache
my@bash $
my@bash $ cat /home/tux/.maildir/new/1609747366.M849266P545.deb-int1\,S\=395\,W\=406
Return-Path: <axel@pemmann.de>
X-Original-To: tux@localhost
Delivered-To: tux@localhost
Received: from ichbins (unknown [10.1.1.3])
by deb-int1.haus1.tld (Postfix) with SMTP id E3EA2672D
for <tux@localhost>; Mon, 4 Jan 2021 09:01:04 +0100 (CET)
Message-Id: <20210104080200.E3EA2672D@deb-int1.haus1.tld>
Date: Mon, 4 Jan 2021 09:01:04 +0100 (CET)
From: axel@pemmann.de
Willkommen in 2021...
my@bash $
Wieder auf den Host zurückgekehrt, soll von hier aus die Mail-Kommunikation getestet werden:
my@bash $ lxc exec alp-router bash
bash-4.4#
bash-4.4# ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP qlen 1000
inet 192.168.2.103/24 scope global eth0
valid_lft forever preferred_lft forever
8: eth1@if9: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP qlen 1000
inet 10.1.1.1/24 scope global eth1
valid_lft forever preferred_lft forever
bash-4.4#
bash-4.4#
bash-4.4# iptables -t nat -vnL PREROUTING
Chain PREROUTING (policy ACCEPT 609 packets, 36974 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 to:10.1.1.3:993
0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:10.1.1.3:25
bash-4.4#
bash-4.4#
bash-4.4# ## >> Jetzt wird klar, wie wir von SuSE aus den Mail-Server ansprechen müssen: via 192.168.2.103 und Port 25.
bash-4.4#
my@bash $ ## Versuchen wir nun wieder vom SuSE-Host aus, den Mail-Server zu erreichen:
my@bash $ telnet 192.168.2.103 25
Trying 192.168.2.103...
Connected to 192.168.2.103.
Escape character is '^]'.
220 deb-int1.haus1.tld ESMTP Postfix (Debian/GNU)
ehlo pemmann.de
250-deb-int1.haus1.tld
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
quit
221 2.0.0 Bye
Connection closed by foreign host.
my@bash $
my@bash $ ## >> Alles OK.
Auf dem Alp-Router Updates und das vollständige ‚lsof‘-Kommando installieren:
my@bash $ apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.6-134-g6ba14936d5 [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.6-135-g2b576c0b2c [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9774 distinct packages available
my@bash $
my@bash $ apk upgrade
OK: 57 MiB in 80 packages
my@bash $
my@bash $ apk -dv search lsof
lsof-doc-4.91-r0 - LiSt Open Files (documentation)
lsof-4.91-r0 - LiSt Open Files
my@bash $
my@bash $ ls -l /usr/bin/lsof
lrwxrwxrwx 1 root root 12 Aug 20 10:00 /usr/bin/lsof -> /bin/busybox
my@bash $
my@bash $ apk add lsof
(1/1) Installing lsof (4.91-r0)
Executing busybox-1.29.3-r10.trigger
OK: 57 MiB in 81 packages
my@bash $
my@bash $ ls -l /usr/bin/lsof
-rwxr-xr-x 1 root root 142456 Dec 19 2018 /usr/bin/lsof
my@bash $
my@bash $ ## >> Deutlich zu sehen: lsof ist nun ein standalone-Kommando.
my@bash $
my@bash $ lsof -i -Pn
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dhcpd 428 dhcp 8u IPv4 34727 0t0 UDP *:67
sshd 491 root 3u IPv4 36454 0t0 TCP *:22 (LISTEN)
sshd 491 root 4u IPv6 36456 0t0 TCP *:22 (LISTEN)
my@bash $
my@bash $ ## >> Dieser minimale Router führt lediglich einen DHCP-Client und den SSHD aus.
my@bash $
my@bash $ ## Dies zur Sicht von innen heraus (iptables: "lokale Prozesse").
Wir testen nun vom „Internet“ aus, was der Router zuzüglich iptables/PREROUTING anbietet:
my@bash $ ## __Auf SusiLeap.haus1.tld (LXD-Host + Master DNS)__
my@bash $ /bin/su -
Passwort:
my@bash $
my@bash $ nmap -PN -F 192.168.2.103
Starting Nmap 7.70 ( https://nmap.org ) at 2021-01-04 09:24 CET
Nmap scan report for 192.168.2.103
Host is up (0.000014s latency).
Not shown: 97 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
993/tcp open imaps
MAC Address: 00:16:3E:DC:92:41 (Xensource)
Nmap done: 1 IP address (1 host up) scanned in 1.56 seconds
my@bash $
my@bash $ ## >> Die war ein Default TCP-Scan (-sT)
my@bash $
my@bash $
my@bash $ nmap -PN -F -sU 192.168.2.103
Starting Nmap 7.70 ( https://nmap.org ) at 2021-01-04 09:25 CET
Stats: 0:00:22 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 42.56% done; ETC: 09:26 (0:00:31 remaining)
Stats: 0:00:34 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 52.89% done; ETC: 09:26 (0:00:31 remaining)
my@bash $ nmap -PN -F -sU 192.168.2.103
Starting Nmap 7.70 ( https://nmap.org ) at 2021-01-04 09:25 CET
Stats: 0:00:22 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 42.56% done; ETC: 09:26 (0:00:31 remaining)
Stats: 0:00:34 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 52.89% done; ETC: 09:26 (0:00:31 remaining)
Nmap scan report for 192.168.2.103
Host is up (0.00011s latency).
Not shown: 99 closed ports
PORT STATE SERVICE
67/udp open|filtered dhcps
MAC Address: 00:16:3E:DC:92:41 (Xensource)
Nmap done: 1 IP address (1 host up) scanned in 103.36 seconds
my@bash $
Auf dem internen Debian-Mail-Server einen Port testweise/“versehentlich“ öffnen:
my@bash $ apt-get install netcat-openbsd
my@bash $ # OK.
my@bash $
my@bash $ nc -l -p 80 -v
Listening on [0.0.0.0] (family 2, port 80)
Nun Testen wir wieder mit dem Portscanner, geben allerdings die Portnummern an:
my@bash $ ## __Auf SusiLeap.haus1.tld (LXD-Host + Master DNS)__
my@bash $ nmap -PN -p22,25,80,135,137-139,143,993 192.168.2.103
Starting Nmap 7.70 ( https://nmap.org ) at 2021-01-04 09:57 CET
Nmap scan report for 192.168.2.103
Host is up (0.000064s latency).
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp closed http
135/tcp closed msrpc
137/tcp closed netbios-ns
138/tcp closed netbios-dgm
139/tcp closed netbios-ssn
143/tcp closed imap
993/tcp open imaps
MAC Address: 00:16:3E:DC:92:41 (Xensource)
Nmap done: 1 IP address (1 host up) scanned in 0.55 seconds
my@bash $
my@bash $
my@bash $ ## >> Port 80 ist weder auf dem Router selber noch via PREROUTING aktiv. :-)
Testweise den Port 80 weiterleiten (PAT):
my@bash $ hostname -f
alp-router.haus1.tld
my@bash $
my@bash $ iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.1.1.3:80
my@bash $
my@bash $ iptables -t nat -vnL PREROUTING
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2 88 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 to:10.1.1.3:993
3 148 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:10.1.1.3:25
0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:10.1.1.3:80
my@bash $
Wir testen wiederum vom SuSE-Host aus:
my@bash $ nmap -PN -p80 192.168.2.103
Starting Nmap 7.70 ( https://nmap.org ) at 2021-01-04 10:02 CET
Nmap scan report for 192.168.2.103
Host is up (0.00013s latency).
PORT STATE SERVICE
80/tcp open http
MAC Address: 00:16:3E:DC:92:41 (Xensource)
Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
my@bash $
Automatische Sicherheitssysteme
Grundbegriffe
Eine sinnvolle Unterteilung:
Intrusion Prevention System (IPS): vorbeugendes Verhindern von Einbrüchen (z.B. fail2ban, artillery)
Host based Intrusion Detection System (HIDS): Überwachung des lokalen Hosts mit seinen Dateien (z.B. aide, tripwire)
Network based Intrusion Detection System (NIDS): Überwachung des lokalen Netzwerks (z.B. snort, suricata, prelude)
Spezielle iptables-Regeln
Grundpolicy DROP nutzen:
iptables -P INPUT DROP
SPI-Regeln für den OUTPUT nutzen:
iptables ... -m conntrack --ctstate ESTABLISHED,RELATED ...
Limitierung von eintreffenden Datenpaketen:
iptables ... -m limit --limit 3/hour --limit-burst 3 ...
Siehe dazu auch: