#!/bin/sh # Setze Default-TTL auf 61 (Default fuer Linux ist 64) TTL=61 SYN_COOKIE=1 IGNORE_BROADCASTS=1 IGNORE_ROUTEABLE=1 TUNE_TIMEOUTS=1 LOG_MARTIANS=1 BLOCK_ICPM=0 ECN=1 # Mittels IP_CONNTRACK_MAX == MAX_CON lässt sich nun die maximale Anzahl gleichzeitiger Verbindungen fest auf einen bestimmten Wert einstellen. # Aber seid gewarnt. Jede einzelne mögliche Verbindung kostet 350 Bytes an Arbeitsspeicher, # der nicht mehr für andere Dinge genutzt werden kann. Setzt man also 10000, # so sind gerundet 3,34 MB Arbeitsspeicher für den normalen Gebrauch verloren (Kernel, Ramdisks, Programme). MAX_CON=8192 # Modul zum sicheren Konfigurieren des /proc Systems procinit(){ # Wollen wir überhaupt ICMP Traffic ? anschliesend ist kein Pink möglich! if [ x$BLOCK_ICPM == "x1" ]; then echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all else echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all fi # Sollen wir ICPM Redirects Akzeptieren ? if [ x$ICMP_REDIRECT == "x1" ]; then echo "1" > /proc/sys/net/ipv4/conf/all/accept_redirects else echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects fi # Synfloodprotection mit Syncookies ? if [ -f /proc/sys/net/ipv4/tcp_syncookies ]; then if [ x$SYN_COOKIE == "x1" ]; then echo "1" > /proc/sys/net/ipv4/tcp_syncookies else echo "0" > /proc/sys/net/ipv4/tcp_syncookies fi fi # Reagieren wir auf Broadcasts ? if [ -f /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then if [ x$IGNORE_BROADCASTS == "x1" ]; then echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts else echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts fi fi # Wollen wir nicht routbare IPS droppen ? (Spoofing Protection) if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then for nam in /proc/sys/net/ipv4/conf/*/rp_filter; do if [ x$IGNORE_ROUTEABLE == "x1" ]; then echo "1" > $nam else echo "0" > $nam fi done fi # DoS Prävention durch frisieren der Timeouts if [ x$TUNE_TIMEOUTS == "x1" ]; then #TCP FIN,ACK Timeout echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout echo "1800" > /proc/sys/net/ipv4/tcp_keepalive_time echo "0" > /proc/sys/net/ipv4/tcp_window_scaling echo "0" > /proc/sys/net/ipv4/tcp_sack # 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 #Verbindungsaufbau nach 3 SYN-Anfragen unterbrechen echo "3" > /proc/sys/net/ipv4/tcp_syn_retries fi # Hallo ich bin Windows XP mit einer checkpoint-firewall if [ x$FAKE_WINXP == "x1" ]; then echo "8738140" > /net/core/rmem_max echo "8738140" > /net/core/wmem_max echo "4096 873814 8738140" > /net/ipv4/tcp_rmem echo "4096 873814 8738140" > /net/ipv4/tcp_wmem fi # Protokolliere Pakete mit unmöglichen IPv4-Adressen if [ x$LOG_MARTIANS == "x1" ]; then for interface in /proc/sys/net/ipv4/conf/*/log_martians; do echo "1" > $interface done else for interface in /proc/sys/net/ipv4/conf/*/log_martians; do echo "0" > $interface done fi # Prüfen auf Netzwerküberlastung (Explicit Congestion Notification) if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then if [ x$ECN == "x1" ]; then echo "1" > /proc/sys/net/ipv4/tcp_ecn else echo "0" > /proc/sys/net/ipv4/tcp_ecn fi fi # Dem Kernel mitteilen das wir eine Dynamische IP haben if [ x$DHCPIP == "x1" ]; then echo "1" > /proc/sys/net/ipv4/ip_dynaddr else echo "0" > /proc/sys/net/ipv4/ip_dynaddr fi # Die Maximale Anzahl an Connections die gehalten werden können # Ist ein wenig Tricky da dieses Modul wohl an 2 Stellen sein könnte ! if [ -f /proc/sys/net/ipv4/ip_conntrack_max ] || [ -f /proc/sys/net/ipv4/netfilter/ip_conntrack_max ] ; then # Default location for ip_conntrack_max if [ -f /proc/sys/net/ipv4/ip_conntrack_max ]; then if [ x$MAX_CON != "x" ]; then echo "$MAX_CON" > /proc/sys/net/ipv4/ip_conntrack_max else echo "4096" > /proc/sys/net/ipv4/ip_conntrack_max fi fi # Alternate location for ip_conntrack_max if [ -f /proc/sys/net/ipv4/netfilter/ip_conntrack_max ]; then if [ x$MAX_CON != "x" ]; then echo "$MAX_CON" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max else echo "4096" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max fi fi fi # IP forwarding aktivieren (Sind wir ein Router ?) if [ -e /proc/sys/net/ipv4/ip_forward ]; then if [ x$IP_FORWARDING == "x1" ]; then echo "1" > /proc/sys/net/ipv4/ip_forward else echo "0" > /proc/sys/net/ipv4/ip_forward fi fi # Abschalten des UDP Patches if [ -e /proc/sys/net/ipv4/ip_masq_udp_dloose ]; then if [ x$LOOSE_UDPP == "x1" ]; then echo "1" > /proc/sys/net/ipv4/ip_masq_udp_dloose else echo "0" > /proc/sys/net/ipv4/ip_masq_udp_dloose fi fi # TIME TO LIFE wie lange geistert das Packet durchs Netzwerk if [ -e /proc/sys/net/ipv4/ip_default_ttl ]; then if [ x$TTL != "x" ]; then echo $TTL > /proc/sys/net/ipv4/ip_default_ttl else echo "64" > /proc/sys/net/ipv4/ip_default_ttl fi fi # ## Ab hier die Einträge die nicht in der Conf stehen # # Controls the System Request debugging functionality of the kernel if [ -e /proc/sys/kernel/sysrq ]; then echo "0" > /proc/sys/kernel/sysrq fi # Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. if [ -e /proc/sys/kernel/core_uses_pid ]; then echo "1" > /proc/sys/kernel/core_uses_pid fi # Unterbinden des auslesens der Uptime if [ -e /proc/sys/net/ipv4/tcp_timestamps ]; then echo "0" > /proc/sys/net/ipv4/tcp_timestamps fi # unterbreche Verbindungsaufbau nach 2 SYN/ACK-Paketen # Default ist 6 if [ -e /proc/sys/net/ipv4/tcp_synack_retries ]; then echo "2" > /proc/sys/net/ipv4/tcp_synack_retries fi # Ändere Portbereich für ausgehende Pakete if [ -e /proc/sys/net/ipv4/ip_local_port_range ]; then echo "30000 60000" > /proc/sys/net/ipv4/ip_local_port_range fi #Verlangsamt ICMP bei zu vielen Paketen if [ -e /proc/sys/net/ipv4/icmp_ratelimit ]; then echo "5" >/proc/sys/net/ipv4/icmp_ratelimit fi # Die default Schlangenlänge verdoppeln if [ -e /proc/sys/net/ipv4/ipv4/ip_queue_maxlen ]; then echo "2048" > /proc/sys/net/ipv4/ip_queue_maxlen fi if [ -e /proc/sys/net/ipv4/tcp_max_syn_backlog ]; then echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog fi # Antworten auf unsinnige Fehlermeldungen ignorieren if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses fi # Automatisches defragmentieren von IP Fragmenten if [ -e /proc/sys/net/ipv4/ip_always_defrag ]; then echo "1" > /proc/sys/net/ipv4/ip_always_defrag fi # ICMP send_redirect für jedes Interface deaktivieren if [ -e /proc/sys/net/ipv4/conf/all/send_redirects ]; then for interface in /proc/sys/net/ipv*/conf/*/send_redirects; do echo "0" > $interface done fi # routed packets werde nicht akzeptiert ! if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then for interface in /proc/sys/net/ipv*/conf/*/accept_source_route; do echo "0" > $interface done fi #Killt Pakete aus dem Adressraum 0.X.X.X if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then for interface in /proc/sys/net/ipv*/conf/*/bootp_relay; do echo "0" > $interface done fi # Keine ICMP-Redirects akzeptieren. Diese Packete könnten die Kernel Routing-Einstellungen # ändern. if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then for interface in /proc/sys/net/ipv*/conf/*/accept_redirects; do echo "0" > $interface done fi } procinit