The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Iptables и почта и днс"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"Iptables и почта и днс"  
Сообщение от baldyman email on 03-Май-08, 19:10 
Суть вопроса такова. Имею машину, одной ногой в локалке, другой в интернете.
На машине подняты сервисы www, ftp, irc. Хочу ещё поднять почту.
www работает нормально, доступен и из интернета и из локалки, а вот с ftp проблема... Если кто-то пытается из "мира" зайти на ftp, то после долгого раздумья фтп-клиенты говорят, что невозможно отобразить папку, хоть ходи експлоером, хоть каким либо фтп-клиентом.

Второй вопрос, собственно самый главный... При таких правилах в iptables почта стоит в очереди и не уходит, соответственно и не приходит ничего... В кач-ве почтаря использую Communigate Pro.

#!/bin/bash
### --- Main Section --- ###
int_int="eth0"
ext_int="eth1"

ext_net="77.xxx.xxx.xxx/28"
ext_addr="77.xxx.xxx.19"
mail_addr="77.xxx.xxx.20"

<B><U><I>#mail_addr поднято на виртуальном eth1:1</I></U></B>


int_net="172.16.22.0/24"
int_addr="172.16.22.254"

lo_addr="127.0.0.1"

adm_addr="172.16.22.1"
priv_net1="77.xxx.xxx.xxx/28"
priv_net2="82.xxx.xxx.xxx/28"
priv_net3="212.xxx.xxx.xxx/28"
### --- End Main Section --- ###

### --- Zeroing All Rules --- ###
iptables -Z
iptables -t nat -Z
iptables -F
iptables -t nat -F
### ------------------------- ###


### Input Rules / External Network
iptables -A INPUT -d $lo_addr -j ACCEPT

iptables -A INPUT -d $ext_addr -s $priv_net1 -j ACCEPT
iptables -A INPUT -d $ext_addr -s $priv_net2 -j ACCEPT
iptables -A INPUT -d $ext_addr -s $priv_net3 -j ACCEPT

iptables -A INPUT -d $ext_addr -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -d $ext_addr -p udp --dport 53 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --sport 123 -j ACCEPT
iptables -A INPUT -d $ext_addr -p udp --sport 123 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --dport 4444 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --sport 4444 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --dport 6067 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --dport 7771 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --sport 7771 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --dport 8010 -j ACCEPT
iptables -A INPUT -d $ext_addr -p tcp --dport 8100 -j ACCEPT
iptables -A INPUT -d $ext_addr -p icmp -j ACCEPT
iptables -A INPUT -d $ext_addr -j REJECT

### Input Rules / External Network (mail)
iptables -A INPUT -d $mail_addr -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -d $mail_addr -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -d $mail_addr -p udp --dport 53 -j ACCEPT
iptables -A INPUT -d $mail_addr -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -d $mail_addr -p icmp -j ACCEPT
iptables -A INPUT -d $mail_addr -j REJECT

### Input Rules / Internal Network
iptables -A INPUT -d $int_addr -s $adm_addr -j ACCEPT

iptables -A INPUT -d $int_addr -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -d $int_addr -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -d $int_addr -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -d $int_addr -p udp --dport 53 -j ACCEPT
iptables -A INPUT -d $int_addr -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -d $int_addr -p tcp --dport 7771 -j ACCEPT
iptables -A INPUT -d $int_addr -p icmp -j ACCEPT
iptables -A INPUT -d $int_addr -j REJECT

iptables -A FORWARD -j ACCEPT
### End of Input Rules

iptables -t nat -A POSTROUTING -s $int_net -p icmp -j SNAT --to $ext_addr

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Iptables и почта и днс"  
Сообщение от dandou email on 03-Май-08, 21:37 
Я предпочитаю более упорядоченный подход к работе с iptables. В Вашем случае это будет так:

#!/bin/bash
#Начало пусть останется такое же
### --- Main Section --- ###
int_int="eth0"
ext_int="eth1"
ext_net="77.xxx.xxx.xxx/28"
ext_addr="77.xxx.xxx.19"
mail_addr="77.xxx.xxx.20"
#mail_addr поднято на виртуальном eth1:1

