Ordner schützen

Das verlegen des Ports bringt in sofern was, dass ein einfacher Portscan nicht ermitteln kann, was dort tatsaechlich fuer ein Dienst laeuft. Dazu muss man dann schon den auf diesem Port auflaufenden Traffic analysieren. Ausserdem sind die meisten Skript-Kiddy-Tools fuer SSH-Bruteforce auf Port 22 ausgelegt.
 
Das ist wohl wahr, mal gucken wie man das macht mit dem Port verlegen
 
Einfach den Port in der /etc/ssh/sshd_config aendern und den sshd neu starten.
 
Ich hab mal ne Frage an die echten Sicherheitsfachleute.

Laut nmap ist nur noch der Port 80 offen, der gänderte SSH Port wird scheinbar nicht erfast über nmap.

Meine Daten lade ich über SCP auf den Server, FTP ist zu.

Hab ich denn jetzt mehr Glück gegen einen Cracker oder Hacker oder wie auch immer sich diese bösen schimpfen ?

Das Forum läuft unter einem Benutzer der über Confixx eingerichtet wurde, sollte also keinerlei Rechte zum schreiben in wichtigen Verzeichnissen haben, hoffe.

Kann mir noch einer Sicherheitstipps geben ?

Gruß
bobo
 
Sofern der Webserver einigermassen sicher ist, hast du sicherlich bessere Chancen als vorher (also extra Benutzer fuer Webserver, Schreibzugriffe auf Verzeichnisse fuer diesen User nur, wenn absolut notwendig usw.).

nmap -p 1-65535 <host>

scannt uebrigens alle Ports, sonst werden nur die bekannten Ports gescannt. (Siehe auch 'man nmap') Damit wird dir sicherlich auch dein SSH-Port ausgegeben. Sicherlich gibt es noch einige zusaetzliche Sicherheitsmassnahmen, die man auf Webservern nutzen kann/sollte (z.B. ein IDS wie snort o.ae.). Ausserdem sorge dafuer, dass die TRACE- und TRACK-HTTP-Methoden in deinem Webserver unterbunden werden, damit XSS-Angriffe von vornherein kaum eine Chance haben. Wirklich sicher, wird deine Kiste vermutlich noch lange nicht sein, schliesslich benutzt du Confixx. :)
 
Also zu deinem Forum und Confixx kann ich leider nicht viel sagen, nur das dein neuer ssh-Port nicht angezeigt wird bei nmap ist genau das, was du erreichen wolltest. Du hast wahrscheinlich nur einen Standardscan gemacht und da werden nicht alle 65k Ports geprüft, sondern nur die häufigsten. Die meisten Angriffe werden über diese Standardports durchgeführt.

Wenn das Forum als eigenen Benutzer läuft und dieser nur auf die eigenen Ordner Rechte hat, sollte das meiner Meinung nach reichen. Du solltest dir regelmässig deine Logdateien ansehen ob da Unregelmässigkeiten auftreten.

Schade da war ich zu langsam mit meinem Post ;-)
Vielleicht kannst du deinen Server mal mit Nessus noch testen. Da kriegst du dann auch Hinweise, wie du die Probleme behebst.
Tipp für den Apache ist von mir noch mod_security ;-)
 
Zuletzt bearbeitet:
Wie kam eigentlich dieses Emailspamscript in den Ordner, wird sowas über FTP hochgeladen ?
Bringt mir das überhaupt was den FTPport zuzumachen oder kann ich mir das sparen ?
 
Es ist ohne die Logs schwer zu sagen, wie das hochgeladen wurde. Wenn du keinen FTP-Server hast, so kann man auch nichts über ftp hochladen. Es ist also nicht nutzlos.
 
Ich habe eigentlich keine Vorstellung welche Möglichkeiten des Uploads es noch gibt, über die Forensoftware kann man jedenfalls keine Scripte uploaden.

Und ich habe mir sagen lassen, WinSCP soll recht gut sein was den Datenaustausch betrifft.

Das mailen ist auch eingestellt, ich hoffe das ich jetzt erst Mal Ruhe habe.
Ich habe das Aide mal laufen lassen mit Aide --init, wie ich das Programm aber sinnvoll benutze muß ich auch noch rausfinden.
 
Prinzipiell sollte man alle Ports zu machen, die nicht benoetigt werden. Ausserdem sollte man den rp_filter aktivieren
Code:
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
um den IP-Spoofing-Muell von vorherein zu unterbinden. Der Server sollte bei komischen ICMP-Nachrichten die Klappe halten.
Code:
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
Um die Systemerkennung zu erschweren, sollte man die Default-TTL auf einen anderen Wert setzen
Code:
echo 61 > /proc/sys/net/ipv4/ip_default_ttl
Und man sollte das Limit fuer SYN- und SYN/ACK-Pakete beim Verbindungsaufbau etwas verringern.
Code:
echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
. Damit sollte der Server auch gegen die schlimmsten Flooder einigermassen geschuetzt sein. Eine fertige Firewall, fuer einen Rootserver, der nur SSH und HTTP nach aussen laesst, koennte wie folgt aussehen:

Code:
#!/bin/bash

echo "Starting firewall"

LOGLIMIT=20
IPTABLES=/usr/sbin/iptables

case "$1" in
start)
        # alle alten Regeln entfernen
        echo "Loesche alte Regeln"
        $IPTABLES -F
        $IPTABLES -X
        $IPTABLES -t nat -F

        ### ERSTELLE NEUE KETTEN ###
        echo "Erstelle neue Ketten"
        # Kette zum Loggen verworfener Pakete
        $IPTABLES -N LOGREJECT
        $IPTABLES -A LOGREJECT -m limit --limit $LOGLIMIT/minute -j LOG --log-prefix "FIREWALL REJECT " --log-level notice --log-ip-options --log-tcp-options
        $IPTABLES -A LOGREJECT -j REJECT --reject-with icmp-port-unreachable

        ### PROC MANIPULATION ###
        # auf Broadcast-Pings nicht antworten
        echo "Unterbinde Broadcast-Pings"
        echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
        # halt die Klappe bei komischen ICMP Nachrichten
        echo "Aktiviere Bogus ICMP Message Protection"
        echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
        # aktiviere SYN Flood Protection
        echo "Aktiviere SYN FLOOD Protection"
        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
        # Kicke den ganzen IP Spoofing Shit
        # (Source-Validierung anschalten)
        echo "Unterbinde IP Spoofing Attacken"
        echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
        # Setze Default-TTL auf 61 (Default fuer Linux ist 64)
        echo "Setze Default-TTL auf 61"
        echo 61 > /proc/sys/net/ipv4/ip_default_ttl
        # sende RST-Pakete wenn der Buffer voll ist
        echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
        # warte max. 30 secs auf ein FIN/ACK
        echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
        # unterbreche Verbindungsaufbau nach 3 SYN-Paketen
        # Default ist 6
        echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
        # unterbreche Verbindungsaufbau nach 3 SYN/ACK-Paketen
        # Default ist 6
        echo 3 > /proc/sys/net/ipv4/tcp_synack_retries

        ### MAIN PART ###
        echo "Setze Default-Policy auf DROP"
        # erstmal jeglichen Input verwerfen, was wir zulassen, kommt gleich :)
        $IPTABLES -P INPUT DROP
        $IPTABLES -P FORWARD DROP
        # Output muessen wir natuerlich zulassen und stellt ja auch keine Gefahr dar
        # Angreifer kommen ja meist von aussen bei Webservern
        $IPTABLES -P OUTPUT ACCEPT
        # bereits bestehende Verbindungen sollen nicht durchs starten der Firewall
        # geschlossen werden
        $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
        # im Loopback koennen wir jedem trauen
        $IPTABLES -A INPUT -i lo -j ACCEPT
        # erlaube Pings
        $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
        # erlaube SSH
        echo "Aktiviere SSH"
        $IPTABLES -A INPUT -p tcp --dport 22 --tcp-flags ALL SYN -j ACCEPT
        # Webserver
        echo "Aktiviere Webserver"
        $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
        # Alle TCP Packete, die bis hier hin kommen, werden
        # geloggt und rejected
        # Der Rest wird eh per Default Policy gedroppt...
        $IPTABLES -A INPUT -p tcp -j LOGREJECT
        $IPTABLES -A FORWARD -p tcp -j LOGREJECT
        ;;
