• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Sicherheit schaffen bei Debian-Server für Internetzugriff

Cyrics

Newbie
Halli hallo,

ich hab es hinbekommen, dass mein Debian-Server 2.6 aus dem Internet zu erreichen ist.
Ich hab mir dafür ein DynDNS-Account eingerichtet, und bei meinem Router hab ich dann die Emule-Ports, FTP, SSH und HTTP geöffnet.
Auf meinem Debian läuft dann Apache um per webmin diesen fernzuadministrieren. Dazu eben der SSH-Zugriff um über das Terminal die shell zu steuern. Naja und der FTP-Zugang eben um Zugriff auf die Freigaben zu haben.

Was seht ihr nun für Möglichkeiten meinen kleinen Server zu schützen?
Letztendlich ist mein Router ja schon Firewall genug, oder? Er blockt alle Anfragen, die nicht in einem bestimmten IP-Bereich liegen ab. Ich würde sonst noch den HTTP-Zugriff über die htaccess beschränken.

Habt ihr sonst Tipps wie ich meinen kleinen Server noch sicherer machen kann :)
Ich hab zum Beispiel von der Beschränkung auf eine MAC-Adresse gehört. Welches Programm kann mir helfen dies zu verwirklchen?

danke schonmal im Vorraus :)
 
A

Anonymous

Gast
-m mac --mac-source 00:00:00:00:00
als iptable option zum erlauben einer bestimmten MAC, allerdings wäre ich hier vorsichtig, es dürfte recht unwahrscheinlich DEINE MAC sein, die letztendlich auf das Ziel zugreift.....wohl eher die des nächsten Hops.

und hier mal en paar regeln die das leben erleichtern (is auch recht sicher das):

(nebenbei: was in aller herrgott namen ist "debian 2.6"??? steinzeit debian oder wie?? du meinst sehr warscheinlich Linux Debian mit 2.6er Kernel, auch genannt Debian Sarge! )

Code:
#!/bin/bash
# ---------------------------------------------------------------------
# Linux-iptables-Firewallskript, Copyright (c) 2005 under the GPL
# Autogenerated by iptables Generator v1.18 (c) 2002-2005 by Harald Bertram 
# Please visit http://www.harry.homelinux.org for new versions of
# the iptables Generator (c).
# 
# This Script was generated by request from:
# DerSpezialist@Hotmail.com on: 2005-3-24 0:10.48 MET.
# 
# If you have questions about the iptables Generator or about
# your Firewall-Skript feel free to take a look at out website or
# send me an E-Mail to webmaster@harry.homelinux.org.
# 
# My special thanks are going to Lutz Heinrich (trinitywork at hotmail dot com)
# who made lots of Beta-Testing and gave me lots of well qualified
# Feedback that made me able to improve the iptables Generator.
# --------------------------------------------------------------------
#
### BEGIN INIT INFO
# Provides: IP-Paketfilter
# Required-Start: $network $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Short-Description: Harry's IP-Paketfilter
# Description: Harry's IP-Paketfilter provides reasonable
#      IP-Security for Home-Computers and small networks
### END INIT INFO
#

