Toon posts:

[IPTABLES] Commentaar gevraagd op firewall.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende iptables firewall geschreven voor de volgende constructie en wou daar graag commentaar van jullie op hebben als dat kan. Dus als er dingen ontbreken of verkeerd zijn laat dat dan horen, ik heb hem getest en hij werkt dus wel.

Constructie: Slackware server met 2 netwerkkaarten, op eth0 komt m'n inet binnen en op eth1 zit m'n interne netwerk. Op het interne netwerk zitten 2 computers met respectievelijk 192.168.20.3 en 192.168.20.4 als ip adressen. Mijn eth0 heeft een extern ip in de 130.*.*.* range.

Het is de bedoeling dat de firewall het inet verkeer van de interne pc's forward en masquerade. Alle het inkomende verkeer op het externe ip moet worden geblokkeert behalve de poorten: 22/80/113/31330/65101.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh 

# Iptables 
ipt="/usr/sbin/iptables" 

# Netwerk kaarten, Intern en extern 
int_if="eth1" 
ext_if="eth0" 

# IP 
int_ip="192.168.20.2" 
ext_ip="130.*.*.*" 

# Interne netwerk IP 
int_net="192.168.20.0/24" 

# DNS IP 
dns1="130.89.1.2" 
dns2="130.89.220.2" 

# Flush 
echo "Flushing tables..." 
$ipt -F 
$ipt -t nat -F 
$ipt -t mangle -F 

# Policies 
$ipt -P FORWARD DROP 
$ipt -P INPUT ACCEPT 
$ipt -P OUTPUT ACCEPT 

# Allow 
echo "Allowing 22,113,80,31330,65101..." 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s 0/0          -d $ext_ip -p tcp --dport 22 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s 0/0          -d $ext_ip -p tcp --dport 80 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s 0/0          -d $ext_ip -p tcp --dport 113 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s 0/0          -d $ext_ip -p tcp --dport 31330 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s 0/0          -d $ext_ip -p tcp --dport 65101 
$ipt    -A INPUT -j ACCEPT      -i $int_if      -s 0/0          -d $int_ip -p tcp --dport 22 
$ipt    -A INPUT -j ACCEPT      -i $int_if      -s 0/0          -d $int_ip -p tcp --dport 80 
$ipt    -A INPUT -j ACCEPT      -i $int_if      -s 0/0          -d $int_ip -p tcp --dport 113 
$ipt    -A INPUT -j ACCEPT      -i $int_if      -s 0/0          -d $int_ip -p tcp --dport 31330 
$ipt    -A INPUT -j ACCEPT      -i $int_if      -s 0/0          -d $int_ip -p tcp --dport 65101 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s $dns1        -d $ext_ip -p udp --sport 53 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s $dns2        -d $ext_ip -p udp --sport 53 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s 0/0          -d $ext_ip -p icmp --icmp-type echo-request -m limit --limit-burst 2 

# Block 
echo "Blocking the rest..." 
$ipt    -A INPUT -j DROP        -i $ext_if      -s 0/0          -d $ext_ip -p tcp 
$ipt    -A INPUT -j DROP        -i $ext_if      -s 0/0          -d $ext_ip -p udp 
$ipt    -A INPUT -j DROP        -i $ext_if      -s 0/0          -d $ext_ip -p icmp 

# Forwarding 
echo "Forwarding $int_net to the outside world..." 
$ipt -A FORWARD -j ACCEPT       -s $int_net 
$ipt -A FORWARD -j ACCEPT       -d $int_net 

# Masquerade 
echo "Masquerading $int_net..." 
$ipt -t nat -A POSTROUTING -j MASQUERADE -s $int_net -d ! $int_net 

echo "Done! Have a nice day!"

Verwijderd

Wat ik toch wel mis is statematching. Dat is mijn ogen toch wel het belangrijkste voordeel van iptables ten opzichte van ipchains.

Verder zet je default policy voor je input chain op accept. Dan laat je standaard al het verkeer door. Afgezien van het feit dat een onveilige uitgangspositie is accept je ook nog apart verschillende poorten voor je input chain. Beetje dubbelop dus. Dan block je vervolgens weer alles. 2 keer fout dus.

Wat je precies probeert te doen met die regels onder forwarding is mij niet helemaal duidelijk. Wat is het idee daarachter.

Kortom voor een veilige firewall moet je nog heel wat sleutelen.

Kijk eens naar de volgende links. Wordt heel duidelijk de basis een beetje uitgelegd.

deel 1

deel 2

[ Voor 30% gewijzigd door Verwijderd op 09-02-2003 23:11 ]


Verwijderd

Topicstarter
Ok, alvast bedankt, ik zal eens kijken wat ik zal veranderen maar dit is pas m'n eerste versie. Meer suggesties of voorbeelden van hoe het wel moet zijn welkom.

Verwijderd

"De" gouden rule is ook eigenlijk $ipt -P INPUT DROP, dat zet de default policy van je input chain op drop, dan /moet/ je wel accept rules toevoegen voor dingen die je wil, en zo ben je er ook alleen zeker van dat troep die jij toestaat erdoor komt en niet ergens toevallig iets langs jouw drop rules glipt ofzo. mgoed'

stateful matching is ook een must inderdaad:
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

enneeh jouw "ping limiter" werkt zo niet, volgens mij...
ik heb dit:
code:
1
2
3
$IPTABLES -N icmp-chain
$IPTABLES -A icmp-chain -m limit --proto icmp --limit 3/sec --limit-burst 3 -j ACCEPT
$IPTABLES -A icmp-chain -j DROP


en in m'n INPUT chain:

code:
1
2
3
4
5
6
### ICMP-Jumps
$IPTABLES -A INPUT -p icmp -s 0/0 --icmp-type 0 -j icmp-chain
$IPTABLES -A INPUT -p icmp -s 0/0 --icmp-type 3 -j icmp-chain
$IPTABLES -A INPUT -p icmp -s 0/0 --icmp-type 5 -j icmp-chain
$IPTABLES -A INPUT -p icmp -s 0/0 --icmp-type 11 -j icmp-chain
$IPTABLES -A INPUT -p icmp -s 0/0 --icmp-type 8 -j icmp-chain


Verder een tip: portscan jezelf vanaf een bak 'buiten je trusted networks' :)
Zie je vanzelf wat er nog gapend open staat naar de buitenwereld!

[ Voor 3% gewijzigd door Verwijderd op 10-02-2003 10:00 ]


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Verwijderd schreef op 09 February 2003 @ 22:49:
code:
1
2
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s $dns1        -d $ext_ip -p udp --sport 53 
$ipt    -A INPUT -j ACCEPT      -i $ext_if      -s $dns2        -d $ext_ip -p udp --sport 53
Jij verwacht vanaf je interne netwerk DNS requests met als source address externe DNS servers? B)

Btw, mijn firewall staat hier online, misschien heb je er wat aan.

edit:
Link fixed, bedankt :)

[ Voor 5% gewijzigd door deadinspace op 10-02-2003 12:06 . Reden: Link fixored ]


Verwijderd

offtopic:
Deadinspace je link werkt niet

Verwijderd

Topicstarter
Ik gebruik nu de firewall van deadinspace alleen dan werkt het listen op ftp servers niet meer. Ik heb de regel modprobe ip_conntrack_ftp weggelaten, zorgt die ervoor dat dat wel werkt? Vanaf m'n windows bak werkt het nl wel.

Ik draai een 2.4.19 kernel met grsecurity patch.

[ Voor 12% gewijzigd door Verwijderd op 10-02-2003 13:42 ]


Verwijderd

Bij deze mijn firewall. Misschien heb je er wat aan. Je kunt kiezen welke services je gebruikt.

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

