Ответы пользователя по тегу Iptables
  • Как правильно запретить выход на "серые" сети через eth0?

    hint000
    @hint000
    у админа три руки
    там сверху вниз -
    Accept
    проброс портов
    masquerade
    проброс портов и masquerade в таблице NAT, а цепочка FORWARD в таблице FILTER. Нет никакой разницы, заполните вы сперва NAT, затем FILTER или сперва FILTER, затем NAT.
    Имеет значение только порядок правил в пределах каждой цепочки.
    Таргет Accept доступен в любых цепочках таблицы FILTER и в любых цепочках таблицы NAT, так что совершенно бесполезна информация о том, что у вас сначала Accept - это никак не помогает определить, к чему относится ваш Accept.

    Но можно с уверенностью ответить на последний вопрос:
    и в самый низ я пихаю эти 3 правила, мы же дропаем FORWARD этих пакетов ? или их надо пихать до правила masquerade ?
    Никакой разницы между этими вариантами не будет, они эквивалентны. Либо оба эти варианта будут работать, либо оба варианта работать не будут. Зависит от того, что у вас раньше в цепочке FORWARD.
    Ответ написан
    1 комментарий
  • Почему при подключении VPN через FortiClient перестаёт подключаться по SSH?

    hint000
    @hint000
    у админа три руки
    Потому что дефолтный маршрут (маршрут по умолчанию) уходит в VPN-туннель. Когда вы пытаетесь подключиться через ssh, то ответный трафик уходит в туннель, на другом конце туннеля NATится и возвращается к вам от левого адреса (не от того, на который вы подключаетесь по ssh).
    Возможно необходимо прописать какие-то правила в iptables?
    Разве что через iptables покрасить (маркировать) ssh-трафик, и потом на основе покраски маршрутизировать его мимо туннеля.
    Где-то там должны быть примеры: https://www.google.com/search?q=iptables+mangle+ma...
    Ответ написан
    1 комментарий
  • Как пробросить порт Cent OS 7?

    hint000
    @hint000
    у админа три руки
    ага, получается, тут уже не голый KVM, а через прослойку libvirt. Соответственно и гуглить инструкцию нужно не по голому KVM, а по libvirt (разница есть):
    https://wiki.libvirt.org/Networking.html#forwardin...

    Но если по-хорошему, не рекомендую этот геморрой с режимом nat; лучше сразу делать в режиме моста, всё гораздо прозрачнее:
    https://wiki.libvirt.org/Networking.html#bridged-n...
    Ответ написан
    Комментировать
  • Почему блокируется web-сервер?

    hint000
    @hint000
    у админа три руки
    Обычный BitrixVM с дефолтными настройками
    Представьте, как будто я ничего не знаю об архитектуре Bitrix, зато неплохо разбираюсь в iptables. Можете описать чуть подробнее? Web-сервер находится на виртуальной машине? И эти правила iptables применяете на той же виртуальной машине? Сетевой интерфейс один, не считая lo? (вопрос связан с правилом, блокирующим весь FORWARD)
    Применяете правила, делаете пробный заход на web-сервер, после этого выполняете команду, чтобы посмотреть счётчики байтов и пакетов на правилах:
    iptables -L -n -v
    Вам будут интересны только те правила, у которых счётчики (первые два столбца) ненулевые, значит трафик прошел через них. В них и нужно дальше искать проблему.
    Ответ написан
  • Как заблокировать ботов в iptables?

    hint000
    @hint000
    у админа три руки
    -m state --state RELATED,ESTABLISHED
    -m conntrack --ctstate RELATED,ESTABLISHED

    -m recent --name BLOCK --rcheck --seconds 100000
    -m recent --name BLOCK --rcheck --seconds 100000 --hitcount 1
    (не уверен, что это правильно работает без --hitcount, но, может быть и работает)
    Ответ написан
    2 комментария
  • Как пользоваться iptables?

    hint000
    @hint000
    у админа три руки
    почему моя настройка неправильна и не соответствует тз ?
    Потому что в первом правиле вы разрешаете NEW, независимо от портов, так что второе и третье правила становятся бесполезны, и без них уже открыты все порты. Уберите NEW в первом правиле.

    а также позволял устанавливать исходящие соединения
    А в последнем правиле лучше бы вообще убрать -m conntrack --ctstate NEW,ESTABLISHED,RELATED.
    Ответ написан
    1 комментарий
  • Как перенаправить трафик Iptables на определённый сайт?

    hint000
    @hint000
    у админа три руки
    iptables -t nat -A PREROUTING -s 10.8.0.2 -p tcp --dport 80 -j DNAT --to-destination адрес_вашего_сайта
    iptables -t nat -A PREROUTING -s 10.8.0.2 -p tcp --dport 443 -j DNAT --to-destination адрес_вашего_сайта
    Ответ написан
  • Как маршрутизировать порты, чтобы передавался IP клиента?

    hint000
    @hint000
    у админа три руки
    Не использовать правило с -j MASQUERADE. Именно оно "портит" адрес клиента.
    Посмотрим, для чего это правило нужно. Чтобы второй сервер понимал, куда отправлять ответные пакеты.
    Так что вместо этого на втором сервере нужно настроить default-маршрут через VPN.
    При этом нужно не забыть добавить явный маршрут до первого сервера через шлюз провайдера.
    Ответ написан
  • Запуск OpenVPN клиента и сервера на одной машине. Как?

    hint000
    @hint000
    у админа три руки
    На VPS я решил организовать "транзитный VPN"
    А всего-то надо было настроить на промежуточном узле DNAT через iptables. И не нужно там ни клиента, ни сервера OpenVPN.

    Update: DNAT + SNAT.
    Ответ написан
    6 комментариев
  • Что не так с правилами iptables?

    hint000
    @hint000
    у админа три руки
    -A INPUT -p tcp -m tcp --dport 8291 -j LOG --log-prefix "MIKROTIK: "
    Не сработает, потому что этот трафик попадёт в FORWARD, а не в INPUT.
    Если замените в этом правиле INPUT на FORWARD, то оно будет работать.

    -A POSTROUTING -d 192.168.42.11/32 -p tcp -m tcp --dport 8291 -j SNAT --to-source 10.0.1.4
    -A POSTROUTING -d 192.168.42.11/32 -p tcp -m tcp --dport 8291 -j MASQUERADE
    Второе из этих двух правил не может сработать, потому что срабатывает первое. Уберите первое, оставьте только MASQUERADE, и есть шанс, что заработает, как надо. Возможно, Микротик не знает маршрута до 10.0.1.4 (если вы не прописали такой маршрут).
    Ответ написан
    3 комментария
  • Как перенаправлять трафик через iptables?

    hint000
    @hint000
    у админа три руки
    Пробовал так:
    Ошибка в имени интерфейса - в правиле ens0, а выше показан ens0.
    и так:
    А так должно работать, по идее.
    iptables до изменений имеет вид:
    Проверьте после изменений, появляются ли новые правила. А то я столкнулся с тем, что именно в Ubuntu 22.04 поломали iptables (отработанный годами набор правил, работавший на Ubuntu 20.04, просто выдавал ошибки при попытке их добавления на Ubuntu 22.04). Я не знаю, может быть, уже починили это, а может быть и нет.

    Они настойчиво подталкивают к миграции на nftables (типа того, что iptables внезапно признали за дерьмо мамонта, и приняли решение, что оно вам не нужно). И действительно, при конвертации в nftables "поломатый" набор правил снова стал работать как надо.
    Ответ написан
    2 комментария
  • Проброс портов от vps до локального сервера?

    hint000
    @hint000
    у админа три руки
    iptables -t nat -I PREROUTING -d 141.8.199.Х -p tcp --dport 8080 -j DNAT 10.8.0.2
    Ответ написан
    5 комментариев
  • Как определить какие используются порты?

    hint000
    @hint000
    у админа три руки
    Цепочка INPUT определяет судьбу пакетов, которые предназначены самому хосту (серверу в вашем случае).
    А движение пакетов, которые идут клиентам или от клиентов, регулируется цепочкой FORWARD.
    Существуют ли способы узнать какие порты и протоколы пытается использовать какая-либо сущность в ос?
    Есть старая команда netstat (кучу ключей, определяющих, что именно она показывает, смотрите в man netstat или в гугле). Есть более новая команда ss.
    схема прохождения пакетов
    FW-IDS-iptables-Flowchart-v2019-04-30-1.png
    Ответ написан
    Комментировать
  • IP address, domain and subdomain?

    hint000
    @hint000
    у админа три руки
    а при обращение к subdomain.site.com перенаправило на 44.44.44.44 (почтовый сервер)
    Почтовому серверу пофиг домен при установке соединения, так что ориентруйтесь по номерам портов.
    iptables -A PREROUTING -d 22.22.22.22 -p tcp --dport 25 -j DNAT --to-destination 44.44.44.44
    iptables -A PREROUTING -d 22.22.22.22 -p tcp --dport 465 -j DNAT --to-destination 44.44.44.44
    iptables -A PREROUTING -d 22.22.22.22 -p tcp --dport 587 -j DNAT --to-destination 44.44.44.44
    
    iptables -A PREROUTING -d 22.22.22.22 -p tcp --dport 80 -j DNAT --to-destination 33.33.33.33
    iptables -A PREROUTING -d 22.22.22.22 -p tcp --dport 443 -j DNAT --to-destination 33.33.33.33

    Если ваш почтовый сервер не использует порт 465/tcp или 587/tcp, то лишние правила можете убрать.
    Ответ написан
    Комментировать
  • Как произвести проксировку трафика с одного сервера на другой?

    hint000
    @hint000
    у админа три руки
    Насчёт комментариев Strabbo и AlexVWill.
    Действительно, маршрутизацией не решается, но и действительно без VPN можно обойтись.
    Нужно два правила iptables на стороне прокси. Одно DNAT с заменой адреса прокси на адрес сервера, другое SNAT с заменой адреса клиента на адрес прокси. Побочный эффект - сервер вместо адресов любых клиентов будет видеть только адрес прокси. Если такой побочный эффект не желателен, тогда в соответствии с ответом Drno.
    Ответ написан
    Комментировать
  • Как пробросить трафик виртуальной машины через VPN?

    hint000
    @hint000
    у админа три руки
    Через iptables эта задача не решается. Совсем.
    Решается через хитрую маршрутизацию:
    https://www.google.com/search?q=source+based+routing
    https://habr.com/ru/post/108690/
    Ответ написан
    1 комментарий
  • Как правильно настроить iptables?

    hint000
    @hint000
    у админа три руки
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p icmp --icmp-type  0 -j ACCEPT
    -A INPUT -p icmp --icmp-type  3 -j ACCEPT
    -A INPUT -p icmp --icmp-type  4 -j ACCEPT
    -A INPUT -p icmp --icmp-type 11 -j ACCEPT
    -A INPUT -p icmp --icmp-type 12 -j ACCEPT
    -A INPUT -p tcp  -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p udp --dport 1194 -j ACCEPT
    -A INPUT -i tun+ -j ACCEPT
    -A INPUT -i tap+ -j ACCEPT
    -A INPUT -j DROP
    -A OUTPUT -j ACCEPT


    Upd. добавил про tun/tap
    Ответ написан
  • Как добавить IP в черный список ipset, после блокировки в iptables?

    hint000
    @hint000
    у админа три руки
    но как сделать чтобы он еще и отправлял в список ipset
    Средствами iptables никак, наверное. Но можно написать скрипт, который будет периодически парсить файл /proc/net/xt_recent/get_packets и засовывать результат в ipset.
    https://qna.habr.com/q/733485
    Ответ написан
    Комментировать
  • Можно ли присвоить машине адрес удалённой машины?

    hint000
    @hint000
    у админа три руки
    Что вы называете "локальным" адресом?

    Да, на стороне x.x.x.x можно сделать DNAT + SNAT, чтобы машина y.y.y.y получала определённую часть трафика, приходящего на x.x.x.x.
    Или наоборот, можно исходящий трафик с y.y.y.y маршрутизировать на x.x.x.x и там достаточно MASQUERADE.
    Смотря что из этого вам требуется.
    Ответ написан
  • Какое решение killswitch для iptables лучше?

    hint000
    @hint000
    у админа три руки
    Нет здесь правил для INPUT с действием DROP, а значит и нет смысла добавлять что-то в INPUT с действием ACCEPT, оно и так по-умолчанию будет. Можно написать и более лаконично:

    iptables --flush
    iptables --delete-chain
    iptables -t nat --flush
    iptables -t nat --delete-chain
    iptables -P OUTPUT DROP
    iptables -A OUTPUT -j ACCEPT -o lo
    iptables -A OUTPUT -j ACCEPT -p udp --dport 1194
    iptables -A OUTPUT -j ACCEPT -o tun+

    Отличие в том, что можно подключаться к любому OpenVPN-серверу, т.к. ограничение задано по номеру порта, но не по адресу сервера. Также запись tun+ позволит работать через любой туннель, если будет создано несколько туннелей (tun0, tun1, tun2,..) - ну мало ли как и что захочется добавить в будущем.
    Ответ написан
    5 комментариев