|
| firewall script iptables Fra : Rune Gøgsig |
Dato : 02-07-01 19:31 |
|
Hej gruppe
Jeg står og skal have en firewall til mit lille netværk her hjemme.
Det jeg er intereseret i er et iptables script, til to net kort eth0
eksternt eth1 internt.
i det interner netværk er der 3 computere som skal kunne, alt ude på
internettet.
fra internett skal der kun være adgang til http på linux serveren.
Så hvis der er nogen som har lavet noget som dette er jeg intereseret i at
se hvad i har lavet, fo jeg synes ikke udmilbart at der er noget ude på
nettet som lige passer til mit formål.
/rune gøgsig
| |
Bo Simonsen (02-07-2001)
| Kommentar Fra : Bo Simonsen |
Dato : 02-07-01 19:43 |
|
Hej Rune
In article <3b40be16$0$3246$ba624c82@nntp01.dk.telia.net>, "Rune Gøgsig"
<rune@goegsig.dk> wrote:
> Hej gruppe
> Jeg står og skal have en firewall til mit lille netværk her hjemme. Det
> jeg er intereseret i er et iptables script, til to net kort eth0
> eksternt eth1 internt.
> i det interner netværk er der 3 computere som skal kunne, alt ude på
> internettet.
> fra internett skal der kun være adgang til http på linux serveren.
Der findes en udemærket howto som jeg selv brugte på http://sunsite.auc.dk/ldp
Hvis du opgradere din kerne til 2.4.x skal du bruge iptables, hvis du gør
det er der en rigtig god howto på http://www.braindump.dk/
/Bo
| |
Kent Friis (02-07-2001)
| Kommentar Fra : Kent Friis |
Dato : 02-07-01 19:50 |
|
Den Mon, 2 Jul 2001 20:30:44 +0200 skrev Rune Gøgsig:
>Hej gruppe
>Jeg står og skal have en firewall til mit lille netværk her hjemme.
>Det jeg er intereseret i er et iptables script, til to net kort eth0
>eksternt eth1 internt.
>i det interner netværk er der 3 computere som skal kunne, alt ude på
>internettet.
>fra internett skal der kun være adgang til http på linux serveren.
>
>Så hvis der er nogen som har lavet noget som dette er jeg intereseret i at
>se hvad i har lavet, fo jeg synes ikke udmilbart at der er noget ude på
>nettet som lige passer til mit formål.
Hvad med noget i den her retning:
iptables -P INPUT DROP # default deny
iptables -P FORWARD DROP # default deny
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT # loopback
iptables -A INPUT -i eth1 -j ACCEPT # internal
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT # HTTP
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED -j ACCEPT
iptables -A INPUT -j LOG
iptables -A FORWARD -i eth1 -j ACCEPT # int -> ext
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state RELATED -j ACCEPT
iptables -A FORWARD -j LOG
Du får måske også brug for en af disse:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # dynamic ip
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $DIT_IPNR
# static ip
NB: Jeg har IKKE testet det...
Mvh
Kent
--
Those who write "Optimized for Netscape" og "Best viewed with MSIE"
never figured out the difference between the WWW and a
Word Perfect 4.2 Document.
| |
Jacob Bunk Nielsen (02-07-2001)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 02-07-01 20:22 |
|
"Rune Gøgsig" <rune@goegsig.dk> writes:
> Så hvis der er nogen som har lavet noget som dette er jeg intereseret i at
> se hvad i har lavet, fo jeg synes ikke udmilbart at der er noget ude på
> nettet som lige passer til mit formål.
Prøv at se < http://www.sslug.dk/sikkerhed/netfilter.html>, det er vist
ikke så langt fra hvad du gerne vil, og skulle være relativt let at
rette til. Jeg bruger selv en tilretning af det script på denne maskine.
--
Jacob
Not better than sex but worth a try
http://www.bunk.cc - nu med Emacs effekt
| |
Kim Nielsen (03-07-2001)
| Kommentar Fra : Kim Nielsen |
Dato : 03-07-01 05:54 |
|
> Så hvis der er nogen som har lavet noget som dette er jeg intereseret i at
> se hvad i har lavet, fo jeg synes ikke udmilbart at der er noget ude på
> nettet som lige passer til mit formål.
Tjo .. du må da gerne få mit, ik noget vildt men .. ser ud til at virke
for mig .. bare husk aldrig at stole på en firewall.
<--- spam -->
LOCAL_NETWORK=192.168.0.0/24
IPTABLES=/usr/local/sbin/iptables
INTIP=192.168.0.1
EXTIP=<extern ip!>
start() {
# tillad forwarding af pakker
echo "1" > /proc/sys/net/ipv4/ip_forward
#echo "56000 60999">/proc/sys/net/ipv4/ip_local_port_range
# luk al indgående som standard
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
# kæderne bliver lige tømt, så man kan køre scriptet igen uden
problemer
$IPTABLES -F
$IPTABLES -t nat -F
# lav en ny kæde
$IPTABLES -N block
# vi tillader trafik på forbindelser, der er blevet oprettet
$IPTABLES -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
# og vi tillader nye forbindelser, hvis de kommer indefra
$IPTABLES -A block -m state --state NEW -i eth0 -j ACCEPT
$IPTABLES -A INPUT -p tcp -i eth1 --dport auth -j REJECT
#$IPTABLES -A INPUT -p tcp -i eth1 --dport ftp -j ACCEPT
#$IPTABLES -A INPUT -p tcp -i eth1 --sport ftp-data --dport
56000:65096 -j ACCEPT
# aktiver source nat
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s $LOCAL_NETWORK -d "!"
$LOCAL_NETWORK -j SNAT --to $EXTIP
#tillad access fra intern netværk
$IPTABLES -A INPUT -s $LOCAL_NETWORK -d 192.168.0.2 -j ACCEPT
$IPTABLES -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# aktiver source nat
$IPTABLES -t nat -A POSTROUTING -s $LOCAL_NETWORK -d "!"
$LOCAL_NETWORK -j SNAT --to $EXTIP
# sæt Type Of Service til lav forsinkelse for telnet/ssh
#$IPTABLES -t mangle -A PREROUTING -p tcp --dport telnet -j TOS
--set-tos 0x10
#$IPTABLES -t mangle -A PREROUTING -p tcp --dport ssh -j TOS
--set-tos 0x10
# sæt Type Of Service til high throughput for FTP
#$IPTABLES -t mangle -A PREROUTING -p tcp --dport ftp -j TOS
--set-tos 0x08
# tillad visse services
$IPTABLES -A INPUT -p tcp -d $EXTIP --dport ssh -j ACCEPT
$IPTABLES -A INPUT -p tcp -d $EXTIP --dport smtp -j ACCEPT
$IPTABLES -A INPUT -p tcp -d $EXTIP --dport www -j ACCEPT
#$IPTABLES -A INPUT -p tcp -d $EXTIP --dport ftp -j ACCEPT
#$IPTABLES -A INPUT -p tcp -d $EXTIP --dport ftp-data -j ACCEPT
#Fang portscannere
$IPTABLES -N CHECK_FLAGS
$IPTABLES -F CHECK_FLAGS
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags ALL FIN,URG,PSH -m limit
--limit 5/minute -j LOG --log-level 1 --log-prefix "NMAP-XMAS:" ## NMAP
Stuff
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags ALL ALL -m limit --limit
5/minute -j LOG --log-level 1 --log-prefix "Merry XMAS:"
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG
-m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG
-j DROP
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags ALL NONE -m limit
--limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags SYN,RST SYN,RST -m limit
--limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit
--limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"
$IPTABLES -A CHECK_FLAGS -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
#$IPTABLES -A CHECK_FLAGS -m limit --limit 1/second -p tcp
--tcp-flags ALL RST -j ACCEPT
#$IPTABLES -A CHECK_FLAGS -m limit --limit 1/second -p tcp
--tcp-flags ALL FIN -j ACCEPT
#$IPTABLES -A CHECK_FLAGS -m limit --limit 1/second -p tcp
--tcp-flags ALL SYN -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp -s 0/0 -j CHECK_FLAGS
# blockkæden kobles på INPUT og FORWARD kæderne
# Det betyder at der er adgang til alt indefra (på nær det, der blev
# droppet lige før, og til ALT udaf, men ingenting udefra
$IPTABLES -t mangle -A PREROUTING -m state --state INVALID -j DROP
# og derudover logger vi alt, der prøver at blive forwarded
# med max 1 pr sek og burst på 3
#$IPTABLES -A FORWARD -m limit --limit 1/s --limit-burst 3 -j LOG
--log-prefix "FORWARD: " --log-ip-options --log-tcp-options
# ignorer ugyldige pakker
$IPTABLES -t mangle -A PREROUTING -m state --state INVALID -j DROP
$IPTABLES -A INPUT -j block
$IPTABLES -A FORWARD -j block
$IPTABLES -A INPUT -i eth1 -d 255.255.255.255 -j DROP
$IPTABLES -A INPUT -i eth1 -s 255.255.255.255 -j DROP
$IPTABLES -A INPUT -d $EXTIP -j LOG
}
stop() {
echo "Clearing firewall rules"
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
}
restart() {
stop
start
}
status() {
$IPTABLES -L
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
<-- spam -->
| |
Rasmus Bøg Hansen (03-07-2001)
| Kommentar Fra : Rasmus Bøg Hansen |
Dato : 03-07-01 20:33 |
|
| |
Kim Nielsen (04-07-2001)
| Kommentar Fra : Kim Nielsen |
Dato : 04-07-01 07:32 |
|
> > $IPTABLES -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
>
> > #$IPTABLES -A INPUT -p tcp -i eth1 --sport ftp-data --dport
> > 56000:65096 -j ACCEPT
>
> Hvorfor nu det? Insmod'er du ip_conntrack_ftp og ip_nat_ftp kan den da
> finde ud af det automatisk?
>
Korrekt jeg vil bare selv styre mine client ports .. det er den eneste
grund.
Mvh
Kim
| |
Rasmus Bøg Hansen (04-07-2001)
| Kommentar Fra : Rasmus Bøg Hansen |
Dato : 04-07-01 10:02 |
|
| |
Kim Nielsen (05-07-2001)
| Kommentar Fra : Kim Nielsen |
Dato : 05-07-01 14:53 |
|
>
> Hvis du selv vil styre det, hvorfor tillader du så RELATED forbindelser?
> Så vil du vel aldrig nå ned til den, der tillader ftp-data? Men jeg ser
> jo, at du har kommeteret den ud sååå....
>
:) ja .. jeg kunne ikke drømme om at bruge ftp :) scp er fint nok til
mig .. jeg tror vist også det var et lævn fra mit ipchains script
/Kim
| |
|
|