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
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.