Portál AbcLinuxu, 5. května 2024 02:33


Dotaz: iptables nejde smtp

22.11.2005 09:45 Jaro Kramoriš | skóre: 9
iptables nejde smtp
Přečteno: 369×
Odpovědět | Admin

Zdravím.

Nedarí sa mi odstrániť problém, prečo mi nejde odosielať pošta cez port 25 SMTP. Zo servera funguje všetko ako treba, ale z vnútornej siete mi odoslanie pošty skončí na firewalle. Distro mám Debian 3.1,firewall iptables, PC slúži zatial len ako firewall. Dík za pomoc. Tu je skript, ktorý používam:
#!/bin/sh
echo "Starting firewall ... /etc/init.d/fw"

# zapneme routovani paketu
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# rp_filter na zamezeni IP spoofovani
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
   echo "1" > ${interface}
done

# Modul pro FTP prenosy
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp

# Inicializace databaze modulu
/sbin/depmod -a

# Zavedeme moduly pro nestandardni cile
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE

# Cesta k programu iptables
IPTABLES="/sbin/iptables"

# Vase IP adresa a vnejsi rozhrani
INET_IP="192.168.0.1"
INET_IFACE="eth0"

# IP a broadcast adresa a rozhrani vnitrni site
LAN1_IP="192.168.1.1/24"
LAN1_BCAST="192.168.1.255/24"
LAN1_IFACE="eth1"

# Lokalni loopback rozhrani
LO_IFACE="lo"
LO_IP="127.0.0.1/8"

# Firevall
/sbin/iptables -X
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT
/sbin/iptables -F FORWARD
/sbin/iptables -t nat -X
/sbin/iptables -t nat -F POSTROUTING
/sbin/iptables -t nat -F PREROUTING
/sbin/iptables -t nat -F OUTPUT

/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP

/sbin/iptables -t mangle -X
/sbin/iptables -t mangle -F OUTPUT
/sbin/iptables -t mangle -F PREROUTING


# PREROUTING
# Odchozi HTTP pozadavky (na port 80 s vyjimkou lokalniho serveru)
 $IPTABLES -t nat -A PREROUTING -p tcp -i  ! $INET_IFACE -d ! $INET_IP --dport 80

# Presmerujeme port 2222 na port 22 (ssh) stanice uvnitr site
$IPTABLES -t nat -A PREROUTING -p tcp -d $INET_IP --dport 22 -j DNAT --to 192.168.1.2:22


# MASKARADA - POSTROUTING
/sbin/iptables -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to $INET_IP


# Pridavne retezce pro snazsi kontrolu na rezervovane adresy

# Zahazovat a logovat (max. 5 x 3 pakety za hod)
$IPTABLES -N logdrop
$IPTABLES -F logdrop
$IPTABLES -A logdrop -m limit --limit 5/h --limit-burst 3 -j LOG --log-prefix "Log droop: " --log-level 6
$IPTABLES -A logdrop -j DROP

# TOS flagy slouzi k optimalizaci datovych cest. Pro ssh, ftp a telnet
# pozadujeme minimalni zpozdeni. Pro ftp-data zase maximalni propostnost
$IPTABLES -t mangle -A PREROUTING -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --dport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --dport telnet -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput

# V tomto retezci se kontroluje, zda prichozi pakety nemaji nesmyslnou IP
$IPTABLES -N IN_FW
$IPTABLES -F IN_FW
$IPTABLES -A IN_FW -i $LAN1_IFACE -s 192.168.0.0/16 -j logdrop
$IPTABLES -A IN_FW -i $INET_IFACE -s 10.0.0.0/8 -j logdrop
$IPTABLES -A IN_FW -s 172.16.0.0/12 -j logdrop
$IPTABLES -A IN_FW -s 96.0.0.0/4 -j logdrop
$IPTABLES -A IN_FW -s 127.0.0.0/8 -j logdrop
$IPTABLES -A IN_FW -i $INET_IFACE -s $INET_IP -j logdrop

# Blokování spameru
$IPTABLES -A IN_FW -s 61.72.0.0/13 -j logdrop
$IPTABLES -A IN_FW -s 61.80.0.0/12 -j logdrop
$IPTABLES -A IN_FW -s 61.154.0.0/255.255.0.0 -j logdrop
$IPTABLES -A IN_FW -s 195.166.224.0/19 -j logdrop
$IPTABLES -A IN_FW -s 65.182.134.212/27 -j logdrop
$IPTABLES -A IN_FW -s 65.182.134.224/29 -j logdrop
$IPTABLES -A IN_FW -s 65.182.134.232 -j logdrop
$IPTABLES -A IN_FW -s 65.182.134.233 -j logdrop
$IPTABLES -A IN_FW -s 65.6.55.0/255.255.255.0 -j logdrop
$IPTABLES -A IN_FW -s 130.228.184.234 -j logdrop
$IPTABLES -A IN_FW -s 62.166.232.0/22 -j logdrop

