The OpenNET Project / Index page

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

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

"Помогите оценить скрипт IPTABLES"  
Сообщение от mako email on 16-Май-08, 18:09 
Нужна помощь. я не так силен в Linux'е. Устроился администратором и тут начальство решеило перейти на Linux, после кончины предыдущего сервера Мастдая.Написал скрипт но нет уверенности что он правильный. А начальство наседает. помогите
Условие было такое:
набор создания таблицы маршрутов (используя пакет iproute2),
конфигурирования сетевых интерфейсов и правил для iptables

Локальная сеть 10.0.0.0/16,
доступные внешние адреса 82.179.92.1/255.255.255.240
имеется интерфейс eth0 с провайдером интернет услуг на котором поднят канальный адрес/сеть
62.183.98.113/255.255.255.252
Локальная сеть подключена к интерфейсу eth1 в локальной сети сервер имеет адрес 10.0.0.1
Требования:

1) Траффик идущий в интернет не должен иметь адрес источника из сети канальных адресов
выданных провайдером 62.183.98.113/255.255.255.252
2) Сервер должен быть доступен из интернет по адресу 82.179.92.6
3) К интерфейсу eth1 подключены сервера с адресами 82.179.92.4 и 82.179.92.8 нужно обеспечить их
доступность из интернет по этим адресам.
4) Весь HTTP траффик от пользователей локальной сети завернуть
на проски сервер прозрачно настроенный и работающий на этом сервере на порту 3128
прокси сервер настроен так что пакеты исходящие от него имеют адрес источника 82.179.92.7
6) Сделать исключение для пользователей с адресами 10.0.1.62/255.255.255.240 с этих адресов должны быть
доступны напрямую все порты и хосты TCP пакеты от этих пользовтелей должны отправляться в интернет с
адресом источника 82.179.92.3
7) Для пользователей 10.0.3.1/28 сделать доступными порты ICQ,SSH (5190,22)

Вот скрипт:
#!/bin/bash
IPTABLES="/usr/sbin/iptables"
#IP_NET "82.179.92.1/28"

#INET_IFACE "eth0"
#IP_CANAL "62.183.98.113/30"

#LAN_IFACE "eth1"
#LAN_IP_RANGE "10.0.0.1/16"
#LAN_IP "10.0.0.1"

$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

$IPTABLES -N network
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets

# ОШИБОЧНЫЕ ПАКЕТЫ ТСР

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \ -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \ --log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# ПРОВЕРКА ТСР

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

# TCP правила

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --sport 80 -j allowed

# UDP ports

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT

# ICMP rules

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

# INPUT
# Проверка плохих пакетов

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

# Локальная сеть

$IPTABLES -A INPUT -p ALL -i eth1 -s 10.0.0.1/16 -j ACCEPT

# Распределение IP по пакетам

$IPTABLES -A INPUT -p ALL -d 82.179.92.1/28 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i eth0 -j tcp_packets
$IPTABLES -A INPUT -p UDP -i eth0 -j udp_packets
$IPTABLES -A INPUT -p ICMP -i eth0 -j icmp_packets

#log
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT INPUT packet died: "

#END INPUT

#eth
$IPTABLES -A INPUT -p tcp -m multiport --dport 53,80 -i eth0 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 82.179.92.6 -m multiport --dport 53,80 -i eth0 -j ACCEPT

$IPTABLES -A INPUT -p tcp -m multiport --dport 53,80 -i eth1 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 82.179.92.4 -m multiport --dport 53,80 -i eth1 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 82.179.92.8 -m multiport --dport 53,80 -i eth1 -j ACCEPT
$IPTABLES -A FORWARD -i eth1 -o eth0 -m state --state NEW, ESTABLISHED -j ACCEPT
#FORWARD
#Проверка плохих пакетов

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

#Правила

$IPTABLES -A FORWARD -i eth1 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#log

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "

#END FORWARD

#OUTPUT
#Плохие пакеты

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

# правила

$IPTABLES -A OUTPUT -p ALL -s 82.179.92.1/28 -j ACCEPT

# log

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died:"

#POSTROUTING
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 82.179.92.6

# ПРЕДОТВРАЩЕНИЕ ИСПОЛЬЗОВАНИЯ КАНАЛЬНЫХ АДРЕСОВ

$IPTABLES -t nat -A PREROUTING -p tcp -s 62.183.98.113/30 -j RETURN
$IPTABLES -A FORWARD -s 62.183.98.113/30 -j network
$IPTABLES -t nat -A POSTROUTING -s 62.183.98.113/30 -j SNAT --to-source 82.179.92.6

#Прозрачная прокся

$IPTABLES -t nat -A POSTROUTING -s 10.0.0.1/16 -d ! 82.179.92.3 -p tcp -m multiport --dports 80,53 -j SNAT --to-sourse 82.179.92.7:3128

