Hi there,

I did setup a classical linux firewall box with two private ip segment, one
for the intranet(192.168.1.0/24), the other one for dmz (10.0.0.0/8).

Please find my firewall scripts (i ve deleted ip addresses for security
purpose but it's not very important to understand, isn't it ? Sorry for the
french comments, nobody is perfect :) ):
_______________________________________________________________________
# Configuration firewall

# Variables
############################################################################
###
# Locale
LO_IFACE="lo"
# Internet
NET_IFACE="eth1"
IP_NET="*ip address of the box*"
# Intranet
TRA_IFACE="eth0"
IP_TRA="192.168.1.1"
TRA_LAN="192.168.1.0/24"
# Dmz
DMZ_IFACE="eth2"
IP_DMZ="10.0.0.1"
DMZ_LAN="10.0.0.1/8"

# Nettoyage des tables existantes
############################################################################
###
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Permet le mode ftp passif
############################################################################
###
/sbin/insmod -s ip_conntrack_ftp
/sbin/insmod -s ip_nat_ftp

# Options systemes
############################################################################
###
# Activation de la NAT
echo 1 > /proc/sys/net/ipv4/ip_forward
# Bloque les echo ICMP
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Le firewall ne repond plus au ping et les traceroute ne sont plus routes
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Empeche le routage des paquets pre-routes
echo 1 > /proc/sys/net/ipv4/conf/all/accept_source_route
# Protege de l'ip-spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# log les paquets portant des adresses impossibles
echo 1 > /proc/sys/net/ipv4/conf/$NET_IFACE/log_martians

# Blocage de tous les paquets pour le temps de la configuration
# (sauf loopback)
############################################################################
###
iptables -A INPUT -i ! $LO_IFACE -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP

# Creation des tables
############################################################################
###
# Table ICMP
iptables -N ICMP
# Table "log et jette"
iptables -N LOGDROP
# Table Intranet vers Internet
iptables -N TRA_NET
# Table Internet vers Intranet
iptables -N NET_TRA
# Table Intranet vers Dmz
iptables -N TRA_DMZ
# Table Dmz vers Intranet
iptables -N DMZ_TRA
# Table Internet vers Dmz
iptables -N NET_DMZ
# Table Dmz vers Internet
iptables -N DMZ_NET
# Table client SSH vers Firewall
iptables -N SSH_FW

# Acces en SSH au fw a partir de l'ext
############################################################################
###
iptables -A SSH_FW -p tcp --dport ssh -j ACCEPT
iptables -A SSH_FW -p udp --dport ssh -j ACCEPT

# Regles de la table ICMP
############################################################################
###
iptables -A ICMP -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A ICMP -p icmp --icmp-type source-quench -j ACCEPT
iptables -A ICMP -p icmp --icmp-type time-exceed -j ACCEPT
iptables -A ICMP -p icmp --icmp-type echo-request -j ACCEPT
iptables -A ICMP -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A ICMP -m limit --limit 15/minute -j LOG --log-prefix
Firewall_icmp:
iptables -A ICMP -j DROP

# Regles de la table LOGDROP
############################################################################
###
iptables -A LOGDROP -m limit --limit 15/minute -j LOG --log-prefix Firewall:
iptables -A LOGDROP -j DROP

# Regles de la table TRA_NET
############################################################################
###
iptables -A TRA_NET -p icmp -j ICMP
iptables -A TRA_NET -p tcp --dport smtp -j ACCEPT #smtp
iptables -A TRA_NET -p tcp --dport pop3 -j ACCEPT #pop3
iptables -A TRA_NET -p tcp --dport http -j ACCEPT #http
iptables -A TRA_NET -p udp --dport http -j ACCEPT #http
iptables -A TRA_NET -p tcp --dport https -j ACCEPT #https
iptables -A TRA_NET -p udp --dport https -j ACCEPT #https
iptables -A TRA_NET -p tcp --dport ftp -j ACCEPT #ftp
iptables -A TRA_NET -p udp --dport ftp -j ACCEPT #ftp
iptables -A TRA_NET -p tcp --dport ftp-data -j ACCEPT #ftp-data
iptables -A TRA_NET -p udp --dport ftp-data -j ACCEPT #ftp-data
iptables -A TRA_NET -p tcp --dport domain -j ACCEPT #dns
iptables -A TRA_NET -p udp --dport domain -j ACCEPT #dns

# Regles de la table NET_TRA
############################################################################
###
# Regles "Log et drop"
iptables -A NET_TRA -p tcp --tcp-flags ALL FIN,URG,PSH -j LOGDROP
iptables -A NET_TRA -p tcp --tcp-flags ALL ALL -j LOGDROP
iptables -A NET_TRA -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOGDROP
iptables -A NET_TRA -p tcp --tcp-flags ALL NONE -j LOGDROP
iptables -A NET_TRA -p tcp --tcp-flags SYN,RST SYN,RST -j LOGDROP
iptables -A NET_TRA -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOGDROP
iptables -A NET_TRA -p icmp -j LOGDROP

# Regles de la table TRA_DMZ
############################################################################
###

# Regles de la table DMZ_TRA
############################################################################
###

# Regles de la table NET_DMZ
############################################################################
###

# Regles de la table DMZ_NET
############################################################################
###

# NAT
############################################################################
###
# Activation de la NAT sortante
iptables -t nat -A POSTROUTING -s $TRA_LAN -o $NET_IFACE -j SNAT --to
$IP_NET
iptables -t nat -A POSTROUTING -s $DMZ_LAN -o $NET_IFACE -j SNAT --to
$IP_NET
# Activation de la NAT entrante

# Sauts entre tables
############################################################################
###
# Saut vers la table SSH_FW
iptables -A FORWARD -s *ip adress allowed to connect* -d $IP_NET -i
$NET_IFACE -j SSH_FW
# Saut vers la table TRA_NET
iptables -A FORWARD -s $TRA_LAN -i $TRA_IFACE -j TRA_NET
# Saut vers la table NET_TRA
iptables -A FORWARD -d $TRA_LAN -i $NET_IFACE -j NET_TRA
# Saut vers la table TRA_DMZ
iptables -A FORWARD -s $TRA_LAN -i $TRA_IFACE -j TRA_DMZ
# Saut vers la table DMZ_TRA
iptables -A FORWARD -s $DMZ_LAN -i $DMZ_IFACE -j DMZ_TRA
# Saut vers la table NET_DMZ
iptables -A FORWARD -d $DMZ_LAN -i $NET_IFACE -j NET_DMZ
# Saut vers la table DMZ_NET
iptables -A FORWARD -s $DMZ_LAN -i $DMZ_IFACE -j DMZ_NET

# Acceptation des paquets relies
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Remove des regles bloquantes
############################################################################
###
iptables -D INPUT 1
iptables -D FORWARD 1
iptables -D OUTPUT 1

iptables -A FORWARD -j DROP
______________________________________________________________________

Not all the tables are written but no matter, what I need is to connect to
this box using sshd.
The problem I've got is that I can connect on this box with ssh but from
whatever the ip is ...
It's quite annoying, I guess you understand :)
I'm not sure the other parameters are right for what I need ...

Please find the result of an 'iptables -L' command:
______________________________________________________________________
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
SSH_FW     all  --  *one ip on the internet*  *my public ip*
TRA_NET    all  --  192.168.1.0/24       anywhere
NET_TRA    all  --  anywhere             192.168.1.0/24
TRA_DMZ    all  --  192.168.1.0/24       anywhere
DMZ_TRA    all  --  10.0.0.0/8           anywhere
NET_DMZ    all  --  anywhere             10.0.0.0/8
DMZ_NET    all  --  10.0.0.0/8           anywhere
ACCEPT     all  --  anywhere             anywhere           state
RELATED,ESTABLISHED
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DMZ_NET (1 references)
target     prot opt source               destination

Chain DMZ_TRA (1 references)
target     prot opt source               destination

Chain ICMP (1 references)
target     prot opt source               destination
ACCEPT     icmp --  anywhere             anywhere           icmp
destination-unreachable
ACCEPT     icmp --  anywhere             anywhere           icmp
source-quench
ACCEPT     icmp --  anywhere             anywhere           icmp
time-exceeded
ACCEPT     icmp --  anywhere             anywhere           icmp
echo-request
ACCEPT     icmp --  anywhere             anywhere           icmp echo-reply
LOG        all  --  anywhere             anywhere           limit: avg
15/min burst 5 LOG level warning prefix `Firewall_icmp:'
DROP       all  --  anywhere             anywhere

Chain LOGDROP (7 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere           limit: avg
15/min burst 5 LOG level warning prefix `Firewall:'
DROP       all  --  anywhere             anywhere

Chain NET_DMZ (1 references)
target     prot opt source               destination

Chain NET_TRA (1 references)
target     prot opt source               destination
LOGDROP    tcp  --  anywhere             anywhere           tcp
flags:FIN,SYN,RST,PSH,ACK,URG/FIN,PSH,URG
LOGDROP    tcp  --  anywhere             anywhere           tcp
flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
LOGDROP    tcp  --  anywhere             anywhere           tcp
flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,ACK,URG
LOGDROP    tcp  --  anywhere             anywhere           tcp
flags:FIN,SYN,RST,PSH,ACK,URG/NONE
LOGDROP    tcp  --  anywhere             anywhere           tcp
flags:SYN,RST/SYN,RST
LOGDROP    tcp  --  anywhere             anywhere           tcp
flags:FIN,SYN/FIN,SYN
LOGDROP    icmp --  anywhere             anywhere

Chain SSH_FW (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ssh
ACCEPT     udp  --  anywhere             anywhere           udp dpt:ssh

Chain TRA_DMZ (1 references)
target     prot opt source               destination

Chain TRA_NET (1 references)
target     prot opt source               destination
ICMP       icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:smtp
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:pop3
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere           udp dpt:http
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:https
ACCEPT     udp  --  anywhere             anywhere           udp dpt:https
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ftp
ACCEPT     udp  --  anywhere             anywhere           udp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ftp-data
ACCEPT     udp  --  anywhere             anywhere           udp dpt:ftp-data
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere           udp dpt:domain
___________________________________________________________________________

I didn't manage to find what's wrong ...
any help would be appreciated :)
Regards
Francois


Reply via email to