Sicherheit von Linux-Systemen - uni- ?· Sicherheit von Linux-Systemen Sicherheit von Linux-Systemen…

  • Published on
    30-Mar-2019

  • View
    212

  • Download
    0

Embed Size (px)

Transcript

<p>Sicherheit von Linux-Systemen</p> <p>Sicherheit von Linux-SystemenKonfiguration von SuSE Linux Professional 9.3</p> <p>Christian Muck-Lichtenfeld</p> <p>Organisch-Chemisches Institut</p> <p>July 11, 2005</p> <p>Sicherheit von Linux-Systemen</p> <p>Uberblick</p> <p>Ziele:</p> <p> Gefahren erkennen</p> <p> System sicher konfigurieren</p> <p> Angriffe erkennen (bzw. verhindern)</p> <p>Zielgruppe: Linux-Einsteiger, Admins mit Linux als Ausnahmefall</p> <p>Beispiel: SuSE Professional 9.3</p> <p>keine Themen: WLAN, Authentifizierung, Samba</p> <p>Sicherheit von Linux-Systemen</p> <p>Part I</p> <p>Bedrohungen</p> <p>Sicherheit von Linux-Systemen</p> <p>Bedrohungsanalyse</p> <p>Potentielle Angriffswege</p> <p> Lokaler Angriff</p> <p>Angemeldeter Benutzer nutzt Schwachstellen aus und fuhrt unerwunschte Aktivitaten ausZiel: (root-) Privilegien erlangen, die einem normalen Benutzer nicht zustehen</p> <p> DOS-Angriff (denial of service)</p> <p>Verteilte gehaufte Abfrage von Diensten fuhrt zu Uberlastung des Rechners</p> <p> Netzattacken</p> <p>Angriff uber einen unsicheren Netz-Zugang zum Systemauf einen Dienst, der nicht laufen musste oder der Sicherheitslucken hat.</p> <p> spoofing (man-in-the-middle)</p> <p>Angreifer gibt vor, ein (autorisiertes) System im Netz zu sein</p> <p>z.B. arp-spoofing, SSH-Angriff</p> <p>In allen Fallen werden Sicherheitslucken ausgenutzt ( exploits)</p> <p>Sicherheit von Linux-Systemen</p> <p>Bedrohungsanalyse</p> <p>Angriffswege</p> <p>Viele Wege fuhren zum Ziel des Hackers(Privilegierte Bereiche/Programme)</p> <p>USERSPACE</p> <p>KERNELSPACE</p> <p>root</p> <p>PRIV</p> <p>Application</p> <p>Service Port</p> <p>LOKALER ANGRIFF DOS</p> <p>NETZANGRIFF</p> <p>SPOOFING(MAN IN THE MIDDLE)</p> <p>Sicherheit von Linux-Systemen</p> <p>Bedrohungsanalyse</p> <p>Angriffsszenarien</p> <p> Spionage (Passworter, Daten allgemein)</p> <p> Missbrauch des Rechners (Filesharing, Spam-Mailer, Angriff aufweitere Rechner)</p> <p> Zerstorung von Daten</p> <p>Sicherheit von Linux-Systemen</p> <p>Part II</p> <p>Gegenmassnahmen</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Sicherheitslucken kennen</p> <p> Mailinglistensuse-security-announce-subscribe@suse.com</p> <p>Advisories (zur Sicherheit) bei www.linux-community.de</p> <p> Literaturz.B. Linux-Magazin (www.linux-magazin.de)linux hackers guide (Markt &amp; Technik)Linux Security Cookbook (OReilly)</p> <p> Eigenen Rechner uberprufenverdachtige Prozesse, Dateien, Ports</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Logfiles analysieren</p> <p>Uberwachung der Logfiles</p> <p> syslogd erzeugt Ausgabe in /var/log/messages</p> <p> Befehl z.B. grep -i connect /var/log/messages</p> <p>Jun 16 16:17:44 nwztux portmap[22117]: connect from 128.176.245.69 to getport(mountd): request from unauthorized host</p> <p>Jun 16 16:17:44 nwztux portmap[22118]: connect from 128.176.245.69 to getport(mountd): request from unauthorized host</p> <p>Jun 16 16:18:23 nwztux sshd[22119]: refused connect from ::ffff:128.176.245.69 (::ffff:128.176.245.69)</p> <p>Jun 18 02:13:33 nwztux sshd[25380]: refused connect from ::ffff:60.28.0.162 (::ffff:60.28.0.162)</p> <p>Jun 18 03:09:41 nwztux sshd[25459]: refused connect from ::ffff:221.251.21.162 (::ffff:221.251.21.162)</p> <p>Jun 18 18:54:07 nwztux sshd[26780]: refused connect from ::ffff:65.166.159.14 (::ffff:65.166.159.14)</p> <p>Jun 18 23:10:25 nwztux sshd[27099]: refused connect from ::ffff:200.68.112.137 (::ffff:200.68.112.137)</p> <p>Jun 18 23:18:59 nwztux sshd[27119]: refused connect from ::ffff:200.68.112.137 (::ffff:200.68.112.137)</p> <p>Jun 19 11:42:58 nwztux sshd[28326]: refused connect from ::ffff:211.202.3.150 (::ffff:211.202.3.150)</p> <p>Jun 20 20:25:47 nwztux sshd[31388]: refused connect from ::ffff:211.202.3.150 (::ffff:211.202.3.150)</p> <p> Tools zur Logfile-Uberwachung:</p> <p> Analog (http://www.analog.cx/) Swatch (http://swatch.sourceforge.net/) LogSurfer</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Prozesse uberwachen</p> <p>Uberwachung der Prozesse</p> <p> Befehl ps -ef |grep Username zeigt die Prozesse des Users aniltis:~ # ps -ef |grep nobody</p> <p>nobody 7189 1 0 08:25 ? 00:00:00 /sbin/portmap</p> <p>nobody 7198 1 0 08:25 ? 00:00:00 /usr/sbin/mdnsd -f /etc/rendezvous.conf -b</p> <p>root 12610 8377 0 10:38 pts/7 00:00:00 grep nobody</p> <p> Befehl strace -p PID verfolgt die Systemaufrufe des Prozesses Analyse der Aktivitat eines verdachtigen Prozessesiltis:~ # strace -p 7198</p> <p>Process 7198 attached - interrupt to quit</p> <p>select(7, [3 4 5 6], NULL, NULL, 1, 446000) = 0 (Timeout)</p> <p>rt sigprocmask(SIG BLOCK, [HUP INT USR1 PIPE TERM], NULL, 8) = 0</p> <p>rt sigprocmask(SIG UNBLOCK, [HUP INT USR1 PIPE TERM], NULL, 8) = 0</p> <p>gettimeofday({1119429587, 826316}, NULL) = 0</p> <p>gettimeofday({1119429587, 826367}, NULL) = 0</p> <p>gettimeofday({1119429587, 826410}, NULL) = 0</p> <p>gettimeofday({1119429587, 826453}, NULL) = 0</p> <p>gettimeofday({1119429587, 826496}, NULL) = 0</p> <p>select(7, [3 4 5 6], NULL, NULL, 5, 0) = 0 (Timeout)</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Netzwerkverbindungen uberwachen</p> <p>Uberwachung der Netzverbindungen des lokalen Rechners</p> <p> Befehl z.B. lsof -i -n -Piltis:/usr/sbin lsof -i -n -P</p> <p>COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME</p> <p>dhcpcd 6625 root 4u IPv4 18524 UDP *:68</p> <p>portmap 7210 nobody 3u IPv4 19793 UDP *:111</p> <p>portmap 7210 nobody 4u IPv4 19806 TCP *:111 (LISTEN)</p> <p>mysqld-ma 7430 mysql 3u IPv4 21059 TCP *:3306 (LISTEN)</p> <p>master 7561 root 11u IPv4 21266 TCP 127.0.0.1:25 (LISTEN)</p> <p>master 7561 root 12u IPv6 21267 TCP [::1]:25 (LISTEN)</p> <p>sshd 7746 root 3u IPv6 22081 TCP *:22 (LISTEN)</p> <p>ssh 8226 meier 3u IPv4 23577 TCP 127.0.0.1:12051-&gt;127.0.0.1:22 (ESTABLISHED)</p> <p>sshd 8230 root 3u IPv6 23578 TCP 127.0.0.1:22-&gt;127.0.0.1:12051 (ESTABLISHED)</p> <p>sshd 8230 root 6u IPv4 23632 TCP 127.0.0.1:6010 (LISTEN)</p> <p>sshd 8230 root 7u IPv6 23633 TCP [::1]:6010 (LISTEN)</p> <p>sshd 8230 root 11u IPv4 69274 TCP 127.0.0.1:6010-&gt;127.0.0.1:11316 (ESTABLISHED)</p> <p>cupsd 10373 lp 0u IPv4 28016 TCP *:631 (LISTEN)</p> <p>cupsd 10373 lp 2u IPv4 28017 UDP *:631</p> <p>fwbuilder 18895 root 3u IPv4 69273 TCP 127.0.0.1:11316-&gt;127.0.0.1:6010 (ESTABLISHED)</p> <p>firefox-b 19302 meier 26u IPv4 70013 TCP 128.176.245.32:26706-&gt;128.176.188.115:80 (ESTABLISHED)</p> <p> oder netstat -t (TCP) (-u (UDP))iltis:~ # netstat -t</p> <p>Active Internet connections (w/o servers)</p> <p>Proto Recv-Q Send-Q Local Address Foreign Address State</p> <p>tcp 0 0 ILTIS.UNI-MUENSTER:9097 DOEDEL.UNI-MUENSTER:ssh ESTABLISHED</p> <p>tcp 0 0 localhost:21838 localhost:ssh ESTABLISHED</p> <p>tcp 0 0 localhost:44216 localhost:filenet-tms ESTABLISHED</p> <p>tcp 0 0 localhost:filenet-tms localhost:44216 ESTABLISHED</p> <p>tcp 0 0 localhost:ssh localhost:21838 ESTABLISHED</p> <p>tcp 0 0 ILTIS.UNI-MUENSTER.:ssh MRBEAN.UNI-MUENST:33521 ESTABLISHED</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Dateisystem uberwachen</p> <p>Uberwachung des Dateisystems (Intrusion detection)</p> <p> z.B. tripwire (http://sourceforge.net/projects/tripwire/)</p> <p> erzeugt Fingerabdrucke der wichtigen Systemdateien speichert die Daten in einer Datenbank findet Abweichungen vom gespeicherten Snapshot</p> <p> Dateisystemuberwachung simpel: rpm-Datenbank</p> <p>iltis:/usr/sbin # rpm -V samba-3.0.13-1.1</p> <p>S.5....T /usr/sbin/smbd</p> <p>iltis:/usr/sbin #</p> <p> Uberprufung / Suche nach rootkits:chkrootkit (http://www.chkrootkit.org/)(z.Zt. 57 rootkits/Wurmer) Stinger von McAffee</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Useraktivitaten beobachten</p> <p>Uberwachung der Useraktivitat</p> <p>Befehl lastlog</p> <p>iltis:~ # lastlog</p> <p>Username Port From Latest</p> <p>root pts/7 localhost Wed Jun 22 09:00:45 +0200 2005</p> <p>bin **Never logged in**</p> <p>daemon **Never logged in**</p> <p>lp **Never logged in**</p> <p>mail **Never logged in**</p> <p>news **Never logged in**</p> <p>uucp **Never logged in**</p> <p>games **Never logged in**</p> <p>man **Never logged in**</p> <p>at **Never logged in**</p> <p>wwwrun pts/8 iltis.uni-muenst Wed Jun 22 09:01:10 +0200 2005</p> <p>ftp **Never logged in**</p> <p>named **Never logged in**</p> <p>postfix **Never logged in**</p> <p>mysql **Never logged in**</p> <p>sshd **Never logged in**</p> <p>ntp **Never logged in**</p> <p>messagebus **Never logged in**</p> <p>haldaemon **Never logged in**</p> <p>gsc **Never logged in**</p> <p>meier :0 console Wed Jun 22 08:35:46 +0200 2005</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Abwehr eines lokalen Angriffs</p> <p>Abwehr eines lokalen Angriffs</p> <p> nur vertrauenswurdige Benutzer zulassen</p> <p> keine anonymen Accounts</p> <p> Server nicht physikalisch offentlich zuganglich machen</p> <p> Server nicht fur normale User zum Login offnen</p> <p> keine Root-Shells offenlassenz.B. in der bash mit export TMOUT=180 logout nach 3 Minuten Inaktivitat</p> <p> regelmassige Systemupdates durchfuhren</p> <p> sichere Grundeinstellungen (yast2)</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>SuSE Grundeinstellungen zur Sicherheit</p> <p>Yast2 Sicherheit</p> <p>Local Security Configurationyast2 security</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>SuSE Grundeinstellungen zur Sicherheit</p> <p>Yast2 Sicherheit</p> <p>Passwort-Einstellungen</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>SuSE Grundeinstellungen zur Sicherheit</p> <p>Yast2 Sicherheit</p> <p>Reboot durch User verhindern</p> <p>Rechner sollte auch physikalisch unzuganglich sein !</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>SuSE Grundeinstellungen zur Sicherheit</p> <p>Yast2 Sicherheit</p> <p>Login Einstellungen</p> <p>Delay verhindert Passwort-Rateversuche</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>SuSE Grundeinstellungen zur Sicherheit</p> <p>Yast2 Sicherheit</p> <p>User ID und Group ID</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>SuSE Grundeinstellungen zur Sicherheit</p> <p>Yast2 Sicherheit</p> <p>Dateirechte und Pfade</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Systemupdates</p> <p>Manueller Systemupdate</p> <p>Start des manuellen Systemupdates (YOU = Yast Online Update)yast2 online update , Auswahl des Servers</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Systemupdates</p> <p>Manueller Systemupdate</p> <p>Auswahl der Patches (Sicherheitsrelevant: rot)</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Systemupdates</p> <p>Manueller Systemupdate</p> <p>Installation</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Systemupdates</p> <p>Automatischer Systemupdate</p> <p>Konfiguration des Updatezeitpunktes:</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>Netzwerkdienste kontrollieren</p> <p> normalerweise muss fur jeden Dienst ein Damon laufen.z.B. httpd als Webserver, in.ftpd als ftp-Server</p> <p> inetd (Internet-Damon) kontrolliert, welches Programm (Damon)gestartet wird, wenn bestimmer Dienst angefordert wirdheute: xinetd hat den inetd abgelost</p> <p>Konfiguration: /etc/xinet.d/</p> <p> xinetd ist mit libwrap (TCP-Wrapper) Support compiliert</p> <p>Konfiguration uber die Dateien /etc/hosts.deny und /etc/hosts.allow</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>Services konfigurieren (xinetd)</p> <p>Start mit yast2 inetd</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>xinted Konfiguration</p> <p>Datei /etc/xinetd.d/service (eine Datei pro Dienst)hier: telnet</p> <p># default: off# description: Telnet is the old login server which is INSECURE and should \</p> <p># therefore not be used. Use secure shell (openssh).# If you need telnetd not to "keep-alives" (e.g. if it runs over a ISDN \# uplink), add "-n". See man telnetd for more details.</p> <p>service telnet{</p> <p>socket_type = streamprotocol = tcpwait = no</p> <p>user = rootserver = /usr/sbin/in.telnetd</p> <p>disable = yes}</p> <p>was fehlt noch ? Zugriffskontrolle per Rechner</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>TCP-Wrapper Konfiguration</p> <p>Datei /etc/hosts.deny (Zugriff verweigern)</p> <p># /etc/hosts.deny</p> <p># See man tcpd and man 5 hosts_access as well as /etc/hosts.allow# for a detailed description.</p> <p>all: ALL</p> <p>Datei /etc/hosts.allow (Zugriff auf die definierten Services)</p> <p># /etc/hosts.allow# See man tcpd and man 5 hosts_access for a detailed description</p> <p># of /etc/hosts.allow and /etc/hosts.deny.#</p> <p>ALL: 127.0.0.1 127.0.0.2 \128.176.216.17 128.176.124.24 \</p> <p>128.176.233.0/255.255.255.0</p> <p>sshd: 134.194.20.10</p> <p>in.ftpd: 64.20.10.2</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>Andere Applikationen mit TCP-Wrapper Support</p> <p># package name | daemon path | token</p> <p># ----------------------------------------------------------------------------# ssh, openssh | /usr/sbin/sshd | sshd, sshd-fwd-x11, sshd-fwd-</p> <p># quota | /usr/sbin/rpc.rquotad | rquotad# tftpd | /usr/sbin/in.tftpd | in.tftpd# portmap | /sbin/portmap | portmap</p> <p># The portmapper does not verify against hostnames# to prevent hangs. It only checks non-local addresses.</p> <p>## (kernel nfs server)# nfs-utils | /usr/sbin/rpc.mountd | mountd</p> <p># nfs-utils | /sbin/rpc.statd | statd#</p> <p># (unfsd, userspace nfs server)# nfs-server | /usr/sbin/rpc.mountd | rpc.mountd</p> <p># nfs-server | /usr/sbin/rpc.ugidd | rpc.ugidd## (printing services)</p> <p># lprng | /usr/sbin/lpd | lpd# cups | /usr/sbin/cupsd | cupsd</p> <p># The cupsd server daemon reports to the cups# error logs, not to the syslog(3) facility.</p> <p>## (Uniterrupted Power Supply Software)# apcupsd | /sbin/apcupsd | apcupsd</p> <p># apcupsd | /sbin/apcnisd | apcnisd#</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>Runlevel konfigurieren</p> <p>Start mit yast2 runlevel (Runlevel 3 und 5: mit Netzwerk)</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>Runlevel konfigurieren</p> <p>Dienste nur im echten Bedarfsfall (Server) installieren, z.B.:</p> <p> apache2 (Webserver)</p> <p> cups (Printerqueues)</p> <p> mysql (Datenbank)</p> <p> nfsserver</p> <p> Postfix MTA (Mail)</p> <p> rsyncd (remote Backup/Replikation)</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>Apache Konfiguration</p> <p>Datei /etc/apache2/httpd.conf (kein TCP-Wrapper support)</p> <p>....</p> <p># forbid access to the entire filesystem by default</p> <p>Options None</p> <p>AllowOverride NoneOrder deny,allow</p> <p>Deny from allAllow from localhost</p> <p>Allow from 128.176.216.147Allow from 128.176.0.0/255.255.0.0</p> <p>...</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Konfiguration von Netzwerkdiensten</p> <p>Konfiguration des SSH-Dienstes</p> <p>Zahlreiche Konfigurationsoptionen mit Hilfe der Datei/etc/ssh/sshd config:</p> <p>UsePAM yes: benutzt PAM- statt ssh-EinstellungenPermitRootLogin no: root darf nicht !PasswordAuthentication no: verhindert getunnelte Klartextpassworte</p> <p>usw. usw.</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Uberwachung von aussen</p> <p>Uberwachung der Ports von aussen</p> <p>Portscanner testet die TCP/UDP-Ports eines Rechners</p> <p> testet die Verfugbarkeit der Dienste eines Rechners</p> <p> Sollte (darf !) man nur an den eigenen Rechnern einsetzen !</p> <p> ist im Prinzip ein Hacker-Tool ...</p> <p> gibt es in vielen Varianten, z.T. mit GUI (SAINT, ISS, Nessus)</p> <p> einfaches Kommandozeilen-Tool: nmap</p> <p>Sicherheit von Linux-Systemen</p> <p>Gegenmassnahmen</p> <p>Uberwachung von aussen</p> <p>nmap Beispiel</p> <p> Windows-Rechner:iltis:~ # nmap billgates</p> <p>Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2005-06-21 13:15 CEST</p>...

Recommended

View more >