PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sicherheitslöcher unter Linux Schliessen


Dangerman
04.05.2008, 00:56
Sicherheitslöcher unter Linux schließen.



Vorwort

Einleitung

Vorgang unter Slackware
Vorgang unter RedHat
Vorgang unter Debian
Vorgang unter SuSE


Vorwort


In diesem Text behandle ich einige geläufige Sicherheitslücken unter Linux. Ich bin mir bewusst, dass ich einige Leute mit diesem Text erst auf Ideen bringe, wo man ein Linux-System überhaupt angreifen kann. Hierzu möchte ich euch bitten zu beachten, dass ihr selbst für euer Handeln verantwortlich seit. Ich übernehme natürlich keinerlei Verantwortung dafür, wie die hier dargelegten Informationen genutzt werden. Dieser Text soll ausschließlich zur eigenen Sicherheit dienen. Jeder Missbrauch dieser Informationen ist strafbar!





Einleitung


Immer mehr Leute nutzen Linux inzwischen als Windows – alternative. Als Einsteiger findet man sich unter Linux jedoch etwas schwerer zurecht, als unter Windows. Aus diesem Grund möchte ich in diesem Tutorial einige allgemeine Sicherheitslücken ansprechen und wie man diese bereinigen kann. Sollten Fragen zu diesem Tutorial auftreten könnt ihr euch einfach per Mail bei mir melden.

Der Grundgedanke des Internets war ein Netzwerk aus vielen gleichberechtigten Nutzern, auch wenn man heute eher den Eindruck bekommt, dass das Internet von großen Software-Firmen bestimmt wird. Wir selbst arbeiten also tag für tag auf anderen Rechnern und besorgen uns Informationen, Software usw.. Prinzipiell ist es also auch möglich, dass andere User auf unserem Rechner arbeiten. Da nun nicht jeder eine eigene Firma hat oder einen Server ins Internet stellt ist das nicht immer von Vorteil. Linux ist im Internet geboren und bietet somit zahlreiche Internetfunktionen, die man als privat User abschalten sollte. Dies ist bei UNIX-Computern denkbar einfach, man sagt ihnen einfach, dass sie bestimmte Dienste deaktivieren sollen, was bei anderen Systemen nicht so einfach klappen würde.

Ich empfehle also folgende Dienste abzuschalten.



inetd = Datenübertragung, Fernwartung, Zeitabfrage usw.
sendmail = Direkte E-Mail-Zustellung
httpd = Falls installiert: Web-Zugriff auf das eigene System


Ich möchte nicht verschweigen, dass wir mit der Deaktivierung dieser Dienste in unserem Handeln eingeschränkt sind, aber man sollte schon wissen was einem wichtig ist.

Jedes der hier genannten Programme sorgt für Dienstleistungsangebote zwischen unserem Computer und dem Internet. Möchte also nun ein anderer User aus dem Internet eine Datei von unserem Computer laden, muss das dazu nötige Programm (inklusive Gegenstück) aktiv sein. Haben wir diese Dienste nun abgeschaltet, bekommt der User eine Meldung á la „Connection refused“ (Verbindung verweigert).

Es versteht sich also von selbst, dass wir die Dienste nur soweit deaktivieren, dass unser Computer keine Daten mehr anbietet, nutzen wollen wir sie nach wie vor.

Natürlich stellt sich jetzt irgendwann die Frage: „Wie deaktiviere ich diese Programme überhaupt???“ Ich habe die Antworten nach den einzelnen Distributionen getrennt....




Slackware

inetd:
Wir rufen einen Editor auf und bearbeiten die Datei /etc/rc.d/rc.inet2.

Dieses Skript startet beim Bootvorgang diverse Internet-Server, u.a. auch inetd. Nun sollten wir die entsprechenden Abschnitte auskommentieren. Wir setzen also ein # davor. Befehle die als Kommentar geschrieben sind werden vom Computer irgnoriert und somit beim nächsten Systemstart nicht mehr aktiviert.

