[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: iptables in /etc/init.d



Ciao ti incollo qua sotto un file che avevo trovato quando un altro
mio amico aveva lo stesso problema sotto debian:

------------ copia incolla ---------------------
#!/bin/sh

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

default=/etc/default/iptables
if test -f $default; then
 . $default
fi

have_a_cow_man () {
 for i in $@; do
   if ! command -v "$i" >/dev/null 2>&1; then
     echo "Aborting iptables initd: no $i executable."
     exit 0
   fi
 done
}

iptables="/sbin/${iptables_command-iptables}"
iptables_save="${iptables}-save"
iptables_restore="${iptables}-restore"

have_a_cow_man "$iptables_save" "$iptables_restore"

libdir=/var/lib/iptables
autosave="${libdir}/autosave"
initd="$0"

initd_clear () {
 rm -f "$autosave"
 echo -n "Clearing iptables ruleset: default ACCEPT policy"
 $iptables_save | sed "/-/d;/^#/d;s/DROP/ACCEPT/" | $iptables_restore
 echo "."
}

initd_halt () {
 rm -f $autosave
 echo -n "Clearing iptables ruleset: default DROP policy"
 $iptables_save | sed "/-/d;/^#/d;s/ACCEPT/DROP/" | $iptables_restore
 echo "."
}

initd_load () {
 ruleset="$libdir/$@"
 if ! test -f "$ruleset"; then
   echo "Aborting iptables load: unknown ruleset, \"$@\"."
   if  ! test "${ruleset#${libdir}/}" = active -o inactive; then
       usage
   fi
   exit 0
 fi
 if test "${ruleset#${libdir}/}" = inactive; then
   initd_autosave
 fi
 rm -f "$autosave"
 echo -n "Loading iptables ruleset: load \"$@\""
 $iptables_restore < "$ruleset"
 echo "."
}

initd_counters () {
 if test "${enable_save_counters:-false}" = true; then
   echo -n " with counters"
   $iptables_save -c > "$ruleset"
 else
   $iptables_save | sed '/^:/s@\[[0-9]\{1,\}:[0-9]\{1,\}\]@[0:0]@g' \
     > "$ruleset"
 fi
}

initd_save () {
 rm -f $autosave
 ruleset="${libdir}/$@"
 echo -n "Savinging iptables ruleset: save \"$@\""
  initd_counters
 echo "."
}

initd_autosave () {
 if test -f $autosave -a ${enable_autosave-false} = true; then
   ruleset="${libdir}/active"
   echo -n "Autosaving iptables ruleset: save \"active\""
   initd_counters
   echo "."
 fi
}

usage () {
 current="$(ls -m /var/lib/iptables \
   | sed 's/ \{0,1\}autosave,\{0,1\} \{0,1\}//')"
cat << END
$initd options:
 start|restart|reload|force-reload
    load the "active" ruleset
 save <ruleset>
    save the current ruleset
 load <ruleset>
    load a ruleset
 stop
    load the "inactive" ruleset
 clear
    remove all rules and user-defined chains, set default policy to ACCEPT
 halt
    remove all rules and user-defined chains, set default policy to DROP

Saved rulesets:
 $current

Please read: $default

END
}

case "$1" in
 start|restart|reload|force-reload)
   initd_load active
   if test ${enable_autosave-false} = true; then
     touch $autosave
   fi
   ;;
 stop)
   initd_load inactive
   ;;
 clear)
   initd_clear
   ;;
 halt)
   initd_halt
   ;;
 save)
   shift
   initd_save "$@"
   ;;
 load)
   shift
   initd_load "$@"
   ;;
 save_active) #legacy option
   initd_save active
   ;;
 save_inactive) #legacy option
   initd_save inactive
   ;;
 *)
   if test "$@"; then
     echo "Aborting iptables initd: unknown command(s): \"$@\"."
   fi
   usage
   ;;
esac

exit 0
------------------- fine copia incolla ------------------------

 Ti consiglio cmq di dare un okkiata a
http://www.thing.dyndns.org/debian/iptables.htm
oppure a
http://www.malibyte.net/iptables/scripts/fwscripts.html
e darti un okkiata alla pagina di man update-rc.d che serve appunto x
aggiungere (e definire a quali livelli) uno script tra quelli da
avviare nei vari livelli... e se ti avanza tempo datti un okkio al
manuale debian da cui ho tirato fuori la seguente domanda e risposta:
---- quotato da manuale debian ----
--------- http://www.debian.org/doc/FAQ/ch-customizing.it.html ---------------
10.6 Sembra che Debian non usi rc.local per personalizzare il processo
di avvio; che facilitazioni vengono fornite?
Si supponga che un sistema necessiti di eseguire lo script foo
all'avvio o all'ingresso di un particolare runlevel (System V). Allora
l'amministratore di sistema dovrebbe:

Mettere lo script foo nella directory /etc/init.d/. 
Eseguire il comando Debian update-rc.d con gli argomenti appropriati,
per impostare i link tra le directory (specificate da riga di comando)
rc?.d e /etc/init.d/foo. Qui, '?' è un numero da 0 a 6 e corrisponde
ad ognuno dei runlevel System V.
Riavviare il sistema. 
Il comando update-rc.d imposterà i link tra i file nelle directory
rc?.d e lo script in /etc/init.d/. Ogni link inizierà con una 'S' o
una 'K', seguita da un numero, seguito dal nome dello script. Gli
script in /etc/rcN.d/ che iniziano con 'S' vengono eseguiti quando si
entra nel runlevel N. Gli script che iniziano con 'K' sono eseguiti
quando si lascia il runlevel N.

Si può, per esempio, fare in modo che lo script foo venga eseguito
all'avvio, mettendolo in /etc/init.d/ ed installando i link con
update-rc.d foo defaults 19. L'argomento 'defaults' fa riferimento ai
runlevel predefiniti, che sono dal 2 al 5. L'argomento '19' assicura
che foo sia chiamato prima di qualunque script contenente il numero 20
o superiore.

---- fine manuale debian
http://www.debian.org/doc/FAQ/ch-customizing.it.html ------

Ciao

N0bodY88
Spippolatori Member - Metro Olografix Member
Solo due cose sono infinite, l'universo e la stupidita' umana, e non
sono sicuro della prima. (Albert Einstein)

On Fri, 08 Oct 2004 15:14:12 +0200, Marco Bellini <seathrun@tiscali.it> wrote:
> scusate la banalità della domanda, ma non trovo risposte.
> uso debian, sarge, e mi sono installato iptables per mettere su un
> piccolo firewall. Solo che dopo l'installazione non mi compare in
> /etc/init.d nessuno script iptables. Con ipmasq, ad esempio, questo
> accade.
> Solo che così non posso linkare in /etc/rc2.d e non so neppure come
> avviare iptables...
> ho sempre trovato il init.d lo script, mica me lo dovrò fare a mano???
> tutti i tutorial danno per scontato che ci sia e che da qui si parta per
> farsi un firewall, ma a me manca il primo pezzo!
> 
> grazie per aiuti e suggerimenti!
> 
> marco
> 
> --
> To UNSUBSCRIBE, email to debian-italian-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 
>



Reply to: