IPB

Здравствуйте, гость ( Вход | Регистрация )

Важные объявления

 
Ответить в данную темуНачать новую тему
> Настройка IPTABLES, Враг не пройдёт, и друг тоже.
Amid
сообщение 9.3.2006, 22:16    [ Вставить ник в форму быстрого ответа ]
Сообщение #1


Новичок
*

Группа: Новобранец
Сообщений: 7
Регистрация: 25.1.2006
Из: Луганск, кв. 50 лет Октября
ICQ: 200205195
Пользователь №: 36
Спасибо сказали: 0 раз(а)

Дистрибутив:
ASP Linux



Репутация: 0


Подскажите пожалуйста, что закрывать и что разрешать в iptables.
Конфигурация: рабочий ПК с АСП Линукс и Иксами на нём. Получает IP по DHCP. Во внешней сети имеется два шлюза, которые работают с попеременным успехом. Для внутренней сети (вторая сетевая карта)необходимо предоставить доступ к внешним FTP, IRC и HTTP через маскарадинг (или подобное с подменой адреса). Предоставляет ФТП. Необходима защита от сетевых атак в т.ч. флуда и т.д. и т.п.

Прошу не столько "как писать"(это можно найти в man iptables), сколько "что писать".
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Зарегистрируйтесь, чтобы скрыть этот рекламный блок.
crot
сообщение 24.3.2006, 13:28    [ Вставить ник в форму быстрого ответа ]
Сообщение #2


Новичок
*

Группа: Новобранец
Сообщений: 3
Регистрация: 27.1.2006
Пользователь №: 38
Спасибо сказали: 0 раз(а)

Дистрибутив:
ASPLinux 10



Репутация: 0


Цитата(Amid @ Mar 9 2006, 23:16 )
Подскажите пожалуйста, что закрывать и что разрешать в iptables.
Конфигурация: рабочий ПК с АСП Линукс и Иксами на нём.  Получает IP по DHCP. Во внешней сети имеется два шлюза, которые работают с попеременным успехом. Для внутренней сети (вторая сетевая карта)необходимо предоставить доступ к внешним FTP, IRC и HTTP через маскарадинг (или подобное с подменой адреса). Предоставляет ФТП. Необходима защита от сетевых атак в т.ч. флуда и т.д. и т.п.

Прошу не столько "как писать"(это можно найти в man iptables), сколько "что писать".
*