*)
        echo "Usage: `basename $0` {start}" >&2
        exit 64
        ;;
esac

exit 0

In deinem Fall musst du natuerlich noch den SSH-Port aendern. Das ganze als init.d-Skript in die richtigen Runlevel verlinkt, und du hast eine grundlegende Firewall, die auf einem Rootserver recht gute Dienste leisten sollte. Zumindest tut sie es bei mir seit geraumer Zeit auf mehreren Rootservern. :)

Nachtrag: Mit aide --check, solltest du regelmaessig ueberpruefen, welche Dateien sich geaendert haben, dabei solltest du aber die Verzeichnisse /var und /tmp von vornherein garnicht erst beim --init mit reinnehmen, siehe dazu die aide.conf.
 
Ich kann von den Befehlen oben eingeben was ich will also root ich bekomme überall gesagt keine Berechtigung.

Und wenn ich aide --check eingeben kommt als Meldung couldn't open file for reading. ?(

Da File für die Firewall kann ich das für Suse 9.3 benutzen ?

Na hoffentlich bedeutet das nix.
 
Ich benutze dieses Firewall-Skript auch teilweise auf SuSE9.3-Servern, sollte daher keine Probleme machen. Wenn du allerdings schon bei den oben aufgezaehlten echo-Befehlen ins /proc Fehler-Meldungen bekommst, ist da irgendwas nicht richtig. Root sollte da problemlos in die entsprechend angegebenen Dateien schreiben koennen.

Du kannst die Firewall uebrigens testen, indem du das Skript ausfuehrbar machst (was du bei nem init.d-Skript eh tun musst) und mit '<scriptname> start' aufrufst.
 
Konischerweise kann ich das Aide --init problelos ausführen, das File ist da aber warum das check nicht geht is mir schleierhaft, bis jetzt konnte ich alles machen. ?(
 
Ich habe da eine Vermutung...

Schau mal in den Ordner /var/lib/aide und ueberpruefe, ob es dort eine Datei aide.db und eine Datei aide.db.new gibt. Wenn es nur die .new gibt, kopiere diese nach /var/lib/aide/aide.db

Code:
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Ist naemlich ein typischer Fehler von Leuten, die AIDE das erste Mal benutzen. Die DB wird immer als aide.db.new angelegt und muss dann nach aide.db kopiert werden. :) Das verhindert, dass du aus Versehen deine alte DB ueberschreibst, wenn du das nicht willst.

Nachtrag: Kopiere die AIDE-DB aber noch auf einen anderen Rechner (z.B. bei dir zu Hause) und mache das --check immer mit der Version von deinem Rechner, damit sicher ist, dass die DB nicht durch einen Angreifer manipuliert wurde, bevor du deine Dateien checkst und dieser dann doch Dateien vor dir verstecken kann.
 
Zuletzt bearbeitet:
stimmt ist mir gerade aufgefallen das es die Datei gar nicht gab, es war genau so wie Du es gesagt hast :))

gleich mal auf meinen Rechner runterkopieren.
 