## variabelen die moeten worden aangepast aan omgeving

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

# interfaces
INTERNAL_INTERFACE="eth1" # interface waarmee gateway aan lokale netwerk zit (aanpassen aan eigen omgeving)
EXTERNAL_INTERFACE="eth0" # interface waarmee gateway aan het internet zit (aanpassen aan eigen omgeving)

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

# overige
MASQ="yes"
HTTP_SERVER="no"
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 \
-d $ANYWHERE -j ACCEPT

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

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

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


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

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

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

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

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

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

$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p udp \
-d $ANYWHERE --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 \
-s $ANYWHERE --source-port $UNPRIVPORTS \
--destination-port 80 -j ACCEPT

$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp \
-d $ANYWHERE --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 \
-s $ANYWHERE --source-port $UNPRIVPORTS \
--destination-port 53 -j ACCEPT

$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp \
-d $ANYWHERE --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 \
-s $ANYWHERE --source-port $UNPRIVPORTS \
--destination-port 22 -j ACCEPT

$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp \
-d $ANYWHERE --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 \
-s $ANYWHERE --source-port $UNPRIVPORTS \
--destination-port 25 -j ACCEPT

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

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

$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp \
-d $ANYWHERE --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 \
-s $ANYWHERE -m state --state NEW,ESTABLISHED \
--source-port $UNPRIVPORTS --destination-port 21 -j ACCEPT

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

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

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

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

$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp \
-d $ANYWHERE -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

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Verwijderd schreef op 10 februari 2003 @ 13:41:
Ik gebruik nu de firewall van deadinspace alleen dan werkt het listen op ftp servers niet meer. Ik heb de regel modprobe ip_conntrack_ftp weggelaten, zorgt die ervoor dat dat wel werkt? Vanaf m'n windows bak werkt het nl wel.
Vanaf? Naar?
ip_conntrack_ftp is om masqueraded bakken passive FTP te kunnen laten gebruiken naar FTP servers buiten je LAN.

Verwijderd

deadinspace schreef op 10 February 2003 @ 18:17:
[...]

Vanaf? Naar?
ip_conntrack_ftp is om masqueraded bakken passive FTP te kunnen laten gebruiken naar FTP servers buiten je LAN.
Bedoel je geen active FTP connecties, want passive werkt ook zonder zo module?

Verwijderd

Topicstarter
Ja het gaat om de passive transfers die niet werken, met passive mode aan gaat alles goed, maar als ik passive uitzet dan hangt elke login bij het listen van de dirs.

Verwijderd

dan gaat het toch juist om active mode transfers die niet werken of ben ik nou gek :? Als je passive mode aanzet in je ftp client dan werkt het wel, toch? Heb je dan wel of niet die ip_conntrack_ftp module geladen?

Verwijderd

Topicstarter
Het werkt niet als ik passive uitzet, en ik heb niet die module geladen want die kon ie niet vinden.

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

deadinspace schreef op 10 februari 2003 @ 18:17:
[...]

Vanaf? Naar?
ip_conntrack_ftp is om masqueraded bakken passive FTP te kunnen laten gebruiken naar FTP servers buiten je LAN.
De ip_conntrack_ftp module zorgt er voor dat inkomende ftpdata verbindingen (actieve ftp dus) de status RELATED krijgen. Verder heb je voor masqueraded bakken ook nog de ip_nat_ftp module nodig.

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

deadinspace schreef op 10 februari 2003 @ 10:04:

