Linux/Sicherheit: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 28: | Zeile 28: | ||
firefox-b 1465 mik 49u IPv4 130525 0t0 TCP kanzler.lan:59323->proxyserver.newsnetz.ch:www (CLOSE_WAIT) | firefox-b 1465 mik 49u IPv4 130525 0t0 TCP kanzler.lan:59323->proxyserver.newsnetz.ch:www (CLOSE_WAIT) | ||
Die erste Spalte zeigt den Befehl, der die Netzwerkverbindung geöffnet hat (hier "firefox-bin"), daneben stehen die | Die erste Spalte zeigt den Befehl, der die Netzwerkverbindung geöffnet hat (hier "firefox-bin"), daneben stehen die Prozessnummer und der Benutzer. Die Spalte "NODE" teigt das Protokoll (TCP oder UDP), das der Dienst für seine Kommunikation mit der Aussenwelt benutzt. Die Spalte "NAME" zeigt die Adresse und den [[Port]] des Dienstes, wobei sowohl für Adresse und Port die Klartextnamen aus den Dateien "/etc/hosts" und "/etc/services" eingesetzt werden; dieses Verhalten lässt sich mit den Optionen "-n" (no host names) und "-P" (no port names) unterdrücken. | ||
$ <b>lsof -i -n -P</b> | $ <b>lsof -i -n -P</b> | ||
Zeile 36: | Zeile 36: | ||
Erscheint als Adresse in der letzten Spalte "localhost" oder "127.0.0.1", so lässt sich der betreffende Dienst nur lokal erreichen. | Erscheint als Adresse in der letzten Spalte "localhost" oder "127.0.0.1", so lässt sich der betreffende Dienst nur lokal erreichen. | ||
2. Der Rechner wird von aussen mit dem Befehl [[nmap]] gescannt. | 2. Der Rechner wird von aussen mit dem Befehl [[nmap]] gescannt, denn der Befehl "lsof" kann nicht erkennen, ob ein geöffneter Port von aussen grundsätzlich erreichbar ist. | ||
Der folgende Befehl zeigt alle auf dem Rechner mit der IP-Adresse "xxx.xxx.xxx.xxx" verfügbaren TCP-Dienste: | |||
$ <b>sudo nmap -sS xxx.xxx.xxx.xxx</b> | |||
Starting Nmap 5.00 ( <nowiki>http://nmap.org</nowiki> ) at 2010-11-28 21:35 CET | |||
Interesting ports on dsldevice.lan (xxx.xxx.xxx.xxx): | |||
Not shown: 994 filtered ports | |||
PORT STATE SERVICE | |||
21/tcp open ftp | |||
23/tcp open telnet | |||
80/tcp open http | |||
443/tcp open https | |||
1723/tcp open pptp | |||
6881/tcp closed bittorrent-tracker | |||
Nmap done: 1 IP address (1 host up) scanned in 7.05 seconds | |||
Der folgende Befehl zeigt alle auf dem Rechner mit der IP-Adresse "xxx.xxx.xxx.xxx" verfügbaren UDP-Dienste. In diesem Fall kann der Zustand des Ports nicht einwandfrei ermittelt werden - befindet sich eine Firewall vor dem gescannten Rechner, welche diese Pakete verwirft, so werden alle UDP-Ports als offen gekennzeichnet! | |||
$ <b>sudo nmap -sU xxx.xxx.xxx.xxx</b> | |||
Starting Nmap 5.00 ( <nowiki>http://nmap.org</nowiki> ) at 2010-11-28 21:36 CET | |||
Interesting ports on dsldevice.lan (xxx.xxx.xxx.xxx): | |||
Not shown: 993 filtered ports | |||
PORT STATE SERVICE | |||
53/udp open|filtered domain | |||
67/udp open|filtered dhcps | |||
68/udp open|filtered dhcpc | |||
123/udp open|filtered ntp | |||
520/udp open|filtered route | |||
1900/udp open|filtered upnp | |||
49152/udp open|filtered unknown | |||
Nmap done: 1 IP address (1 host up) scanned in 102.47 seconds | |||
3. Ausschalten nicht benötigter Netzwerkdienste. Diese werden meist über ein eigenes Startskript unter "/etc/init.d" oder über den Daemon [[inetd]] (bzw. xinetd) gestartet. Letzterer öffnet den Port bereits bei seinem Start, startet den Dienst aber erst bei tatsächlichem Bedarf. | |||
=== Firewall === | |||
Eine [[Firewall]] überacht und steuert den Zugriff auf die noch vorhandenen Netzwerkdienste. | |||
Das folgende einfache Firewallskript erlaubt auf dem Rechner nur ausgehende Verbindungen und deren Antworten. Der Befehl [[iptables]] verwaltet die Firewallregeln im Linux-Kernel. Mit der Option "-F" löscht er zuerst ein möglicherweise bereits vorhandenes Regelwerk. Mit der Option "-P" wird die Policy für die Ketten "INPUT", "FORWARD" und "OUTPUT" auf "DROP" festgelegt, sodass grundsätzlich alle Netzwerkpakete verworfen werden, die nicht ausdrücklich akzeptiert werden. | |||
#!/bin/bash | |||
iptables -F | |||
iptables -P INPUT DROP | |||
iptables -P FORWARD DROP | |||
iptables -P OUTPUT DROP | |||
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | |||
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | |||
iptables -A INPUT -j log --log-prefix "Firewall: " | |||
== Weblinks == | == Weblinks == | ||
Zeile 44: | Zeile 96: | ||
** http://www.linux-community.de/Ticker/advisories.rdf - RSS-Feed mit den Security-Advisories des DFN-CERT | ** http://www.linux-community.de/Ticker/advisories.rdf - RSS-Feed mit den Security-Advisories des DFN-CERT | ||
=== | === Sicherheits-Seiten === | ||
{| class=wiki | {| class=wiki | ||
Zeile 59: | Zeile 111: | ||
| [[Red Hat]] || http://www.redhat.com/security/updates | | [[Red Hat]] || http://www.redhat.com/security/updates | ||
|- | |- | ||
| [[Slackware]] || http://www.slackware.com/security | | [[Slackware Linux]] || http://www.slackware.com/security | ||
|- | |- | ||
| [[Ubuntu]] || http://www.ubuntu.com/usn | | [[Ubuntu]] || http://www.ubuntu.com/usn |
Aktuelle Version vom 7. August 2011, 00:40 Uhr
Grundlage für die Absicherung eines Linux-Rechners ist der Wissensstand seines Systemverwalters. Dieser muss nicht nur zeitnah die verfügbaren Sicherheitsaktualisierungen einspielen, sondern auch Angriffe und Einbrüche erkennen und darauf reagieren können.
Vorgehen
Der Systemverwalter muss folgende Sicherheitselemente im Auge behalten.
Regelmässige Sicherheitsaktualisierungen
Der Systemverwalter schützt seinen Linux-Rechner am einfachsten und besten, indem er sein System auf dem neusten Stand hält und verfügbare Sicherheitsaktualisierungen zeitnah einspielt.
Die meisten Aktualisierungsmöglichkeiten können bei Bedarf als Cronjob auch automatisiert werden. Unter Debian sorgen die folgenden beiden Befehle dafür; der Befehl "apt-get update" bringt die Paketlisten der Distribution auf den aktuellen Stand, wobei die Option "-q" unnötige Ausgaben unterdrückt und "-y" alle aftretenden Fragen automatisch mit Ja beantwortet, der Befehl "apt-get upgrade" spielt anschliessend die neuesten Versionen aller installierten Pakete ein. In dieser Form eignen sich diese beiden Befehle auch für einen automatischen täglichen oder stündlichen Aufruf als Cronjob.
/usr/bin/apt-get update -q -y /usr/bin/apt-get upgrade -q -y
Ein sauber aktualisiertes System bietet mehr Sicherheit als jede Firewall und jeder Virenscanner: Sein Systemnverwalter muss dann nur noch neue, noch unbekannte Sicherhehitslücken fürchten.
Minimalismus
Um den Rechner weniger angreifbar zu machen, sollen alle nicht benötigten Netzwerkdienste abgeschaltet werden.
Die aktuell laufenden Netzwerkdienste können wie folgt ermittelt werden:
1. Der Befehl "lsof -i" zeigt alle auf dem lokalen Rechner geöffneten Dateien an - also auch alle offenen Netzwerkverbindungen. Der Schalter "-i" zeigt alle Internetverbindungen.
$ lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME firefox-b 1465 mik 49u IPv4 130525 0t0 TCP kanzler.lan:59323->proxyserver.newsnetz.ch:www (CLOSE_WAIT)
Die erste Spalte zeigt den Befehl, der die Netzwerkverbindung geöffnet hat (hier "firefox-bin"), daneben stehen die Prozessnummer und der Benutzer. Die Spalte "NODE" teigt das Protokoll (TCP oder UDP), das der Dienst für seine Kommunikation mit der Aussenwelt benutzt. Die Spalte "NAME" zeigt die Adresse und den Port des Dienstes, wobei sowohl für Adresse und Port die Klartextnamen aus den Dateien "/etc/hosts" und "/etc/services" eingesetzt werden; dieses Verhalten lässt sich mit den Optionen "-n" (no host names) und "-P" (no port names) unterdrücken.
$ lsof -i -n -P COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME firefox-b 1465 mik 49u IPv4 137374 0t0 TCP 192.168.1.64:50953->62.12.138.150:80 (CLOSE_WAIT)
Erscheint als Adresse in der letzten Spalte "localhost" oder "127.0.0.1", so lässt sich der betreffende Dienst nur lokal erreichen.
2. Der Rechner wird von aussen mit dem Befehl nmap gescannt, denn der Befehl "lsof" kann nicht erkennen, ob ein geöffneter Port von aussen grundsätzlich erreichbar ist.
Der folgende Befehl zeigt alle auf dem Rechner mit der IP-Adresse "xxx.xxx.xxx.xxx" verfügbaren TCP-Dienste:
$ sudo nmap -sS xxx.xxx.xxx.xxx Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-28 21:35 CET Interesting ports on dsldevice.lan (xxx.xxx.xxx.xxx): Not shown: 994 filtered ports PORT STATE SERVICE 21/tcp open ftp 23/tcp open telnet 80/tcp open http 443/tcp open https 1723/tcp open pptp 6881/tcp closed bittorrent-tracker Nmap done: 1 IP address (1 host up) scanned in 7.05 seconds
Der folgende Befehl zeigt alle auf dem Rechner mit der IP-Adresse "xxx.xxx.xxx.xxx" verfügbaren UDP-Dienste. In diesem Fall kann der Zustand des Ports nicht einwandfrei ermittelt werden - befindet sich eine Firewall vor dem gescannten Rechner, welche diese Pakete verwirft, so werden alle UDP-Ports als offen gekennzeichnet!
$ sudo nmap -sU xxx.xxx.xxx.xxx Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-28 21:36 CET Interesting ports on dsldevice.lan (xxx.xxx.xxx.xxx): Not shown: 993 filtered ports PORT STATE SERVICE 53/udp open|filtered domain 67/udp open|filtered dhcps 68/udp open|filtered dhcpc 123/udp open|filtered ntp 520/udp open|filtered route 1900/udp open|filtered upnp 49152/udp open|filtered unknown Nmap done: 1 IP address (1 host up) scanned in 102.47 seconds
3. Ausschalten nicht benötigter Netzwerkdienste. Diese werden meist über ein eigenes Startskript unter "/etc/init.d" oder über den Daemon inetd (bzw. xinetd) gestartet. Letzterer öffnet den Port bereits bei seinem Start, startet den Dienst aber erst bei tatsächlichem Bedarf.
Firewall
Eine Firewall überacht und steuert den Zugriff auf die noch vorhandenen Netzwerkdienste.
Das folgende einfache Firewallskript erlaubt auf dem Rechner nur ausgehende Verbindungen und deren Antworten. Der Befehl iptables verwaltet die Firewallregeln im Linux-Kernel. Mit der Option "-F" löscht er zuerst ein möglicherweise bereits vorhandenes Regelwerk. Mit der Option "-P" wird die Policy für die Ketten "INPUT", "FORWARD" und "OUTPUT" auf "DROP" festgelegt, sodass grundsätzlich alle Netzwerkpakete verworfen werden, die nicht ausdrücklich akzeptiert werden.
#!/bin/bash iptables -F iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -j log --log-prefix "Firewall: "
Weblinks
- SecurityFocus - Seite zu Rechnersicherheit
- Linux Community
- http://www.linux-community.de/Ticker/advisories.rdf - RSS-Feed mit den Security-Advisories des DFN-CERT