Vraag & Antwoord

OS Linux

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

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/rp_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

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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