Linux/Sicherheit: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: == Weblinks == * [http://www.securityfocus.com/ SecurityFocus] - Seite zu Computer-Sicherheit * [http://www.linux-community.de/ Linux Community] ** http://www.linux-co...)
 
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
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.
$ <b>lsof -i</b>
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.
$ <b>lsof -i -n -P</b>
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:
$ <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 ==


* [http://www.securityfocus.com/ SecurityFocus] - Seite zu Computer-Sicherheit
* [http://www.securityfocus.com/ SecurityFocus] - Seite zu Rechnersicherheit
* [http://www.linux-community.de/ Linux Community]
* [http://www.linux-community.de/ Linux Community]
** 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


=== Security-Seiten ===
=== Sicherheits-Seiten ===


* Debian: http://www.debian.org/security
{| class=wiki
* Gentoo: http://www.gentoo.org/security/en
! Distribution !! URL
* Novell/SUSE: http://www.novell.com/linux/security/securitysupport.html
|-
* Mandriva: http://wwwnew.mandriva.com/security
| [[Debian]] || http://www.debian.org/security
* Red Hat: http://www.redhat.com/security/updates
|-
* Slackware: http://www.slackware.com/security
| [[Gentoo]] || http://www.gentoo.org/security/en
* Ubuntu: http://www.ubuntu.com/usn
|-
| Novell / [[SUSE Linux]] || http://www.novell.com/linux/security/securitysupport.html
|-
| [[Mandriva]] || http://wwwnew.mandriva.com/security
|-
| [[Red Hat]] || http://www.redhat.com/security/updates
|-
| [[Slackware Linux]] || http://www.slackware.com/security
|-
| [[Ubuntu]] || http://www.ubuntu.com/usn
|}




{{cat|Linux}}
{{cat|Linux}}

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

Sicherheits-Seiten

Distribution URL
Debian http://www.debian.org/security
Gentoo http://www.gentoo.org/security/en
Novell / SUSE Linux http://www.novell.com/linux/security/securitysupport.html
Mandriva http://wwwnew.mandriva.com/security
Red Hat http://www.redhat.com/security/updates
Slackware Linux http://www.slackware.com/security
Ubuntu http://www.ubuntu.com/usn