case "$1" in
  start)
    echo "Starte IP-Paketfilter"

    # iptables-Modul
    modprobe ip_tables
    # Connection-Tracking-Module
    modprobe ip_conntrack
    # Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
    modprobe ip_conntrack_irc
    modprobe ip_conntrack_ftp

    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X

    # Default-Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

    # MY_REJECT-Chain
    iptables -N MY_REJECT

    # MY_REJECT fuellen
    iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
    iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
    iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
    iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
    iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
    iptables -A MY_REJECT -p icmp -j DROP
    iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
    iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

    # MY_DROP-Chain
    iptables -N MY_DROP
    iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP "
    iptables -A MY_DROP -j DROP

    # Alle verworfenen Pakete protokollieren
    iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
    iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "

    # Korrupte Pakete zurueckweisen
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A OUTPUT -m state --state INVALID -j DROP

    # Stealth Scans etc. DROPpen
    # Keine Flags gesetzt
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP

    # SYN und FIN gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

    # SYN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

    # FIN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

    # FIN ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

    # PSH ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

    # URG ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP

    # Loopback-Netzwerk-Kommunikation zulassen
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    # Connection-Tracking aktivieren
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # HTTP
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 80 -j ACCEPT

    # HTTPS
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 443 -j ACCEPT

    # SMTP
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 25 -j ACCEPT

    # POP3
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 110 -j ACCEPT

    # POP3S
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 995 -j ACCEPT

    # IMAP
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 143 -j ACCEPT

    # IMAPS
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 993 -j ACCEPT

    # NNTP
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 119 -j ACCEPT

    # DNS
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 53 -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 53 -j ACCEPT

    # FTP
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 21 -j ACCEPT

    # SSH
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 22 -j ACCEPT

    # MYSQL
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 3306 -j ACCEPT

    # NTP
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 123 -j ACCEPT

    # Default-Policies mit REJECT
    iptables -A INPUT -j MY_REJECT
    iptables -A OUTPUT -j MY_REJECT

    # Max. 500/Sekunde (5/Jiffie) senden
    echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

    # Speicherallozierung und -timing für IP-De/-Fragmentierung
    echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
    echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
    echo 30 > /proc/sys/net/ipv4/ipfrag_time

    # TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

    # Maximal 3 Antworten auf ein TCP-SYN
    echo 3 > /proc/sys/net/ipv4/tcp_retries1

    # TCP-Pakete maximal 15x wiederholen
    echo 15 > /proc/sys/net/ipv4/tcp_retries2

    ;;

  stop)
    echo "Stoppe IP-Paketfilter"
    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    # Default-Policies setzen
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    ;;

  status)
    echo "Tabelle filter"
    iptables -L -vn
    echo "Tabelle nat"
    iptables -t nat -L -vn
    echo "Tabelle mangle"
    iptables -t mangle -L -vn
    ;;

  *)
    echo "Fehlerhafter Aufruf"
    echo "Syntax: $0 {start|stop|status}"
    exit 1
    ;;

esac
 
OP
C

Cyrics

Newbie
hey,

jap, ich schreib immer "Debian 2.6" ist halt kürzer als Debian Sarge zu schreiben ;)

Inwiefern meinst du das mit dem nächsten Hops bei gesetzter MAC-Einschränkung? Bin leider nicht so bewandert in dier Hinsicht

Verstehe das Firewall-Skript leider auch überhaupt nicht, und weiss nicht mal wie ich das einbinden kann *g*
Soll ich mir also ipcop installieren, und das Skript irgendwie einbinden?
 
A

Anonymous

Gast
*seufz*
1) Kein IPCop darufmachen, das benötigt grössere Modifikationen um überhaupt erstmal etwas Sicherheit zu haben
2) Meinen Text kannst du original so in eine Datei über die Shell kopieren und ausführen, es konfiguriert die Linux-interne Firewall.
3) Das Internet besteht im Grunde nur aus "Hops", dies sind einzelne Zwischenstationen, die ein Paket von dir durchwandern muss um zum Ziel zu kommen....zb sind da einige NameServer, Einwahlserver, Router, Filter etc....alles einzelne PCs.

DU ---> 2 --> 3 --> 4 ---> 5 ---> ZIEL (BEISPIEL!!)

dementsprechend sieht ZIEL auch nur die MAC von 5 als "--mac-source"
Zumindest war dies bei mir so... wenn jemand iptables beibringen kann die richtige MAC als Absender zu nehmen, dann soll er sich bitte hier meldn, würde mich auch interessieren
 
A

Anonymous

Gast
ich sehe gerade dass da manchmal eine zeile verrutscht ist in meinem text, wenn du selbige nicht änderst bzw. wieder zusammen schiebst werden bestimmte sachen nicht gehen.....
 
OP
C

Cyrics

Newbie
du meinst, auch wenn ein Leerzeichen bloss drin ist?
Hab schon mitbekommen, dass der mc-editor bei mir Probleme hat den Text einzufügen (starke Verschiebungen) und Textedit auf meinem iBook hat seinen eigenen Codetext da reingehauen... daher musste ich mich auf das gute alte vi zurückbesinnen... das hat das noch richtig interpretiert :)

Auch auf die Gefahr hin, dass du mich sicher für total dumm hälst, aber wie führt man eine beliebige Code-Datei aus?

Ich hab die Datei jetzt einfach mal iptables.conf genannt. Und bin als root angemeldet.

PS: und das mit dem Hops kannte ich schon. So ist es ja schliesslich auch mit den IPs. Jetzt weiss ich aber endlich wie der Begriff dafür heisst *g* Danke
 
A

Anonymous

Gast
ne, ich mein die verschiebung aufgrund der formatierung hier im forum, da ich es als "code" gepostet habe wurde seitlich ein bischen platz weggenommen und 1 oder 2 zeilen sind verrutscht und werden leider auch verrutscht übernommen.... aber is ja kein ding, einfach wieder hochziehen und gut
 
Oben