# Retezec pro stanoveni limitu prichozich SYN konexi (ochrana pred SYN floods)
# propusti pouze 4 SYN segmenty/sec
$IPTABLES -N syn-flood
$IPTABLES -F syn-flood
$IPTABLES -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A syn-flood -j DROP


# FORWARD
# Navazovani spojeni ala Microsoft -
# Paket navazuje spojeni, ale nema nastaveny priznak SYN, pryc s nim
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A FORWARD -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j LOG -m limit --limit 10/m --log-prefix="bogus packet: "
$IPTABLES -A FORWARD -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j DROP

# Nechceme rezervovane adresy na rozhrani
$IPTABLES -A FORWARD -i $INET_IFACE -j IN_FW
$IPTABLES -A FORWARD -p tcp --syn -j syn-flood
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT

# Routing zvenku dovnitr pouze pro navazana spojeni (stavovy firewall)
$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

# Sluzbu AUTH neni dobre filtrovat pomoci DROP, protoze to muze
# vest k prodlevam pri navazovani nekterych spojeni. Proto jej
# sice zamitneme, ale tak, aby nedoslo k nezadoucim prodlevam.
$IPTABLES -A FORWARD -p TCP --dport 113 -j REJECT --reject-with tcp-reset

#Zakázání něktrerých sluľeb které se nesmí routovat
$IPTABLES -A FORWARD -p tcp --dport 23:25 -j logdrop
$IPTABLES -A FORWARD -p udp --dport 23:25 -j logdrop
$IPTABLES -A FORWARD -p tcp --dport 137:139 -j logdrop
$IPTABLES -A FORWARD -p udp --dport 137:139 -j logdrop
$IPTABLES -A FORWARD -p tcp --dport 67:69 -j logdrop
$IPTABLES -A FORWARD -p udp --dport 67:69 -j logdrop
$IPTABLES -A FORWARD -p tcp --dport 445 -j logdrop
$IPTABLES -A FORWARD -p udp --dport 445 -j logdrop

# Umoznit presmerovani portu na stanici dovnitr site
#$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -p tcp -d 192.168.1.254 --dport ssh -j ACCEPT

# Routing ze site do internetu povolen
$IPTABLES -A FORWARD -i $LAN1_IFACE -o $INET_IFACE -j ACCEPT

# Ostatni pakety budou zahozeny, tak je budeme logovat (12 x 5 pkt/hod)
$IPTABLES -A FORWARD -m limit --limit 12/h -j LOG --log-prefix "FORWARD drop: " --log-level 6


#
# Retezec INPUT
#

# Navazovani spojeni ala Microsoft -
# Paket navazuje spojeni, ale nema nastaveny priznak SYN, pryc s nim
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Nejprve se zbavime nezadoucich adres
$IPTABLES -A INPUT -i $INET_IFACE -j IN_FW

# Odfiltrovat pokusy o syn-flooding
$IPTABLES -A INPUT -p tcp --syn -j syn-flood
$IPTABLES -A INPUT -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j LOG -m limit --limit 10/m --log-prefix="bogus packet: "
$IPTABLES -A INPUT -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j DROP

# Odfiltrovat pokusy o zahlceni icmp, propustime pouze PING
$IPTABLES -A INPUT -p icmp -j syn-flood
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT

# Loopback neni radno omezovat
$IPTABLES -A INPUT -i $LO_IFACE -j ACCEPT

# Stejne jako pakety z lokalni site, jsou-li urceny pro nas
$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_IP -j ACCEPT
$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_BCAST -j ACCEPT
$IPTABLES -A INPUT -i $LAN1_IFACE -d $INET_IP -j ACCEPT

#SMTP
#$IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT
#$IPTABLES -A INPUT -p udp --dport 25 -j ACCEPT

# Pakety od navazanych spojeni jsou v poradku
$IPTABLES -A INPUT -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT

# MS klienti maji chybu v implementaci DHCP
$IPTABLES -A INPUT -i $LAN1_IFACE -p udp --dport 67 -j ACCEPT

