Настройка iptables (нужна помощь) (Кто хорошо разбирается в iptables и его конфигурировании, напомощь!)

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

Модератор: SLEDopit

Аватара пользователя
ZEREX
Сообщения: 24
ОС: Linux OpenSUSE 11.1

Настройка iptables (нужна помощь)

Сообщение ZEREX »

Настраивал iptables на Linux CentOS 5.2

1) Начал с того что создал файл demo по пути /usr/local/iptables-restore/
2) Дописал в файл /etc/rc.d/rc.local echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables-restore /usr/local/iptables-restore/demo

3) После краткого курса прохождения обучения iptables создал для него конфиг (который demo)

eth0 - сетевушка смотрящая в интернет, eth1 - сетевушка смотрящая в локальную сеть, ppp0 - PPPoE подключение к интернету

Код: Выделить всё

# Generated by iptaues-save v1.3.3 on Wed May 24 19:07:19 2006
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:outtos - [0:0]
:pretos - [0:0]
-A PREROUTING -j pretos
-A OUTPUT -j outtos
-A outtos -p tcp -m tcp --dport 22 -j TOS --set-tos 0x10
-A outtos -p tcp -m tcp --sport 22 -j TOS --set-tos 0x10
-A outtos -p tcp -m tcp --dport 21 -j TOS --set-tos 0x10
-A outtos -p tcp -m tcp --sport 21 -j TOS --set-tos 0x10
-A outtos -p tcp -m tcp --sport 20 -j TOS --set-tos 0x08
-A outtos -p tcp -m tcp --dport 20 -j TOS --set-tos 0x08
-A pretos -p tcp -m tcp --dport 22 -j TOS --set-tos 0x10
-A pretos -p tcp -m tcp --sport 22 -j TOS --set-tos 0x10
-A pretos -p tcp -m tcp --dport 21 -j TOS --set-tos 0x10
-A pretos -p tcp -m tcp --sport 21 -j TOS --set-tos 0x10
-A pretos -p tcp -m tcp --sport 20 -j TOS --set-tos 0x08
-A pretos -p tcp -m tcp --dport 20 -j TOS --set-tos 0x08
COMMIT
# Generated by iptables-save v1.2.7a on Sat Apr 26 13:03:17 2003
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A POSTROUTING -o ppp0 -j MASQUERADE

COMMIT
# Completed on Sat Apr 26 13:03:17 2003
# Generated by iptables-save v1.2.7a on Sat Apr 26 13:03:17 2003
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -i ppp0 -p tcp -m multiport --dports 21,139,80,25,3389,4899,22 -j ACCEPT
-A INPUT -i ppp0 -p udp -m multiport --dports 27015,27016,27017,27018,27019 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-options
-A INPUT -i ppp0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable

-A FORWARD -s 168.192.0.0/24 -i eth1 -j ACCEPT
-A FORWARD -d 168.192.0.0/24 -o eth1 -j ACCEPT
-A FORWARD -s 168.192.0.0/24 -p udp -m udp --dport 53 -i eth1 -j ACCEPT
-A FORWARD -d 168.192.0.0/24 -p udp -m udp --sport 53 -o eth1 -j ACCEPT
-A FORWARD -o ppp0 -p tcp -j DROP
-A FORWARD -o eth1 -p tcp -j DROP

COMMIT
# Completed on Sat Apr 26 13:03:17 2003


Хочу добиться!!! ->
1) Закрыть все порты UDP & TCP, оставить лишь те которые мне нужны (т.е настроить Firewall)
2) Подключить NAT на определенные IP адреса, а конкретно 192.168.0.222, 192.168.0.127, 192.168.0.3
3) Настроить перенаправление портов из внешки на локальные ip адреса


Кто может объясните что я в коде прописал неправильно и дайте команды на решение того чего я хочу добиться) Заранее спасибо
Спасибо сказали:

sdukshis
Сообщения: 83
ОС: Linux

