iptables script + δυνατότητες
Giorgos Keramidas
keramida at freebsd.org
Tue Oct 15 07:49:01 EEST 2002
[ WARNING: Μεγάλο σε μέγεθος reply. Hit DEL while there's time :P ]
On 2002-10-14 16:05, Alexandros Papadopoulos <apapadop at cmu.edu> wrote:
> Προσπαθώ να φτιάξω ένα αξιοπρεπές ruleset για το laptop μου. Θα
> ήθελα τα σχόλιά σας για το πώς θα μπορούσε να βελτιωθεί, αφού είναι
> η πρώτη φορά που επιχειρώ να γράψω κάτι από το μηδέν.
>
> Το script υπάρχει εδώ: http://www.andrew.cmu.edu/~apapadop/linux/scripts/fw
Λίγο paranoid bastard root from hell είναι το στυλ, αλλά σε γενικές
γραμμές μάλλον από καλό έως πολύ καλό το βρίσκω. Δεν είμαι σίγουρος
αν έχω καταλάβει καλά από τα σχόλια τι κάνει το καθετί (δεν έχω δει
εδώ και κάμποσο καιρό firewall σε Linux) αλλά το log_martians δεν είναι
λίγο περιττό σε συνδυασμό με αυτά που προηγούνται;
/proc/sys/net/ipv4/icmp_echo_ignore_all <- 1
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts <- 1
/proc/sys/net/ipv4/conf/all/accept_source_route <- 0
/proc/sys/net/ipv4/conf/all/accept_redirects <- 0
/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses <- 1
# και παρακάτω
/proc/sys/net/ipv4/conf/all/log_martians <- 1
Μια παρατήρηση που έχω να κάνω είναι ότι δεν ξέρω πόσο καλή ιδέα είναι
να έχεις στο output chain σαν policy το drop. Το να κόβεις και όλα τα
εξερχόμενα πακέτα είναι μάλλον υπερβολικό. Είναι συνήθως περισσότερο
εμπόδιο, παρά βοήθεια. Στο σπίτι, το FreeBSD που έχω στημένο εγώ έχει
σαν πολιτική κάτι αντίστοιχο με το εξής:
- Περνάει όλα τα πακέτα από 127.0.0.1 προς 127.0.0.1, αλλά
μόνο στο lo0 interface.
- Κόβει όλα τα πακέτα από οποιοδήποτε interface που έχουν
source ή destination address κάποιο από τα γνωστά μπλοκ
διευθύνσεων για private δίκτυα[1].
- Περνάει όλα τα icmp πακέτα. Πολλές χρήσιμες εφαρμογές
βασίζονται στο icmp, και στο σπίτι δεν έχω ιδιαίτερα
πρόβλημα με icmp floods. Όταν και αν παρουσιαστεί κάτι
τέτοιο, έχει ενσωματωμένο rate limiting το FreeBSD.
- Περνάει όλα τα εξερχόμενα πακέτα καινούριων συνδέσεων, και
κρατά state για τις ανοιχτές συνδέσεις.
- Κόβει όλα τα εισερχόμενα πακέτα.
> Επίσης, εντύπωσή μου είναι, ή λείπουν βασικά πράγματα από το
> netfilter; Αυτό που περίμενα να υπάρχει είναι η δυνατότητα να
> δημιουργήσεις rules για συγκεκριμένα executables, με αξιοπρεπή βαθμό
> ασφάλειας (τώρα μπορείς μόνο να φτιάξεις rule που να αφήνει το
> executable πχ "ping" - χωρίς path, χωρίς checksum, χωρίς κανένα
> έλεγχο - να κάνει συγκεκριμένες ενέργειες).
>
> Η κατάσταση είναι έτσι μαντάρα μόνο στο linux ή και σε άλλα
> unixoειδή; Π.χ. τα *BSD έχουν firewalls με πιο εξελιγμένες
> λειτουργίες;
Το FreeBSD και το NetBSD έχουν το ipfilter, που αναπτύσσει ο Darren
Reed. Αυτό έχει διάφορα όμορφα χαρακτηριστικά, και σε συνδυασμό με το
ipnat είναι πολύ ευέλικτο σαν εργαλείο, αλλά δεν έχει (από όσο ξέρω)
κάποια από τα προχωρημένα χαρακτηριστικά που έχουν άλλα firewall/nat
εργαλεία. Τα πιο δυνατά του χαρακτηριστικά είναι κυρίως το γρήγορο
φιλτράρισμα που κάνει με in-kernel δομές, η καθαρότητα της γλώσσας
που καταλαβαίνει για firewall και nat rulesets, και η μεταφερσιμότητα
που έχουν οι κανόνες σε άλλα λειτουργικά συστήματα. Το ipfilter δεν
υπάρχει μόνο για FreeBSD και NetBSD.
Το OpenBSD έχει το pf, για το οποίο δεν ξέρω πολλά. Υποτίθεται ότι
είναι αρκετά καλό πλέον σαν drop-in replacement του ipfilter. Κάποιος
που χρησιμοποιεί OpenBSD θα ξέρει περισσότερα.
Στο FreeBSD υπάρχει και το ipfw, το καμάρι του Luigi Rizzo. Αυτό έχει
διαφορετική γλώσσα ορισμού των κανόνων από όλα τα άλλα, η οποία κατά
καιρούς αλλάζει προς το καλύτερο (σύμφωνα με τον Luigi), και υπάρχει
μόνο για FreeBSD -- κυρίως επειδή ο τρόπος που γράφει ο Luigi είναι
τέτοιος που είναι κάπως δύσκολο να τον ακολουθήσει κανείς και έχει
φτιάξει το ipfw και το natd έτσι που να είναι κάπως δύσκολο να βρει
κάποιος τρόπο να τα ξεχωρίσει από το FreeBSD kernel και userland.
Το natd και το ipfw έχουν όμως κάποια από τα χαρακτηριστικά που
θέλεις. Το ipfw μπορεί να φιλτράρει με βάση uid, gid, ή ακόμα και με
βάση πεδία από το πακέτο (IP id, version, ttl, length, precedence,
tos, options. TCP flags, sequence number, window size, options, κλπ).
Δεν έχει προς το παρόν κάποιο τρόπο να κάνει application level
φιλτράρισμα των πακέτων, περνώντας ή κόβωντας πακέτα με βάση την
εφαρμογή που τα έχει στείλει, αλλά με τον ρυθμό που προσθέτει νέα
χαρακτηριστικά ο Luigi Rizzo, δεν πιστεύω να του γλιτώσει για πολύ μια
τέτοια ιδέα. Και φυσικά, εφόσον τα divert(4) sockets του ipfw δεν
περιορίζονται στη συνεργασία με το natd αλλά μπορούν να χρησιμοποιηθούν
και για να φιλτράρει μέσω οποιουδήποτε user-level προγράμματος πακέτα
το ipfw, πρακτικά μπορείς να φτιάξεις το δικό σου application level
firewall αν θέλεις.
--
keramida at FreeBSD.org FreeBSD: The Power to Serve
FreeBSD 5.0-CURRENT #12: Thu Oct 10 21:08:38 EEST 2002
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20021015/a847e1e0/attachment.pgp>
More information about the Linux-greek-users
mailing list