Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Firewall *nix: iptables, ipfw, pf etc...

Автор: Alukardd
Дата сообщения: 06.03.2012 23:01
Вопрос

5dB
От того, что вы с одного сервера выполните NAT на другой, на втором сервер дополнительных интерфейсов не появится...
Держите сервера как и раньше на разных портах и не парьтесь, а вот юзеры к ним могут обращаться и по разным ip, это не связанные вещи.

Для iptables это выглядит как-то так
iptables -t nat -A PREROUTING -d ${second_ip} --dport ${cs_usual_port} -j DNAT --to-destination ${cs_server_ip}:${cs_unusual_port}
если первый сервер не является шлюзом по умолчанию для второго, то тогда еще надо выполнить SNAT:
iptables -t nat -A POSTROUTING -d ${cs_server_net}/${cs_server_net_prefix} -o ${internal_interface} -j SNAT --to-source ${first_server_internal_ip}

все переменные ${} стоит заменить на ваши данные.
Автор: 5dB
Дата сообщения: 07.03.2012 00:41

Цитата:
От того, что вы с одного сервера выполните NAT на другой, на втором сервер дополнительных интерфейсов не появится...

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


Цитата:
Для iptables это выглядит как-то так
iptables -t nat -A PREROUTING -d ${second_ip} --dport ${cs_usual_port} -j DNAT --to-destination ${cs_server_ip}:${cs_unusual_port}
если первый сервер не является шлюзом по умолчанию для второго, то тогда еще надо выполнить SNAT:
iptables -t nat -A POSTROUTING -d ${cs_server_net}/${cs_server_net_prefix} -o ${internal_interface} -j SNAT --to-source ${first_server_internal_ip}

все переменные ${} стоит заменить на ваши данные.

это не совсем мне подходит...
Автор: Alukardd
Дата сообщения: 07.03.2012 09:43
5dB
Цитата:
это не совсем мне подходит...
назовите хоть одну причину по которой вас эта схема не устраивает?

Если хотите что бы вам предложили варианты, то тогда описывайте нормально исходные данные. Где и какие диапазоны у вас имеются. И как между собой связаны сервера.
Автор: 5dB
Дата сообщения: 07.03.2012 13:24
Сервера связанны через интернет, точнее можно сказать они через интернет не связанны, а просто ip проброшен через nat и все.
IPы в разброс, последовательных нету.
Автор: Alukardd
Дата сообщения: 07.03.2012 14:18
5dB
Цитата:
а просто ip проброшен через nat и все.
что ЭТО? Я вас попросил описать исходные данные, по тому, что я сейчас вижу, я понятия не имею какими ip какие сервера могут пользоваться и откуда они у них взялись и что с ними делать. (реальные можете не приводить если чего-то боитесь, достаточно условностей или измените первый октет, например)
Можете следовать рекомендациям из моего предыдущего поста. Или дать нормальное описание ситуации (Клуб Телепатов находится рядом...)
Автор: Alukardd
Дата сообщения: 15.03.2012 00:00
Вопрос
Small_green_yojik
на сколько я понял frox это ftp proxy... Не совсем понимаю его назначение. Ну да ладно, он как и любой ftp сервер должен использовать в пасивном режиме 2 порта 20 - для данных, 21 - для команд. Так что вам нужно просто разрешить эти порты для входящих соединений, надо дописать следующие строки примерно туда же, где у вас иде разрешение VPN и DHCP:
# allow FTP ports
iptables -A INPUT -p tcp -m multiport --dports 20,21 -j ACCEPT


Добавлено:
А так же [more=эти]#Инет на сервере (в т.ч. через прокси)
iptables -A INPUT -d $INETIP -p TCP --dport $UNPRIVPORTS -m state --state ESTABLISHED,RELATED -j ACCEPT

#DNS для сервера
iptables -A INPUT -p UDP -s $DNS_SERVER -m state --state ESTABLISHED --sport 53 -j ACCEPT
iptables -A INPUT -p TCP -s $DNS_SERVER --sport 53 --dport $UNPRIVPORTS -m state --state ESTABLISHED,RELATED -j ACCEPT[/more] строки стоит удалить (можете закоментировать), и вместо них дописать самым первым правилом для цепочки INPUT следующее:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Добавлено:
Совсем забыл... Надо еще разрешить в правилах конект к доп диапазону портов, для пассивного режима ftp сервера. По умолчанию это (49152-65534)
iptables -A INPUT -p tcp -m multiport --dports 49152:65534 -j ACCEPT
А вообще обычно в конкретном сервере можно настроить (по крайней мере я у себя в vsftpd настроил другой диапазон)
Автор: Small_green_yojik
Дата сообщения: 15.03.2012 09:11
Alukardd
Спасибо ОГРОМНОЕ!
Автор: AkeHayc
Дата сообщения: 19.03.2012 19:51
добрый вечер!
.Как на шлюзе правильно давать доступ компам локалки, чтобы работали такие проги как банк клиент, почта, аська, контра стоайк
Автор: Alukardd
Дата сообщения: 20.03.2012 00:45
AkeHayc
Вы бы хоть сказали какой firewall настраиваем...
Эм... А что в этих программах такого необычного? Тем более если всё это клиенты и доступ другим программам вы закрыть не стремитесь, то собственно вообще беспокоиться не о чем.
Автор: AkeHayc
Дата сообщения: 20.03.2012 18:19
iptables=)

Добавлено:
Alukardd
# 5190 ICQ, 5222 QIP
iptables -A FORWARD -d 192.168.2.0/24 -p tcp -m multiport --sport 5190,5222 -j ACCEPT

Я правильно делаю, разрешая локалке аську?
Автор: Alukardd
Дата сообщения: 20.03.2012 18:58
AkeHayc
Видимо, стоит считать что машина с iptables у вас чистая и правилами не замороченная. Так же, видимо, стоит считать, что остальные сервисы стоит запретить.

[more=Вот накидал для вас скрипт]#!/bin/bash
#
# configure firewall
#

# allow transit traffic
echo "1" > /proc/sys/net/ipv4/ip_forward

# internal interface
LOCAL="eth0"
# external interface
INET="eth1"

# internal ip
LOCAL_IP="192.168.0.0/24"
# your external ip
INET_IP="1.2.3.4"

# allow next services
# DNS, mail, web (for bank-client), ICQ, CS 1.6
ALLOW_PORTS_TCP="53"
ALLOW_PORTS_TCP+=", 25, 110, 143, 465, 993, 995"
ALLOW_PORTS_TCP+=", 80, 443"
ALLOW_PORTS_TCP+=", 5190"
ALLOW_PORTS_TCP+=", 27010, 27015"

ALLOW_PORTS_UDP="53"

# clear all rules
iptables -F
iptables -t mangle -F
iptables -t nat -F

# define standard actios
iptables -P INPUT DROP
iptables -P FORWARD DROP

# allow to forward traffic to permited services
iptables -A FORWARD -i $LOCAL -o $INET -s $LOCAL_IP -p tcp -m multitport --dports $ALLOW_PORTS_TCP -j ACCEPT
iptables -A FORWARD -i $LOCAL -o $INET -s $LOCAL_IP -p udp -m multitport --dports $ALLOW_PORTS_UDP -j ACCEPT
# allow to forward traffic from permited services back to client
iptables -A FORWARD -i $INET -o $LOCAL -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# do SNAT
iptables -t nat -A POSTROUTING -s $LOCAL_IP -o $INET -j SNAT --to-source $INET_IP[/more]. Я тут не использовал ни чего такого чего не было бы на wikipedia. Я не создавал правила для выхода в инет непосредственно с этой машины. Правила не проверял, т.к. писал всё это прямо в ответ из головы.

Прочтите ссылки из шапки темы, они весьма полезны и очень доходчиво расписаны.

Добавлено:

Цитата:
Я правильно делаю, разрешая локалке аську?
это вопрос каждой отдельной организации и решается администрацией, а не администраторами.
Цитата:
iptables -A FORWARD -d 192.168.2.0/24 -p tcp -m multiport --sport 5190,5222 -j ACCEPT
почему sports-то, когда dports!!! Это порты серверов, а не клиентов.
Цитата:
# 5190 ICQ, 5222 QIP
в мой скрипт можете дописать порт QIP'а...
Автор: AkeHayc
Дата сообщения: 20.03.2012 19:16
Alukardd
Вот полный файлик:

Цитата:

#!/bin/bash
# chkconfig: 345 30 99
# description: Starts and stops iptables based firewall

# Очистка всех таблиц и цепочек iptables
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X


# Политика по умолчанию, запретить все что не разрешено
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Разрешаем обращение к lo интерфейсу
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT

# Пропускать уже инициорванные, а также их дочерние
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Пропускать новые, иницированные, а также их дочерние
iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Разрешить форвардинг для новых, иницированных, а также их дочерних
iptables -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Разрешаем пинг
iptables -A INPUT -i eth1 -p ICMP -j ACCEPT
iptables -A OUTPUT -o eth1 -p ICMP -j ACCEPT