Re: Настройка iptables (нужна помощь)

Сообщение sdukshis »

Попробуйте вот по такому примеру. Если опишите ваши сетевые настройки подробней, то смогу написать более конкретный скрипт

Код: Выделить всё

#!/bin/sh

IP_LAN="192.168.0.1" #адрес в локальной сети
IP_EXT="192.168.1.1" #адрес во внешней сети

IF_LAN="eth0" # интерфейс в локальной сети
IF_EXT="eth1" # интерфейс во внешней сети

IPT="/usr/sbin/iptables" # Путь к iptables

HTTP_SERV="192.168.0.10" # IP внутреннего HTTP сервера

# включаем маршрутизацию в ядре
echo "1" > /proc/sys/net/ipv4/ip_forward

#сбрасываем все правила и уничтожаем нестандартные таблицы
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X

# Назначаем политики по умолчания
$IPT -P INPUT DROP
#$IPT -P OUTPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP

# Разрешаем интерфейс обратной петли
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

#Открываем порты на сервер
$IPT -A INPUT -i $IF_LAN -p tcp --dport 22 -j ACCEPT # SSH-доступ с любой машины из LAN

#Включаем NAT для конкретных адресов (здесь конечно лучше вставить цикл, но для простоты оставим так)
$IPT -t nat -A POSTROUTING -s 192.168.0.222 -o $IF_EXT -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 192.168.0.127 -o $IF_EXT -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 192.168.0.3   -o $IF_EXT -j MASQUERADE

#Не забываем, что для проброса портов на локальный HTTP, ему тоже нужен NAT
$IPT -t nat -A POSTROUTING -s $HTTP_SERV -o $IF_EXT -j MASQUERADE

#Настраиваем перенаправление портов
$IPT -t nat -A PREROUTING -i $IF_EXT -p tcp --dport 80 -j DNAT --to-destination $HTTP_SERV
Спасибо сказали:

Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Настройка iptables (нужна помощь)

Сообщение danger08 »

ZEREX писал(а):
03.02.2009 21:15
Настраивал iptables на Linux CentOS 5.2

1) Начал с того что создал файл demo по пути /usr/local/iptables-restore/
2) Дописал в файл /etc/rc.d/rc.local echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables-restore /usr/local/iptables-restore/demo

3) После краткого курса прохождения обучения iptables создал для него конфиг (который demo)

Рекомендую начать с азов, и выкинуть все, касательно TOS и mangle (он вам не нужен, насколько я понял по вашему вопросу).
В простейшем случае, получится наподобие:

Код:

# Generated by iptables-save v1.2.7a on Sat Apr 26 13:03:17 2003 *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A POSTROUTING -o ppp0 -j MASQUERADE COMMIT # Generated by iptables-save v1.2.7a on Sat Apr 26 13:03:17 2003 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp ! --syn -m state --state NEW -j DROP -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # здесь открываем порты # непонятно, зачем вам открывать порты 21,139 и т.д. на динамическом ppp0 интерфейсе multiport --dports 21,139,80,25,3389,4899,22 -j ACCEPT -A INPUT -i ppp0 -m state --state NEW -p udp -m multiport --dports 27015,27016,27017,27018,27019 -j ACCEPT -A INPUT -i ppp0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-options -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -s 168.192.0.0/24 -i eth1 -j ACCEPT -A FORWARD -d 168.192.0.0/24 -o eth1 -j ACCEPT COMMIT # Completed on Sat Apr 26 13:03:17 2003


Если нужен проброс портов в локалку, смотрите DNAT и не забудьте добавить для него правило в форвард.
Блогосайт - http://www.fateyev.com
Спасибо сказали:

Аватара пользователя
ZEREX
Сообщения: 24
ОС: Linux OpenSUSE 11.1

Re: Настройка iptables (нужна помощь)

Сообщение ZEREX »