#прямое подключение
$IPTABLES -t nat -A POSTROUTING -p tcp -m multiport --dport 80,53,22,5920 -s 10.0.1.62/28 -j SNAT --to-source 82.179.92.3

#ICQ, SSH
$IPTABLES -t nat -A POSTROUTING -s 10.0.3.1/28 -p tcp -m multiport --dport 22,5190 -j SNAT --to-source 82.179.92.6

#локальные сервера
$IPTABLES -t nat -A PREROUTING -p tcp -d 82.179.92.4 -m multiport -dport 80,53 -j DNAT --to-destination 10.0.0.1
$IPTABLES -t nat -A PREROUTING -p tcp -d 82.179.92.8 -m multiport -dport 80,53 -j DNAT --to-destination 10.0.0.1

$IPTABLES -A INPUT -j network

Оцените пожалуйста и помогите найти логические ошибки буду все выходные над ним сидеть за два дня сделать нужно.

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

 Оглавление

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


1. "Помогите оценить скрипт IPTABLES"  
Сообщение от ALex_hha (??) on 16-Май-08, 18:50 
> $IPTABLES -t nat -A POSTROUTING -s 10.0.0.1/16 -d ! 82.179.92.3 -p tcp -m multiport --dports 80,53 -j SNAT --to-sourse 82.179.92.7:3128

53 порт зачем заворачиваешь на свид?!

Можешь взять за основу
http://www.sys-adm.org.ua/www/squid-transparent.php#c4

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

2. "Помогите оценить скрипт IPTABLES"  
Сообщение от mako on 16-Май-08, 20:53 
спасибо попробую посмотри может чего заметишь еще я пока в Linux'е продолжаю разбираться. Я писал по IPTABLES 1.1.19 без проверки
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Помогите оценить скрипт IPTABLES"  
Сообщение от aaa (??) on 17-Май-08, 09:01 
>[оверквотинг удален]
>-m multiport --dports 80,53 -j SNAT --to-sourse 82.179.92.7:3128
>
>#прямое подключение
>$IPTABLES -t nat -A POSTROUTING -p tcp -m multiport --dport 80,53,22,5920 -s
>10.0.1.62/28 -j SNAT --to-source 82.179.92.3
>
>#ICQ, SSH
>$IPTABLES -t nat -A POSTROUTING -s 10.0.3.1/28 -p tcp -m multiport --dport
>22,5190 -j SNAT --to-source 82.179.92.6
>

цепочка POSTROUTING неправильно написана, т.к. пакет проходит в цепочке до первого удовлетворения условиям. У вас все пакеты подподают под:
>$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 82.179.92.6

и пойдут в интернет с адресом 82.179.92.6. Нужно сменить порядок правил!
И всяково рода фильтрацию: -p tcp -m multiport --dport 80,53,22,5920 лучше производить в цепочке FORWARD: $IPTABLES -s 10.0.1.62/28 -p tcp -m multiport --dport 80,53,22,5920 -j ACCEPT


>#локальные сервера
>$IPTABLES -t nat -A PREROUTING -p tcp -d 82.179.92.4 -m multiport -dport
>80,53 -j DNAT --to-destination 10.0.0.1
>$IPTABLES -t nat -A PREROUTING -p tcp -d 82.179.92.8 -m multiport -dport
>80,53 -j DNAT --to-destination 10.0.0.1

Это тоже не совсем понятно, если у Вас имеются реальные ип зачем их DNAT'ить и тем более на локальный адрес

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

4. "Помогите оценить скрипт IPTABLES"  
Сообщение от mako on 18-Май-08, 16:31 
>#локальные сервера
>$IPTABLES -t nat -A PREROUTING -p tcp -d 82.179.92.4 -m multiport -dport
>80,53 -j DNAT --to-destination 10.0.0.1
>$IPTABLES -t nat -A PREROUTING -p tcp -d 82.179.92.8 -m multiport -dport
>80,53 -j DNAT --to-destination 10.0.0.1

3) К интерфейсу eth1 подключены сервера с адресами 82.179.92.4 и 82.179.92.8 нужно обеспечить их
доступность из интернет по этим адресам.

это я пытался третий пункт реализовать я реально не понимаю, как его сделать в Linux'e

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

5. "Помогите оценить скрипт IPTABLES"  
Сообщение от angra (ok) on 19-Май-08, 02:49 
Что значит подключены сервера? Если имеется ввиду что доступны через локалку, то вам надо прописать route, iptables/netfilter здесь не нужен. У провайдера прописано что обращение к 82.179.92.1/255.255.255.240 должно идти к вам, а дальше уже ваша задача правильно прописать маршрут.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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