Ein Beispiel dazu:
# Start the INET SuperServer

if [ -f $ {NET} /inetd ]; then

echo –n “ inetd”
${NET} /inetd

else

echo “no INETD found. INETD cancelled!”
exit 1

fi


Das ganze nun auskommentiert....
## Start the INET SuperServer
#if [ -f $ {NET} /inetd ]; then
# echo –n “ inetd”
# ${NET} /inetd
#else
# echo “no INETD found. INETD cancelled!”
# exit 1
#fi



sendmail:

Wie schon bei inetd bearbeiten wir auch hier ein Skript, wir wollen sendmail aber natürlich nicht komplett abschalten, sondern nur die Hälfte und zwar die, die für den Service im Internet zuständig ist.

Wir öffnen nun die Datei /etc/rc.d/rc.M. und suchen folgenden Abschnitt

# Start the sendmail daemon:

if [ -x /usr/sbin/sendmail ]; then
echo “Starting sendmail daemon (/usr/sbin/sendmail –bd
–q15m)…”
/usr/sbin/sendmail –bd –q15m

fi



Wir löschen nun in beiden Zeilen das “-bd”. Das Ergebnis sollte dann so aussehen.

# Start the sendmail daemon:
if [ -x /usr/sbin/sendmail ]; then
echo “Starting sendmail daemon (/usr/sbin/sendmail
–q15m)…”
/usr/sbin/sendmail –q15m
fi



Das –bd weißt sendmail an, eingehende SMTP-Verbindungen aus dem Internet anzunehmen.

Im Allgemeinen vermeidet man UNIX-Maschinen zu rebooten, da ja noch andere User auf der Maschine arbeiten könnten oder bestimmt Programm gerade ihren Dienst tun. Der „Otto-normal“ User schaltet seinen PC jedoch sicher über die Nacht aus. Sollte allerdings doch jemand von euch seine Maschine (aus welchen Gründen auch immer) über Wochen laufen lassen, müssen wir die Änderungen per Hand vornehmen. Dazu geben wir folgende Befehle ein...

Kill ’cat /var/run/inetd.pid’
Kill ’cat /var/run/sendmail.pid | head –1’
/usr/sbin/sendmail –q15



Es werden die Programme beendet deren PID (Process ID) in /var/run/inetd.pid bzw. in der ersten Zeile von /var/run/sendmail.pid gespeichert sind. Anschließen wird die 2. Hälfte von sendmail wieder gestartet.



RedHat


Ich kann leider keine Screenshots von RedHat liefern, da ich schon ewig nicht mehr mit RedHat arbeite. Daher versuche ich bei meiner Beschreibung möglichst genau zu werden.



inetd:

Wir loggen uns als root ein und rufen mit dem Befehl startx die graphische Benutzeroberfläche auf. Nun wechseln wir ins Control – Panel und klicken auf den obersten Button: „Runlevel Editor“

Nun sollte sich uns der SYSV Runlevel Manager zeigen. Im linken Bereich finden wir eine Liste mit uns zur Verfügung stehenden Optionen. ADD, REMOVE, EDIT und EXECUTE.

Der rechte Fensterteil ist in 2 Hälften aufgeteilt: Start und Stop. START: Hier haben wir eine Übersicht an Runlevels und Betriebszuständen. STOP: Übergang in den betreffenden Runlevel angehalten.

Nun entfernen wir aus dem Start-Fenster den INET Dienst (kommt 3mal vor in 3, 4, und 5) Dazu klicken zuerst auf INET und dann auf REMOVE.

Die Änderungen werden erst nach einem Neustart wirksam, wer seinen Computer nicht rebooten möchte, klickt auf den Button EXECUTE und in der dann erscheinenden Dialogbox auf STOP.



sendmail:

Den Runlevel Manager lassen wir gleich offen, weil wir ihn noch benötigen. Vorerst starten wir einen Editor und bearbeiten die Datei /etc/sysconfig/sendmail. Darin sollte eine Zeile zufinden sein die DAEMON=yes ausgibt. Das ändern wir nun in DAEMON=no. Nun kehren wir zu unserem Runlevel Manager zurück und wählen aus der linken Liste SENDMAIL aus. Dieser Dienst muss nun neu gestartet werden. Dazu klicken wir auf EXECUTE dann STOP und anschließend wieder auf EXECUTE/START.

Wir verlassen den Runlevel Manager mit File/Quit



Debian
Wir loggen uns als root ein und löschen die Befehle von inetd sowie von junkbuster. Junkbuster ist ein recht nützliches Programm für den Fall, dass man es doch mal benötigen sollte, kann man es immer noch aktivieren, in diesem Tutorial hat aber nun mal die Sicherheit vorrang. Das ganze sollte ungefähr so aussehen.

$ su
Passwort:
Senox:~# rm /etc/rc[2345].d/S*netbase
Senox:~# /etc/init.d/netbase stop
Senox:~# rm /etc/rc[2345].d/S*junkbuster
Senox:~# /etc/init.d/junkbuster stop
Stopping filtering proxy server: junkbuster
Senox:~#



Debian nutzt nicht sendmail als MTA (Mail Transport Agent) sondern smail. Sollten die Standarteinstellung nicht verändert sein, wird smail aus inetd gestartet. Wollen wir also inetd abschalten oder deaktivieren so wird das mit smail automatisch passieren. Anderer E-Mail empfang über z.B. Netscape ist nicht betroffen. Wir haben lediglich die Annahme über das Netzwerk deaktiviert.



SuSE
Okay, schauen wir uns nun noch das ganze Spiel mal unter SuSE an. Wir sollten uns vorerst natürlich als root einloggen und anschließend YaST starten.
Senox:~ # yast

Nun wählen wir den Menüpunkt Administration des Systems / Netzwerk Konfiguration / Netzwerkdienste konfigurieren.

Nun sollte folgende Dialogbox erscheinen:





INETD STARTEN?

Wenn „inetd“ gestartet ist, kann von außen auf Ihren Rechner zugegriffen werden (z.B. mit Telnet, finger, ftp, ...) Inetd ist auch nötig für das Anzeigen der man-Pages im S.u.S.E. – Hilfssystem und das Drucken.

Soll der inetd beim Hochlauf des Systems gestartet werden?

< JA > < NEIN >





Auf diese Dialogbox antworten wir mit „Nein“. Das gleiche mit portmap.

In manchen Versionen kann noch eine Dialogbox der Form-Zeile von Newsartikeln auftauchen. Diese überlassen wir den Voreinstellungen.

Wir kehren jetzt also mit [ESC] in das Untermenü zurück (Administration des Systems ). Wir rufen jetzt die Option Konfigurationsdatei verändern auf. Wir suchen nach dem Eintrag „SMTP“ Diese Variable ist nach den Voreinstellungen auf „yes“ gestellt, wie ändern sie in „no“ ( [F3] no eingeben [ENTER] ).

Nach dem gleichen Verfahren gehen wir jetzt nun mit der Variable START_HTTPD vor. Wir verlassen den Bildschirm mit [F10]

Die Änderungen werden nach dem Reboot des Systems übernommen. Wer keinen Bock auf nen Reboot hat, kann auch....

Senox:~ # kill ’head –1 < /var/run/sendmail.pid’
Senox:~ # kill ‘cat /var/run/httpd.pid’
…eingeben.

So das war’s auch schon wieder. Euer System sollte nun etwas sicherer sein und das ohne zusätzliche Software zu installieren, die wahrscheinlich bei den vorigen Einstellung eh nicht viel gebracht hätte. Bitte Beachtet auch, dass dies nur Grundmaßnahmen sind, die ihr am besten schon vorher getroffen habt, oder nun treffen könnt. Diese Einstellungen machen euer System natürlich nicht 100%ig sicher, wenn so was überhaupt möglich ist.