EDV:SecureLinuxPC: Difference between revisions
mNo edit summary |
m (ââroot-mails) |
||
Line 56: | Line 56: | ||
... |
... |
||
root: sesselm |
root: sesselm |
||
sesselm: sesselm@kip.uni-heidelberg.de |
sesselm: sesselm@kip.uni-heidelberg.de |
||
== hosts.allow, hosts.deny == |
|||
In den beiden Dateien /etc/hosts.allow und /etc/hosts.deny kann man fĂŒr viele DĂ€monen und Dienste festlegen, welcher fremde Rechner was mit unserem Rechner machen darf. Die Syntax ist dabei '<daemon> : <Rechner bzw Netz>'. Siehe auch 'man 8 tcpd' oder 'man 5 hosts_access'.Ăbrigens reagieren nur DĂ€monen, die mit dem tcp-wrapper kompilliert wurden. |
|||
Wichtig dabei ist, dass zuerst in der Datei /etc/hosts.allow geprĂŒft wird, ob eine bestimmte Verbindung explizit erlaubt ist. Wenn sie nicht explizit erlaubt ist, wird in /etc/hosts.deny geprĂŒft, ob diese Verbindung explizit verboten ist. Ist in beiden Listen kein Treffer, wird die Verbindung erlaubt(!!). |
|||
Deshalb empfehle ich als erstes: Alles was nicht explizit erlaubt ist, ist verbieten! |
|||
Dazu schreibt man in /etc/hosts.deny: |
|||
ALL : ALL |
|||
D.h. ALLe Dienste sind fĂŒr ALLe Rechner verboten. |
|||
In der Datei /etc/hosts.allow kann (und muss) man jetzt festlegen, was erlaubt sein soll. Ein Beispiel wÀre |
|||
ALL : localhost |
|||
ALL : 127.0.0.1 |
|||
ALL : 129.206.127.0/255.255.255.0 |
|||
ALL : 129.206.176.0/255.255.248.0 |
|||
sshd : 129.206.0.0/255.255.0.0 |
|||
Dem lokalen Rechner soll natĂŒrlich alles erlaubt sein. Auch dem lokalen Subnetz trauen wir. Sonst aber ist nur noch ssh aus dem Subnetz 129.206.0.0 (uni-heidelberg.de) möglich. Alles andere ist verboten. |
|||
== syslog == |
|||
Oft ist es bei Rechner-EinbrĂŒchen von Crackern das wichtigste, erst einmal zu erfahren, dass dieser stattgefunden hat. Dazu ist es nĂŒtzlich, die systemeigene SYSLOG-Datei auszuwerten. Nach einem erfolgten Einbruch ist dieser Datei aber nicht zu trauen, da sie manipuliert worden sein kann. Deshalb ist es in einem Netzwerk von vielen Computern (und das Netz vom [[KIP]] kann wirklich dazu gezĂ€hlt werden) besser, wenn man einen Syslog-Server einrichtet, der die syslog-Meldungen aller anderen Rechner sammelt und auswertet. |
|||
Der syslog-Server ist '''syslog.kip.uni-heidelberg.de'''- |
|||
Alles was Sie tun sollten, ist jetzt Ihr syslog-system so einzustellen, dass von allen Meldungen eine Kopie an den jeweiligen syslog-Server geschickt wird. Dazu muss man nur in der Datei '/etc/syslog.conf' die folgende Zeile hinzufĂŒgen: |
|||
*.* @syslog.kip.uni-heidelberg.de |
|||
Danach entweder neu starten oder aber als root 'rcsyslogd reload' eingeben. |
|||
Beides zusammen sollte meistens so funktionieren: |
|||
echo -e '*.*\t@syslog.kip.uni-heidelberg.de' >>/etc/syslog.conf |
|||
/etc/init.d/sysklogd restart |
|||
== X11-Sitzungen, von anderen Rechnern erlauben == |
|||
Das braucht nun wirklich nicht jeder, dass man von einem anderen Rechner oder X-Terminal eine vollstÀndige X-Sitzung auf den SuSE-Linux-Rechner machen kann. Aber wer es machen möchte: |
|||
ZunÀchst ist diese Funktion bei der Standard-Installation deaktiviert. Zum Aktivieren: |
|||
1. In der Datei /etc/X11/xdm/xdm-config (SuSE7.1ff) ist die letzte Zeile mit |
|||
DisplayManager.requestPort: 0 |
|||
wegzukommentieren. Das macht man in dieser Datei, indem man ein Ausrufungszeichen (!) davorsetzt! Also: |
|||
!DisplayManager.requestPort: 0 |
|||
2. Jetzt sollte man noch festlegen, wer ein Login-Fenster bekommen darf bzw. wer eine Auswahlliste (per XDMCP) der verfĂŒgbaren Rechnern bekommt. Beides wird in der Datei /etc/X11/xdm/Xaccess (SuSE7.1ff) geregelt. ZunĂ€chst sollte man die Zeile |
|||
* #any host can get a login window |
|||
wegzukommentieren. Das macht man in dieser Datei, indem man ein Gatter-zeichen (#) davorsetzt! Also: |
|||
#* #any host can get a login window |
|||
Als Vorschlag könnte man es erlauben, dass Rechner des KIP eine Zugangsmöglichkeit bekommen, dazu einfach die Zeile |
|||
*.kip.uni-heidelberg.de |
|||
einfĂŒgen. |
|||
Ăhnlich sollte man es mit der Auswahlliste machen: Einfach den Eintrag |
|||
* CHOOSER BROADCAST #any indirect host can get a chooser |
|||
Ă€ndern in |
|||
#* CHOOSER BROADCAST #any indirect host can get a chooser |
|||
*.kip.uni-heidelberg.de CHOOSER BROADCAST |
|||
(Man kann sich natĂŒrlich auch eine Liste selbst zusammenstellen, das ist aber meist in der Datei Xaccess erklĂ€rt) |
|||
3. Bei dem neueren KDE2 muss jetzt noch zusÀtzlich die Konfigurationsdatei /opt/kde2/share/config/kdm/kdmrc angepasst werden. Dort befindet sich eine Rubrik '[Xdmcp]'. Diese sollte etwa so aussehen: |
|||
[Xdmcp] |
|||
Enable=true |
|||
Xaccess=/usr/X11R6/lib/X11/xdm/Xaccess |
|||
Willing=/usr/X11R6/lib/X11/xdm/Xwilling |
|||
Der default-Wert fĂŒr 'Enable' ist 'False' und muss auf 'True' geĂ€ndert werden. |
|||
4. Den Rechner neu starten oder wahlweise als root 'rcxdm restart' eingeben. Doch Vorsicht! Das sollte man möglichst nicht aus einer X-Sitzung heraus machen, da dabei die laufenden X-Sitzungen beendet (oder besser: abgewĂŒrgt) werden. |
|||
== X-Terminal (Der Linux-Rechner als X-Terminal) == |
|||
Dies ist der zu dem eben Beschriebenen umgekehrte Fall. Jetzt möchte ich den Linux-Rechner als X-Terminal verwenden. |
|||
Eine einfache Möglichkeit ist: Mit Hilfe von Ctrl-Alt-F1 auf die Textkonsole wechseln und als 'root' einloggen. Als root gibt man dann ein: |
|||
X :1 -query fremderRechner |
|||
wobei 'fremderRechner' derjenige Rechner ist, zu man eine X-Sitzung aufbauen möchte. Man kann auch einen Rechner nach seiner Auswahlliste fragen (XDMCP): |
|||
X :1 -indirect fremderRechner |
|||
Es handelt sich dabei um eine vollstĂ€ndige Sitzung. Es wird dabei nicht nur die Grafikausgabe einer einzelnen Anwendung ĂŒbertragen. |
|||
NĂŒtzlich kann das zum Beispiel dann sein, wenn man fĂŒr eine bestimmte Anwendung ein X-Terminal braucht, dessen Farbtiefe genau 8 Bit betrĂ€gt. Die 'normal' Sitzung muss man deswegen nicht umkonfigurieren (wo man gerne 16-, 24- oder 32-Bit Farbtiefe hat). Diese zweite X-Sitzung kann man nĂ€mlich auch starten mit: |
|||
X :1 -bpp 8 -query fremderRechner |
|||
''bpp'' steht fĂŒr Bits-Per-Pixel. |
|||
Man kann ĂŒbrigens mit Hilfe von Ctrl-Alt-F7 wieder zur 'normalen' X-Sitzung wechseln, das ist dann die Konsole ':0'. Die von uns neu gestartete Konsole ist ':1' und zu der kann man mit Ctrl-Alt-F8 wechseln. ':2' wĂ€re dann mit Ctrl-Alt-F9 erreichbar. |
|||
Achtung: neuere Linux-Versionen: |
|||
Bei den neueren Versionen, insbesondere wenn man XFree86 Version 4 installiert hat, Ă€ndert sich der oben erwĂ€hnte Aufruf fĂŒr die 256-Farben-Variante. Die Zeile lautet dann: |
|||
X :1 -depth 8 -query fremderRechner |
|||
Eventuell muss man auch die Datei /etc/X11/XF86Config Ă€ndern und bei der Farbtiefe 8-Bit noch die gewĂŒnschte Auflösung hinzufĂŒgen: |
|||
Beispiel: |
|||
SubSection "Display" |
|||
Depth 32 |
|||
Modes "1280x1024" "1024x768" "800x600" "640x480" |
|||
EndSubSection |
|||
SubSection "Display" |
|||
Depth 8 |
|||
Modes "640x480" |
|||
muss dann geÀndert werden in : |
|||
SubSection "Display" |
|||
Depth 32 |
|||
Modes "1280x1024" "1024x768" "800x600" "640x480" |
|||
EndSubSection |
|||
SubSection "Display" |
|||
Depth 8 |
|||
Modes "1280x1024" "1024x768" "800x600" "640x480" |
Revision as of 12:23, 26 November 2007
Absichern eines Linux PCs
Hier gibt es verschiedene Tipps wie man einen Linux PC absichert. Die meisten Sachen sind von einer Ă€lteren Seiten ĂŒbernommen worden, sollten allerdings noch so oder so Ă€hnlich gĂŒltig sein.
Aufgrund der speziellen mail-Situation in Heidelberg (siehe auch Mail-Firewall) muss man dem lokalen MTA auf eine bestimmte Weise konfigurieren, wenn der Rechner mails verschicken können soll. Und zwar mĂŒssen alle Mails ĂŒber den Mailserver des KIP versendet werden anstatt direkt (Smarthost).
sendmail (Bsp. SuSe)
In der Datei /etc/rc.config.d/sendmail.rc.config mĂŒssen die folgenden Eintragungen gemacht werden.
SENDMAIL_TYPE="yes" SENDMAIL_SMARTHOST="[mail.kip.uni-heidelberg.de]"
Danach als root 'SuSEconfig' eingeben. Es ist ĂŒbrigens nicht so ohne weiteres möglich, dass Ihr Rechner mails unter [Benutzername]@[Rechnername].kip.uni-heidelberg.de empfĂ€ngt! Auch das hat mit dem mail-firewall zu tun.
exim4 (Bsp. debian)
Test ob exim installiert ist:
aptitude search exim4
Die /etc/exim4/update-exim4.conf.conf neu erstellen:
cp /etc/exim4/update-exim4.conf.conf /etc/exim4/update-exim4.conf.conf.old grep '^#' /etc/exim4/update-exim4.conf.conf.old > /etc/exim4/update-exim4.conf.conf echo " dc_eximconfig_configtype='smarthost' dc_other_hostnames='$HOSTNAME.kip.uni-heidelberg.de' dc_local_interfaces='127.0.0.1' dc_readhost='$HOSTNAME.kip.uni-heidelberg.de' dc_relay_domains= dc_minimaldns='false' dc_relay_nets='127.0.0.1/24' dc_smarthost='mail.kip.uni-heidelberg.de' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='false' dc_mailname_in_oh='true' dc_localdelivery='mail_spool'" >>/etc/exim4/update-exim4.conf.conf echo "$HOSTNAME.kip.uni-heidelberg.de" > /etc/mailname
Exim updaten und neu starten:
update-exim4.conf /etc/init.d/exim4 restart echo "Init-Mail-Test from Host '$HOSTNAME' - $RANDOM" | mail -s "Init-Mail-test from $HOSTNAME" root
root-mails
Verschiedentlich werden Fehlermeldungen, Warnungen etc. auf einem Linux-Rechner als mail an den User 'root' verschickt. Der/Die verantwortungsvolle Linux-User/in loggt sich aber normalerweise nur als 'root' ein, wenn administratives gemacht werden soll. D.h. er/sie wird diese Meldungen sehr spĂ€t oder nie erhalten. Deshalb sollte man fĂŒr den User 'root' ein alias einrichten:
/etc/aliases:
postmaster: root ... root: sesselm sesselm: sesselm@kip.uni-heidelberg.de
hosts.allow, hosts.deny
In den beiden Dateien /etc/hosts.allow und /etc/hosts.deny kann man fĂŒr viele DĂ€monen und Dienste festlegen, welcher fremde Rechner was mit unserem Rechner machen darf. Die Syntax ist dabei '<daemon> : <Rechner bzw Netz>'. Siehe auch 'man 8 tcpd' oder 'man 5 hosts_access'.Ăbrigens reagieren nur DĂ€monen, die mit dem tcp-wrapper kompilliert wurden. Wichtig dabei ist, dass zuerst in der Datei /etc/hosts.allow geprĂŒft wird, ob eine bestimmte Verbindung explizit erlaubt ist. Wenn sie nicht explizit erlaubt ist, wird in /etc/hosts.deny geprĂŒft, ob diese Verbindung explizit verboten ist. Ist in beiden Listen kein Treffer, wird die Verbindung erlaubt(!!). Deshalb empfehle ich als erstes: Alles was nicht explizit erlaubt ist, ist verbieten! Dazu schreibt man in /etc/hosts.deny:
ALL : ALL
D.h. ALLe Dienste sind fĂŒr ALLe Rechner verboten. In der Datei /etc/hosts.allow kann (und muss) man jetzt festlegen, was erlaubt sein soll. Ein Beispiel wĂ€re
ALL : localhost ALL : 127.0.0.1 ALL : 129.206.127.0/255.255.255.0 ALL : 129.206.176.0/255.255.248.0 sshd : 129.206.0.0/255.255.0.0
Dem lokalen Rechner soll natĂŒrlich alles erlaubt sein. Auch dem lokalen Subnetz trauen wir. Sonst aber ist nur noch ssh aus dem Subnetz 129.206.0.0 (uni-heidelberg.de) möglich. Alles andere ist verboten.
syslog
Oft ist es bei Rechner-EinbrĂŒchen von Crackern das wichtigste, erst einmal zu erfahren, dass dieser stattgefunden hat. Dazu ist es nĂŒtzlich, die systemeigene SYSLOG-Datei auszuwerten. Nach einem erfolgten Einbruch ist dieser Datei aber nicht zu trauen, da sie manipuliert worden sein kann. Deshalb ist es in einem Netzwerk von vielen Computern (und das Netz vom KIP kann wirklich dazu gezĂ€hlt werden) besser, wenn man einen Syslog-Server einrichtet, der die syslog-Meldungen aller anderen Rechner sammelt und auswertet. Der syslog-Server ist syslog.kip.uni-heidelberg.de- Alles was Sie tun sollten, ist jetzt Ihr syslog-system so einzustellen, dass von allen Meldungen eine Kopie an den jeweiligen syslog-Server geschickt wird. Dazu muss man nur in der Datei '/etc/syslog.conf' die folgende Zeile hinzufĂŒgen:
*.* @syslog.kip.uni-heidelberg.de
Danach entweder neu starten oder aber als root 'rcsyslogd reload' eingeben.
Beides zusammen sollte meistens so funktionieren:
echo -e '*.*\t@syslog.kip.uni-heidelberg.de' >>/etc/syslog.conf /etc/init.d/sysklogd restart
X11-Sitzungen, von anderen Rechnern erlauben
Das braucht nun wirklich nicht jeder, dass man von einem anderen Rechner oder X-Terminal eine vollstÀndige X-Sitzung auf den SuSE-Linux-Rechner machen kann. Aber wer es machen möchte: ZunÀchst ist diese Funktion bei der Standard-Installation deaktiviert. Zum Aktivieren:
1. In der Datei /etc/X11/xdm/xdm-config (SuSE7.1ff) ist die letzte Zeile mit
DisplayManager.requestPort: 0
wegzukommentieren. Das macht man in dieser Datei, indem man ein Ausrufungszeichen (!) davorsetzt! Also:
!DisplayManager.requestPort: 0
2. Jetzt sollte man noch festlegen, wer ein Login-Fenster bekommen darf bzw. wer eine Auswahlliste (per XDMCP) der verfĂŒgbaren Rechnern bekommt. Beides wird in der Datei /etc/X11/xdm/Xaccess (SuSE7.1ff) geregelt. ZunĂ€chst sollte man die Zeile
* #any host can get a login window
wegzukommentieren. Das macht man in dieser Datei, indem man ein Gatter-zeichen (#) davorsetzt! Also:
#* #any host can get a login window
Als Vorschlag könnte man es erlauben, dass Rechner des KIP eine Zugangsmöglichkeit bekommen, dazu einfach die Zeile
*.kip.uni-heidelberg.de
einfĂŒgen.
Ăhnlich sollte man es mit der Auswahlliste machen: Einfach den Eintrag
* CHOOSER BROADCAST #any indirect host can get a chooser
Ă€ndern in
#* CHOOSER BROADCAST #any indirect host can get a chooser *.kip.uni-heidelberg.de CHOOSER BROADCAST
(Man kann sich natĂŒrlich auch eine Liste selbst zusammenstellen, das ist aber meist in der Datei Xaccess erklĂ€rt)
3. Bei dem neueren KDE2 muss jetzt noch zusÀtzlich die Konfigurationsdatei /opt/kde2/share/config/kdm/kdmrc angepasst werden. Dort befindet sich eine Rubrik '[Xdmcp]'. Diese sollte etwa so aussehen:
[Xdmcp] Enable=true Xaccess=/usr/X11R6/lib/X11/xdm/Xaccess Willing=/usr/X11R6/lib/X11/xdm/Xwilling
Der default-Wert fĂŒr 'Enable' ist 'False' und muss auf 'True' geĂ€ndert werden.
4. Den Rechner neu starten oder wahlweise als root 'rcxdm restart' eingeben. Doch Vorsicht! Das sollte man möglichst nicht aus einer X-Sitzung heraus machen, da dabei die laufenden X-Sitzungen beendet (oder besser: abgewĂŒrgt) werden.
X-Terminal (Der Linux-Rechner als X-Terminal)
Dies ist der zu dem eben Beschriebenen umgekehrte Fall. Jetzt möchte ich den Linux-Rechner als X-Terminal verwenden. Eine einfache Möglichkeit ist: Mit Hilfe von Ctrl-Alt-F1 auf die Textkonsole wechseln und als 'root' einloggen. Als root gibt man dann ein:
X :1 -query fremderRechner
wobei 'fremderRechner' derjenige Rechner ist, zu man eine X-Sitzung aufbauen möchte. Man kann auch einen Rechner nach seiner Auswahlliste fragen (XDMCP):
X :1 -indirect fremderRechner
Es handelt sich dabei um eine vollstĂ€ndige Sitzung. Es wird dabei nicht nur die Grafikausgabe einer einzelnen Anwendung ĂŒbertragen. NĂŒtzlich kann das zum Beispiel dann sein, wenn man fĂŒr eine bestimmte Anwendung ein X-Terminal braucht, dessen Farbtiefe genau 8 Bit betrĂ€gt. Die 'normal' Sitzung muss man deswegen nicht umkonfigurieren (wo man gerne 16-, 24- oder 32-Bit Farbtiefe hat). Diese zweite X-Sitzung kann man nĂ€mlich auch starten mit:
X :1 -bpp 8 -query fremderRechner
bpp steht fĂŒr Bits-Per-Pixel. Man kann ĂŒbrigens mit Hilfe von Ctrl-Alt-F7 wieder zur 'normalen' X-Sitzung wechseln, das ist dann die Konsole ':0'. Die von uns neu gestartete Konsole ist ':1' und zu der kann man mit Ctrl-Alt-F8 wechseln. ':2' wĂ€re dann mit Ctrl-Alt-F9 erreichbar.
Achtung: neuere Linux-Versionen: Bei den neueren Versionen, insbesondere wenn man XFree86 Version 4 installiert hat, Ă€ndert sich der oben erwĂ€hnte Aufruf fĂŒr die 256-Farben-Variante. Die Zeile lautet dann:
X :1 -depth 8 -query fremderRechner
Eventuell muss man auch die Datei /etc/X11/XF86Config Ă€ndern und bei der Farbtiefe 8-Bit noch die gewĂŒnschte Auflösung hinzufĂŒgen: Beispiel:
SubSection "Display" Depth 32 Modes "1280x1024" "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 8 Modes "640x480"
muss dann geÀndert werden in :
SubSection "Display" Depth 32 Modes "1280x1024" "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 8 Modes "1280x1024" "1024x768" "800x600" "640x480"