Damit hast du das Problem der Datei-Integritaet also geloest. Wenn du jetzt noch auf Nummer sicher gehen willst, installierst du dir noch ein IDS ala snort und konfigurierst es so, dass es jeglichen HTTP- und SSH-Traffic auf bekannte Angriffssignaturen ueberprueft (gerade fuer HTTP sind sehr gute Regelsaetze bei snort schon dabei). Sollte dann tatsaechlich wieder mal ein Angriff durchkommen, kannst du zumindest nachverfolgen woher der kam und wie der Angriff rein aus Sicht des Netzwerks ablief. Mit AIDE kannst du dann checken, welche Dateien geaendert wurden, so dass du geaenderte Dateien ggf. aus einem Backup wieder einspielen kannst.
Wenn du ganz paranoid bist (so wie ich ;) ), dann packst du dir auch noch eine Stack-Smashing-Protection in den Kernel (z.B. den Openwall-Patch) und baust dir deinen Kernel damit neu. Dadurch laufen dann auch 99,8% der verfuegbaren lokalen Exploits gegen die Wand und man muss schon einiges an Erfahrung mitbringen, wenn man 1. den Datei-Check mit AIDE (sollte regelmaessig erfolgen), 2. das IDS und 3. den Stacksmashing-Guard umgehen will. Punkt Nr. 1 ist ziemlich unmoeglich, so lange du wirklich immer eine DB nutzt, die garantiert nicht durch andere manipuliert werden konnte (z.B., weil du sie immer auf nem USB-Stick am Mann traegst). Punkt Nummer 2 liesse sich mit Anti-IDS-Techniken wie 2-Byte-NOPs evtl. umgehen, erfordert aber eine Modifikation fast aller verfuegbaren Exploits und einiges an Programmierfaehigkeiten. Der Angreifer muss dann schon in der Lage sein Shellcodes zu schreiben, die 2-Byte-NOPs nutzen und auch sonst seinen Angriff gut verbergen koennen, damit er nicht vom IDS unterbunden wird. Der durchschnittlicher Cracker kann das meist nicht. Und bei Punkt Nummer 3, muss sich der Angreifer recht gut mit Kernel-Programmierung auskennen um wieder Stacks zu bekommen, auf denen er einen Overflow ausloesen kann. Ohne Reboot wird er das nicht schaffen und ein offensichtlich nicht vom Admin angeschupster Reboot sollte immer ein Warnsignal sein und Grund den kompletten Server zu checken.
Wichtig natuerlich fuer alle Server: Jegliche Server-Software und alles, was irgendwie mit Sicherheit zu tun hat oder nach aussen erreichbar ist, regelmaessig updaten.
 
Das mit snort will ich mal in Angriff nehmen, alles andere ist zunächst zu schwer für so einen Noob wie mich.

Wo bekomme ich das snort denn her ?
 
www.snort.org

SuSE sollte aber auch eines dabei haben, dann kannst du dir den Stress mit dem Kompilieren sparen und kannst es mit YOU updaten, wie den Rest des Systems. Abonnieren des Newsletters ist ratsam, da dort auch auf die wichtigsten Regelsatz-Updates hingewiesen wird und die sollte man immer aktuell von snort.org ziehen und einfach ueber die von SuSE rueber kopieren.
 
stimmt snort war dabei, hab ich installiert, läuft das irgendwie allein.
Habe snort_activate="yes" eingestellt.
 
Es laeuft normalerweise allein, du solltest es aber auf jeden Fall in der Prozessliste sehen. Ansonsten einfach mit 'rcsnort start' anschmeissen. Um sicherzustellen, dass es funktioniert, kannst du es auch einfach mit mit 'snort -c /etc/snort/snort.conf' aufrufen, wodurch es nicht in den Hintergrund geht und mit Strg+C abbrechbar ist. Ich empfehle dir aber, bevor du es startest die Konfiguration auf deinen Server anzupassen. Snort ist wirklich sehr gut dokumentiert und beim Lesen der Doku erfaehrst du auch gleich noch etwas Hintergrundwissen ueber IDS-Techniken und bekommst einen kleinen Eindruck davon, auf welche Unregelmaessigkeiten man bei Netzwerk-Traffic achten sollte.
 

Ähnliche Themen

Wie kann ich meine Websie offline/online archivieren (wget)?

Anti-Cheat-Software unter Linux: Immer weniger Spiele scheitern am Schutz vor Betrügern

Ubuntu Pro: Kostenlos mehr Sicherheit auch für Privatanwender (Update)

Ubuntu Pro: Kostenlos mehr Sicherheit auch für Privatanwender

Ubuntu Pro: Mehr Sicherheit auch für Privatanwender kostenlos

Zurück
Oben