# Pravidla pro povolene sluzby 
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 21 -j ACCEPT  #FTP server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 22 -j ACCEPT  #SSH server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 25 -j ACCEPT  #SMTP server TCP
$IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 25 -j ACCEPT  #SMTP server UDP
$IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 53 -j ACCEPT  #DNS server UDP
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 53 -j ACCEPT  #DNS server TCP
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 80 -j ACCEPT  #WWW server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 110 -j ACCEPT #POP3 server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 143 -j ACCEPT #IMAP server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 443 -j ACCEPT #HTTPS server

# Sluzbu AUTH neni dobre filtrovat pomoci DROP, protoze to muze
# vest k prodlevam pri navazovani nekterych spojeni. Proto jej
# sice zamitneme, ale tak, aby nedoslo k nezadoucim prodlevam.
$IPTABLES -A INPUT -p TCP --dport 113 -m limit --limit 12/h -j LOG --log-prefix "INPUT   drop: " --log-level 6
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 113 -j REJECT --reject-with tcp-reset

# Vsechno ostatni je zakazano - tedy logujeme, maxim. 12x5 pkt/hod
$IPTABLES -A INPUT -m limit --limit 12/h -j LOG --log-prefix "INPUT   drop: " --log-level 6


# Retezec OUTPUT
#

# local
$IPTABLES -A OUTPUT -o lo -j ACCEPT

# TOS flagy slouzi k optimalizaci datovych cest. Pro ssh, ftp a telnet
# pozadujeme minimalni zpozdeni. Pro ftp-data zase maximalni propostnos
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport telnet -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput

# Povolime odchozi pakety, ktere maji nase IP adresy
$IPTABLES -A OUTPUT -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -s $LAN1_IP -j ACCEPT
$IPTABLES -A OUTPUT -s $INET_IP -j ACCEPT

# Povolime DHCP broadcasty na LAN rozhrani
$IPTABLES -A OUTPUT -o $LAN1_IFACE -p UDP --dport 68 --sport 67 -j ACCEPT

# Ostatni pakety logujeme (nemely by byt zadne takove)
$IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT  drop: " --log-level 6


# LOGUJ OSTATNI
/sbin/iptables -A OUTPUT -j LOG --log-prefix "OUTPUT  drop posledni: " --log-level 6
/sbin/iptables -A INPUT  -j LOG --log-prefix "INPUT   drop posledni: " --log-level 6
/sbin/iptables -A FORWARD -j LOG --log-prefix "FORWARD drop posledni: " --log-level 6

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.11.2005 09:56 id2307 | skóre: 8 | blog: Jmenoblogusmiobsahovatjenznaky | Dvůr Králové nad Labem
Rozbalit Rozbalit vše Re: iptables nejde smtp
Odpovědět | | Sbalit | Link | Blokovat | Admin
já bych se skoro zamyslel nad těmito řádky:

#Zakázání něktrerých sluľeb které se nesmí routovat
$IPTABLES -A FORWARD -p tcp --dport 23:25 -j logdrop
$IPTABLES -A FORWARD -p udp --dport 23:25 -j logdrop

:)
22.11.2005 10:03 Jaro Kramoriš | skóre: 9
Rozbalit Rozbalit vše Re: iptables nejde smtp
hmm, ak je to vtom, alebo sú nepodstatné, zmažem.
22.11.2005 10:05 id2307 | skóre: 8 | blog: Jmenoblogusmiobsahovatjenznaky | Dvůr Králové nad Labem
Rozbalit Rozbalit vše Re: iptables nejde smtp
pokud jsem pochopil dotaz správně, že Vám nejde routování smtp z počítače na vnitřní síti na nějaký server kdesi venku tak je to s velkou pravděpodobností v těchto řádcích :) alespoň pro port 25 povolte forward :)
22.11.2005 10:21 Jaro Kramoriš | skóre: 9
Rozbalit Rozbalit vše Re: iptables nejde smtp
Áno, pochopili ste to správne. Ďakujem za radu, idem testovať.
22.11.2005 11:57 Jaro Kramoriš | skóre: 9
Rozbalit Rozbalit vše Re: iptables nejde smtp
Takže bolo to vtom. Už to krásne funguje. Ešte raz ďakujem.
22.11.2005 14:03 Ľubomír Host | skóre: 19 | Bratislava
Rozbalit Rozbalit vše Re: iptables nejde smtp
Ja som rozbehol jeden taky projekt, firewallovaci skript pre linux. V konfiguracnom subore sa nastavia povolene sluzby, vie sa zapnut NAT, forwardovanie portov a podobne. Zacal som k tomu pisat user friendly konfigurator, ale este to nie je hotove. Ak by chcel niekto pomoct, tak mrknite na univerzálny firewallovací skript pre Linux.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.