Newsgroup: it.comp.os.linux.iniziare
Titolo: Iptables e aprire una porta per I/O ssh

Ho creato un piccolo script per un firewall e sono partito da fare il
drop delle catene INPUT, OUTPUT e FORWARD. Facendo così non riesco ad
entrare in SSH e sono costretto ad utilizzare il cavo console (il
firewall è una sun netra 105).
Per fare dei test e per successivi sviluppi volevo creare una regola
che mi permettesse di entrare nel firewall dalla lan e precisamente
dal mio IP (tutti ip statici).
Pensavo di creare, subito doppo i drop, una linea del tipo:
$IPT -A INPUT  -s $MIO_IP -p tcp --dport 22 -j ACCEPT
Quello che mi chiedo e come devo impostare la regola di output? Sempre
ammesso che la regola di input sia corretta....
Ecco lo script:
#!/bin/bash
IPT=/sbin/iptables
WAN="eth5"
LAN="eth4"
DMZ="eth3"
LO="lo"
RANGE_IP_LAN="
192.168.2.0/24
"
MIO_IP="192.168.2.254"
pulisco()
{
   echo -n "- Pulisco le regole..."
   $IPT -F
   $IPT -F INPUT
   $IPT -F OUTPUT
   $IPT -F FORWARD
   $IPT -F -t mangle
   $IPT -F -t nat
   $IPT -X
   sleep 5
   echo "Done!"
}
accept_all()
{
   echo -n "- ACCEPT su tutte le regole..."
   $IPT -P INPUT   ACCEPT
   $IPT -P OUTPUT  ACCEPT
   $IPT -P FORWARD ACCEPT
   sleep 5
   echo "Done!"
}
drop_all()
{
   echo -n "- DROP su tutte le regole..."
   $IPT -P INPUT   DROP
   $IPT -P OUTPUT  DROP
   $IPT -P FORWARD DROP
   sleep 5
   echo "Done!"
}
lan_wan()
{
   echo -n "- Genero la catena lan_wan..."
   $IPT -t filter -N lan_wan
   $IPT -A FORWARD -i $LAN -o $WAN -j lan_wan
   $IPT -t filter -A lan_wan -j LOG --log-prefix="lan_wan:: "
   $IPT -t filter -A lan_wan -s ! $RANGE_IP_LAN  -j DROP
   $IPT -t filter -A lan_wan -p udp --dport 53   -j ACCEPT
   $IPT -t filter -A lan_wan -p tcp --dport 53   -j ACCEPT
   $IPT -t filter -A lan_wan -p tcp --dport 25   -j ACCEPT
   $IPT -t filter -A lan_wan -p tcp --dport 80   -j ACCEPT
   $IPT -t filter -A lan_wan -p tcp --dport 110  -j ACCEPT
   $IPT -t filter -A lan_wan -p tcp --dport 443  -j ACCEPT
   $IPT -t filter -A lan_wan -p tcp --dport 1863 -j ACCEPT
   $IPT -t filter -A lan_wan -p tcp --dport 6667 -j ACCEPT
   $IPT -t filter -A lan_wan -p tcp --dport 22   -j ACCEPT
   sleep 5
   echo "Done!"
}
wan_lan()
{
   echo -n "- Genero la catena wan_lan..."
   $IPT -t filter -N wan_lan
   $IPT -A FORWARD -i $WAN -o $LAN -j wan_lan
   $IPT -t filter -A wan_lan -m state --state ESTABLISHED,RELATED -j
ACCEPT
   $IPT -t nat -A POSTROUTING -s $RANGE_IP_LAN -o $WAN -j MASQUERADE
   sleep 5
   echo "Done!"
}
case "$1" in
   'start')
      pulisco
      drop_all
      lan_wan
      wan_lan
   ;;
   'stop')
      pulisco
      accept_all
   ;;
   *)
      echo "Usage $0 {start|stop}"
esac

Provo ad autorispondermi, spero di non aver scritto una gran vaccata,
ma funziona... (riesco a loggarmi in ssh da tutta la lan)!!!
ho modificato la funzione drop_all come segue::
drop_all()
{
   echo -n "- DROP su tutte le regole..."
   $IPT -t filter -N in_firewall
   $IPT -A INPUT -i $LAN -d $LAN_FIREWALL_IP -j in_firewall
   $IPT -t filter -A in_firewall -j LOG --log-prefix="in_firewall: "
   $IPT -t filter -A in_firewall -p tcp --dport 22 -j ACCEPT
   $IPT -t filter -A in_firewall -j DROP
   $IPT -t filter -N out_firewall
   $IPT -A OUTPUT -s $LAN_FIREWALL_IP -d $LAN -j out_firewall
   $IPT -t filter -A out_firewall -j LOG --log-prefix="out_firewall: "
   $IPT -t filter -A out_firewall -p tcp --sport 22 -j ACCEPT
   $IPT -t filter -A out_firewall -j DROP