# Разрешаем обращение из локальной сети следующих сервисов Почта, ICQ, банк клиент, налоговая программа SONO, FTP

# Внешние почтовые сервера
iptables -A FORWARD -d 192.168.2.0/24 -p tcp -m multiport --sport 110,25,995,465 -j ACCEPT

# Разрешаем ICQ
# Порт 5190 ICQ и порт 5222 QIP account
iptables -A FORWARD -d 192.168.2.0/24 -p tcp -m multiport --sport 5190,5222 -j ACCEPT

# Банк клиент Turan Alem
iptables -A FORWARD -d 192.168.2.0/24 -p tcp -m multiport --sport 1066, 1239, 1240 -j ACCEPT

# SONO
iptables -A FORWARD -d 192.168.2.0/24 -p tcp -m multiport --sport 2809, 443, 9100-9110, 9401-9403б 9900 -j ACCEPT

# Настройка NAT
# 192.168.1.10 - IP адрес карты смотрящей в Интернет
iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -j SNAT --to-source 111.111.111.111


Добавлено:
Alukardd
Спасибо за Ваш скрипт!
Автор: Alukardd
Дата сообщения: 20.03.2012 19:31
AkeHayc
Ваш скрипт надо переписывать - давайте вы сделаете это сами, я вам только подскажу. Правила применяются по порядку. А вы разрешили forward всего, а после пытаетесь разрешить конкретные порты. К тому разрешать надо подключения ОТ клиента к СЕРВЕРУ, а вы делаете наоборот. Посмотрите как устроены мои правила для FORWARD - там идет --source локалка на dports сервера.

Так же я не понял - у вас eth1 это внутренний интерфейс?

В правиле SNAT лучше указывать исходящий интерфейс - -o $INET.
Ну маску тоже вообще приятнее видеть в виде префикса, а не развёрнутой десятичной форме, как у вас используется выше.

p.s. да, про loopback правило я забыл. А icmp вам не особо и нужен, но можно и оставить.
Автор: AkeHayc
Дата сообщения: 21.03.2012 08:03
У меня eth0 внешка, eth1 локалка.
Спасмбо за замечания.
Автор: Alukardd
Дата сообщения: 25.03.2012 22:30
Вопрос
shupike
Просто удалите правило POSTROUTING оно не требуется если для 1.7 машины данный роутер является шлюзом по умолчанию. И к тому же вы правило написали не правильно - --to-source указывается ip локального интерфейса.
Автор: shupike
Дата сообщения: 25.03.2012 23:12

Цитата:
Просто удалите правило POSTROUTING оно не требуется если для 1.7 машины данный роутер является шлюзом по умолчанию. И к тому же вы правило написали не правильно - --to-source указывается ip локального интерфейса.

А 2 правила с FORWARD оставить?
Автор: Alukardd
Дата сообщения: 25.03.2012 23:33
shupike
Разумеется, если только они у вас не дублируют правила для всей подсети... Хотя в таком случае они просто бесполезны, но ни как не вредны.
Автор: shupike
Дата сообщения: 26.03.2012 00:36

Цитата:
Разумеется, если только они у вас не дублируют правила для всей подсети... Хотя в таком случае они просто бесполезны, но ни как не вредны.