Amid, мыло моё знаешь. Давай там обсудим.
"..Не как писать,...а что писать" -меня аж проглючило (IMG:http://forum.linux.lg.ua/style_emoticons/default/smile.gif) ))))))))

Недавно сделал одному человеу такое у нас. Ничего - не жалуется.
Может у тебя там ньюансы...какие-то -давай по мылу обсудим.

Предварительно скажу свои мысли.
Выдаваемые IP у нас всё-равно не меняются-
я не люблю DHCP у себя. BOOTPROTO=static.
Еще у нас теперь в сегментах стало более одного шлюза. Они стреляются ICMP-редиректами. Я, кстати, пробовал отключать возможность обрабатывать редиректы
Код
echo"0" > /proc/sys/net/ipv4/conf/all/accept_redirects; echo"0" > /proc/sys/net/ipv4/conf/eth0/accept_redirects;  echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects;
echo "0" > /proc/sys/net/ipv4/conf/eth0/secure_redirects;

Но это результата не дало (может кто подскажет в чём дело?)
Тогда запретил через iptables У меня, в принципе, разрешено только эхо ко мне,
но поскольку редирект обрабатывается как релейтед-соединение, пришлось создать отдельную цепочку, перенаправлять пакеты рилайтед и естаблишед соединений в неё, а в ней дополнительно фильтровать, а не разрешать такие соединения сразу.
Со шлюзами более одного можно спокойно справиться iproute2 -ом
Я, например, убрал всё, что сказано про шлюз по умолчанию, ( у меня в ifcfg-eth0 :
GATEWAY=.....)
Потом просто говорим в файле route-eth0 :
Код
10.0.0.0/8 scope global nexthop via 10.8.1.254 nexthop via 10.8.1.1
10.2.0.3 scope global nexthop via 10.8.1.254 nexthop via 10.8.1.1
213.179.235.16/29 scope global nexthop via 10.8.1.254 nexthop via 10.8.1.1
default scope global nexthop via 10.8.1.254 nexthop via 10.8.1.1

сюда мы просто добавили default и явно прописали маршруты к некоторым сетям, причём с возможностью выбора между двумя шлюзами.

поднять default после его сброса скриптами ifup-pptp ifdown-pptp можно
из /etc/ppp/id-down.local, прописав там команду его добавления

Ну и ещё при старте желательно прописывать в арпкеше записи относительно шлюзов статикой, чтоб их не могли подменить.
и.т.д.

Настройки файрвола, по-моему, -это интим (IMG:http://forum.linux.lg.ua/style_emoticons/default/wink.gif) . Ну опять же - по-моему (IMG:http://forum.linux.lg.ua/style_emoticons/default/smile.gif) )))
Хотя ,может, кто внесёт интересные предложения по фильтрованию ИСХОДЯЩЕГО трафика (IMG:http://forum.linux.lg.ua/style_emoticons/default/wink.gif) ?

Если раздаёшь сервисы, можно ещё QoS прилепить...опять же iproute2
tc.....
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
GFSS
сообщение 11.7.2006, 20:08    [ Вставить ник в форму быстрого ответа ]
Сообщение #3


Фанат Linux ТРУ!!!
****

Группа: Опытные
Сообщений: 661
Регистрация: 22.12.2005
Из: Россия, Ростовская область
ICQ: 191649350
Пользователь №: 23
Спасибо сказали: 3 раз(а)

Дистрибутив:
SuSE 10.0 x586_64bit \ Mandriva 2010.1 x686_32bit
Jabber ID:
[email protected]



Репутация: 1


Недавно нарыл статейку, как раз под данный вопросс:
"Огненная стена" или строим файрвол на базе iptables
1. Установка netfilter/iptables.
В комплект поставки любого современного дистрибутива Linux (с версией ядра 2.4.x и 2.6.x) входит система сетевой защиты netfilter/iptables. Основная часть кода этих программных продуктов непосредственно включена в код ядра, а часть - исполняемые файлы, библиотеки, устанавливается в виде обычных файлов. Если вы используете достаточно современный дистрибутив, не собираетесь использовать экзотического программного обеспечения и не предъявляете жесткиx требований к безопасности, то скорее всего вы сможете ограничиться возможностями rpm-пакетов, входящих в комплект поставки дистрибутива. Проверьте, установлен ли пакет iptables:
[[email protected] root]# rpm -qa | grep iptables
iptables-1.2.6a-1.asp
Если пакет не установлен, то установите его:
[[email protected] root]# rpm -ihv iptables-version.rpm
Если у поставщика дистрибутива или сторонних производителей имеется более свежая версия пакета, то обновите его:
[[email protected] root]# rpm -Uhv iptables-version.rpm
При этом может потребоваться установка пакетов, удовлетворяющих зависимости, например, пакетов, содержащих исходные коды ядра.

Если вы уверены в своих силах, то более правильным будет установка netfilter/iptables из исходных кодов, при этом вы сможете:
- использовать последнюю (наиболее надежную, понравившуюся вам и т.п.) версию netfilter/iptables;
- избавиться от зависимости от поставщика дистрибутива и сторонних производителей rpm-пакетов;
- повысить производительность и надежность вашей системы за счет включения в нее тех и только тех фрагментов кода netfilter/iptables, которые нужны для решения только ваших задач;
- использовать (изучить, протестировать и т.п.) новые возможности фильтрации и управления пакетами, имеющиеся в последних версиях netfilter/iptables.

Для установки netfilter/iptables как минимум необходимы следующие пакеты:
- архив с исходными кодами iptables-version.tar.bz2, которые могут быть получены с сервера разработчиков www.netfilter.org (алиас www.iptables.org );
- патч для модификации исходных кодов ядра patch-o-matic-YYYYMMDD.tar.bz2, который так же может быть получен с www.netfilter.org ;
- архив с исходными кодами ядра linux-version.tar.bz2 , который может быть получен с www.kernel.org ;
- контрольные значения md5sum или GPG сигнатур ( www.gnupg.org ) для всех приведенных выше архивов с исходными кодами.
Для установки netfilter/iptables из исходных кодов необходимо выполнить следующие операции. Приведенное ниже описание инсталляции было протестировано на ASPLinux 7.3, для ядер версии 2.4.18, 2.4.25.

Шаг 1
Проверьте целостность и подлинность скачанных архивов - patch-o-matic-YYYYMMDD.tar.bz2, iptables-version.tar.bz2, linux-version.tar.bz2 с использованием md5sum или GPG сигнатур. Подробно процедура проверки целостности и подлинности описана здесь www.bruy.info/ssl.html#12.4 .

Шаг 2
Распакуйте исходные коды ядра в каталоге /usr/src:
[[email protected] src]# bzip2 -d linux-version.tar.bz2
[[email protected] src]# tar xpf linux-version.tar.bz2

Шаг 3
Определите, какие фрагменты кода, с точки зрения решаемых вами задач, и в каком виде (модули или монолитно) должны быть включены в новое ядро. На работоспособность и функциональные возможности netfilter/iptables в основном влияют параметры конфигурации исходных кодов ядра в разделах:
Networking options;
IP: Netfilter Configuration.
Подробное описание всех опций конфигурации, используемых в этих разделах, содержатся в исходных кодах ядра. В ядре версии 2.4.x в файле Documentation/Configure.help, в версии 2.6.x в файлах /net/ipv4/Kconfig и net/ipv4/netfilter/Kconfig.

Шаг 4
Разработка netfilter/iptables и ядра ведутся разными, но взаимодействующими между собой, командами разработчиков. Части кода netfilter/iptables, по мнению разработчиков должны быть включены в ядро, содержатся в патче patch-o-matic-YYYYMMDD (патч patch-o-matic-20031219 применим только к ядрам ветви 2.4 версии 2.4.17 и старше). Некоторые из этих изменений принимаются разработчиками ядра и включаются в последующие версии, некоторые не принимаются разработчиками ядра и вы можете использовать их на свой страх и риск. Дополнительная информация может быть найдена в документации http://www.netfilter.org/documentation/index.html#documentat ion-howto .
Патчи входящие в состав patch-o-matic-YYYYMMDD делятся на ряд категорий, при этом наиболее часто используемыми на практике являются:
- optimizations - оптимизационные патчи, включение которых в коды ядра ожидается;
- pending - патчи, включение которых в коды ядра ожидается;
- submitted - патчи, включенные в последнюю (на момент выхода patch-o-matic) версию ядра;
- base - патчи, мнению разработчиков netfilter/iptables, без проблем взаимодействующие друг с другом.

Для применения патча patch-o-matic-YYYYMMDD необходимо выполнить следующие операции.
Раскройте архив с исходными кодами patch-o-matic.
[[email protected] iptables]# bzip2 -d patch-o-matic-20031219.tar.bz2
[[email protected] iptables]# tar xpvf patch-o-matic-20031219.tar
перейдите во вновь созданный каталог:
[[email protected] iptables]# cd patch-o-matic
и запустите сценарий runme, сообщив ему где находятся исходные коды ядра и какую категорию патчей вы желаете использовать, например:
[[email protected] patch-o-matic]# KERNEL_DIR=/usr/src/linux-2.4.25 ./runme pending
далее в рамках диалога вам будет предложено протестировать применимость, установить или пропустить установку всех патчей из выбранной ранее категории (процесс напоминает конфигурирование исходных кодов ядра при использовании make config).
По окончании внесения изменений в исходные коды, откомпилируйте и проинсталлируйте ядро, проверьте его работоспособность.

Шаг 5
Удалите, если они установлены, пакеты iptables, ipchains и используцемые вместе с ними конфигураторы системы сетевой защиты.

Шаг 6
Распакуйте архив с частью исходных кодов iptables/netfilter устанавливаемых в виде обычных файлов:
[[email protected] iptables]# bzip2 -d iptables-1.2.9.tar.bz2
[[email protected] iptables]# tar xpvf iptables-1.2.9.tar
Перейдите во вновь созданный каталог:
[[email protected] iptables]# cd iptables-1.2.9
Откомпилируйте и проинсталируйте iptables/netfilter, создайте и сохраните список проинсталлированных файлов:
[[email protected] iptables-1.2.9]# make KERNEL_DIR=/usr/src/linux-2.4.25 BINDIR=/sbin LIBDIR=/lib/ MANDIR=/usr/share/man/
[[email protected] iptables-1.2.9]# find /* > ../iptables1
[[email protected] iptables-1.2.9]# make KERNEL_DIR=/usr/src/linux-2.4.25 BINDIR=/sbin LIBDIR=/lib/ MANDIR=/usr/share/man/ install
[[email protected] iptables-1.2.9]# find /* > ../iptables2
[[email protected] iptables-1.2.9]# cd ..
[[email protected] iptables]# diff iptables1 iptables2 > iptables.installed.YYYY.MM.YY

Шаг 7
Создайте файл сценария /etc/init.d/iptables, содержащий:
как минимум две строки необходимые для нормальной работы утилиты chkconfig, содержащей информацию о уровнях на которых должен работать netfilter/iptables, приоритетности выполнения сценария при загрузке и разгрузке системы:
# chkconfig: 2345 08 98
# description: Start and stop filtering and mangling packets;
команды загрузки модулей netfilter/iptables (если соотвествующие фрагменты кода не вкомпилированы непосредственно в ядро) вида:
/sbin/modprobe <имя модуля>;
команды, передающие ядру определенные параметры, например, для включения пересылки пакетов между различными сетевыми интерфейсами, необходимыми для нормальной работы шлюза используется команда:
/sbin/sysctl -w net.ipv4.ip_forward = 1
команды, реализующие фильтрацию и другие манипуляции с пакетами, которые в общем случае имеют вид:
/sbin/iptables <строка с правилом>
методология формирования правил приведена ниже.

Шаг 8
Определите права доступа и владельца файла /etc/init.d/iptables:
[[email protected] iptables]# chmod 700 /etc/init.d/iptables
[[email protected] iptables]# chown root.root /etc/init.d/iptables

Шаг 9
Если вы хотите, что бы netfilter/iptables запускался при загрузке системы (это в большинстве случаев правильное решение) создайте соответствующие ссылки:
[[email protected] iptables]# chkconfig --add iptables

2. Инициализация брандмауэра.
Работой брадмауэра управлет набор правил, которые определяются с помощью опций программы iptables. Инициализация брандмауэра включает в себя следующие операции: определение констант, используемых при работе сценария; удаление существующих правил из сценария; определение политики по умолчанию; востановление состояния интерфейса обратной петли, используемого для выполнения системных операций; блокирование узлов,доступ к которым вы собираетесь запретить; определение основных правил, предотвращающих прохождение пакетов с некорректными адресами источника и защищающих серверы, работающие через непривелигерованные порты.

Символьные константы.
Сценарий брандмауэра становится удобочитаемым и простым в настройке, если в нем определен ряд символьных имен. Некоторые из перечисленных ниже констант представляют общепринятые обозначения.


IPT="/sbin/iptables"
IPTS="/sbin/iptables-save"
IPTR="/sbin/iptables-restore"

EXTERNAL_INTERFACE="eth0" # интерефейс подключенный к интеренету
LOOPBACK_INTERFACE='lo' # интерфейс обратной петли
IP_ADDR="213.87.X.X" # IP-адрес вашего компьютера
ANYWHERE="any/0" # произвольный IP-адрес
MY_ISP="my.isp.address.range" # диапазон IP-адресов провайдера
LOOPBACK="127.0.0.0/8" # диапазон IP-адресов обратной петли
CLASS_A="10.0.0.0/8" # адреса класса А, предназначенные для
# внутреннего использования
CLASS_B="172.16.00/22" # адреса класса B, предназначенные для
# внутреннего использования
CLASS_C="192.168.0.0/16"# адреса класса C, предназначенные для
# внутреннего использования
CLASS_D="244.0.0.0/4" # адреса класса А, предназначенные для
# группового вещания
CLASS_E="240.0.0.0/5" # зарезервированные адреса класса Е
BROADCAST_SRC="0.0.0.0" # исходный широковещательный
BROADCAST_DST="255.255.255.255"# целевой широковешательные
PRIVPORTS="0:1023" # номера привелегированных портов
UNPRIPORTS="1024:65535" # номера непривелегированных портов



Удаление существующих правил и установка политики по умолчанию.

# Сбрасываеим все правила
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
# Удаление правил
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
# Очищаем нестандартные правила
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X



Теперь когда сброс всех правил осуществен, необходимо определить политику брандмауэра по умолчанию. Есть несколько вариантов начальной политики, и вам выбирать. Мой десктоп, не имеющий за собой локальной сети имеет политику по умолчанию


$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$IPT -A INPUT -p ALL -i $LOOPBACK_INTERFACE -j ACCEPT
$IPT -A OUTPUT -p ALL -i $LOOPBACK_INTERFACE -j ACCEPT



Написание правил на что не забыть обратить внимание.

А начать придется с сождания собственных Таблиц. А так же написать правила запрещающие прохождение через интерфей EXTERNAL_INTERFACE любой информации от сетей CLASS_A, СLASS_B, CLASS_C,


$IPT -N bad_packets
$IPT -N bad_tcp_packets
$IPT -N icmp_packets
$IPT -N udp_inbound
$IPT -N udp_outbound
$IPT -N tcp_inbound
$IPT -N tcp_outbound


3. Атаки с целью вывода системы из строя.
Атака произволится путем "наводнения" системы пакетами определенного типа.

SYN - наводнение (Syn Flooding)
Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным. Клиентская часть с ложным IP-адресом отправляет SYN пакет и сервер отвечает SYN-ACK, но так как адрес был ложным таким образом соединединие не устанавливается и остается в "полуоткрытом состоянии"

Подробности по теме :
ftp://info.cert.org./pub/cert_advisories/CA-96.21.tcp_syn_fl ooding



$IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "fp=bad_tcp_packets:1 a=DROP "
$IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# All good, so return
$IPT -A bad_tcp_packets -p tcp -j RETURN



ping - наводнение

Любое сообщение, предполагающее от вет на него, может быть использовано для того что бы вывести вашу машину из строя либо существенно ограничить ее производительность. В качестве примера такого сообщения можно привести ICMP - пакет ping. При получении большого количества таких сообщений ресурсы машины в основном тратяться на передачу ответов.

Подробности по теме :
Denial of Service www.cert.org


$IPT -A icmp_packets --fragment -p ICMP -j LOG \
--log-prefix "fp=icmp_packets:1 a=DROP "
$IPT -A icmp_packets --fragment -p ICMP -j DROP


UDP - наводнение
Службы использующие UDP, очень часто становятся мишенью для атак с целью вывода системы из строя. В отличие от ТСР, в протоколе UDP не придусмотрено установление соединения, поэтому флаги, определяющие состояние соединения, отсутствуют. Принимающий узел не имеет ни какой информации щ ещь какой пакет должен следовать за только что принятым. Таким образом возникакет возможность организовать атаку таким образом, что вся пропускная способность линии будет использоваться только на передачу ответов на поступающие UDP -пакет..
Подробности по теме :
UDP Port Denial-of-Service attack www.cert.org


$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 137 -j DROP
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 138 -j DROP
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 113 -j REJECT
$IPT -A udp_inbound -p UDP -s 0/0 --source-port 67 --destination-port 68 \
-j ACCEPT
$IPT -A udp_inbound -p UDP -j RETURN
$IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT


ICMP - перенаправление

ICMP- сообщение типа 5 указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять пакеты по более короткому маршруту. Если вы используете routed или gated. То не забывайте, что есть возможность перенаправления трафика на удаленную машину, а так же для взломшика есть возможность определить свою машину, как одну из вашил локальных, стояших за сервером.


$IPT -A icmp_packets --fragment -p ICMP -j LOG \
--log-prefix "fp=icmp_packets:1 a=DROP "
$IPT -A icmp_packets --fragment -p ICMP -j DROP

# Echo - uncomment to allow your system to be pinged.
# Uncomment the LOG command if you also want to log PING attempts
#
# $IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j LOG \
# --log-prefix "fp=icmp_packets:2 a=ACCEPT "
# $IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

# Time Exceeded
$IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

# Not matched, so return so it will be logged
$IPT -A icmp_packets -p ICMP -j RETURN




4. NAT в IPTables.
Маскарадинг (masquerading) и трансляция ip-адресов (NAT) в Linux. Что это такое, что можно и что нельзя.

Если у Вас есть локальная сеть, подключенная к сети Интернет через linux сервер, и в этой локальной сети используются 'серые' ip адреса, то одним из способов выхода в Интернет может стать использование NAT. Или наоборот, с помощью NAT можно осуществить доступ из Интернет например к web серверу расположенному в локальной сети и не имеющему реального ip-адреса.

Этот документ содержит несколько терминов, которые следует пояснить прежде, чем вы столкнетесь с ними.

1. 'Серый' IP адрес (он же приватный, он же фейковый он же частный) - IP адрес из специально выделенных подсетей, которые не используются в сети Интернет, и зарезервированы для использования в локальных сетях (intranet). В каждом классе (A B С) зарезервировано по одной подсети:

Класс А 10.0.0.0 - 10.255.255.255
Класс B 172.16.0.0 - 172.31.255.255
Класс C 192.168.0.0 - 192.168.255.255

2. 'Белый' IP адрес (он же реальный, он же публичный) - IP адрес, не входящий в 'серые' подсети и использующийся в сети Интернет.

3. Маскарад (MASQUERADE) - замена сетевого адреса получателя в заголовке пакета на адрес, находящийся на исходящем интерфейсе машины, выполняющей маскарад, и соответственно обратная операция при получении ответного пакета. Маскарад применяется в тех же целях, что и SNAT, но в отличие от последней, MASQUERADE дает более сильную нагрузку на систему. Происходит это потому, что каждый раз, когда требуется выполнение этого действия - производится запрос IP адреса для указанного в действии сетевого интерфейса, в то время как для SNAT IP адрес указывается непосредственно. Однако, благодаря такому отличию, MASQUERADE может работать в случаях с динамическим IP адресом, т.е. когда вы подключаетесь к Интернет, скажем через PPP, SLIP или DHCP.

4. Трансляция адресов (NAT - network address translation) - замена сетевого адреса получателя в заголовке пакета на любой указанный, и соответственно обратная операция при получении ответного пакета.

5. DNAT - от англ. Destination Network Address Translation - изменение сетевого адреса получателя. DNAT - это изменение адреса назначения в заголовке пакета. Зачастую используется в паре с SNAT. Основное применение - предоставление дополнительных сетевых услуг внешним клиентам.

6. SNAT - от англ. Source Network Address Translation - изменение сетевого адреса отправителя. SNAT - это изменение исходного адреса в заголовке пакета. Основное применение - использование единственного реального IP-адреса несколькими компьютерами для выхода в Интернет.

Общие положения

Когда пакет приходит на наш брандмауэр, то он сперва попадает на сетевое устройство, перехватывается соответствующим драйвером и далее передается в ядро. Далее пакет проходит ряд таблиц iptables и затем передается либо локальному приложению, либо переправляется на другую машину.

Порядок движения транзитных пакетов в iptables.

В упрощенном варианте, касающемся NAT, это выглядит так - кабель - сетевой интерфейс - цепочка PREROUTING таблицы nat - принятие решения о маршрутизации - цепочка POSTROUTING таблицы nat - сетевой интерфейс.

Как вы можете видеть, пакет проходит несколько этапов, прежде чем он будет передан далее. На каждом из них пакет может быть остановлен. Заметьте, что нет каких либо цепочек, специфичных для отдельных интерфейсов или чего-либо подобного. Цепочку FORWARD проходят ВСЕ пакеты, которые движутся ЧЕРЕЗ ваш роутер. Не используйте цепочку INPUT для фильтрации транзитных пакетов, они туда просто не попадают! Через эту цепочку движутся только те пакеты, которые предназначены данному хосту!

Для того чтобы Вы смогли использовать NAT, необходимо загрузить модуль iptables, который отвечает за трансляцию адресов с помощью команды

modprobe iptable_nat

Для трансляции некоторых определенных протоколов необходимо загрузить дополнительные модули - например для ftp это модуль ip_nat_ftp.

Так как при перезагрузке эти команды сбросятся то их необходимо прописать в автозагрузку, например в / etc/ rc. d/ rc. local.

Так как все операции необходимые для трансляции адресов происходят в таблице nat и двух ее цепочках - PREROUTING и POSTROUTING, то мы рассматриваем только их.

Цепочка POSTROUTING

Действие SNAT

SNAT используется для преобразования сетевых адресов (Source Network Address Translation), т.е. изменения исходящего IP адреса в IP заголовке пакета. Например, это действие можно использовать для предоставления выхода в Интернет другим компьютерам из локальной сети, имея лишь один реальный IP адрес. Для этого необходимо включить пересылку пакетов (forwarding) в ядре и затем создать правила, которые будут транслировать исходящие IP адреса нашей локальной сети в реальный внешний адрес. В результате, внешний мир ничего не будет знать о нашей локальной сети, он будет считать, что запросы пришли с нашего брандмауэра.
SNAT допускается выполнять только в таблице nat, в цепочке POSTROUTING. Другими словами, только здесь допускается преобразование исходящих адресов. Если первый пакет в соединении подвергся преобразованию исходящего адреса, то все последующие пакеты, из этого же соединения, будут преобразованы автоматически и не пойдут через эту цепочку правил.

Ключ -- to- source

Пример:

iptables - t nat - A POSTROUTING - p tcp - o eth0 - j SNAT -- to- source 194.236.50.155-194.236.50.160:1024-32000
Ключ -- to- source используется для указания адреса, который присваивается пакету. Все просто, вы указываете IP адрес, который будет подставлен в заголовок пакета в качестве исходящего. Если вы собираетесь перераспределять нагрузку между несколькими брандмауэрами, то можно указать диапазон адресов, где начальный и конечный адреса диапазона разделяются дефисом, например: 194.236.50.155-194.236.50.160. Тогда, конкретный IP адрес будет выбираться из диапазона случайным образом для каждого нового потока. Дополнительно можно указать диапазон портов, которые будут использоваться только для нужд SNAT. Все исходящие порты будут после этого перекартироваться в заданный диапазон. Если диапазон портов не задан, то исходные порты ниже 512 перекартируются в диапазоне 0-511, порты в диапазоне 512-1023 перекартируются в диапазоне 512-1023, и, наконец порты из диапазона 1024-65535 перекартируются в диапазоне 1024-65535. Что касается портов назначения, то они не подвергаются перекартированию.

Действие MASQUERADE

Маскарадинг в основе своей представляет то же самое, что и SNAT только не имеет ключа --to-source. Причиной тому то, что маскарадинг может работать, например, с dialup подключением или DHCP, т.е. в тех случаях, когда IP адрес присваивается устройству динамически. Если у вас имеется динамическое подключение с меняющимся ip адресом, то нужно использовать маскарадинг, если же у вас статическое IP подключение, то бесспорно лучшим выходом будет использование действия SNAT.
Маскарадинг подразумевает получение IP адреса от заданного сетевого интерфейса, вместо прямого его указания, как это делается с помощью ключа --to-source в действии SNAT. Действие MASQUERADE имеет хорошее свойство - "забывать" соединения при остановке сетевого интерфейса.

Действие MASQUERADE допускается указывать только в цепочке POSTROUTING таблицы nat, так же как и действие SNAT. MASQUERADE имеет ключ, описываемый ниже, использование которого необязательно.

Ключ --to-ports

Пример:

iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
Ключ --to-ports используется для указания порта источника или диапазона портов исходящего пакета. Можно указать один порт, например: --to-ports 1025, или диапазон портов как здесь: --to-ports 1024-3000. Этот ключ можно использовать только в правилах, где критерий содержит явное указание на протокол TCP или UDP с помощью ключа -- protocol.

Цепочка PREROUTING

В данной цепочке выполняется преобразование сетевых адресов (DNAT) перед тем как пакеты попадут в цепочку INPUT или FORWARD.

Действие DNAT

DNAT (Destination Network Address Translation) используется для преобразования адреса места назначения в IP заголовке пакета. Если пакет подпадает под критерий правила, выполняющего DNAT, то этот пакет, и все последующие пакеты из этого же потока, будут подвергнуты преобразованию адреса назначения и переданы на требуемое устройство, хост или сеть. Данное действие может, к примеру, успешно использоваться для предоставления доступа к вашему web-серверу, находящемуся в локальной сети, и не имеющему реального IP адреса. Для этого вы строите правило, которое перехватывает пакеты, идущие на HTTP порт брандмауэра и выполняя DNAT передаете их на локальный адрес web-сервера. Для этого действия так же можно указать диапазон адресов, тогда выбор адреса назначения для каждого нового потока будет производиться случайным образом.
Действие DNAT может выполняться только в цепочках PREROUTING и OUTPUT таблицы nat, и во вложенных под-цепочках. Важно запомнить, что вложенные подцепочки, реализующие DNAT не должны вызываться из других цепочек, кроме PREROUTING и OUTPUT.

К люч --to-destination

Пример :

iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10

Ключ -- to - destination указывает, какой IP адрес должен быть подставлен в качестве адреса места назначения. В выше приведенном примере во всех пакетах, пришедших на адрес 15.45.23.67, адрес назначения будет изменен на один из диапазона от 192.168.1.1 до 192.168.1.10. Как уже указывалось выше, все пакеты из одного потока будут направляться на один и тот же адрес, а для каждого нового потока будет выбираться один из адресов в указанном диапазоне случайным образом. Можно также определить единственный IP адрес. Можно дополнительно указать порт или диапазон портов, на который (которые) будет перенаправлен траффик. Для этого после ip адреса через двоеточие укажите порт, например --to-destination 192.168.1.1:80, а указание диапазона портов выглядит так: --to-destination 192.168.1.1:80-100. Указание портов допускается только при работе с протоколом TCP или UDP, при наличии опции --protocol в критерии.
Действие DNAT достаточно сложно в использовании и требует дополнительного пояснения. Рассмотрим простой пример. У нас есть WEB сервер и мы хотим разрешить доступ к нему из Интернет. Мы имеем только один реальный IP адрес, а WEB-сервер расположен в локальной сети. Реальный IP адрес $INET_IP назначен брандмауэру, HTTP сервер имеет локальный адрес $HTTP_IP и, наконец брандмауэр имеет локальный адрес $LAN_IP. Для начала добавим простое правило в цепочку PREROUTING таблицы nat:
iptables -t nat -A PREROUTING --dst $INET_IP -p tcp --dport 80 -j DNAT \
--to-destination $HTTP_IP

В соответствии с этим правилом, все пакеты, поступающие на 80-й порт адреса $INET_IP перенаправляются на наш внутренний WEB-сервер. Если теперь обратиться к WEB-серверу из Интернет, то все будет работать прекрасно. Но что же произойдет, если попробовать соединиться с ним из локальной сети? Соединение просто не установится. Давайте посмотрим как маршрутизируются пакеты, идущие из Интернет на наш WEB-сервер. Для простоты изложения примем адрес клиента в Интернет равным $EXT_BOX.
1. Пакет покидает клиентский узел с адресом $EXT_BOX и направляется на $INET_IP

2. Пакет приходит на наш брандмауэр.

3. Брандмауэр, в соответствии с вышеприведенным правилом, подменяет адрес назначения и передает его дальше, в другие цепочки.

4. Пакет передается на $HTTP_IP.

5. Пакет поступает на HTTP сервер и сервер передает ответ через брандмауэр, если в таблице маршрутизации он обозначен как шлюз для $EXT_BOX. Как правило, он назначается шлюзом по-умолчанию для HTTP сервера.

6. Брандмауэр производит обратную подстановку адреса в пакете, теперь все выглядит так, как будто бы пакет был сформирован на брандмауэре.

7. Пакет передается клиенту $EXT_BOX.

А теперь посмотрим, что произойдет, если запрос посылается с узла, расположенного в той же локальной сети. Для простоты изложения примем адрес клиента в локальной сети равным $LAN_BOX.

1. Пакет покидает $LAN_BOX.

2. Поступает на брандмауэр.

3. Производится подстановка адреса назначения, однако адрес отправителя не подменяется, т.е. исходный адрес остается в пакете без изменения.

4. Пакет покидает брандмауэр и отправляется на HTTP сервер.

5. HTTP сервер, готовясь к отправке ответа, обнаруживает, что клиент находится в локальной сети (поскольку пакет запроса содержал оригинальный IP адрес, который теперь превратился в адрес назначения) и поэтому отправляет пакет непосредственно на $LAN_BOX.

6. Пакет поступает на $LAN_BOX. Клиент "путается", поскольку ответ пришел не с того узла, на который отправлялся запрос. Поэтому клиент "сбрасывает" пакет ответа и продолжает ждать "настоящий" ответ.

Проблема решается довольно просто с помощью SNAT. Ниже приводится правило, которое выполняет эту функцию. Это правило вынуждает HTTP сервер передавать ответы на наш брандмауэр, которые затем будут переданы клиенту.
iptables -t nat -A POSTROUTING -p tcp --dst $HTTP_IP --dport 80 -j SNAT \
--to-source $LAN_IP

Так как цепочка POSTROUTING обрабатывается самой последней и к этому моменту
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Ujen
сообщение 1.3.2007, 15:42    [ Вставить ник в форму быстрого ответа ]
Сообщение #4


Участник
**

Группа: Новобранец
Сообщений: 35
Регистрация: 1.3.2007
ICQ: 282536188
Пользователь №: 178
Спасибо сказали: 0 раз(а)

Дистрибутив:
Gentoo



Репутация: 0


Слыш черт, а не проще было ссылку дать?

Пару советиков
# Против флуда
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
# Против скана портов
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# Против пинга смерти )))
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Ujen
сообщение 1.3.2007, 16:08    [ Вставить ник в форму быстрого ответа ]
Сообщение #5


Участник
**

Группа: Новобранец
Сообщений: 35
Регистрация: 1.3.2007
ICQ: 282536188
Пользователь №: 178
Спасибо сказали: 0 раз(а)

Дистрибутив:
Gentoo



Репутация: 0


Кому интересно вот мой iptables




#!/bin/bash
#clear
#V1.2
#####################################
clear
echo -n Clear..
#cat chains | iptables-restore
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
echo [ OK ]
#variable
#####################################
echo -n Create variables..
lan_dev='eth1'
net_dev='ppp0'
net_ip='x.x.x.x/x.x.x.x'
lan_ip='x.x.x.x/x.x.x.x'
server='x.x.x.x'
server_global='x.x.x.x'
vip=`/bin/cat /etc/iptables/users`
echo [ OK ]
##########################################################################
##########################################################################
iptables -N server_out
iptables -A server_out -s localhost -j ACCEPT
iptables -A server_out -d localhost -j ACCEPT
iptables -A server_out -s $server -j ACCEPT
iptables -A server_out -s $server_global -j ACCEPT
iptables -A server_out -d $server -j ACCEPT
iptables -A server_out -d $server_global -j ACCEPT
iptables -A server_out -j DROP
iptables -A OUTPUT -j server_out
##########################################################################
##########################################################################
#Create New Chains
echo -n Create net chains..
iptables -N input_server
iptables -N input_server_global
iptables -N input_server_vip
echo [ OK ]
##########################################################################
##########################################################################
#create chains for localnet
##########################################################################
##########################################################################
#DNS
##########################################################################
echo -n DNS..
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 53 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 53 -j ACCEPT
echo [ OK ]
##########################################################################
#Http
##########################################################################
echo -n Http..
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 80 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 80 -j ACCEPT
echo [ OK ]
##########################################################################
#SSL
##########################################################################
echo -n SSL..
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 443 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 443 -j ACCEPT
echo [ OK ]
##########################################################################
#SSH
##########################################################################
echo -n Ssh..
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 22 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 22 -j ACCEPT
echo [ OK ]
##########################################################################
#FTP
##########################################################################
echo -n Ftp..
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 21 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 21 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 30000:50000 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 30000:50000 -j ACCEPT
echo [ OK ]
##########################################################################
#MySQL
##########################################################################
echo -n MySQL..
iptables -A input_server -s $lan_ip -d $server -p tcp --dport mysql -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport mysql -j ACCEPT
echo [ OK ]
##########################################################################
#ICMP packets
##########################################################################
echo -n ICMP Packets..
iptables -A input_server -s $lan_ip -d $server -p icmp -j ACCEPT
echo [ OK ]
##########################################################################
#POP & SMTP
##########################################################################
echo -n POP and SMTP..
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 25 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 25 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 110 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 110 -j ACCEPT
echo [ OK ]
##########################################################################
#Squid
##########################################################################
echo -n Squid..
iptables -A input_server -s $lan_ip -d $server -p tcp --dport 3128 -j ACCEPT
iptables -A input_server -s $lan_ip -d $server -p udp --dport 3128 -j ACCEPT
echo [ OK ]
##########################################################################
#Lan to Net
##########################################################################
echo -n Lan to Net..
iptables -A input_server -s $lan_ip -d $net_ip -j ACCEPT
echo [ OK ]
##########################################################################
#Close chain
##########################################################################
echo -n Close chain..
iptables -A input_server -s $lan_ip -d $server -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A input_server -j REJECT --reject-with icmp-net-unreachable
iptables -A input_server -j DROP
echo [ OK ]
#create chain localnet soccessfull
############################################################################
############################################################################
#create chains for vip
############################################################################
#DNS
############################################################################
echo -n DNS..
iptables -A input_server_vip -d $server_global -p tcp --dport 53 -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport 53 -j ACCEPT
echo [ OK ]
###########################################################################
#Apache
###########################################################################
iptables -A input_server_vip -d $server_global -p tcp --dport 80 -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport 80 -j ACCEPT
###########################################################################
#SSH
###########################################################################
echo -n SSH..
iptables -A input_server_vip -d $server_global -p tcp --dport 17112 -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport 17112 -j ACCEPT
echo [ OK ]
###########################################################################
#FTP
###########################################################################
echo -n FTP..
iptables -A input_server_vip -d $server_global -p tcp --dport 21 -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport 21 -j ACCEPT
iptables -A input_server_vip -d $server_global -p tcp --dport 30000:50000 -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport 30000:50000 -j ACCEPT
echo [ OK ]
###########################################################################
#MySQL
###########################################################################
echo -n MySQL..
iptables -A input_server_vip -d $server_global -p tcp --dport mysql -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport mysql -j ACCEPT
echo [ OK ]
###########################################################################
#ICMP packets
###########################################################################
echo -n ICMP packets..
iptables -A input_server_vip -d $server_global -p icmp -j ACCEPT
echo [ OK ]
###########################################################################
#POP & SMTP
###########################################################################
echo -n POP and SMTP..
iptables -A input_server_vip -d $server_global -p tcp --dport 25 -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport 25 -j ACCEPT
iptables -A input_server_vip -d $server_global -p tcp --dport 110 -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport 110 -j ACCEPT
echo [ OK ]
###########################################################################
#Squid
###########################################################################
echo -n Squid..
iptables -A input_server_vip -d $server_global -p tcp --dport 3128 -j ACCEPT
iptables -A input_server_vip -d $server_global -p udp --dport 3128 -j ACCEPT
echo [ OK ]
###########################################################################
###########################################################################
#close vip chain
###########################################################################
echo -n Close vip chain..
iptables -A input_server_vip -d $server_global -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A input_server_vip -j REJECT --reject-with icmp-net-unreachable
iptables -A input_server_vip -j DROP
echo [ OK ]
#create chains for vip soccessfull
############################################################################
############################################################################
#create chains for global
############################################################################
echo -n Global chains
###########################################################################
#Apache
###########################################################################
echo -n Apache..
iptables -A input_server_global -p tcp --dport 80 -j ACCEPT
iptables -A input_server_global -p udp --dport 80 -j ACCEPT
echo [ OK ]
r_global -p udp --dport 2237 -j ACCEPT
###########################################################################
#PPTPD
###########################################################################
echo -n pptpd..
iptables -A input_server_global -p tcp --dport 1723 -j ACCEPT
iptables -A input_server_global -p udp --dport 1723 -j ACCEPT
echo [ OK ]
###########################################################################
###########################################################################
#Close global chain
###########################################################################
echo -n Close global chain..
iptables -A input_server_global -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A input_server_global -j REJECT --reject-with icmp-net-unreachable
iptables -A input_server_global -j DROP
echo [ OK ]
###########################################################################
#create chains for global soccessfull
###########################################################################
###########################################################################
iptables -A INPUT -i $lan_dev -j input_server
for usr in $vip
{
iptables -A INPUT -s $usr -j input_server_vip
}
iptables -A INPUT -i $net_dev -j input_server_global
###########################################################################
###########################################################################
#NAT
###########################################################################
echo -n NAT..
iptables -t nat -A POSTROUTING -s $lan_ip -o $net_dev -j SNAT --to-source $server_global
echo [ OK ]
###########################################################################
# Syn-flood
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
# Ports Scans
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# Ping Death
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
stempher
сообщение 28.7.2007, 19:42    [ Вставить ник в форму быстрого ответа ]
Сообщение #6


Новичок
*

Группа: Новобранец
Сообщений: 18
Регистрация: 28.7.2007
Из: Украина, Луганск
Пользователь №: 487
Спасибо сказали: 0 раз(а)

Дистрибутив:
Ubuntu 7.04



Репутация: 0


Цитата(Ujen @ Mar 1 2007, 17:08 ) *
lan_dev='eth1'
net_dev='ppp0'
net_ip='x.x.x.x/x.x.x.x'
lan_ip='x.x.x.x/x.x.x.x'
server='x.x.x.x'
server_global='x.x.x.x'


А поясни плиз какая у тебя ситуация на компе. Я так понимаю сетевая одна и по впн через нее ты получаешь инет. Тогда net_ip - впновские айпишки, а lan_ip - локальные. А что такое server и server_global?
И еще: зачем ты разрешаешь соединение по порту 1723? Если я не офибаюсь, то GRE который нужен для впнки - 47 порт, а я его у тебя не вижу... А что такое 1723?
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Ujen
сообщение 29.7.2007, 8:44    [ Вставить ник в форму быстрого ответа ]
Сообщение #7


Участник
**

Группа: Новобранец
Сообщений: 35
Регистрация: 1.3.2007
ICQ: 282536188
Пользователь №: 178
Спасибо сказали: 0 раз(а)

Дистрибутив:
Gentoo



Репутация: 0


Цитата(stempher @ Jul 28 2007, 20:42 ) *
А поясни плиз какая у тебя ситуация на компе. Я так понимаю сетевая одна и по впн через нее ты получаешь инет. Тогда net_ip - впновские айпишки, а lan_ip - локальные. А что такое server и server_global?
И еще: зачем ты разрешаешь соединение по порту 1723? Если я не офибаюсь, то GRE который нужен для впнки - 47 порт, а я его у тебя не вижу... А что такое 1723?



lan_dev=сетевое устройство локальной сети
net_dev=устройсво выпускающее в инэт
lan_ip=ip и маска сети
server=локальный ip сервака
server_global=глобальный ip сервака

1723 это порт сервера vpn
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
vasdas
сообщение 17.10.2007, 21:09    [ Вставить ник в форму быстрого ответа ]
Сообщение #8


Новичок
*

Группа: Новобранец
Сообщений: 15
Регистрация: 17.10.2007
Из: Yalta
Пользователь №: 649
Спасибо сказали: 0 раз(а)

Дистрибутив:
MOPSlinux-6.2.2



Репутация: 0


всем привет, попытался настроить iptables как выложил Ujen , в итоге в инет выхода нет и вот такая ошибка:
[email protected]:/home/andry# /etc/rc.d/rc.firewall restart
Clear..[ OK ]
Create variables../bin/cat: /etc/iptables/users: No such file or directory
[ OK ]
Create net chains..[ OK ]
DNS..[ OK ]
Http..[ OK ]
SSL..[ OK ]
Ssh..[ OK ]
Ftp..[ OK ]
MySQL..iptables v1.3.5: invalid TCP port/service `mysql' specified
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: invalid UDP port/service `mysql' specified
Try `iptables -h' or 'iptables --help' for more information.
[ OK ]
ICMP Packets..[ OK ]
POP and SMTP..[ OK ]
Squid..[ OK ]
Lan to Net..[ OK ]
Close chain..[ OK ]
DNS..[ OK ]
SSH..[ OK ]
FTP..[ OK ]
MySQL..iptables v1.3.5: invalid TCP port/service `mysql' specified
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: invalid UDP port/service `mysql' specified
Try `iptables -h' or 'iptables --help' for more information.
[ OK ]
ICMP packets..[ OK ]
POP and SMTP..[ OK ]
Squid..[ OK ]
Close vip chain..[ OK ]
Global chainsApache..[ OK ]
/etc/rc.d/rc.firewall: line 211: r_global: command not found
pptpd..[ OK ]
Close global chain..[ OK ]
NAT..[ OK ]
предполагаю что MySQL не находит порты, подскажите как с этим бороться?
и еще, сеть vpn, машрут до серв.NAT(тот который светится с наружи) выглядит так- мойIP>серв.vpn>сервер>cерв.NAT , какой из них вписывать как server_global ?
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Ujen
сообщение 19.10.2007, 9:06    [ Вставить ник в форму быстрого ответа ]
Сообщение #9


Участник
**

Группа: Новобранец
Сообщений: 35
Регистрация: 1.3.2007
ICQ: 282536188
Пользователь №: 178
Спасибо сказали: 0 раз(а)

Дистрибутив:
Gentoo



Репутация: 0


Выкладываю новую версию своего iptables
#!/bin/bash
ipt=/sbin/iptables
lan=192.168.1.0/24#Прописываем адресс сети
lan_ip=192.168.1.1#Прописываем локальный ip шлюза
net_ip=x.x.x.x #Прописываем реальный ip шлюза
lan_ports=`cat /etc/iptables/lan_ports`#указываем путь к файлу списка открываемых портов для локалки
net_ports=`cat /etc/iptables/net_ports` #указываем путь к фафлу списка открываемых портов для всех
vip_ports=`cat /etc/iptables/vip_ports`#указываем путь к файлу списка открываемых портов для vip адресов
lan_dev=eth0#интерфейс для локалки
net_dev=ppp0#интерфейс для инэта
vip=`cat /etc/iptables/vip`#а вот и список vip адрессов
$ipt -t nat -F
$ipt -F
$ipt -t nat -X
$ipt -X
#create chains
$ipt -N lan_input
$ipt -N all_input
$ipt -N vip_input
#####################################################################
#####################################################################
$ipt -A INPUT -s localhost -j ACCEPT
$ipt -A INPUT -d localhost -j ACCEPT
$ipt -A INPUT -s $lan_ip -j ACCEPT
$ipt -A INPUT -s $net_ip -j ACCEPT
#####################################################################
$ipt -A OUTPUT -s localhost -j ACCEPT
$ipt -A OUTPUT -d localhost -j ACCEPT
$ipt -A OUTPUT -s $lan_ip -j ACCEPT
$ipt -A OUTPUT -d $lan_ip -j ACCEPT
$ipt -A OUTPUT -s $net_ip -j ACCEPT
$ipt -A OUTPUT -d $net_ip -j ACCEPT
#####################################################################

$ipt -A INPUT -s $lan -p icmp -j ACCEPT

#####################################################################
$ipt -A FORWARD -j ACCEPT
$ipt -A INPUT -i $lan_dev -j lan_input
for ip in $vip
{
$ipt -A INPUT -s $ip -j vip_input
}
$ipt -A INPUT -i $net_dev -j all_input
#chains for lan
echo stage 1
for port in $lan_ports
{
$ipt -A lan_input -s $lan -p tcp --dport $port -j ACCEPT
$ipt -A lan_input -s $lan -p udp --dport $port -j ACCEPT
}
$ipt -A lan_input -s $lan -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A lan_input -j REJECT --reject-with icmp-net-unreachable
$ipt -A lan_input -j DROP
#chains for net
echo stage 2
for port in $net_ports
{
$ipt -A all_input -d $net_ip -p tcp --dport $port -j ACCEPT
$ipt -A all_input -d $net_ip -p udp --dport $port -j ACCEPT
}
$ipt -A all_input -d $net_ip -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A all_input -j REJECT --reject-with icmp-net-unreachable
$ipt -A all_input -j DROP
#chain for vip
echo stage 3
for port in $vip_ports
{
$ipt -A vip_input -d $net_ip -p tcp --dport $port -j ACCEPT
$ipt -A vip_input -d $net_ip -p udp --dport $port -j ACCEPT
}
$ipt -A vip_input -d $net_ip -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A vip_input -j REJECT --reject-with icmp-net-unreachable
$ipt -A vip_input -j DROP
echo stage 4
echo 1 > /proc/sys/net/ipv4/ip_forward
$ipt -t nat -A POSTROUTING -s $lan -j SNAT --to-source $net_ip


пример файла lan_ports
cat lan_ports
80
110
143
30000:50000
итд
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 20.9.2019, 0:17    


BonAppetit - кулинарные авторские фоторецепты  ITO-info