Btw, mijn firewall staat hier online, misschien heb je er wat aan.
Hoe heb je dat zo gehighlight gekregen, met welke tool?
Erg handige config. Ziet er goed uit, behalve je IPv6. Dat is compleet unfirewalled.

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Verwijderd schreef op 10 februari 2003 @ 19:39:
Bedoel je geen active FTP connecties, want passive werkt ook zonder zo module?
*zucht* Ik haal die twee altijd door elkaar... Active bedoel ik dus ja.
Verwijderd schreef op 10 February 2003 @ 21:27:
Hoe heb je dat zo gehighlight gekregen, met welke tool?
Mijn vingers :P
Khad die tijd waarschijnlijk beter kunnen besteden aan het zoeken van een progje daarvoor ja (als die al bestaan).
Erg handige config. Ziet er goed uit, behalve je IPv6. Dat is compleet unfirewalled.
Klopt, maar er draait ook zeer weinig IPv6-enabled op mijn netwerk, en op het moment heb ik geen IPv6 meer (kwerd de xs26 brakkigheid een beetje moe).

Verwijderd

Topicstarter
Hoe laad ik de ip_conntrack_ftp module, ik heb alle network options in m'n kernel aangezet en ingebouwd dus geen module. Het gaat om 2.4.19 kernel.

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Verwijderd schreef op 11 February 2003 @ 23:49:
Hoe laad ik de ip_conntrack_ftp module, ik heb alle network options in m'n kernel aangezet en ingebouwd dus geen module. Het gaat om 2.4.19 kernel.
Networking options -> IP: Netfilter Configuration -> Connection tracking / FTP protocol support, oftewel CONFIG_IP_NF_CONNTRACK... Hij staat er toch echt bij ;)

Verwijderd

Topicstarter
Yup, zie hem idd, zit al in m'n kernel ingebakken dus. Het enige probleem is dat ik nog steeds niet kan listen op servers met actieve ftp login. Passive werkt zonder probleem.

Nu ff als module gecompiled.
code:
1
2
3
Module                  Size  Used by    Not tainted
ip_conntrack_ftp        3392   0  (unused)
3c59x                  24912   2


Maar nog steeds geen succes met passive ftp.

[ Voor 43% gewijzigd door Verwijderd op 12-02-2003 01:06 ]


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Oeps, active FTP werkte hier idd ook niet (al die tijd nooit gemerkt :P )...

Naast ip_conntrack_ftp is ook ip_nat_ftp nodig; Ik heb het script aangepast, en die module erbij gezet. Nu werkt active FTP hier wel.

  • Q
  • Registratie: November 1999
  • Laatst online: 20:39

Q

Au Contraire Mon Capitan!

deadinspace: Niet dat ik zoveel van firewalls weet, door dit topic ben ik mij er ook maar weer eens in gaan verdiepen omdat mijn provider binnenkort alle poorten open gaat zetten.

Ik zie in je script helemaal onderaan:

# Now change the policies
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT

Zet je daarmee alsnog niet gewoon alles wagenwijd open?

[EDIT] KNIP (foutje)

[ Voor 151% gewijzigd door Q op 12-02-2003 15:47 ]


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Q schreef op 12 februari 2003 @ 13:26:
deadinspace: Niet dat ik zoveel van firewalls weet, door dit topic ben ik mij er ook maar weer eens in gaan verdiepen omdat mijn provider binnenkort alle poorten open gaat zetten.

Ik zie in je script helemaal onderaan:

# Now change the policies
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT

Zet je daarmee alsnog niet gewoon alles wagenwijd open?
Over de INPUT policy:

Daarmee zet ik alles wagenwijd open ja op onder andere mijn interne interfaces en mijn loopback interface. Van de externe interface wordt echter alles dat niet expliciet open is gezet afgevangen door
code:
1
iptables -A INPUT -i ${EXTERNAL} -j DROP


Ik zou inderdaad de INPUT policy op DROP kunnen zetten, maar dan zou ik minimaal nog een rule moeten toevoegen die alle verkeer op het loopback device (lo) toelaat, anders krijg je rare problemen. Ook mijn derde interface (die atm ongebruikt is) zou dan een extra rule nodig hebben als ik hem zou willen gebruiken.

Daarom doen mijn rules min of meer het volgende:

* laat bepaalde dingen op de externe interface toe
* drop alles van de externe interface
* laat alles toe

In die volgorde.

De FORWARD chain zou wat restrictiever mogen, maar er moeten wel packets doorheen in beide richtingen. Het masqueraden gebeurt in ieder geval alleen voor het lokale netwerk (zie de laatste rule voor het setten van de policies).


Misschien ga ik hem binnenkort eens herschrijven om hem wat netter te maken, met alle policies default op DROP...

  • Q
  • Registratie: November 1999
  • Laatst online: 20:39

Q

Au Contraire Mon Capitan!

Ik zou inderdaad de INPUT policy op DROP kunnen zetten, maar dan zou ik minimaal nog een rule moeten toevoegen die alle verkeer op het loopback device (lo) toelaat, anders krijg je rare problemen. Ook mijn derde interface (die atm ongebruikt is) zou dan een extra rule nodig hebben als ik hem zou willen gebruiken.
Ik ben zelf een paar uurtjes aan een nieuwe firewall volgens de INTEL handleiding aan het klooien geweest en ik heb geen problemen met lo bij een instelling van input/forward op drop. Maar ik begrijp dat je ook nog een derde interface hebt en dan gaat er nog meer meespelen. Ik vind 2 al wel even genoeg ;)

==========
Iets anders:
Ik vind het zelf beter passen om het hier te behandelen dan om er een heel nieuw topic voor te starten: Mijn nieuwe firewall:

http://home.quicknet.nl/mw/prive/nan1/rc.local

Er is helaas 1 probleem. Mijn firewall is iets TE dicht: portforwarding wil niet werken met input en forward op drop. Met alles open wil het wel werken.

Situatie is:

Kabelinternet met centrale gateway en 1 machine met webserver welke ik via portforwarding beschikbaar wil maken.

Zou iemand aan kunnen geven wat ik eventueel nog meer open moet zetten?

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Q schreef op 12 February 2003 @ 20:59:
Ik ben zelf een paar uurtjes aan een nieuwe firewall volgens de INTEL handleiding aan het klooien geweest en ik heb geen problemen met lo bij een instelling van input/forward op drop. Maar ik begrijp dat je ook nog een derde interface hebt en dan gaat er nog meer meespelen. Ik vind 2 al wel even genoeg ;)
iptables -P INPUT DROP, en dan ping localhost doen... Dan krijg je weinig terug ;)
En als je niet bij localhost kan kunnen er rare dingen gebeuren... Fetchmail die niet meer werkt, resolven dat niet altijd lukt, dat soort dingen.
Er is helaas 1 probleem. Mijn firewall is iets TE dicht: portforwarding wil niet werken met input en forward op drop. Met alles open wil het wel werken.
Gemasquerade packets moeten door de forward chain, zowel heen als terug. Je moet dus een aantal rules opstellen voor de forward chain die het nodige verkeer doorlaten.

  • Q
  • Registratie: November 1999
  • Laatst online: 20:39

Q

Au Contraire Mon Capitan!

iptables -P INPUT DROP, en dan ping localhost doen... Dan krijg je weinig terug
En als je niet bij localhost kan kunnen er rare dingen gebeuren... Fetchmail die niet meer werkt, resolven dat niet altijd lukt, dat soort dingen.
Hmm. Het werkte allemaal prima. Maar dat komt misschien omdat ik al een paar extra rules heb staan die verkeer doorlaten. Maar daarnet buitengewoon vreemd probleem: na de film 'karakter' te hebben gekeken weer door klooien met pc: blijkt zomaar opeens geen connecties meer mogelijk tussen interne netwerk en GW. GW->netwerk = ping OK maar ping NETWERk -> GW onmogelijk. Alles geflushed, andere ruleset geladen. aan route gekloot. Wel internet connectie naar buiten.

Toen maar het allerfoutste gedaan wat je met een linux bak kan doen gedaan: een uptime van 50 dagen om zeep geholpen ;) Werkte daarna weer prima. Tot het moment van schrijven althans.
Gemasquerade packets moeten door de forward chain, zowel heen als terug. Je moet dus een aantal rules opstellen voor de forward chain die het nodige verkeer doorlaten.
Dank voor de tip. Ik ga het testen.

[edit] Hmm. met deze regel

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT # portforwarding

Op de juiste plaats ( dus als 1e forward rule) gaat alles goed. Maar niet zo gek: ik laat alles gewoon door. Dat moet meer secure kunnen. Maar het werkt iig. Mocht iemand nog een tip hebben om deze rule iets te 'verfijnen' dan ben ik benieuwd.

Misschien kan de topic-starter ook wat met deze ruleset:

http://home.quicknet.nl/mw/prive/nan1/rc.local

[ Voor 24% gewijzigd door Q op 13-02-2003 01:32 ]


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Kheb mijn firewall-script geupdate. Nu heeft hij default DROP policies, en rate- en size- limiting op pings :)

  • Q
  • Registratie: November 1999
  • Laatst online: 20:39

Q

Au Contraire Mon Capitan!

netjes ;) Geen policies meer op accept. Alleen ssh en web open. Ping limiter: length --length 0:160 -> wat doet dat eigenlijk?

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Ik heb thuis trouwens alleen ssh open, maar in de online versie heb ik daar http bijgezet als voorbeeld hoe je meerdere poorten opgeeft.

Pings (ICMP echo_request) zijn gelimit op 1/seconde met een burst van vijf, en een maximale grootte van 160 bytes.

Ik heb een chello verbinding, en die is asynchroon; ongeveer 150 KB/sec down en 15 KB/sec up. Als iemand mij dus met een aantal grote pings per seconde pest, zeg 50 KB/sec aan verkeer, dan zit mijn downstream niet vol. Maar de kernel beantwoordt ze allemaal, waardoor mijn upstream volledig vol zit.
Met die limiting replied mijn gateway maximaal 1 ping (van 160 bytes) per seconde. Een maximale upload van 160 bytes/sec dus.

Los daarvan ben je minder misbruikbaar door DOSsers die gespoofte pings sturen oid. En toch is mijn machine voor normale doeleinden nog steeds netjes pingbaar :)
Als je die regel uitcomment wordt helemaal niet op pings gereplied btw.

  • Q
  • Registratie: November 1999
  • Laatst online: 20:39

Q

Au Contraire Mon Capitan!

Interessante info. Stap verder zou een soort snortsysteempje zijn dat op basis van een eventuele aanval de boel tijdelijk dicht gooit (niet dat snort dit kan) . Maar voor thuisgebruik is dat niet zo heel erg belangrijk. Nogmaals dank voor de info.

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:57

deadinspace

The what goes where now?

Mjaa, dat vind ik weer wat ver gaan. Met pings kunnen ze niks (zeker nu niet), alle poorten behalve ssh worden geDROPped. Dan zouden ze alleen nog via ssh wat kunnen, en daarvoor heb ik logcheck, die verdachte log-entries (van bijvoorbeeld ssh) naar mij toemailt.

Verwijderd

ISD systemen (Snort) die zelf poorten dichtgooien of verbindingen afkappen zijn vrij eng in mijn ogen. Ze creeren een DOS mogelijkheid door middel van ip spoofing. De machine sluit zichzelf dus van de wereld af.

Verder is met icmp verkeer (oa. ping) meer mogelijk dat je denkt. Er zijn namelijk ook rootkits die met de buitenwereld kunnen communiceren via icmp echo en echo reply. Ze gebruiken daarvoor het data gedeelte van het icmp pakket. Ik moet nog eens uitzoeken of iptables intussen het data gedeelte van een icmp pakket al kan scrubben en vervangen voor allemaal nullen. Ok, dit is dan wel voor de echte paranoide freaks, maar denk laat het toch even weten ;)
Pagina: 1