int_net="172.16.22.0/24"
int_addr="172.16.22.254"
lo_addr="127.0.0.1"
adm_addr="172.16.22.1"
priv_net1="77.xxx.xxx.xxx/28"
priv_net2="82.xxx.xxx.xxx/28"
priv_net3="212.xxx.xxx.xxx/28"
### --- End Main Section --- ###
### --- Zeroing All Rules --- ###
iptables -Z
iptables -t nat -Z
iptables -F
iptables -t nat -F
### ------------------------- ###
#А далее по-другому

low_port=`cat /proc/sys/net/ipv4/ip_local_port_range | awk '{ print $1}'`
high_port=`cat /proc/sys/net/ipv4/ip_local_port_range | awk '{ print $2}'`

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -N BAD
iptables -N IN0
iptables -N IN1

iptables -A INPUT -j BAD
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j IN0
iptables -A INPUT -i eth1 -j IN1

iptables -A BAD -m state --state INVALID -j LOGDROP
iptables -A BAD -p tcp -m tcp ! --tcp-flags FIN,SYN,ACK SYN -m state --state NEW -j LOGDROP

iptables -A IN0 -p tcp -m tcp -j TCPIN0
iptables -A IN0 -p udp -m udp -j UDPIN0
iptables -A IN0 -p icmp -j ICMPIN

iptables -A IN1 -p tcp -m tcp -j TCPIN1
iptables -A IN1 -p udp -m udp -j UDPIN1
iptables -A IN1 -p icmp -j ICMPIN

iptables -A TCPIN0 -p tcp -m tcp --dport 20:21 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 4444 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 6067 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 7771 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 8010 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport 8100 -j ACCEPT
iptables -A TCPIN0 -p tcp -m tcp --dport ${low_port}:${high_port} -j ACCEPT

iptables -A TCPIN1 -p tcp -m tcp --dport 20:21 -j ACCEPT
iptables -A TCPIN1 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A TCPIN1 -p tcp -m tcp --dport 7771 -j ACCEPT
iptables -A TCPIN1 -p tcp -m tcp --dport ${low_port}:${high_port} -j ACCEPT

iptables -A UDPIN0 -p udp -m udp --dport 53 -j DROP
iptables -A UDPIN0 -p udp -m udp --sport 123 --dport 123 -j ACCEPT
iptables -A UDPIN0 -p udp -m udp --dport ${low_port}:${high_port} -j ACCEPT

iptables -A UDPIN1 -p udp -m udp --dport 53 -j ACCEPT
iptables -A UDPIN1 -p udp -m udp --dport ${low_port}:${high_port} -j ACCEPT

iptables -A ICMPIN -p icmp --icmp-type 0 -j ACCEPT
iptables -A ICMPIN -p icmp --icmp-type 8 -j ACCEPT
iptables -A ICMPIN -p icmp --icmp-type 11 -j ACCEPT

iptables -A LOGDROP -p tcp -j LOG --log-prefix "TCP Drop " --log-level 6
iptables -A LOGDROP -p tcp -j REJECT --reject-with tcp-reset
iptables -A LOGDROP -p udp -j LOG --log-prefix "UDP Drop " --log-level 6
iptables -A LOGDROP -p udp -j DROP
iptables -A LOGDROP -p icmp -j LOG --log-prefix "ICMP Drop " --log-level 6
iptables -A LOGDROP -p icmp -j DROP
iptables -A LOGDROP -f -j LOG --log-prefix "FRAG Drop " --log-level 6
iptables -A LOGDROP -j DROP

iptables -A FORWARD -i eth0 -o eth1 -d ${int_net} -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -s ${int_net} -j ACCEPT

### End of Input Rules
iptables -t nat -A POSTROUTING -s $int_net -p icmp -j SNAT --to $ext_addr
echo 1 >/proc/sys/net/ipv4/ip_forward

В принципе, можно далее делать деление на цепочки по любому признаку.
Идея должна быть понятна.

ЗЫ: Обязательно укажу на ошибку в Вашем скрипте — не учтены верхние порты, т.н. «пользовательские». Их нужно открывать все. (cat /proc/sys/net/ipv4/ip_local_port_range)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Iptables и почта и днс"  
Сообщение от dandou email on 03-Май-08, 21:47 
Упс!

Не обратил внимания, что у Вас eth0 внутренний.
Я, обычно, ставлю его наружу. ИМХО удобнее.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру