On Oct 27, Pierluigi Perri <perri@xxxxxxxxxxxxxxx> wrote:
> cercavo, se esiste, uno script come quello di MrShark però studiato
> per configurare iptables.
Hmmm... se ben ricordo, nelle sue regole, gli IP di alcuni server
(e.g. il mail server del tuo provider) vengono usati per discriminare
cosa accettare e cosa no; questa e` - in generale - una pratica errata.
Per farla breve puoi avere un firewall minimo, con iptables, con
un paio di righe che utilizzino l'estensione 'state': la prima
per accettare ESTABLISHED,RELATED ; la seconda per accettare i NEW
che *NON* provengano dall'interfaccia che ti connette col mondo
esterno. Poi metti la policy per la catena INPUT a REJECT o DROP.
A naso dovrebbe (leggi "potrebbe") funzionare.
Volendo complicare le cose & fare i fichetti:
# tiriam nel cesso le regole precedenti.
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
# consenti ogni sorta di porcata in locale.
# da NON loggare. Eventualmente aggiungi altre interfacce.
iptables -A INPUT -j ACCEPT --destination 0/0 --source 0/0 --in-interface lo
iptables -A OUTPUT -j ACCEPT --destination 0/0 --source 0/0 --out-interface lo
# setta le policy di default (per una macchina dial-up singola).
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# per non avere timeout con servizi che richiedono identd.
# ha senso farla precedere da una regola che logghi le richieste.
iptables -A INPUT -p tcp -j REJECT --destination 1.2.3.4 --source 0/0 --destina
ion-port 113
# logga i tentativi di aprire dall'esterno nuove connessioni
# ed i pacchetti non appartententi a connessioni aperte dall'interno.
iptables -A INPUT -m state -m limit -j LOG --destination 1.2.3.4 --source 0/0
--state NEW,INVALID
# accetta i pacchetti facenti parte di connessioni
# aperte dall'interno.
# da NON loggare.
iptables -A INPUT -m state -j ACCEPT --destination 1.2.3.4 --source 0/0 --state
ESTABLISHED,RELATED
Note sparse:
- sto improvvisando; non e` detto che funzioni al primo colpo. :-)
- nello script si suppone 1.2.3.4 tuo IP locale ($PPP_LOCAL se
fai partire lo script da /etc/ppp/ip-up.d/)
- puo` essere una buona idea definire per le varie regole l'interfaccia
cui si applicano ($PPP_IFACE in /etc/ppp/ip-up.d/)
- nelle regole LOG ha senso usare l'estensione 'limit'.
- Per una macchina casalinga, negli script di init metterei:
echo 0 > /proc/sys/net/ipv4/tcp_ecn
echo 0 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
- no, non chiedere per il masquerading perche` a casa ho una
macchina singola :-)
- pur usandolo, il target DROP - *a naso* - mi ispira in determinate
circostanze meno fiducia di un REJECT (niente che crei problemi
ad una macchina dial-up, comunque).
- se cerchi su groups.google.com troverai un altro mio script
in un articolo apparso su it.comp.os.linux.iniziare
- non mi assumo la responsabilita` di niente. :-)
Salumi e braci,
--
(=---= alberanid@xxxxxxxx =-------------= PGP KeyID: 0x465BFD47 =--=)
) Davide Alberani (
(=--= http://digilander.iol.it/alberanid/ =-= ICQ UIN: 83641305 =--=)
|