LINUX.ORG.RU

Yet another ... настройка iptables

 , , ,


0

1

Добрый день.

Купил железо, хочу его использовать в качестве домашнего сервера и роутера, вещающего dhcp, dns и собственно раздача интернета в локалку, не считая использования в качестве файлового хранилища, СУБД и веб-сервера. Сам не силен в вопросах связанных с iptables. Перерыл множество howto по вопросам настройки ip-tables так и не нашел для себя ответа на вопросы:

  • Стоит ли полностью резать ICMP?
  • Что дописать для того, чтобы IPTV работало?
  • Если мне захочется, например пробросить порт для mysql наружу, причем чтобы извне он был виден как site.ru:31567, что для этого надо сделать?
  • Также не совсем понятна ситуация с DC++, torrent'ами и играми, которые научились открывать произвольные порты и устанавливать соединение на них (инициация на открытие из LAN) - то что для этого необходимо прописать в конфиге iptables?
  • может я что-то упустил из разряда необходимых функций, например: обнаружение сканирования и DDOS и при выявлении - reject / ban по ip на 10 минут / перенаправление (закольцовка) на источник.

Говоря простым русским языком, хочется послушать и посмотреть на боевые конфиги для iptables, учитывающие подобные особенности с пояснениями.

Наглядевшись на «портянки» (а по-другому это не назвешь) конфигов iptables напрашивается вопрос: как лучше структурировать конфиг, чтобы не запутаться в нем потом?

Если у уважаемого ALL, ВНЕЗАПНО появится желание ответить на вопросы в стиле «для чайников», то только welcome!

P.S. Не маловероятно, что следующий вопрос больше имеет отношение к конфигурации web-сервера, но: допустим я приобрел второе доменное имя site2.ru и я хочу, чтобы по site.ru показывался один сайт, а по site2.ru - соответственно другой - в какую сторону смотреть как это реализовать?


P.S. Не маловероятно, что следующий вопрос больше имеет отношение к конфигурации web-сервера, но: допустим я приобрел второе доменное имя site2.ru и я хочу, чтобы по site.ru показывался один сайт, а по site2.ru - соответственно другой - в какую сторону смотреть как это реализовать?

Оба доменных имени должны смотреть на ваш внешний IP, а в apache нужно настроить два VirtualHost'а (man httpd.conf)

pianolender ★★★
()

доступ из-вне нужен не только для web-сервера, но и для организации VPN соединения.

irq
() автор топика

может я что-то упустил из разряда необходимых функций, например: обнаружение сканирования и DDOS и при выявлении - reject / ban по ip на 10 минут / перенаправление (закольцовка) на источник.

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

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

  • машина для доступа извне
  • файлопомойка/торрентокачалка
  • роутеры
  • хосты под сайты
  • сборочные среды и прочая фигня

Что за гипервизор - у меня esxi, хотя точно так же это может быть и xen, и kvm, и virtualbox, и openvz (вот только в нем офтопик не погоняешь, ну да не всем надо).

pianolender ★★★
()

Стоит ли полностью резать ICMP?

Себе же хуже сделаете, когда будете снаружи пингать свои машины. Главное - спроектировать топологию и маршрутизацию между машинами правильно, тогда можно не запариваться так сильно о безопастности того, что наружу торчит.

pianolender ★★★
()

Если мне захочется, например пробросить порт для mysql наружу, причем чтобы извне он был виден как site.ru:31567, что для этого надо сделать?

iptables -t nat -A PREROUTING -p tcp --dport 31567 -j DNAT --to-destination <ip>:<port>

pianolender ★★★
()

iptv - это, вроде

-A INPUT -d 224.0.0.0/4 -j ACCEPT
-A FORWARD -d 224.0.0.0/4 -j ACCEPT

самооткрывающиеся порты - upnp

ii343hbka ★★★
()
Последнее исправление: ii343hbka (всего исправлений: 1)
Ответ на: комментарий от pianolender

Оба доменных имени должны смотреть на ваш внешний IP, а в apache нужно настроить два VirtualHost'а (man httpd.conf)

вы имеете в виду, что в поле «listen» прописать не ip-адрес, а доменное имя с портом?

irq
() автор топика
Ответ на: комментарий от pianolender

должен быть гипервизор с виртуалками

Согласен, но железо не настолько мощное. Получилось согласовать (с женой) весьма ограниченный бюджет. Да и цель была mini-itx с минимальным потреблением КВт*ч и уровнем шума.

irq
() автор топика
Ответ на: комментарий от pianolender

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

Плюсую

dvrts ★★★
()
Ответ на: комментарий от irq

Согласен, но железо не настолько мощное. Получилось согласовать (с женой) весьма ограниченный бюджет. Да и цель была mini-itx с минимальным потреблением КВт*ч и уровнем шума.

Покажи свое железо

dvrts ★★★
()
Ответ на: комментарий от irq

Есть секция конфига <VirtualHost> - нужно смотреть документацию, я наизусть не помню, как там что, давно этим не занимался.

pianolender ★★★
()
Ответ на: комментарий от pianolender

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

Я пока вижу что извне по-умолчанию доступны 80 порт и VPN. По подключению к сети через VPN доступны SSH и другие сервисы, висящие и слушающие на 192.168.0.*.

Скажите, чем такой вариант нетруъ? (возможно, я чего-то не знаю)

irq
() автор топика
Ответ на: комментарий от dvrts

Виртуализация начиная с i3 должна уже быть по идее, но если будет много машин - есть вероятность упереться в производительность ввода-вывода. Наверное, в openvz такая вероятность меньше, но ненамного. Да и в любом случае, если не драть диск на две части копированием чего-либо из одной виртуалки в другую, должно все неплохо быть.

pianolender ★★★
()
Ответ на: комментарий от dvrts

Gigabyte GA-C847N + 4ГБ ОЗУ система стоит на CompactFlash 600x, грузится быстро. Данные отдельно на WD green. Корпус, конечно, редкостное Г... даже показывать не буду, но в нашей глуши ничего другого не было.

irq
() автор топика
Ответ на: комментарий от irq

Gigabyte GA-C847N + 4ГБ ОЗУ система стоит на CompactFlash 600x, грузится быстро. Данные отдельно на WD green. Корпус, конечно, редкостное Г... даже показывать не буду, но в нашей глуши ничего другого не было.

64-х битное? Если да, то vmware esx должен встать. Не супер, но уже что-то.

Если нет - man OpenVZ (только линуксовые тачки будут).

dvrts ★★★
()
Ответ на: комментарий от pianolender

Внезапно, celeron 847. И правда, виртуализацию не погоняешь особо..

pianolender ★★★
()
Ответ на: комментарий от pianolender

у меня esxi

А у меня к тебе вопрос - чем ты ею управляешь? У меня пока временное решение - оффтопик под виртуалбокс с установленным клиентом. Но хотелось бы нативно из онтопика рулить.

dvrts ★★★
()
Ответ на: комментарий от dvrts

Нативно - никак, бывает веб-клиент, но он, кажется, только с vcenter работает. У меня прямо под esxi машина с офтопиком, в ней клиент. Когда эту виртуалку создавал - клиент был на компе у жены. Теперь сервак почти автономный.

pianolender ★★★
()
Ответ на: комментарий от pianolender

Виртуализация начиная с i3 должна уже быть по идее

Хардварная. Но я на своих старых машинах с Celeron 430 гоняю OpenVZ, а с Core 2 Duo - ESXi. Для сурового энтерпрайза не подойдет, но для дома - в самый раз.

dvrts ★★★
()

Господа, так все-таки, для DC++ и различных софтин порты вручную придется прописывать, или есть какой-то универсальный способ?

irq
() автор топика
Ответ на: комментарий от irq

Если все policies будут ACCEPT, то все само будет работать, в том числе все, кому не лень, смогут зайти в гости по ssh. Если нужно все зарезать, а потом что-то приоткрыть - в любом случае придется создавать правила руками или каким-то инструментом построения правил. Тут люди рассказывают про какой-то fvbuilder, но я его не тыкал, пишу правила руками.

pianolender ★★★
()
Ответ на: комментарий от pianolender

Политики все открыть и все закрыть - не интересны. Хочется не совсем традиционного использования.

Роутеры же каким-то чудесным образом умеют открывать порты для WAN, если инициация на их открытие идет из LAN. Вот сейчас, я пишу на ноутбуке, через роутер, в фоне у меня качается _что-то_, и висят несколько приложений на нестандартных портах. При этом, я уверен, что подключиться на эти порты ко мне возможно только сейчас. Возможно я ошибаюсь, поправьте меня если это так, но все входящие на эти порты перенаправляются автоматически на ноутбук, причем я не прописывал явным образом «проброс порта» (хотя прошивка роутера это позволяет). Не уверен, что все соединения upnp.

irq
() автор топика
Ответ на: комментарий от irq

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

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Когда твое приложение с srcaddr1:srcport1 отправляет трафик на dstaddr1:dstport1, и по правилам ната происходит маскарадинг, после чего в пакете srcaddr1:srcaddr1 меняется на srcaddr2:srcport2, то в таблице известных соединений появляется новая запись. Там хранятся, как минимум, src и dst адреса и порты до и после ната. Поэтому ядро будет знать, что делать с пакетом, пришедшим с dstaddr1:dstport1 на srcaddr2:srcport2 - перед попаданием в PREROUTING таблицы nat пакет проверится на принадлежность к какому-либо соединению и будет изменен соответственно. В этом случае через таблицу nat он проходить не будет.

Далее, раз у него адрес != адресу твоего шлюза, он смаршрутизируется в твою LAN, ибо его адрес назначения находится там. После он попадет в FORWARD таблицы filter, сматчится правилом выше и будет пропущен.

Без явного проброса порта никто, кроме dstaddr1:dstport1, не сможет послать пакет на srcaddr1:srcport1 путем его адресации на srcaddr2:srcport2. Т.е., в общем случае никто не сможет подконнектиться к тебе.

Вообще, по вопросам, какие пакеты принадлежат ESTABLISHED и RELATED, читай мануалы по connection tracking. В iptables tutorial (который на frozentux.net) это все расписано. Его перевод вроде был на опеннете.

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

unicorne
()

Дома стоит старенький комп на intel atom, c centos еще 5.6. Пользую в качестве роутера.

- iptables настраивал вот отсюда! Там есть готовые примеры, затачивай под себя и пользуй.

- пинги снаружи закрывать не рекомендую, бывает необходимость проверить доступность.

- ssh светить наружу плёхо. Как-то настраивал что то уже не помню что, забыл закрыть - на следующий день обнаружил в логах кучу попыток перебора логинов, паролей. Хотя существует куча способов это пресечь, но лень заморачиватьться для домашнего роутера на настройку файл2банов и т.д. Поставил shellinabox публикую через ngnix https+dual аунтифекацию. Кстати класcная вещь - logwatch, ежедневно шлет анализ логов, место на дисках и т.д. на почту мне.

- IPTV - udpxy+ps3mediaserver - роутер слабенький но на один телик тянет без замечаний

- asterisk+freepbx через апач на внутреннем интерфейсе

ну и торенткачалка, шара по самбе и т.д. и т.п

P.S. по поводу виртуализации - по моему это для работы, но не для дома :) хотя на любителя :)

aeX1pu2b
()

А что за ОС?

Под Centos/RHEL есть хорошая, годная system-config-firewall-tui на ncurses - для основных задач с головой и конфигами все просто.

dvrts ★★★
()

Ну то есть в них ты не лезешь

dvrts ★★★
()
Ответ на: комментарий от unicorne

для UPnP нашел linux-igd, правда не знаю, насколько этот зверь жизнеспособен.

irq
() автор топика
Ответ на: комментарий от aeX1pu2b

IPTV - udpxy+ps3mediaserver - роутер слабенький но на один телик тянет без замечаний

Вопрос к знатокам: udproxy необходим, либо

-A INPUT -d 224.0.0.0/4 -j ACCEPT
-A FORWARD -d 224.0.0.0/4 -j ACCEPT
заменяет его?

Кто-нибудь сравнивал ps3mediaserver c plex media server? (Большой телевизор пока еще не купил, проверить и сравнить не на чем)

irq
() автор топика
Ответ на: комментарий от irq

-A FORWARD -d 224.0.0.0/4 -j ACCEPT

не нужен, INPUT нужен, udpxy всего лишь переводит трафик с udp в tcp

plex media server не пробовал, пробовал minidlna и mediatomb, но пришлось остановиться на ps3mediaserver - дома 2 телика и проигрыватель от Sony, а сонька (чтоб их так) не корректно, а подчас и вообще не видит mediatomb, а с minidlna отдает в поток все как есть, без транскодинга, как следствие сонька не видит часть медиаконтента (не понимает скажем mpeg)

aeX1pu2b
()

Стоит ли полностью резать ICMP?

Если хочешь поиметь нетривиального геморроя на роутере - да, стоит. Как минимум не надо резать type 3. Ну и тех, кто на роутерах отрубает(а не блочит при превышении лимита) icmp echo request/reply я предлагаю сжигать на медленном огне.

Pinkbyte ★★★★★
()

Стоит ли полностью резать ICMP? Нет, так как потом начнутся проблемы с различными веб-сервисами (у меня,к примеру, не работает ntpdate и еще что-то). Вполне хватит ограничивать лимитом количество echo request за промежуток времени, если ты о безопасности.

Что дописать для того, чтобы IPTV работало?

IGMP routing.

Если мне захочется, например пробросить порт для mysql наружу, причем чтобы извне он был виден как site.ru:31567, что для этого надо сделать?

Как ни странно, пробросить порт. Просто пробросить со шлюза, который смотрит в интернет.

Также не совсем понятна ситуация с DC++, torrent'ами и играми, которые научились открывать произвольные порты и устанавливать соединение на них (инициация на открытие из LAN) - то что для этого необходимо прописать в конфиге iptables?

А для чего именно? Если я правильно тебя понял - чтобы игрушка или сервис само могло слушать на угодном ей порту - то только выключить iptables. Смотри маны своих сервисов или настрой статический порт.

может я что-то упустил из разряда необходимых функций, например: обнаружение сканирования и DDOS и при выявлении - reject / ban по ip на 10 минут / перенаправление (закольцовка) на источник.

У меня прикручен ipset, который бросает в сет те ипы, которые подключились больше 30 раз в секунду к моему веб-серверу. Для перенаправления юзай NAT в иптаблесах.

Wheely
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.