Вы знаете, не получается :-( Сделал iptables-save > iptables_config.fw:

# Generated by iptables-save v1.4.8 on Sun Mar 25 20:27:11 2012
*mangle
:PREROUTING ACCEPT [2151:198011]
:INPUT ACCEPT [2132:195487]
:FORWARD ACCEPT [19:2524]
:OUTPUT ACCEPT [1877:291673]
:POSTROUTING ACCEPT [1885:293517]
COMMIT
# Completed on Sun Mar 25 20:27:11 2012
# Generated by iptables-save v1.4.8 on Sun Mar 25 20:27:11 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/8 ! -i lo -j LOG
-A INPUT -s 127.0.0.0/8 ! -i lo -j DROP
-A INPUT -d 255.255.255.255/32 -i eth0 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
-A INPUT -d 224.0.0.0/4 -i eth0 ! -p tcp -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth1 -j LOG
-A INPUT -s 192.168.1.0/24 -i eth1 -j DROP
-A INPUT -d 255.255.255.255/32 -i eth1 -j ACCEPT
-A INPUT -d 195.58.***.***/32 -i eth1 -j ACCEPT //real IP
-A INPUT -d 195.58.***.255/32 -i eth1 -j ACCEPT //broadcast IP
-A INPUT -j LOG
-A INPUT -j DROP
-A FORWARD -s 192.168.1.0/24 -i eth0 -o eth1 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.1.0/24 -o eth1 -j LOG
-A FORWARD -d 192.168.1.0/24 -o eth1 -j DROP
-A FORWARD -j LOG
-A FORWARD -j DROP
-A FORWARD -s 192.168.1.7/32 -j ACCEPT
-A FORWARD -d 192.168.1.7/32 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 255.255.255.255/32 -o eth0 -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -o eth0 -j ACCEPT
-A OUTPUT -d 224.0.0.0/4 -o eth0 ! -p tcp -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -o eth1 -j LOG
-A OUTPUT -d 192.168.1.0/24 -o eth1 -j DROP
-A OUTPUT -d 255.255.255.255/32 -o eth1 -j ACCEPT
-A OUTPUT -s 195.58.***.***/32 -o eth1 -j ACCEPT //real IP
-A OUTPUT -s 195.58.***.255/32 -o eth1 -j ACCEPT //broadcast IP
-A OUTPUT -j LOG
-A OUTPUT -j DROP
COMMIT
# Completed on Sun Mar 25 20:27:11 2012
# Generated by iptables-save v1.4.8 on Sun Mar 25 20:27:11 2012
*nat
:PREROUTING ACCEPT [22:2540]
:POSTROUTING ACCEPT [7:490]
:OUTPUT ACCEPT [7:490]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 3348 -j DNAT --to-destination 192.168.1.7:3348
-A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
COMMIT
# Completed on Sun Mar 25 20:27:11 2012

Забыл расшифровать - eth0=192.168.1.21 (локалка), eth1=195.58.***.*** (реальный IP).
Автор: Ruza
Дата сообщения: 26.03.2012 09:26
shupike

Цитата:
-A FORWARD -j LOG
-A FORWARD -j DROP
-A FORWARD -s 192.168.1.7/32 -j ACCEPT
-A FORWARD -d 192.168.1.7/32 -j ACCEPT

Я так подозреваю что после DROP уже пофик что ты там разрешаешь. Попробуй переместить свои 2 строки с ACCEPT'ом выше чем правила DROP.

Да и не встретил ниразу упоминания об
Цитата:
echo "1" > /proc/sys/net/ipv4/ip_forward
оно есть?


Цитата:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:ОUTPUT DROP [0:0]

После DROP правил по умолчанию для таблицы фильтр, нижеследующие записи даже вредны в данном контексте...

Цитата:
-A INPUT -j DROP


Цитата:
-A FORWARD -j DROP


Цитата:
-A OUTPUT -j DROP


Если у тебя постоянный IP то лучше SNAT использовать (ИМХО)

Цитата:
-A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

Автор: shupike
Дата сообщения: 26.03.2012 11:10

Цитата:
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модераторуshupike

Цитата:
-A FORWARD -j LOG
-A FORWARD -j DROP
-A FORWARD -s 192.168.1.7/32 -j ACCEPT
-A FORWARD -d 192.168.1.7/32 -j ACCEPT

Я так подозреваю что после DROP уже пофик что ты там разрешаешь. Попробуй переместить свои 2 строки с ACCEPT'ом выше чем правила DROP.

Да и не встретил ниразу упоминания об
Цитата:
echo "1" > /proc/sys/net/ipv4/ip_forward
оно есть?


Цитата:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:ОUTPUT DROP [0:0]

После DROP правил по умолчанию для таблицы фильтр, нижеследующие записи даже вредны в данном контексте...

Цитата:
-A INPUT -j DROP


Цитата:
-A FORWARD -j DROP


Цитата:
-A OUTPUT -j DROP


Если у тебя постоянный IP то лучше SNAT использовать (ИМХО)


Ох, чувствую, придется покурить мануалы Думал, наскоком взять iptables... А скажите-ка такую вещь - вот в ipfw на фрюшке - там было понятно, где лежит скрипт с правилами и как его активировать при загрузке ОС. Где здесь аналог скрипта? То есть - откуда Debian читает вот эти правила по умолчанию? Я же их не писал Разобрался пока только с iptables-save и iptables-restore, но не каждый же раз туда-сюда конфигурацию дергать?
Автор: Ruza
Дата сообщения: 26.03.2012 11:33
У меня нет Debian'а, а есть Ubunu дома на медиасервере, там надо пакет для загрузки правил автоматом:

Цитата:
iptables-persistent - boot-time loader for iptables rules

По идее оно и дебиане есть...

Либо просто в rc.local написать команду
iptables-restore < /path/to/file с правилами

Или в /etc/network/interfaces для внешней сетевой карты

pre-up iptables-restore < /path/to/file с правилами
post-down iptables-save > /path/to/file с правилами
Автор: Alukardd
Дата сообщения: 26.03.2012 14:46

Цитата:
По идее оно и дебиане есть...
есть... На самом деле пакет из себя ни чего не представляет... Создаёт скрипт в init.d, который читает единственный файл /etc/iptables/rules (читает командой iptables-restore <). Сохраняешь в этот файл правила сам.
shupike
Цитата:
чувствую, придется покурить мануалы
ссылок из шапки данной темы, imho, более чем достаточно.
Автор: Ruza
Дата сообщения: 26.03.2012 21:36

Цитата:
Создаёт скрипт в init.d, который читает единственный файл /etc/iptables/rules

Кстати да, я его ещё руками исправлял... Чем то он мне не понравился
Автор: Alukardd
Дата сообщения: 26.03.2012 22:19
Ruza
Ну что на создавали, то и правили Этот пакет сам ни чего не умеет...
Автор: Ruza
Дата сообщения: 27.03.2012 08:19
Alukardd

Цитата:
Ну что на создавали, то и правили

Не не не, пришлось сам startup переписывать...
Автор: AkeHayc
Дата сообщения: 28.03.2012 07:10
Alukardd
Какой шейпер посоветуете на основе iptables/tc
СпасибО!
Автор: urodliv
Дата сообщения: 28.03.2012 10:02

Цитата:
Какой шейпер посоветуете на основе iptables/tc

Проще всего и достаточно функционально НТВ. Документации в сети море, правда сплошная перепечатка LARTC или его перевода.
И вот ещё что. Alukardd, прошу прощения, что отбираю ваш хлеб
Автор: Alukardd
Дата сообщения: 28.03.2012 13:24
AkeHayc
Про дисциплины обработки очередей вот тут хорошо изложено. А так я считаю что htb самое оно.
p.s. щас в шапку ссылку закину.

urodliv
Цитата:
Alukardd, прошу прощения, что отбираю ваш хлеб
Всё, ухожу с форума!
Автор: shupike
Дата сообщения: 28.03.2012 15:24
Коллеги, выручайте Копался в цепочках, внезапно осознал, что не вижу правила, разрешающего 22 порт (SSH) из внешнего мира. Смотрю таблицу filter:

iptables -t filter -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
LOG all -- loopback/8 anywhere LOG level warning
DROP all -- loopback/8 anywhere
ACCEPT all -- anywhere 255.255.255.255
ACCEPT all -- 192.168.1.0/24 anywhere
ACCEPT !tcp -- anywhere base-address.mcast.net/4
LOG all -- 192.168.1.0/24 anywhere LOG level warning
DROP all -- 192.168.1.0/24 anywhere
ACCEPT all -- anywhere 255.255.255.255
ACCEPT all -- anywhere mail.benbrook-voip.net
ACCEPT all -- anywhere 195.58.***.255
LOG all -- anywhere anywhere LOG level warning
DROP all -- anywhere anywhere

Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 192.168.1.0/24 anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOG all -- anywhere 192.168.1.0/24 LOG level warning
DROP all -- anywhere 192.168.1.0/24
LOG all -- anywhere anywhere LOG level warning
DROP all -- anywhere anywhere

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere 255.255.255.255
ACCEPT all -- anywhere 192.168.1.0/24
ACCEPT !tcp -- anywhere base-address.mcast.net/4
LOG all -- anywhere 192.168.1.0/24 LOG level warning
DROP all -- anywhere 192.168.1.0/24
ACCEPT all -- anywhere 255.255.255.255
ACCEPT all -- mail.benbrook-voip.net anywhere
ACCEPT all -- 195.58.***.255 anywhere
LOG all -- anywhere anywhere LOG level warning
DROP all -- anywhere anywhere

Где тут порт 22? Он точно работает, потому как захожу из внешнего мира и если выполнить iptables -F - связь с сервером исчезает
Автор: urodliv
Дата сообщения: 28.03.2012 17:55
shupike
Вы бы лучше вывод команды iptables -t filter -nvL выложили

Страницы: 123456789101112131415

Предыдущая тема: Как подключиться по RDP к 2000 серверу - к локальной сессии?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.