Попробуйте вот по такому примеру. Если опишите ваши сетевые настройки подробней, то смогу написать более конкретный скрипт

1) Скажите , какие более подробные сетевые настройки нужно предоставить?
2) Куда весь этот код прописывать, в терминале?
Спасибо сказали:

Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Настройка iptables (нужна помощь)

Сообщение danger08 »

ZEREX писал(а):
04.02.2009 09:45
Попробуйте вот по такому примеру. Если опишите ваши сетевые настройки подробней, то смогу написать более конкретный скрипт

1) Скажите , какие более подробные сетевые настройки нужно предоставить?
2) Куда весь этот код прописывать, в терминале?

sdukshis выложил листинг bash-скрипта. Сохраните этот листинг в файл, дайте ему права на выполнение и запустите.
Блогосайт - http://www.fateyev.com
Спасибо сказали:

Аватара пользователя
ZEREX
Сообщения: 24
ОС: Linux OpenSUSE 11.1

Re: Настройка iptables (нужна помощь)

Сообщение ZEREX »

sdukshis выложил листинг bash-скрипта. Сохраните этот листинг в файл, дайте ему права на выполнение и запустите.

А если изменения внести, нужно снова файл изменять и запускать?
Спасибо сказали:

Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Настройка iptables (нужна помощь)

Сообщение danger08 »

ZEREX писал(а):
04.02.2009 10:01
sdukshis выложил листинг bash-скрипта. Сохраните этот листинг в файл, дайте ему права на выполнение и запустите.

А если изменения внести, нужно снова файл изменять и запускать?

Вносите изменения в скрипт, какие нужно.
Потом в терминале пишете: iptables -F (это удалит все имеющиеся правила iptables).
Запускаете ваш измененный скрипт, с новыми правилами.
Блогосайт - http://www.fateyev.com
Спасибо сказали:

Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Настройка iptables (нужна помощь)

Сообщение danger08 »

А вообще, если у вас CentOS, то проще будет воспользоваться фирменным средством RedHat-семейства: /etc/sysconfig/iptables (если такого файла нет, создайте). Внесите туда список правил, которые считаете нужным, например по образцу в моем посте [3].

После этого нужно будет включить iptables через chkconfig (чтобы эти правила загружались автоматически при загрузке системы).
Для изменения правил iptables просто редактируете этот файл и перегружаете iptables ( /etc/init.d/iptables restart в терминале ).
Блогосайт - http://www.fateyev.com
Спасибо сказали:

Аватара пользователя
BigKAA
Сообщения: 292

Re: Настройка iptables (нужна помощь)

Сообщение BigKAA »

Почитай этот мануал, там есть на счет iptables. Он конечно старенький, но для понимания что и зачем. я думаю хватит. Аттансьён - файл 5 метров.
Удачи, Артур Крюков
--
CentOS 5.x | Fedora Core
Home милый wikihome и мой блог
Спасибо сказали:

Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Настройка iptables (нужна помощь)

Сообщение danger08 »

Вообще, IPTables Tutorial от Андреассона и документация с сайта RedHat - достаточный минимум (в первом теория, во втором - особенности реализации, если так можно выразиться).
Блогосайт - http://www.fateyev.com
Спасибо сказали:

sdukshis
Сообщения: 83
ОС: Linux

Re: Настройка iptables (нужна помощь)

Сообщение sdukshis »

ZEREX писал(а):
04.02.2009 10:01
sdukshis выложил листинг bash-скрипта. Сохраните этот листинг в файл, дайте ему права на выполнение и запустите.

А если изменения внести, нужно снова файл изменять и запускать?


Да, конечно нужно, причём этот скрипт нужно запускать каждый раз при загрузке системы.

Что-бы автоматизировать процесс сначала выполните iptables-save.
На выходе получите Листинг примерно как у Вас. Что с ним делать дальше вы кажется уже разобрались.

Только не забудьте разрешить маршрутизацию установив в /etc/sysctl.conf
sys.net.ipv4.ip_forward=1

Для вашей конфигурации сети измените
IF_LAN = eth1
IF_EXT=ppp0

IP адреса интерфейсов вам похоже не нужны
Спасибо сказали:

Аватара пользователя
ZEREX
Сообщения: 24
ОС: Linux OpenSUSE 11.1

Re: Настройка iptables (нужна помощь)

Сообщение ZEREX »

После всяких раздумываний составил скрипт ->

Код: Выделить всё

#!/bin/sh

IP_LAN="192.168.0.188" #адрес в локальной сети
IP_EXT="192.168.1.188" #адрес во внешней сети

IF_LAN="eth1" # интерфейс в локальной сети
IF_EXT="ppp0" # интерфейс во внешней сети

IPT="iptables" # Путь к iptables

HTTP_SERV="192.168.0.222" # IP внутреннего HTTP сервера

# включаем маршрутизацию в ядре
echo "1" > /proc/sys/net/ipv4/ip_forward

#сбрасываем все правила и уничтожаем нестандартные таблицы
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X

# Назначаем политики по умолчания
$IPT -P INPUT DROP
#$IPT -P OUTPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP

# Разрешаем интерфейс обратной петли
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

#Открываем порты на сервер
$IPT -A INPUT -i $IF_EXT -p tcp -m multiport --dports 22,25,3389,4899  -j ACCEPT # Открываю порты разрешенные из внешки
$IPT -A INPUT -i $IP_LAN -p tcp -m multiport --dports 22,25,3389,4899  -j ACCEPT # Открываю порты разрешенные из Локалки

#Включаем NAT для конкретных адресов (здесь конечно лучше вставить цикл, но для простоты оставим так)
$IPT -t nat -A POSTROUTING -s 192.168.0.127 -o $IF_EXT -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 192.168.0.3   -o $IF_EXT -j MASQUERADE

#Не забываем, что для проброса портов на локальный HTTP, ему тоже нужен NAT
$IPT -t nat -A POSTROUTING -s $HTTP_SERV -o $IF_EXT -j MASQUERADE

#Настраиваем перенаправление портов
$IPT -t nat -A PREROUTING -i $IF_EXT -p tcp -m multiport --dport 80,3389,4899 -j DNAT --to-destination $HTTP_SERV
iptables-save


Вроде должен работатЬ?
1) IPT="/usr/sbin/iptables" # Путь к iptables (Iptables нету по этому пути)

2)Разрешил маршрутизацию установив в /etc/sysctl.conf
sys.net.ipv4.ip_forward=1

3) А как собственно запускать подобного рода скрипт? через что? какой командой, я в линуксе 3 день)
Спасибо сказали:

Аватара пользователя
destr
Сообщения: 128
ОС: Debian

Re: Настройка iptables (нужна помощь)

Сообщение destr »

[offtop]
Блин, как бы уже не первая такая тема, "Я в линуксе n-ый день (n < 15)"
Всё таки я выскажусь. Вы (это не только к Вам относится) хотя бы почитайте мануалы, пару дней чтобы понимать, что и как работает в данном случае и для того, чтобы сформулировать вопрос грамотно.
Вот если бы вы хотя бы осилили ссылку которую дал BigKAA, уже бы другие вопросы были.
Вы третий день в линуксе, уже лезетее настраивать iptables прочитав какое-то краткое руководство. Углубитесь в тему...
[offtop]
Спасибо сказали:

vitalys
Сообщения: 1
ОС: gentoo 2007.0

Re: Настройка iptables (нужна помощь)

Сообщение vitalys »

Вопрос по iptables tutorial:
#
# allowed chain
#

$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

1)Настолько здесь нужен DROP, если политика по умолчанию DROP

2) -m state --state NEW настолько обязательно, или --syn уже само по себе достаточно?
(В tutorial -m state --state NEW практически нет, зато в других примерах iptables во всех цепочках)
Спасибо сказали: