Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

[ RH8 - iptables] - Met hele LAN internet op...

water
5 antwoorden
  • Hallo allemaal,

    Het zit zo:
    Internetmodem @home >> Hardwarematige router (192.168.1.1)
    Router >> Eth1 op Linux-server
    Eth1: 192.168.1.9
    255.255.255.0
    Gateway: 192.168.1.1
    Eth0 op Linux-server >> Een poort op switch
    Eth0: 192.168.1.10
    255.255.255.0
    Gateway: 192.168.1.1
    Vanaf andere poorten op de switch gaan netwerkkabels naar de pc's die op Linux / Windows draaien. Zij hebben als Ip-Adres 192.168.12 voor Dekkers-WS2 en 192.168.1.13 voor Dekkers-WS3 enzovoorts….

    Ik heb het volgende firewall-script van iemand gekregen:
    Code:

    # Globale variabelen

    # path naar IPtables
    IPTABLES="/sbin/iptables"

    # interfaces
    LOOPBACK_IF="lo" #loopback interface
    INTERNAL_IF="eth0" #interface waarmee de server aan het LAN zit
    EXTERNAL_IF="eth1" #interface waarmee de server aan het inet zit
    ISDN_IF="ppp0" # sometimes i need to use isdn

    # netwerken
    IPADDR=192.168.10.2
    SMTPSRV=192.168.1.2
    LAN="192.168.1.0/24"
    ANYWHERE="0.0.0.0/0"
    LOOPBACK="127.0.0.1"
    CLASS_A="10.0.0.0/8"
    CLASS_B="172.16.0.0/16"
    CLASS_C="192.168.0.0/24"
    AUDAX="144.2.0.0/16"
    NTPSERVER=194.109.6.65

    #Poorten

    PRIVPORTS="0:1023"
    UNPRIVPORTS="1024:65535"

    #Andere, opties yes/no
    MASQ="yes"
    HTTP="no"
    FTP="no"
    SSH="no"
    NAME="no"
    NTP="yes"
    SMTP="yes"
    TELNET="no"
    LOG="yes"

    #Tot hier aanpassen voor de lokale configuratie, hieronder dus
    #niets wijzigen!!
    #########################################################
    # clean up & init
    # flush tables en zet alle tellers op nul
    iptables -F
    iptables -X
    iptables -Z
    iptables -t nat -F
    iptables -t nat -X
    iptables -t nat -Z

    # init default policies
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT DROP
    iptables -t nat -P PREROUTING ACCEPT
    iptables -t nat -P POSTROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT

    #Initialiseren van de kernel
    echo 1 > /proc/sys/net/ipv4/ip_forward
    ##Enable IP_spoofing beveiliging

    for f in /proc/sys/net/ipv4/conf/default
    p_filter; do
    echo 1 > $f
    done

    ##Disable ICMP redirect acceptatie

    for f in /proc/sys/net/ipv4/conf/all/accept_redirects; do
    echo 0 > $f
    done

    ##Log spoofed en redirect pakketten

    for f in /proc/sys/net/ipv4/conf/default/log_martians; do
    echo 1 > $f
    done

    #onbeperkt verkeer op Loopback device toestaan (verplicht)
    iptables -A INPUT -i $LOOPBACK_IF -j ACCEPT
    iptables -A OUTPUT -o $LOOPBACK_IF -j ACCEPT

    #ombeperkt verkeer op LAN toestaan
    iptables -A INPUT -i $INTERNAL_IF -j ACCEPT
    iptables -A OUTPUT -o $INTERNAL_IF -j ACCEPT

    #onbeperkt verkeer op ISDN toestaan
    iptables -A INPUT -i $ISDN_IF -j ACCEPT
    iptables -A OUTPUT -o $ISDN_IF -j ACCEPT

    # Deze pakketten resoluut weigeren
    ## weiger alle gefragmeteerd pakketten en log deze

    iptables -A INPUT -i $EXTERNAL_IF -f -j LOG –log-prefix "FRAGMENT!"
    iptables -A INPUT -i $EXTERNAL_IF -f -j DROP

    #
    ## weiger de udp 520 pakketten vanaf de router, zonder logging
    iptables -A INPUT -i $EXTERNAL_IF -p udp \
    -s $ANYWHERE -d $ANYWHERE \
    –source-port 520 –destination-port 520 -j DROP

    #
    # weiger directe web-access, buiten squid om, vanaf het LAN
    iptables -A FORWARD -i $INTERNAL_IF -p tcp –destination-port 80 -j LOG –log-prefix "HTTP buiten Squid om: "
    iptables -A FORWARD -i $INTERNAL_IF -p tcp –destination-port 80 -j DROP

    iptables -A INPUT -i $EXTERNAL_IF -s $LOOPBACK -j LOG –log-prefix "SPOOFING!"
    iptables -A INPUT -i $EXTERNAL_IF -s $CLASS_A -j LOG –log-prefix "CLASS A!"
    iptables -A INPUT -i $EXTERNAL_IF -s $CLASS_B -j LOG –log-prefix "CLASS B!"
    iptables -A INPUT -i $EXTERNAL_IF -s $CLASS_C -j LOG –log-prefix "CLASS C!"
    iptables -A INPUT -i $EXTERNAL_IF -s $LOOPBACK -j DROP
    iptables -A INPUT -i $EXTERNAL_IF -s $CLASS_A -j DROP
    iptables -A INPUT -i $EXTERNAL_IF -s $CLASS_B -j DROP
    iptables -A INPUT -i $EXTERNAL_IF -s $CLASS_C -j DROP

    #Masquerade

    ## alles afkomstig van het LAN forwarden

    if [ "$MASQ" = "yes" ] ; then
    iptables -A POSTROUTING -t nat -o $EXTERNAL_IF -j MASQUERADE
    iptables -A FORWARD -i $INTERNAL_IF -o $EXTERNAL_IF -s $LAN -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -o $INTERNAL_IF -i $EXTERNAL_IF -d $LAN -m state –state ESTABLISHED,RELATED -j ACCEPT
    fi

    ## Een aantal typen ICMP pakketten accepteren
    iptables -A INPUT -i $EXTERNAL_IF -p icmp \
    –icmp-type 0 -s $ANYWHERE -d $IPADDR \
    -m limit –limit 2/s -j ACCEPT

    iptables -A INPUT -i $EXTERNAL_IF -p icmp \
    –icmp-type 3 -s $ANYWHERE -d $IPADDR \
    -m limit –limit 2/s -j ACCEPT

    iptables -A INPUT -i $EXTERNAL_IF -p icmp \
    –icmp-type 5 -s $ANYWHERE -d $IPADDR \
    -m limit –limit 2/s -j ACCEPT

    iptables -A INPUT -i $EXTERNAL_IF -p icmp \
    –icmp-type 8 -s $ANYWHERE -d $IPADDR \
    -m limit –limit 2/s -j ACCEPT

    iptables -A INPUT -i $EXTERNAL_IF -p icmp \
    –icmp-type 11 -s $ANYWHERE -d $IPADDR \
    -m limit –limit 10/s -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p icmp \
    –icmp-type 3 -s $IPADDR -d $ANYWHERE \
    -m limit –limit 2/s -j ACCEPT

    #TCP connectie's van binnenuit toestaan

    iptables -A OUTPUT -o $EXTERNAL_IF -p tcp \
    -m state –state NEW,ESTABLISHED,RELATED \
    -s $IPADDR -d $ANYWHERE -j ACCEPT

    iptables -A INPUT -i $EXTERNAL_IF -p tcp \
    -m state –state ESTABLISHED,RELATED \
    -s $ANYWHERE -d $IPADDR -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p tcp \
    –tcp-flags ACK,SYN SYN \
    -s $IPADDR -d $ANYWHERE -j ACCEPT

    #UDP connecties van binnenuit toestaan

    iptables -A INPUT -i $EXTERNAL_IF -p udp \
    -s $ANYWHERE -d $IPADDR \
    –source-port 53 –destination-port $UNPRIVPORTS -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p udp \
    -s $IPADDR -d $ANYWHERE \
    –source-port $UNPRIVPORTS –destination-port 53 -j ACCEPT

    ## traceroute toestaan
    iptables -A INPUT -i $EXTERNAL_IF -p udp \
    -s $ANYWHERE -d $IPADDR \
    –source-port 32769:65535 –destination-port 33434:33523 -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p udp \
    -s $IPADDR -d $ANYWHERE \
    –source-port 32769:65535 –destination-port 33434:33523 -j ACCEPT

    ## time toestaan
    iptables -A INPUT -i $EXTERNAL_IF -p udp \
    -s $ANYWHERE -d $IPADDR \
    –source-port 37 –destination-port $UNPRIVPORTS -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p udp \
    -s $IPADDR -d $ANYWHERE \
    –source-port $UNPRIVPORTS –destination-port 37 -j ACCEPT


    ## auth aanvragen accepteren (voorkomt timeouts)
    iptables -A INPUT -i $EXTERNAL_IF -p tcp \
    -s $ANYWHERE -d $IPADDR \
    –source-port $UNPRIVPORTS –destination-port 113 -j ACCEPT

    # Servers beschikbaar stellen
    ## ssh server openstellen voor buitenwereld

    if [ "$SSH" = "yes" ] ; then
    iptables -A INPUT -i $EXTERNAL_IF -p tcp \
    -s $ANYWHERE -d $IPADDR \
    –source-port 1020:1023 –destination-port 22 -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p tcp \
    -s $IPADDR -d $ANYWHERE \
    –source-port 22 –destination-port 1020:1023 -j ACCEPT

    fi

    ## http server openstellen voor buitenwereld

    if [ "$HTTP" = "yes" ] ; then
    iptables -A INPUT -i $EXTERNAL_IF -p tcp \
    -s $ANYWHERE -d $IPADDR \
    –source-port $UNPRIVPORTS –destination-port 80 -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p tcp \
    -s $IPADDR -d $ANYWHERE \
    –source-port 80 –destination-port $UNPRIVPORTS -j ACCEPT
    fi

    ## smtp server openstellen voor buitenwereld
    if [ "$SMTP" = "yes" ] ; then
    iptables -A INPUT -i $EXTERNAL_IF -p tcp \
    -s $ANYWHERE -d $SMTPSRV \
    –source-port $UNPRIVPORTS –destination-port 25 -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p tcp \
    -s $SMTPSRV -d $ANYWHERE \
    –source-port 25 –destination-port $UNPRIVPORTS -j ACCEPT
    fi

    ## ftp server openstellen voor buitenwereld
    if [ "$FTP" = "yes" ] ; then
    iptables -A INPUT -i $EXTERNAL_IF -p tcp \
    -s $ANYWHERE -d $IPADDR -m state –state NEW,ESTABLISHED \
    –source-port $UNPRIVPORTS –destination-port 21 -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p tcp \
    -s $IPADDR -d $ANYWHERE -m state –state ESTABLISHED,RELATED \
    –source-port 21 –destination-port $UNPRIVPORTS -j ACCEPT

    ## ftp server - active
    iptables -A INPUT -i $EXTERNAL_IF -p tcp \
    -s $ANYWHERE -d $IPADDR -m state –state ESTABLISHED,RELATED ! –syn \
    –destination-port 20 -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p tcp \
    -s $IPADDR -d $ANYWHERE -m state –state ESTABLISHED,RELATED \
    –source-port 20 -j ACCEPT

    ## ftp server - passive
    iptables -A INPUT -i $EXTERNAL_IF -p tcp \
    -s $ANYWHERE -d $IPADDR -m state –state ESTABLISHED,RELATED \
    –destination-port $UNPRIVPORTS -j ACCEPT

    iptables -A OUTPUT -o $EXTERNAL_IF -p tcp \
    -s $IPADDR -d $ANYWHERE -m state –state ESTABLISHED,RELATED \
    –source-port $UNPRIVPORTS -j ACCEPT

    fi


    ## NTP toestaan
    if [ "$NTP" = "yes" ] ; then
    iptables -A INPUT -i $EXTERNAL_IF -p udp \
    –sport 123 –dport 123 -s $NTPSERVER -d $IPADDR -j ACCEPT
    iptables -A OUTPUT -o $EXTERNAL_IF -p udp \
    –sport 123 –dport 123 -s $IPADDR -d $NTPSERVER -j ACCEPT
    fi

    # alles dat nu nog wordt afgevangen loggen

    if [ "$LOG" = "yes" ] ; then
    iptables -A INPUT -j LOG –log-prefix "Filtered on INPUT "
    iptables -A OUTPUT -j LOG –log-prefix "Filtered on OUTPUT "
    iptables -A FORWARD -j LOG –log-prefix "Filtered on FORWARD "
    fi



    # Als ik nu dit *.sh bestand uitvoer en daarna IPTABLES -L draai krijg ik van alles op mijn beeld. Na herstarten van de computer en weer IPTABLES -L draaien levert dit drie regeltjes met alledrie ACCEPT achterop…

    # Ik heb http://www.nedlinux.nl/~bart/?page=9 reeds als documentatie gevonden, maar kan er weinig wijs uit en weet niet hoe een sh-bestand uit te voeren…
    ———-

    Mijn vragen dus:
    - Welke gateway stel ik in bij Windhoos en Linux op werkstations
    - Hoe voer ik mijn *.sh-script uit en blijvend, dus na opnieuw opstarten nog steeds de regels gelden!

    Sorry voor de hele lap code en alvast iedereen alvast bedankt!
  • Hoi,

    na het ff vlug doorgelezen te hebben ziet het er OK uit…

    1 ding snap ik niet :

    als je modem tegelijk een router is zou deze zelf in moeten bellen en het internet zowiezo al delen…. deze kan je duz meteen in je switch prikken… (tenzij het een NIET getweakte Alcatel MXStream modem is)

    maar er ff vanuit gaande dat dat dus idd niet zo is :

    geef dat .sh script executable rechten voor root (chmod 700 bestand.sh)
    gooi m waar je wilt (b.v. /etc –> move bestand.sh /etc)

    het makkelijkst is daarna om m in rc.local te zetten die bij RedHat 8.0 d8 ik ook in /etc staat. gewoon onderaan "/etc/bestand.sh" zetten zou moeten werken na reboot.

    grtn,

    JJ

    ps. het leerzaamste is uiteraard om dit helemaal zelf te doen (die firewall)
    IBM heeft wel een leuke tutorial hiervoor om dit te leren :

    http://www-106.ibm.com/developerworks/edu/dw-linuxfw-i_l-os.html

    Je moet je alleen ff gratis registreren.
    Kijk op http://www-106.ibm.com/developerworks/views/linux/tutorials.jsp voor meer tutorials.
  • Gateway-ip is het interne ip-adres van je router. Maar omdat de server er tussen zit, fungeert die ook als een router. Voor de clients moet je dus het ip-adres van eth0 opgeven.
  • Klopt,

    Betreffende de vraag over 'Switch' 'Router' ed. Het klopt dat ik ook mijn router kan gebruiken om met het hele LAN het internet op te kunnen. Dat doe ik niet omdat ik gebruik wil maken van een fatsoenlijke firewall die daar ontbreekt.

    Om een of andere reden werkt het niet goed, ook niet als ik als gateway '192.168.1.10' (=IP Eth0) opgeef. Ik maak gebruik van een @home-kabelverbinding… Ik heb het nu wel voor elkaar gekregen om het script bij het opstarten te laten uitvoeren, echter kan ik nog NIET met mijn LAN het internet op? Rarararara….. :cry: :cry: :cry:
  • [code:1:61a84365f7]
    @home kabelmodem
    |
    |
    |
    |
    | WAN
    ——–
    | router |
    ——– LAN: 192.168.10.1
    |
    |
    | eth1: 192.168.10.2
    ——–
    | Linux |
    | RH80 |
    ——–
    | eth0: 192.168.1.10
    |
    |
    ——–
    | switch |
    ——–
    | |
    | ———–
    | |
    ——– ——-
    | ws2 | | wsx |
    ——– ——-
    192.168.1.12 192.168.1.1x
    (Met gateway's 192.168.1.10)
    [/code:1:61a84365f7]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.