iptables log

Alexios Chouchoulas alexios at vennea.demon.co.uk
Fri Jul 20 12:48:01 EEST 2001


On Fri, 20 Jul 2001, Dimitris Mandalidis wrote:

> On Fri, Jul 20, 2001 at 12:58:31AM +0100, Alexios Chouchoulas wrote:
> 
> >   Κι όμως, πολλά targets επιστρέφουν. Βασικά *όλα* τα targets επιστρέφουν
> > στο chain απ'όπου τα κάλεσες με το -j, εκτός από λίγα συγκεκριμένα.
> 
> Δηλαδή το πακέτο δεν σταματά στον πρώτο matching rule;

  Όχι, ρίξε μια ματιά στο (φειδωλό) documentation. Ο kernel κοιτάει όλους
τους κανόνες από πάνω μέχρι κάτω, κάνοντας chain jumps σα να ήταν subroutine
jumps:

Chain INPUT, rule 1
Chain INPUT, rule 2
Chain INPUT, rule 3 (-j CHECK)
                \----------------\
                                 CHAIN CHECK, rule 1
                                 CHAIN CHECK, rule 2
                                    ...
                                 CHAIN CHECK, rule n_check
                /----------------/
Chain INPUT, rule 4
...
Chain INPUT, rule n_input

  Ο έλεγχος των κανόνων σταματάει όταν:

  (α) Γίνει -j(ump) προς ένα από κάποια συγκεκριμένα targets (πχ ACCEPT,
DENY, DROP) που τερματίζουν τον έλεγχο ολόκληρου του table. Το LOG δεν
τερματίζει τον έλεγχο.

  (β) Φτάσεις στον τελευταίο κανόνα του αρχικού chain (που είναι ένα από τα
standard chains, INPUT, OUTPUT, οπότε και γίνεται implicit -j(ump) προς το
target που ορίζεται από το chain policy.

Όσο περνάει ο έλεγχος από τους διάφορους κανόνες, εσύ μπορείς να ελέγξεις ή
να αλλάξεις όσα πράγματα θέλεις.


> Κοίταξε τουλάχιστον θα με βόλευε να είχαν multiple targets.

  Δηλαδή θες ένα μηχανισμό που να κάνει matching στο ίδιο πράγμα και να το
στέλνει σε πολλαπλά targets; Εύκολο. Μην ξεχνάς ότι χρησιμοποιούμε shell
scripts για να στήσουμε τα tables/chains/rules. :-)

  Γράψε κάτι σαν:

add_multi ()
{
	args=''
	while [ $1 != '--' ]; do
		args=$args" $1"
		shift
	done
	shift
	for a in $*; do iptables $args -j $a; done
}

  Έτσι αν δώσεις:

add_multi -A INPUT -e eth2 -s ! 192.168.0.0/16 -- LOG DENY

  θα εκτελεστεί:

iptables -A INPUT -e eth2 -s ! 192.168.0.0/16 -j LOG
iptables -A INPUT -e eth2 -s ! 192.168.0.0/16 -j DENY

  Απλό και γρήγορο. Γενικά είναι καλή ιδέα να ορίζεις functions, aliases και
άλλα καλά μέσα στο rule definition script σου (υποθέτω ότι το κάνεις με δικό
σου script, όχι κάτι gooey). Σου γλυτώνουν πολύ κόπο, αλλά κυρίως σου
προσθέτουν λιγότερα σημεία στα οποία κάποια λάθος παράμετρος σου ανοίγει
τρύπες ασφαλείας. Και βοηθάνε και το debugging, κλπ κλπ.

A.

=----------------------------------------------= 64*>:00p258**44$$^>4$,1-:#v_v
| Alexios Chouchoulas, the Unpronounceable One | 4$#^; BEFUNGE97 ;^#_@#:-1$>#<
|        http://www.vennea.demon.co.uk/        | 4*2-*26g00*:-*58:<vg3/*48+*:$
=-----=[   `Eimai mia micri soupiera'   ]=-----= #@@@ooo:::...  .    .     .




More information about the Linux-greek-users mailing list