Toon posts:

[debian] iptables +dhcpd werkt nog niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo,

ik zit met het volgende :

ik heb een debian bak met daarop iptables die ik wil laten draaien als firewall en router(dhcpserver) ik wil zo snel mogelijk op internet met de clients (winxp) dan ben ik tenminste van het gezeur af van me ouders/broertje/zusje daarom gebruik ik het complete script van bart van nedlinux.nl
in de toekomst wil ik het gaan aanpassen en leren te begrijpen maar het is nu eerst de noodzaak dat de clients ff op internet kunnen.
nou heb ik ook een dhcpd server draaien op m'n server de clients krijgen mooi een ip adres dus dat werkt goed.
alleen werkt het internet nog niet

dit is mijn bewerkte script van bart :

#!/bin/sh

# Masquerading firewall (relatief veilig)

# Een hele relatief veilige masquerading firewall waarmee het mogelijk om met
# het hele achterliggende LAN het internet op te kunnen. De default policy
# wordt op 'weiger alles' gezet, waarna er gaten in de firewall worden
# gemaakt. Alleen de variabelen moeten aan de omgeving worden aangepast.
# Dit script dient alleen als voorbeeld. Het geeft aan hoe de theorie van
# hierboven kan worden toegepast. Hiervoor lever ik GEEN support.
# Kom dus niet aan met mailtjes van 'help, het werkt niet"...


############################################################################
# variabelen

## variabelen die moeten worden aangepast aan omgeving

# waar iptables staat
IPTABLES="/sbin/iptables"

# interfaces (aanpassen aan eigen omgeving)

# interface waarmee gateway aan lokale netwerk zit
INTERNAL_INTERFACE="eth1"

# interface waarmee gateway aan het internet zit
EXTERNAL_INTERFACE="eth0"

# ipadressen / netwerken
LAN="192.168.0.2/24" # lokale netwerk (aanpassen aan eigen omgeving)

# overige
MASQ="yes"
HTTP_SERVER="yes"
FTP_SERVER="no"
SSH_SERVER="yes"
NAME_SERVER="no"
SMTP_SERVER="no"
TELNET_SERVER="no"
LOG="yes"


## variabelen die NIET moeten worden aangepast

# interfaces
LOOPBACK_INTERFACE="lo" # loopback interface

# ipadressen / netwerken
ANYWHERE="0.0.0.0/0" # elk ip adres valt hierbinnen
LOOPBACK="127.0.0.1" # ip adres van localhost
CLASS_A="10.0.0.0/8" # klasse A prive netwerk
CLASS_B="172.16.0.0/12" # klasse B prive netwerk
CLASS_C="192.168.0.0/24" # klasse C prive netwerk

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


############################################################################
# clean-up + init

# flush en clear alle rules en zet de tellers op 0
${IPTABLES} -F
${IPTABLES} -X
${IPTABLES} -Z
${IPTABLES} -t nat -F
${IPTABLES} -t nat -X
${IPTABLES} -t nat -Z

# set de 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

## Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

## Enable IP-spoofing beveiliging
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do
echo 1 > $f
done

## Disable ICMP redirect acceptatie
for f in /proc/sys/net/ipv4/conf/*/accept_redirects ; do
echo 0 > $f
done

## Disable ICMP send_redirects
for f in /proc/sys/net/ipv4/conf/*/send_redirects ; do
echo 0 > $f
done

## Source routed pakketten niet accepteren
for f in /proc/sys/net/ipv4/conf/*/accept_source_route ; do
echo 0 > $f
done

## Log spoofed pakketten, source routed pakketten en redirected pakketten
for f in /proc/sys/net/ipv4/conf/*/log_martians ; do
echo 1 > $f
done

## Enable TCP SYN cookie beveiliging
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

## Enable ICMP broadcasting protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

## Enable ICMP dead error message protection
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

## Enable dynamic TCP/IP address hacking
echo 1 > /proc/sys/net/ipv4/ip_dynaddr


############################################################################
# op de loopback interface kunnen (en moeten) we alles toelaten

## Onbeperkt verkeer op lo toestaan
${IPTABLES} -A INPUT -i ${LOOPBACK_INTERFACE} -j ACCEPT
${IPTABLES} -A OUTPUT -o ${LOOPBACK_INTERFACE} -j ACCEPT


############################################################################
# in de gemiddelde HTK-environment kunnen we ook alles op het lokale netwerk
# toelaten

## Onbeperkt verkeer op interne interface toestaan
${IPTABLES} -A INPUT -i ${INTERNAL_INTERFACE} -j ACCEPT
${IPTABLES} -A OUTPUT -o ${INTERNAL_INTERFACE} -j ACCEPT


############################################################################
# sommige pakketten resoluut weigeren

## Weiger (en log) alle gefragmenteerde pakketten
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -f -j LOG \
--log-prefix "FRAGMENT! "
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -f -j DROP

## Weiger (en log) alles van privenetwerken op externe iface
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -s ${LOOPBACK} -j LOG \
--log-prefix "SPOOFING! "
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -s ${CLASS_A} -j LOG \
--log-prefix "CLASS A ADDRESS! "
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -s ${CLASS_B} -j LOG \
--log-prefix "CLASS B ADDRESS! "
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -s ${CLASS_C} -j LOG \
--log-prefix "CLASS C ADDRESS! "
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -s ${LOOPBACK} -j DROP
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -s ${CLASS_A} -j DROP
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -s ${CLASS_B} -j DROP
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -s ${CLASS_C} -j DROP


############################################################################
# masquerade

## Alles met afkomst van of bestemming lokale netwerk heeft forwarden
if [ "${MASQ}" = "yes" ] ; then

${IPTABLES} -A POSTROUTING -t nat -o ${EXTERNAL_INTERFACE} -j MASQUERADE

${IPTABLES} -A FORWARD -i ${INTERNAL_INTERFACE} \
-o ${EXTERNAL_INTERFACE} -s ${LAN} -d ! ${LAN} -j ACCEPT

${IPTABLES} -A FORWARD -o ${INTERNAL_INTERFACE} \
-i ${EXTERNAL_INTERFACE} -d ${LAN} -s ! ${LAN} \
-m state --state RELATED,ESTABLISHED -j ACCEPT

fi


############################################################################
# accepteer bepaalde ICMP pakketten

## Een aantal typen ICMP pakketten accepteren
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 0 -s ${ANYWHERE} \
-m limit --limit 2/s -j ACCEPT

${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 3 -s ${ANYWHERE} \
-m limit --limit 2/s -j ACCEPT

${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 5 -s ${ANYWHERE} \
-m limit --limit 2/s -j ACCEPT

${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 8 -s ${ANYWHERE} \
-m limit --limit 2/s -j ACCEPT

${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 11 -s ${ANYWHERE} \
-m limit --limit 10/s -j ACCEPT


${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 3 -d ${ANYWHERE} \
-m limit --limit 2/s -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 8 -d ${ANYWHERE} \
-m limit --limit 2/s -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 0 -d ${ANYWHERE} \
-m limit --limit 2/s -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p icmp \
--icmp-type 11 -d ${ANYWHERE} \
-m limit --limit 10/s -j ACCEPT


############################################################################
# TCP connecties gestart vanuit lokale netwerk accepteren

## accepteer TCP connecties vlgs SYS, ACK+SYN, ACK principe
${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
-m state --state ESTABLISHED,RELATED -j ACCEPT

${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
-m state --state ESTABLISHED,RELATED -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
--tcp-flags ACK,SYN SYN -j ACCEPT

## auth aanvragen accepteren (voorkomt timeouts)
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
--source-port ${UNPRIVPORTS} \
--destination-port 113 -j ACCEPT


############################################################################
# UDP

## dns aanvragen vanuit lokale netwerk toestaan
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p udp \
--source-port 53 --destination-port ${UNPRIVPORTS} -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p udp \
--source-port ${UNPRIVPORTS} --destination-port 53 -j ACCEPT

## traceroute toestaan
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p udp \
--source-port 32769:65535 --destination-port 33434:33523 \
-j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p udp \
--source-port 32769:65535 --destination-port 33434:33523 \
-j ACCEPT

## time toestaan
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p udp \
--source-port 37 --destination-port ${UNPRIVPORTS} -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p udp \
--source-port ${UNPRIVPORTS} --destination-port 37 -j ACCEPT

# andere UDP poorten hier toevoegen


############################################################################
# zelf servers draaien

## http server openstellen voor buitenwereld
if [ "${HTTP_SERVER}" = "yes" ] ; then
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
--source-port ${UNPRIVPORTS} \
--destination-port 80 -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
--source-port 80 \
--destination-port ${UNPRIVPORTS} -j ACCEPT
fi

## nameserver openstellen voor buitenwereld
if [ "${NAME_SERVER}" = "yes" ] ; then
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
--source-port ${UNPRIVPORTS} \
--destination-port 53 -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
--source-port 53 \
--destination-port ${UNPRIVPORTS} -j ACCEPT
fi

## ssh server openstellen voor buitenwereld
if [ "${SSH_SERVER}" = "yes" ] ; then
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
--source-port ${UNPRIVPORTS} \
--destination-port 22 -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
--source-port 22 \
--destination-port ${UNPRIVPORTS} -j ACCEPT
fi

## telnet server openstellen voor buitenwereld
if [ "${TELNET_SERVER}" = "yes" ] ; then
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
--source-port ${UNPRIVPORTS} \
--destination-port 23 -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
--source-port 23 \
--destination-port ${UNPRIVPORTS} -j ACCEPT
fi

## smtp server openstellen voor buitenwereld
if [ "${SMTP_SERVER}" = "yes" ] ; then
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
--source-port ${UNPRIVPORTS} \
--destination-port 25 -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
--source-port 25 \
--destination-port ${UNPRIVPORTS} -j ACCEPT
fi

## ftp server openstellen voor buitenwereld
if [ "${FTP_SERVER}" = "yes" ] ; then
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
-m state --state NEW,ESTABLISHED \
--source-port ${UNPRIVPORTS} --destination-port 21 -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
-m state --state ESTABLISHED,RELATED \
--source-port 21 --destination-port ${UNPRIVPORTS} -j ACCEPT

## ftp server - active
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
-m state --state ESTABLISHED,RELATED ! --syn \
--destination-port 20 -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
-m state --state ESTABLISHED,RELATED \
--source-port 20 -j ACCEPT

## ftp server - passive
${IPTABLES} -A INPUT -i ${EXTERNAL_INTERFACE} -p tcp \
-m state --state ESTABLISHED,RELATED \
--destination-port ${UNPRIVPORTS} -j ACCEPT

${IPTABLES} -A OUTPUT -o ${EXTERNAL_INTERFACE} -p tcp \
-m state --state ESTABLISHED,RELATED \
--source-port ${UNPRIVPORTS} -j ACCEPT
fi


############################################################################
# trash opvangen

# alles dat nu nog wordt opgevangen 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

de firewall/router draait dus wel ik zie dat hij start alleen ik kan met de clients nog niet het internet op.
ik heb de clients ingesteld dat ze hun ip en dns automatisch moeten verkrijgen(dit zou goed moeten zijn d8 ik)

wat doe ik verkeerd waarom het nog niet werkt?

eth0 = mijn inet verbinding
eth1 = lokale netwerk

wat zie ik over het hoofd?
wie kan me helpen ?
zodat me ouders + zusje blij zijn en ik ook omdat ik van het gezeur af ben
als ik te weinig informatie heb gegeven meld dit even dan zorg ik daar even voor

alvast hartelijk bedankt

Tom

Verwijderd

wat zie ik over het hoofd?
Je moet de POSTROUTING chain in de NAT tabel nog instellen. Zoiets als dit:
code:
1
2
3
4
5
$IPTABLES --table nat \
          --append POSTROUTING \
          --out-interface $WORLDNIC \
          --jump SNAT \
          --to-source $WORLDIP


Oja, je moet ook alle gerelateerde pakketjes natuurlijk ook doorlaten met een speciale regel als dit:
code:
1
2
3
4
5
6
7
$IPTABLES --append INPUT \
          --in-interface $WORLDNIC \
          --destination $WORLDIP \
          --match state \
          --state ESTABLISHED,RELATED \
          --source $ANYWHERE \
          --jump ACCEPT


////Edit: OEI, ik zie nu pas dat je wel je MASQ regel hebt aangezet. Misschien kun deze proberen te vervangen door echte NAT, want MASQ is deprecated voor zover ik weet.

[ Voor 129% gewijzigd door Verwijderd op 02-05-2003 12:40 ]


Verwijderd

Topicstarter
op het nedlinux forum vertelde ze mij dat er met het script nix aan de hand zou moeten zijn

Verwijderd

Checklist:
  • Is het gateway IP adres van je clients hetzelfde als je router zijn interne IP adres?
  • Kun je wel vanaf een client naar buiten pingen op een IP adres? (Geen URL gebruiken.)

  • imdos
  • Registratie: Maart 2000
  • Laatst online: 04-05 14:00

imdos

I use FreeNAS and Ubuntu

LAN="192.168.0.2/24" # lokale netwerk (aanpassen aan eigen omgeving)
Is dit een tikfout? want dit is of 192.168.0.0/24 of 192.168.2.0/24

En in welke range deel je adressen voor je lan uit?

pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem


Verwijderd

Topicstarter
sorry tikfout 192.168.0.0/24
Pagina: 1