Newsgroup: it.comp.os.linux.sys
Titolo: Consiglio su regole IPTABLES

Ciao,
uso queste regole per aprire solo le porte effettivamente
usate ma ho un dubbio sull' OUTPUT:
-----------------------------
#!/bin/sh
set -e
iptables="/sbin/iptables"
modprobe="/sbin/modprobe"
load () {
	#RESETTO TUTTO
	$iptables -F;
	$iptables --delete-chain;
  echo "Loading kernel modules..."
  $modprobe ip_tables
  $modprobe ip_conntrack
  $modprobe iptable_filter
  $modprobe ipt_state
  # PER PERMETTERE l' FTP PASSIVO
  $modprobe ip_nat_ftp
  echo "Kernel modules loaded."
  echo "Loading rules..."
  $iptables -P FORWARD DROP
  $iptables -P INPUT DROP
  $iptables -A INPUT -p tcp -m tcp --destination-port 21 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 2222 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 25 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 80 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 110 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 3306 -j ACCEPT
  $iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
  $iptables -A INPUT -s 127.0.0.1 -j ACCEPT
  $iptables -A INPUT -p icmp -j ACCEPT;
  $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 
1/s -j ACCEPT;
  echo "Rules loaded."
}
flush () {
  echo "Flushing rules..."
  $iptables -P FORWARD ACCEPT
  $iptables -F INPUT
  $iptables -P INPUT ACCEPT
  echo "Rules flushed."
}
case "$1" in
  start|restart)
    flush
    load
    ;;
  stop)
    flush
    ;;
  *)
    echo "usage: start|stop|restart."
    ;;
esac
-----------------------------
E' corretto dire che in OUTPUT tutte le porte sono aperte ?
Se volessi chiudere tutte le porte in OUTPUT e aprire solo quelle che mi 
servono ? sarebbe corretto così ?:
-----------------------------
#!/bin/sh
set -e
iptables="/sbin/iptables"
modprobe="/sbin/modprobe"
load () {
	#RESETTO TUTTO
	$iptables -F;
	$iptables --delete-chain;
  echo "Loading kernel modules..."
  $modprobe ip_tables
  $modprobe ip_conntrack
  $modprobe iptable_filter
  $modprobe ipt_state
  # PER PERMETTERE l' FTP PASSIVO
  $modprobe ip_nat_ftp
  echo "Kernel modules loaded."
  echo "Loading rules..."
  $iptables -P FORWARD DROP
  $iptables -P OUTPUT DROP
  $iptables -P INPUT DROP
  $iptables -A INPUT -p tcp -m tcp --destination-port 21 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 2222 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 25 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 80 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 110 -j ACCEPT
  $iptables -A INPUT -p tcp -m tcp --destination-port 3306 -j ACCEPT
  $iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
  $iptables -A INPUT -s 127.0.0.1 -j ACCEPT
  $iptables -A INPUT -p icmp -j ACCEPT;
  $iptables -A OUTPUT -p tcp -m tcp --destination-port 21 -j ACCEPT
  $iptables -A OUTPUT -p tcp -m tcp --destination-port 2222 -j ACCEPT
  $iptables -A OUTPUT -p tcp -m tcp --destination-port 25 -j ACCEPT
  $iptables -A OUTPUT -p tcp -m tcp --destination-port 80 -j ACCEPT
  $iptables -A OUTPUT -p tcp -m tcp --destination-port 110 -j ACCEPT
  $iptables -A OUTPUT -p tcp -m tcp --destination-port 3306 -j ACCEPT
  $iptables -A OUTPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
  $iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
  $iptables -A OUTPUT -p icmp -j ACCEPT;
  $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 
1/s -j ACCEPT;
  echo "Rules loaded."
}
flush () {
  echo "Flushing rules..."
  $iptables -P FORWARD ACCEPT
  $iptables -F INPUT
  $iptables -P INPUT ACCEPT
  echo "Rules flushed."
}
case "$1" in
  start|restart)
    flush
    load
    ;;
  stop)
    flush
    ;;
  *)
    echo "usage: start|stop|restart."
    ;;
esac
-----------------------------
Grazie mille a chi avesse la pazienza :-)
		-- Yena --

 Grazie mille a chi avesse la pazienza :-)
Ti consiglio vivissimamente di installarti shorewall, che ti semplifica
tantissimo la vita. Poi puoi imparare come costruire bene i ruleset
leggendoti lo script generato.
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 
LO faccio sicuramente !!!
Lo scopo è che vorrei evitare che bucando un applicativi poso sicuri non 
gestiti da me caricassero script perl per flood UDP dalla macchina 
all'esterno ..
Forse basta bloccare tutto il traffico UDP in OUTPUT ...essendo un 
server web e di posta senza gestione DNS penso si possa fare no ?
Grazie !	
			-- Yena --

 Ti consiglio vivissimamente di installarti shorewall
Premetto che non ho niente contro shorewall, anzi, ma... non e'
meglio prima cercare di capire come funzionano le cose? Tempo e
voglia permettendo, ovviamente :-) Soprattutto in casi semplici
(apparentemente) come questi.
Fabio

 meglio prima cercare di capire come funzionano le cose?
Secondo me shorewall è utile proprio per questo. Fatto salvo il leggere la
doc che è scontato, shorewall genera delle regole di iptables molto ben
strutturate, e consente di capire come scrivere ruleset anche a mano se uno
se le guarda (basta compilare e leggere lo script generato).


 1024.
Perchè dici che mi servono tutte ? Forse per l' FTP ?
			-- Yena --

 1024.
Questa frase mi sembra un po' insensata.

 $ ssh localhost (adesso funziona)
Sei proprio sicuro? Se provo ad eseguire i comandi che hai detto "ssh localhost"
non funziona ne' prima ne dopo...

 ... in su?
ESTABLISHED

 Come li controlli i socket random da 1025 in su?
Socket?
Ah, volevi dire porte, vero?
Fai una cosa: rileggi il post dell'OP.
Troverai una righetta che recita
$iptables -A OUTPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
e ti ritroverai, come d'incanto, nel magico mondo dei firewall stateful.
Magico mondo che esiste da qualche annetto ma, come dire, meglio tardi
che mai.

 
Con una combinazione di --destination-port e col modulo (i.e. match 
-m)  state (NEW, ESTABLISHED, RELATED).

 che mai.
Whippy, ma perdi ancora tempo dietro 'sto incompetente? E' un malato di
presenzialismo; mettilo in ignore list, tanto più che cazzate non ti perdi
(e forse riesco a non leggerlo nei quote).


 presenzialismo; mettilo in ignore list, tanto piů che cazzate non ti perdi
Certo che in quanto a nevrastenia...
-- 
Per rispondermi, sostituisci a nomecognome il mio nome e cognome
To reply me, substitute nomecognome with my real name and surname
http://bitsandchaos.wordpress.com

 prova 65565 :)
Casomai 65535...comunque non e' che importi molto la porta usata dal client,
visto che la regola sblocca delle porte di destinazione, tra le quali NON c'e'
la porta 22, usata dal server ssh.
(e si', ho provato anche con 1025:65535, 1024:65535 e continua a non
funzionare - ovviamente -).