Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Zelfgemaakt firewall doorlichten aub
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Dutch
View previous topic :: View next topic  
Author Message
BoZ
Tux's lil' helper
Tux's lil' helper


Joined: 27 Aug 2003
Posts: 114
Location: The Netherlands

PostPosted: Thu May 20, 2004 6:16 pm    Post subject: Zelfgemaakt firewall doorlichten aub Reply with quote

Hoi, ik ben bezig met een firewall voor een server, nu wilde ik even weten of ik goed op weg ben. Hier is wat ik nu heb:
Code:
# Clean everything
$IPTABLES -F
$IPTABLES -X

# Default policies
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

# The important stuff
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -i lo -j ACCEPT
$IPTABLES -A FORWARD -i lo -j ACCEPT

# This is a portscan-detection from http://www.gentoo.org/doc/en/gentoo-security.xml
$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 alert --log-prefix "NMAP-XMAS:"
$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 "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


##### INCOMING TRAFFIC

# portscan-detecion
$IPTABLES -A INPUT -j check-flags

# icmp
$IPTABLES -A INPUT -p icmp -m state --state NEW --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state NEW --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A INPUT -p icmp -j DROP

# http(s)
$IPTABLES -A INPUT -p tcp --dport 80 -i $IF0 -d $IP0 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 443 -i $IF0 -d $IP0 -j ACCEPT

# ftp
$IPTABLES -A INPUT -p tcp --dport 20 -i $IF0 -d $IP0 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 21 -i $IF0 -d $IP0 -j ACCEPT

# ssh
$IPTABLES -A INPUT -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport 22 -i $IF7 -d $IP7 -j ACCEPT
$IPTABLES -A INPUT -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport 22 -i $IF7 -d $IP7 -j ACCEPT
$IPTABLES -A INPUT -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport 22 -i $IF7 -d $IP7 -j ACCEPT
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -p tcp --dport ssh -i $IF7 -d $IP7 -j ACCEPT

# mail
$IPTABLES -A INPUT -p tcp --dport 25  -i $IF0 -d $IP0 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 110 -i $IF0 -d $IP0 -j ACCEPT

# dns
$IPTABLES -A INPUT -p tcp --dport 53 -i $IF0 -d $IP0 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 53 -i $IF0 -d $IP0 -j ACCEPT

# mysql
$IPTABLES -A INPUT -p tcp --dport 3306 -i $IF0 -d $IP0 -j ACCEPT


##### OUTGOING TRAFFIC

# http
$IPTABLES -A OUTPUT -p tcp --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 443 -j ACCEPT

# ftp
$IPTABLES -A OUTPUT -p tcp --dport 20 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 21 -j ACCEPT

# ssh
$IPTABLES -A OUTPUT -p tcp --dport 22 -j ACCEPT

# dns
$IPTABLES -A OUTPUT -p tcp --dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -j ACCEPT

# mail
$IPTABLES -A OUTPUT -p tcp --dport 25 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 110 -j ACCEPT


Even een kleine toevoeging: de server heeft 8 ip's op een interface (eth0 en eth0:1 tm eth0:7) Het is de bedoeling dat ssh op een ander ip draait dan de rest

Nu vroeg ik me het volgende nog af:
- Klopt het dat ik -i en -d in combinatie met elkaar gebruik? Dat is dus een interface met het bijbehorende ip, ik ga er vanuit dat iptables eth0:1 tm eth0:7 als aparte interfaces ziet.
- Is de forward chain nodig in mij opstelling? (ik dacht van niet eigenlijk...)
- Klopt het script en ben ik iets vergeten?

Bedankt alvast!


Last edited by BoZ on Sun May 23, 2004 12:22 pm; edited 1 time in total
Back to top
View user's profile Send private message
PureAgony
n00b
n00b


Joined: 10 Dec 2003
Posts: 24
Location: The Netherlands

PostPosted: Fri May 21, 2004 11:47 am    Post subject: Reply with quote

-) De FORWARD chain heb je alleen nodig als je achter de server (via een andere netwerkkaart)
nog andere PC's hebt staan, wat jij dus (gezien je beschrijving) niet hebt. dus dit is goed.

-) Weet je zeker dat je al die services voor heel het internet wilt gebruiken??
Zorg er dan voor dat je alle services heel goed beveiligd, want anders ga je straks lekker
spammailtjes rondsturen met je gehackte / open-relay mailserver.

-) Een DNS server? Heb je die nodig?

-) MySQL naar buiten toe?

-) Pas op met ftp dat je systeem geen wares-relay wordt (of juist wel natuurlijk zodat je
automatisch de laatste warez binnenkrijgt zonder te hoeven zoeken :twisted: )

-) Zorg ervoor dat je alle services heel heel goed beveiligd.

-) De output chain zou ik zelf niet default op ACCEPT zetten. Mocht er namelijk een foutje in
een service zitten, dan kan een exploit alle kanten uit, bijvoorbeeld connecten met een IRC server.
Beter is om alleen de noodzakelijke connecties naar buiten open te zetten voor updates etc, en
dan liefst nog door net voor het updaten de rules toe te voegen en nadien weer te verwijderen.

-) Moet de check-flags chain niet worden uitgevoerd voordat je alle services toelaat?

-) Waarom zet je de ping opdrachten uit? Als je toch al meerdere services hebt draaien, kan
deze er toch ook wel bij?
Daarnaast zullen de laatste 2 regels voor icmp-echo-request/reply nooit worden uitgevoerd
omdat er al eerder een DROP target in de lijst staat voor icmp

-) Had ik al gezegd dat je alle services heel heel heel erg ontzettend goed moet beveiligen?



Al met al heb ik het idee dat je veel te veel services aanzet. Vraag je eerst af wat je met je
server wilt doen, en wat je daarvoor nodig hebt. Een MySQL server kun je misschien beter
via apache benaderen (via de website) dan direct.
DNS heb je eigenlijk alleen nodig als je op een eigen domain vele PC's hebt staan die van
buiten af wilt benaderen, niet voor een losse server.

Hoe meer services er aanstaan, hoe meer kans op een bug, en dus hoe meer kans op een
gehackte PC.

]edit] Als je toch veel services wilt installeren, moet je eens kijken naar chroot jails. Hiermee
kun je ook je veiligheid verbeteren. [/edit]
Back to top
View user's profile Send private message
BoZ
Tux's lil' helper
Tux's lil' helper


Joined: 27 Aug 2003
Posts: 114
Location: The Netherlands

PostPosted: Sun May 23, 2004 12:18 pm    Post subject: Reply with quote

Bedankt voor je reactie.

Die services zijn (helaas) allemaal nodig ja. Het chroot-en van een aantal services is inderdaad wel een goed idee voor de veiligheid!
Van de ping zie ik niet echt het nut om die aan te zetten.
Chech-flags staat inderdaad te ver naar beneden om nut te hebben voor de geopende poorten, dat zal ik even veranderen.

Ik zal m'n aanpassingen even maken in de openingspost om deze thread leesbaar te houden.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Dutch All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum