Ответы пользователя по тегу Iptables
  • Как настроить iptables на vds с виртуализацией openvz?

    @krosh
    Во-первых, о каком дистрибутиве идет речь? Возможно у Вас firewalld вместо iptables, вот и не получается работать. Задавая вопросы такого типа нужно показывать, что у Вас во всех таблицах и цепочках:
    iptables-save

    Во-вторых, это логично, что в OpenVZ-контейнерах что-то не работает, т.к. используются возможности хостового ядра, а нужны Вам модуль туда не подгружен, а Вы на это не имеете прав. Если не нравится, то нужно переходить или к другому хостеру, или на KVM.

    Просто проверяйте в следующих раз так:
    lsmod |grep nf_conntrack

    В-третьих, судя по приведенной ссылке на форум хостера, у Вас ничего не получится - такая политика.

    Поэтому придется фильтровать по принципу "разрешено все, что не запрещено":
    iptables -A INPUT -p tcp -m tcp -s X.X.X.X --dport 3306 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 3306 -j DROP


    Понять, что блокировать можно так:
    netstat -lntpu
    либо nmap с другого хоста.

    Ставьте в правилах только блокировки на конкретные сервисы и не переживайте за остальное.
    Ответ написан
  • Как исправить проблему с модулем geoip iptables?

    @krosh
    Надо другое ядро ставить. На хостинге OVH дистрибутивы поставляются с кастомным ядром (почему так, я не знаю.
    Поменяйте ядро, например как пишут How to switch to the standard Ubuntu kernel on OVH и все получится.
    Ответ написан
  • Почему не срабатывают настройки iptables?

    @krosh
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -s IP_ADDR -j ACCEPT
    ... дополнительные правила
    iptables -P INPUT DROP
    Ответ написан
  • Как подключиться из Windows к centos по порту 5555?

    @krosh
    iptables -I INPUT -s 192.168.1.0/24 -m tcp -p tcp --dport 5555 -j ACCEPT

    Обратите внимание, что тут опция добавления в начало списка (-I), а вы использовали опцию добавления в конец (-A) списка правил. Я видел в CentOS список в котором последним правилом стоял REJECT, т.е. все что ниже не отрабатывалось. Проверьте у себя.

    Хорошо в таких вопросах показывать все правила сразу:
    iptables-save
    Ответ написан
  • Как узнать все активно использующийся UDP порты зная только IP адрес?

    @krosh
    nmap -sU -sV -p- 192.168.1.1
    nmap -sU -sV -p 27015-27500 192.168.1.1

    man nmap

    -sU (Различные типы UDP сканирования)
    В то время как большинство сервисов Интернета используют TCP протокол, UDP службы также широко распространены. Тремя наиболее популярными являются DNS, SNMP и DHCP (используют порты 53, 161/162 и 67/68). Т.к. UDP сканирование в общем случае медленнее и сложнее TCP, то многие специалисты по безопасности игнорируют эти порты. Это является ошибкой, т.к. существуют UDP службы, которые используются атакующими. К счастью, Nmap позволяет инвентаризировать UDP порты.

    UDP сканирование запускается опцией -sU. Оно может быть скомбинировано с каким-либо типом TCP сканирования, например SYN сканирование (-sS), чтобы использовать оба протокола за один проход.

    UDP сканирование работает путем посылки пустого (без данных) UDP заголовка на каждый целевой порт. Если в ответ приходит ICMP ошибка о недостижимости порта (тип 3, код 3), значит порт закрыт. Другие ICMP ошибки недостижимости (тип 3, коды 1, 2, 9, 10 или 13) указывают на то, что порт фильтруется. Иногда, служба будет отвечать UDP пакетом, указывая на то, что порт открыт. Если после нескольких попыток не было получено никакого ответа, то порт классифицируется как открыт|фильтруется. Это означает, что порт может быть открыт, или, возможно, пакетный фильтр блокирует его. Функция определения версии (-sV) может быть полезна для дифференциации действительно открытых портов и фильтруемых.

    Большой проблемой при UDP сканировании является его медленная скорость работы. Открытые и фильтруемые порты редко посылают какие-либо ответы, заставляя Nmap отправлять повторные запросы, на случай если пакеты были утеряны. Закрытые порты часто оказываются еще большей проблемой. Обычно они в ответ возвращают ICMP ошибку о недостижимости порта. Но в отличии от RST пакетов отсылаемых закрытыми TCP портами в ответ на SYN или сканирование с установкой соединения, многие хосты ограничивают лимит ICMP сообщений о недостижимости порта по умолчанию. Linux и Solaris особенно строги в этом плане. Например, ядро Linux 2.4.20 огранивает количество таких сообщений до одного в секунду (в net/ipv4/icmp.c).

    Nmap обнаруживает такого рода ограничения и соответственно сокращает количество запросов, чтобы не забивать сеть бесполезными пакетами, которые все равно будут отброшены целевой машиной. К сожалению, при ограничении в стиле Linux (один пакет в секунду) сканирование 65,536 портов займет более 18 часов. К способам увеличения скорости UDP сканирования относятся: параллельное сканирование нескольких хостов, сканирование в первую очередь только наиболее популярных портов, сканирование из-за брандмауэра и использование --host-timeout дял пропуска медленных хостов.

    https://nmap.org/man/ru/man-port-specification.html
    Ответ написан
  • Как информировать пользователя о том, что его IP забанен?

    @krosh
    Попробуйте заменить REJECT на REDIRECT. После применения правила их обработка прекращается и, значит, пакет не должен дойти до цели. При этом веб-сервер на 8080 должен быть локальным, и еще можно закрыть к нему доступ всем, кроме f2b-bruteforce_joomla.

    iptables -t nat -A PREROUTING -i eth1 -p tcp -m multiport --dports 80,443 -m set --match-set f2b-bruteforce_joomla src -j REDIRECT --to-port 8080
    Ответ написан
  • Как настроить iptables в CentOS для torrenta?

    @krosh
    iptables -I FORWARD -i enp2s0 -o enp3s1  -m state --state NEW -p tcp -m tcp --dport 40000 -d 192.168.10.10 -j ACCEPT


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

    3 правило в FORWARD слишком узкое, я бы его заменил, на более общее, без указания интерфейсов. Если нет других и на шлюзе их только два: внутренний и внешний.
    Ответ написан
  • Как правильно настроить iptables с ipset?

    @krosh
    iptables -I FORWARD 1 -m state --state RELATED,ESTABLISHED -m comment --comment "РАЗРЕШЕНО Установленные соединения" -j ACCEPT
    iptables -I FORWARD 2 -s 192.168.1.35 -m set --match-set MYSET dst -m comment --comment "РАЗРЕШЕНО Доступ по списку MYSET" -j ACCEPT
    iptables -P FORWARD DROP
    Ответ написан
  • Iptables проброс портов?

    @krosh
    Проверьте, что порт 2222 на 192.168.0.4 открыт для .2.
    Ответ написан
  • Как закрыть доступ по IP для grafana?

    @krosh
    iptables -A INPUT -m tcp -p tcp --dport 3000 -j DROP

    а лучше так
    iptables  -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p icmp -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    iptables -P INPUT DROP
    Ответ написан
  • Как в iptables открыть порт только для частной сети?

    @krosh
    Странно, но правила выглядят рабочими. Может что-то не так на стороне клиента?

    Вместо iptables -A INPUT -j DROP
    используйте iptables -P INPUT DROP

    Рекомендую пользоваться:
    iptables-save > ipt.rules
    iptables-restore < ipt.rules


    Попробуйте посмотреть лог. Надо перед ACCEPTами добаивить:
    iptables -A INPUT -p tcp --dport 22 -j LOG
    iptables -A OUTPUT -p TCP --sport 22 -j LOG


    и потом
    journalctl -f

    SSH-клиент работает?
    Если -P OUTPUT ACCEPT, работает?
    Нужно посмотреть вывод на сервере и клиенте
    ip a
    iptables-save
    netstat -plnt


    Ну и вообще нет смысла на хосте ограничивать OUTPUT. Это логично делать на пограничном МЭ. Софт сам будет слать данные в сеть? Зачем эти ограничения? Если INPUT будет фильтроваться, значит и ответных пакетов не будет. А если злоумышленник взломает сервер, то логично, что он сможет добавить исключение для своего приложения.
    Ответ написан
  • Как правильно подключить IPv6 туннель от Hurricane Electric?

    @krosh
    ip -6 route add 2000::/3 dev he-ipv6

    или попробуйте сделать все руками и посмотрите ошибки:
    ip tunnel add he-ipv6 mode sit remote 216.66.80.30 local 78.155.219.100 ttl 255
    ip link set he-ipv6 up
    ip addr add 2001:470:1f0a:b87::2/64 dev he-ipv6
    ip -6 route add 2000::/3 dev he-ipv6


    Назначить адрес интерфейсу из Вашего диапазона:
    ip -6 a a 2001:470:1f0b:b7f::11/64 dev he-ipv6 noprefixroute

    Тест:
    curl --interface 2001:470:1f0b:b7f::11 "http://myexternalip.com/raw"
    Ответ написан
  • Iptables или UFW | Настройка OpenVPN Server?

    @krosh
    Ключевые слова для поиска: "шлюз iptables".

    Опция для проброса трафика через хост:
    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p

    Для выхода в интернет используем SNAT вместо маскарадинга (но это если у Вас статический внешний IPv4):
    iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j SNAT --to-source 211.233.44.5

    Предварительно, при этом предполагаем, что других правил нет, т.к. эти должны идти первыми:
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p icmp -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -А FORWARD -s 10.8.0.0/24 -j ACCEPT
    iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

    Разрешаем 1194/udp, SSH:
    iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    iptables -I INPUT -p udp -m udp --dport 1194 -j ACCEPT

    Блокируем все остальное:
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    Ответ написан
  • Корректное правило в iptables?

    @krosh
    Если уж говорите про шлюз, то частично проблемы поможет создать такая команда:
    iptables -A FORWARD -s 10.20.32.233 -j DROP

    Чтобы сломать работу в локальной сети надо почитать про протокол ARP и воспользоваться с умом методами arp spoofing.

    А пинги с шлюза идут возможно из-за того, что в цепочке правил выше стоит разрешающее правило. Ставьте дроп выше и смотрите на результат.
    Ответ написан
  • Как запретить выход в интернет VPN-клиентам, оставив доступ только к заданному ip (либо домену)?

    @krosh
    Предполагая, что tun0 - интерфейс для впн-клиентов, а eth0 - в интернет, то можно начать со следующих правил.

    iptables -P FORWARD DROP
    iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -m comment --comment "РАЗРЕШЕНО Установленные соединения" -j ACCEPT
    iptables -A FORWARD -i tun0 -o eth0 -p udp -m udp --dport 53 -m comment --comment "РАЗРЕШЕНО DNS/udp" -j ACCEPT
    iptables -A FORWARD -i tun0 -o eth0 -d yandex.ru -m conntrack --ctstate NEW -m comment --comment "РАЗРЕШЕНО Доступ к Яндексу" -j ACCEPT


    2 и 3 правила я бы рекомендовал сделать общими, без привязки к интерфейсу, но не зная, что у Вас к чему ограничился входным (tun0) и выходным (eyh0) интерфейсами.
    Ответ написан
  • Как с помощью iptables перенаправить пакеты на другой сервер?

    @krosh
    Сейчас вы только подменяете адрес назначения, но Y-хост отвечает хосту источнику через свой шлюз по умолчанию. Т.е. пакет был направлен в адрес X-хоста, а ответ пришел от Y-хоста, отправитель теряется и сбрасывает соединение, поэтому ничего не получается.

    Пакеты через шлюз проходят такие цепочки: PREROUTING, FORWARD, POSTROUTING и вам для каждой нужно правило. Еще нужно, что-бы была разрешена пересылка трафика. Нужно не только подменить адрес назначения (DNAT, PREROUTING), но и заменить адрес источника (SNAT, POSTROUTING), что бы Y-хост отвечал X-хосту, а не по маршруту по умолчанию, и еще не забыть про фильтрацию проходящего трафика (FORWARD).

    Чтобы все работало, так как описано выше, нужны такие действия:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A PREROUTING -p tcp --dport 8888 -j DNAT --to-destination Y.Y.Y.Y:80
    iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source X.X.X.X:1024-32000
    iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED  -m comment --comment "РАЗРЕШЕНО Установленные соединения" -j ACCEPT
    iptables -A FORWARD -m conntrack --ctstate NEW -d Y.Y.Y.Y  -m comment --comment "РАЗРЕШЕНО Новое соединение к Y.Y.Y.Y" -j ACCEPT
    iptables -P FORWARD DROP


    Первая команда разрешает форфард трафика через хост.
    Вторая: подмена назначения в PREROUTING, т.е. в точке решения о маршрутизации уже будет принято решения передать пакет дальше в сеть, а не отдавать локальному процессу.
    Третья: подмена адреса источника в цепочке POSTROUTING на выходе на адрес X-хоста. И тогда пакет уже будет выглядеть так, будто он с X-хоста был отправлен на 80 порт Y-хоста.
    Четвертая: работа со статусами. Пропускает только пакеты уже установленого соединения. А соединение можно установить только в одну сторону (пятая строка) и только до Y-хоста.
    Шестая: сбрасывать все пакеты, которые не подпадают под правила цепочки - политика по умолчанию.

    Проблема в данном решении будет только в том, что в логах у вас будет один адрес источника - X-хоста. Если это важно и речь про веб-сервер, то я бы рекомендовал разобраться с проксированием nginx и ничего пробрасывать не придется.

    Еще нужно разобраться с локальным трафиком на 8888 и 80 порты. и трафиком из локальной сети, если это шлюз. Но это уже отдельный вопрос.
    Ответ написан
  • Проблемы с медком и iptables?

    @krosh
    Вопрос в том, откуда куда должен идти трафик? Из локальной сети на mail.shf.com.ua? или из интернета локально на шлюз?

    Фильтрация в таблице nat не рекомендуется:

    $ip -t nat -A POSTROUTING -d mail.shf.com.ua -o $EXTERNAL_IF -p tcp -m multiport --dports 80,443,465,993,995 -j MASQUERADE


    Рекомендую заменить на:

    -t nat -A POSTROUTING -j MASQUERADE
    -P FORWARD DROP
    -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A FORWARD -i $LOCAL_IF -o $EXTERNAL_IF -s $LOCAL_NET -d mail.shf.com.ua  -p tcp -m multiport --dports 80,443,465,993,995  -m comment --comment "РАЗРЕШЕНО ИСХ Почтовые протоколы + http/s" -j ACCEPT


    Если трафик идет на шлюз, а не транзитный, то смотрите процесс на порту:
    netstat -antp |grep 465

    У Вас в правилах бардак. Надо бы сначала из причесать, а уже потом разбираться. Скорей всего из-за этого что-то и не работает. А бардак просто от незнания.

    Почему используете MASQUERADE, а не SNAT? Внешний адрес динамический?

    Проблема таких скриптов, в том, что не ясно какой набор правил будет в итоге. А если работа скрипта прервется на полпути? Где очистка цепочек перед загрузкой новых правил? Политики по умолчанию? Используйте iptables-save, iptables-restore. Либо генерируйте сценарием файл с правилами, а грузите есть через iptables-restore.

    Нужно хотя бы iptables -L --line-numbers показать, чтобы фактическое состояние смотреть, а не то, что в скрипте прописано.

    Хотите разобраться? Сохраните все правила и очистите все цепочки и начинайте настройку именно с открытия нужных портов и маскарадинга трафика. Потом усложняйте правила.

    В блоке #cam уж используйте multiport, они же есть в других правилах ниже.

    80 порт Вы редиректите на прокси, а 443/https маскарадите. Будьте последовательны в своих намерениях. Либо пользуйте прокси на все порты, либо используйте НАТ/маскардинг для всего трафика.
    Ответ написан
  • Как настроить перенаправление iptables?

    @krosh
    Цепочку INPUT не проходят транзитные пакеты.
    В цепочке FORWARD у Вас пока политика разрешает все, поэтому в правилах там нет смысла. После смены политики по умолчанию не забудьте дополнить обратными правилами, с портом источника 22513.

    Пинги до В идут?
    Порт открыт, подключение с А возможно?
    Маршрут до В прописан?
    На В есть блокировка входящих? Надо разрешить доступ А на порт 22513.

    Покажите
    cat /proc/sys/net/ipv4/ip_forward
    iptables -t nat -S
    iptables -S FORWARD
    ip route sh
    Ответ написан