imap + iptables

Fórumok

Sziasztok!

Van egy feladat, amit nem tudok megoldani: egy tűzfal mögött lévő levelezőszerveren kellene az imap fiókokat elérni.
A tűzfalban szerepel az
iptables -t nat -A PREROUTING -p tcp --dport 993 -j DNAT --to-destination 192.168.0.1
sor, így kívülről tökéletesen működik a dolog, azonban ahogy a belső hálóra kerül a gép, időtúllépéssel elszáll.
A levelező kliensekben a külső fix ip szerepel, mint kiszolgáló.
Alapból minden lánc DROP-ra van állítva.

Mit kellene engedélyeznem, vagy átírnom, hogy működjön?

Tamás

Hozzászólások

Esetleg a 995, és a 143 portokat is!?

Sejtésem szerint a gond valahol ott van, hogy a ppp0 címe a megadott fix ip cím, így az ide érkező csomagokat automatikusan továbbítja a megadott ip-re, azonban belső hálóról a csomag először az eth1-re esik be, ami 192.168.0.111, így azt előbb megpróbálja továbbítani a ppp0-ra, onnan viszont nem megy tovább a csomag...

feltetelezem az input lancon a fiter tablaban kinyitottad a megfelelo portokat. Ha igen akkor nincs otletem.

#! /bin/sh

### BEGIN INIT INFO
# Provides: firewall
# Required-Start:
# Required-Stop:
# Default-Start: 3
# Default-Stop: 0 1 2 6
# Description: Firewall
### END INIT INFO

case "$1" in
start)
################
# Flush chains #
################

iptables -F
iptables --delete-chain

##########################
# Load conntrack module #
##########################

modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

##################
# Default policy #
##################

# Flush
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -t nat -F OUTPUT
iptables -F

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

######################
# Localhost enabled #
######################

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

##############
# Masquerade #
##############

iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

###############
# Invalid SYN #
###############

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# syn-flood vedelem
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

# Titkos port scan
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# DoS elleni vedelem
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

###############
# INPUT CHAIN #
###############

iptables -A INPUT -p icmp -j ACCEPT

# ESTABLISHED
iptables -A INPUT -p all -i eth1 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp -m multiport --dport 20,21,22,25,53,80,110,123,143,443,465,993,995,10000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --dport 1194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 614 -m state --state NEW -j ACCEPT

################
# OUTPUT CHAIN #
################
iptables -A OUTPUT -j ACCEPT -p all

###################
# Port forwarding #
###################
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -p tcp -m multiport --dport 20,21,22,43,53,110,123,143,443,614,3389,6881:6999,53062 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p udp -m multiport --dport 20,21,53,110,123,143,443,1194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i ppp+ -p tcp --dport 5800:5900 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ppp+ -p udp --dport 5800:5900 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#
# Spektra banki program portjai: 1523,8101,8105 KHElectra port: 5040
iptables -A FORWARD -p tcp -m multiport --dport 1523,5040,8101,8105,3389,3390,5500,5800,5900 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dport 993,6000:6004 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p all -d xxx.xxx.xxx.xxx -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#
iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 5631 -j DNAT --to-destination 192.168.0.30
iptables -t nat -A PREROUTING -i ppp+ -p udp --dport 5632 -j DNAT --to-destination 192.168.0.30

iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 5900 -j DNAT --to-destination 192.168.0.100
iptables -t nat -A PREROUTING -i ppp+ -p udp --dport 5900 -j DNAT --to-destination 192.168.0.100

iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 22 -j DNAT --to-destination 192.168.0.1
# iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 25 -j DNAT --to-destination 192.168.0.1
iptables -t nat -A PREROUTING -p tcp --dport 993 -j LOG
# iptables -t nat -A POSTROUTING -p tcp --dport 993 -j LOG
iptables -t nat -A PREROUTING -p tcp --dport 993 -j DNAT --to-destination 192.168.0.1
# iptables -t nat -A PREROUTING -i ppp+ -p tcp -d xxx.xxx.xxx.xxx --dport 993 -j DNAT --to-destination 192.168.0.1
# iptables -t nat -A PREROUTING -i eth1 -p tcp -d xxx.xxx.xxx.xxx --dport 993 -j DNAT --to-destination 192.168.0.1
iptables -t nat -A PREROUTING -i ppp+ -p udp --dport 1194 -j DNAT --to-destination 192.168.0.1
iptables -t nat -A PREROUTING -p udp --dport 1194 -j DNAT --to-destination 192.168.0.1
########################
# Enable IP Forwarding #
########################

echo 1 > /proc/sys/net/ipv4/ip_forward

;;
stop)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
;;
restart)
/etc/init.d/firewall stop
/etc/init.d/firewall start
;;
esac

Ha jól értem:

Kliens (külső)----+ Ahol a levelező kliens a 192.168.0.1
| a külső kliensek valami pub (pl. internet)
+----T L a belső kliensek valami privát tartomány
ű e
z----v A külső kliensről működik
f e A belsőről nem működik
a l
+----l e
| z
Kliens (belső)----+ ő

A tűzfalban nincs olyan szabály ami esetleg felülbírálja az általad írt szabályt? De elsősorban az érdekelne, hogy jól értem a problémádat (jó-e az ábra).

hat szerintem ennek csupan kenyelmi okai vannak. Sajat email server mobil emberek.
Outlook/thunderbird/akarmimas ne kelljen kulon bejovo/kimeno servert allitgatni attol fuggoen hogy hol vannak. Lehetne trukkozni, hogy dns servert a lan-ra amit csak az 192.168.0.0/24 erhet el es o majd megmondja a helyes belso cimet de valoszinu, hogy az mar tul sok macera.
De ez kezenfekvobb megoldas.

Engem inkabb az erdekelne, hogy a problema megoldodott-e.

Gondold végig a csomagok útját a szerverig és vissza:

belső kliens -> tűzfal -> belső szerver
belső szerver -> belső kliens

IP címekkel tán jobban látszik:

kliens által küldött csomag: src IP = 192.168.0.x, dst IP = publikus IP
kliens által kapott csomag: src IP = 192.168.0.1, dst IP = 192.168.0.x

IP szinten szétesett a kapcsolat, természetesen nem működik. Kell egy SNAT a belső kliensekre, hogy a csomagok a szerver felől megjárják a tűzfalat és az vissza tudja
írogatni az IP címeket.

Talán valami ilyesmi lesz a megoldás, délután kiderül:
# POSTROUTING statements for 1:1 NAT
# (Connections originating from the home network servers)

iptables -t nat -A POSTROUTING -s 192.168.1.100 -o eth0 -j SNAT --to-source 97.158.253.26

# POSTROUTING statements for Many:1 NAT
# (Connections originating from the entire home network)

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT -o eth0 --to-source 97.158.253.29

Lényegében a következő szabályra van szükséged:
SNAT a tűzfal külső IP címére (vagy egy másik privát IP cím blokkra, hogy a szerveren IP cím alapon meg tudd különböztetni a tűzfalról magáról és a belső kliensekről jövő hívásokat - ha ez érdekes) azon csomagokra, amelyeknek a forráscíme a belső klienseké és a belső szerver felé néző interfészen mennek ki a tűzfalról.

Ha a fönti szabályok ezt jelentik, akkor OK.