Настройка firewall centos 7

Kvm vps на proxmox за nat с пробросом портов и dhcp

Примеры конфигурации богатых правил:

1) Используйте новые соединения IPv4 и IPv6 для протокола заголовка аутентификации AH:

2) Разрешите новым IPv4 и IPv6 подключаться к FTP и использовать аудит для записи каждую минуту:

3) Разрешить соединение IPv4 по протоколу TFTP с адреса 192.168.0.0/24 и использовать системный журнал для записи каждую минуту:

4) Для протокола RADIUS все новые подключения IPv6 от 1: 2: 3: 4: 6 :: отклоняются, префикс журнала — «dns», уровень — «информация», и максимум 3 записи в минуту. Примите новые соединения IPv6 от других инициаторов:

5) Белый список адреса источника 192.168.2.2, чтобы разрешить все соединения с этого адреса источника:

6) Отклонить весь трафик с IP-адреса 192.168.0.11 в зоне общего доступа:

7) Откажитесь от всех входящих пакетов протокола ipsec esp из любого места в зоне по умолчанию:

8) В области dmz подсети 192.168.1.0/24 получите все TCP-пакеты портов 7900 ~ 7905:

9) Получите новое подключение из рабочей области к SSH и запишите новое подключение к системному журналу с уровнем уведомления и не более трех сообщений в минуту:

10) В течение следующих 5 минут новое соединение из подсети 192.168.2.0/24 в зоне по умолчанию к DNS будет отклонено, и отклоненное соединение будет записано в систему аудита с максимум одним сообщением в час:

Работа с прокси

OpenVPN без проблем может работать через http и socks прокси.http-proxy < server port > — указываем адрес и порт прокси-сервера.
http-proxy 192.168.0.12 8080
Если требуется авторизация на прокси-сервере:http-proxy < server port authfile > — где authfile — файл содержащий две строки (имя пользователя и пароль) или stdin (будет запрошено имя пользователя и пароль).
Так же после authfile требуется указать метод авторизации. Можно оставить auto для автоматического выбора метода авторизации или указать явно через auth-method.
auth-method может быть трех видов «none», «basic» или «ntlm».
Используется в OpenVPN начиная с версии 2.1.http-proxy-retry — переподключаться, если соединение было разорвано.http-proxy-timeout < seconds > — считать соеденение с прокси-сервером разорванным после n-секунд неактивности. Например:
http-proxy-timeout 5socks-proxy < server port > — указываем сокс-прокси сервер. Пример:
socks-proxy 192.168.0.12 8080socks-proxy-retry — переподключаться, если соединение было разорвано.auto-proxy — автоматически определять прокси-сервер. Требуется версия OpenVPN 2.1 и выше. 

Создание набора правил с помощью FirewallD

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

  1. Измените зону по умолчанию на dmz

    Мы будем использовать зону dmz (демилитаризованную), потому что по умолчанию она разрешает только SSH-трафик. Чтобы изменить зону по умолчанию на dmz и назначить ее интерфейсу , выполните следующие команды:

  2. Откройте порты HTTP и HTTPS:

    Чтобы открыть порты HTTP и HTTPS, добавьте в зону dmz постоянные правила обслуживания:

    Немедленно внесите изменения в силу, перезагрузив брандмауэр:

  3. Проверить изменения

    Чтобы проверить параметры конфигурации зоны dmz, введите:

    Приведенный выше вывод говорит нам, что dmz является зоной по умолчанию, применяется к интерфейсу и что порты ssh (22), http (80) и https (443) открыты.

Конфигурация IPTABLES для веб-сервера

Конфигурация Iptables по умолчанию на CentOS не разрешает доступ к HTTP (TCP порт 80) и HTTPS (TCP ПОРТ 443 )которые использует веб-сервер (например Apache).

Шаг 1: Flush или удалите все IPTABLES правила

# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X

Шаг 2: Установите правила по дефолту

# iptables -P INPUT DROP
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT

Шаг 3: Разрешить доступ к SSH и HTTP для 80 порта и HTTPS для 443 порта

# iptables -A INPUT -i lo -j ACCEPT (Данная команда говорит добавить (-А) правило в фильтр входящих соединений (INPUT), разрешающее (-j ACCEPT) любой трафик, поступающий на локальный интерфейс (-i lo). Локальный хост часто используется для размещения базы данных, к которой подключаются веб-сайт и почтовый сервер. Таким образом, VPS имеет доступ к базе данных, но взломать ее через интернет нельзя.)
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT (еще одно правило, которое позволит устанавливать исходящие соединения)
# iptables -A INPUT -p icmp -j ACCEPT (разрешить пинговать этот сервер)
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

Маскарадинг (или маскирование)

Маскарадинг — это метод обработки пакетов, при котором пакеты передаются через некоторую машину, работающую как шлюз. Эта машина при пересылке пакетов помечает их, чтобы знать, какой машине в сети вернуть полученный ответ. Таким образом, несколько машин из внутренней сети могут обращаться к внешней сети, а извне это будет выглядеть так, как будто обращения идут от той самой машины, являющейся шлюзом. Маскарадинг связан в первую очередь с NAT (Network Address Translation), пакеты при трансляции адресов маскируются, чтобы ответ вернулся именно к источнику запроса.
Например, у нас есть некоторая локальная сеть с адресами 192.168.0.0/24, в этой сети есть шлюз с адресом 192.168.0.1, имеющий два сетевых интерфейса, eth0 и eth1. eth0 — внешний, подключенный к провайдеру, например, с адресом 192.168.100.25, eth1 — внутренний, подключенный к локальной сети, тот самый, на котором адрес 192.168.0.1. Необходимо обеспечить работу всех клиентов из локальной сети в сети Интернет таким образом, чтобы это было для них прозрачно.
В таком случае в первую очередь необходимо включить форвардинг пакетов между сетевыми интерфейсами шлюза, чтобы пропускать трафик из внутренней сети наружу. Есть два варианта, как это можно сделать. Первый — раскомментировать в файле /etc/sysctl.conf строчку

net.ipv4.ip_forward=1

После этого вам надо будет перезагрузиться, чтобы убедиться, что форвардинг работает. Второй — включить форвард вручную командой

echo "1" >/proc/sys/net/ipv4/ip_forward

Этот способ заработает без перезагрузки. Можно использовать оба, а можно в скрипте, например, использовать при загрузке правил iptables только второй.
После этого мы можем задать правило для адресной трансляции:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.0.0/24 -j MASQUERADE

Это правило после обработки пакетов осуществит маскирование, если пакеты из внутренней сети направлены куда-то в другую подсеть. Если нам нужно маскировать пакеты для конкретной подсети, к примеру, из одной локальной подсети (192.168.2.0/24) в другую (192.168.0.0/24), то мы можем создать следующее правило:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.0/24 -j MASQUERADE

Настройка Nftables на Linux

Nftables – это инструмент, с помощью которого идет настройка фаервола Netfilter. Для настройки он использует конфиг – /etc/nftables.conf и команду nft. А также Nftables может быть запущен как служба.

Служба и конфиг nftables

В системе Debian 11 и Ubuntu 22.04 по умолчанию существует служба nftables, что облегчает управление файрволлом. Вы можете выполнять следующие команды:

  • – включить автозагрузку службы
  • – отключить автозагрузку службы
  • – запустить службу
  • – остановить службу
  • – перезагрузить службу

По умолчанию эта служба выключена и перед добавлением правил в файрволл, её нужно включить. При запуске служба читает конфиг /etc/nftables.conf и запускается с указанными там правилами.

По умолчанию конфиг выглядит так:

$ cat /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
        chain input {
                type filter hook input priority filter;
        }

        chain forward {
                type filter hook forward priority filter;
        }

        chain output {
                type filter hook output priority filter;
        }
}

Давайте разберем его:

  • – конфиг выполнен в виде скрипта, а в качестве оболочки будет использован /usr/sbin/nft;
  • – первым делом выполняется команда, которая очистит фаервол от всех правил;
  • – блок в котором мы описываем таблицу filter. Ключевое слово inet означает что таблица создана для ipv4 и ipv6

    chain input { } – блок описывающий правила для input;

    . Здесь содержаться 3 вложенных блока для разделения правил на разные цепочки:

    • – этот блок для forward;
    • – а этот для output;

В каждой цепочке есть правило, которое её описывает:

type filter hook input (или forward или output) priority filter;

Цепочку вы можете назвать как угодно (chain input, или chain my_input, или chain in), но вот фраза определит эту цепочку как input для таблицы filter. Поменяйте input на forward или output, чтобы поменять тип цепочки.

Редактировать этот конфиг вручную не нужно, для этого есть специальная команда (nft), с помощью которой можно добавлять свои таблицы, цепочки и правила. А также удалять или редактировать их. Но так как в системе уже есть конфиг в котором есть таблица filter и цепочки input, forward и output, то нам остаётся лишь добавлять правила (rule). В этой статье я не буду рассматривать добавление таблиц и цепочек.

Просмотр действующих правил

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

$ sudo nft list ruleset
table inet filter {
        chain input {
                type filter hook input priority filter; policy accept;
        }

        chain forward {
                type filter hook forward priority filter; policy accept;
        }

        chain output {
                type filter hook output priority filter; policy accept;
        }
}

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

Видим почти-что наш конфиг, но без двух строк ( и ). То есть команда показывает нам только таблицы, цепочки и правила. А что такое policy accept и почему этого не было записано в конфиге, разберём ниже в этой статье.

Прохождение цепочки

Пакет, попавший в цепочку, начинает проходить правила указанные в ней сверху вниз. Фаервол сравнивает пакет с первым правилом, затем со вторым и так далее. Если фаервол определит правило для этого пакета, то с пакетом будет выполнено действие:

  • drop – пакет будет уничтожен;
  • accept – пакет сразу же покинет эту цепочку и пойдет дальше, то есть нижние правила уже не будут рассмотрены.

А если фаервол не найдет в данной цепочке подходящего правила для пакета, то фаервол выполнит действие с пакетом, которое указано в политике (policy accept или policy drop).

Прохождение пакетом цепочки input

Сейчас во всех цепочках политика accept, и нет других правил. Это означает что все пакеты разрешены во все стороны (нет никаких правил и политика разрешает прохождение пакетов).

Если изменить политику на drop, то будет обратная ситуация. Нет никаких правил, а политика будет отбрасывать все пакеты.

Обычно для цепочки input добавляют некоторые разрешающие правила, а затем меняют политику на drop. Таким образом всё что мы не разрешили будет запрещено. А цепочку output вообще не трогают, оставляя политику accept. То есть к нашему серверу можно подключиться только определённым образом, а сам сервер может отправлять пакеты куда захочет (например в интернет).

Если в конфиге /etc/nftables.conf мы не обозначили политику для цепочек, то будет использован accept. Именно это и показывает команда nft list ruleset.

Управление правилами.

3.1. Синтаксис.

Общий синтаксис для работы с правилами:

firewall-cmd <правило>

* порядок следования параметров не важен.

где:

  • — дополнительные параметры для создаваемого правила, например –permanent — постоянное правило, то есть будет действовать после перезагрузки. Не обязательный.
  • — по умолчанию, правила создаются для зоны public. Для работы с конкретной зоной ее необходимо указать, например, –zone=dmz. Не обязательный.
  • <правило> — само правило. Обязательный.

Чтобы правила применялись, не забываем их перечитывать:

3.2. Добавление портов.

3.2.1. Открыть порт 80:

3.2.2. Добавить правило для определенной зоны:

3.2.3. Добавить диапазон портов:

3.2.4. Добавить несколько правил одной командой:

3.3. Добавление сервиса.

Использование служб, вместо портов, может повысить удобство управления правилами за счет объединения нескольких портов в одну службу.

3.3.1. Посмотреть список доступных служб:

3.3.2. Разрешить порт, например, для сервиса ntp:

3.3.3. Создать собственную службу:

3.3.4. Добавить порт, например TCP 2200 к службе:

3.3.5. Задать описание для удобства:

3.3.6. Информацию о созданном сервисе можно получить командой:

3.3.7. Теперь созданную службу можно использовать для создания правил, например:

3.4. Rich-Rule.

rich-rule позволяет создавать правила с условиями. Рассмотрим несколько примеров:

3.4.1. Разрешаем службу http с условием, что запросы будут с определенных IP-адресов (подсети 192.168.0):

3.4.2. Или для конкретного порта:

3.4.3. Чтобы заблокировать подсеть можно воспользоваться командой:

3.4.4. Список правил с условиями можно отобразить командой:

3.5. Удаление правил.

Аналогично созданию, но вместо add вводим remove, например –remove-port (удалит порт) или –remove-service (службу).

3.5.1. Удалим правило для открытия 80-о порта:

Настройка firewall в Linux Ubuntu

Firewall, по-русски называемый межсетевым экраном или брандмауэром, занимает важное место в защите системы Linux. Файрвол Linux это пропускной пункт между внутренней и внешней сетью, в котором происходит контроль и управление входящим и исходящим сетевым трафиком

Правила контроля задаются пользователем в интерфейсе межсетевого экрана: здесь он решает, какие порты открыть и какие соединения разрешить.

Разработчики программ для Linux всерьез озабочены защитой операционной системы от несанкционированных вторжений: для скачивания и установки в дистрибутивы Linux доступны десятки брандмауэров с открытым исходным кодом. Но далеко ходить не нужно: встроенная изначально во всех дистрибутивах Linux файрвол-утилита Iptables отлично минимизирует риск хакерских атак и заражения вирусами. При попытке установления соединений с ПК, утилита обращается к своим правилам для проверки того, является ли соединение разрешенным или его следует запретить. Если по соединению нет информации – оно выполняется по умолчанию. Кроме этого, Iptables поможет выполнить резервное копирование и восстановление с файлами.

Если вдруг файрвола Iptables не обнаружилось в вашем дистрибутиве, или вы хотите обновить утилиту, введите следующую команду:

Iptables – первая линия системы безопасности Linux и любимец сетевых администраторов. Настраивается данный Linux файрвол через командную строку при помощи установленных команд. Проблема в том, что начинающему юзеру процесс контроля за поступлением и отправлением трафика бесчисленными командами iptables может показаться слишком сложным. К счастью, существует интерфейс, специально разработанный для упрощения процесса настройки утилиты Iptables: UFW (Uncomplicated Firewall или по-русски «простой брандмауэр»). Кстати, в Linux Ubuntu UFW встроен также по умолчанию. А если вы его удалили, то можете заново загрузить, введя в консоли:

Мы пошагово показываем настройку Uncomplicated Firewall Linux в нашем видео Как настроить фаервол в Ubuntu.  

Команды для управления маршрутизацией

Обозначение: VPN-хост — удаленная сторона (удаленный хост)route < network > — устанавливает указанную маршрутизацию на VPN-хосте, после успешного запуска туннеля. Пример:
route 10.0.10.0 255.255.255.252route-gateway < IP > — устанавливает шлюз на VPN-хосте. Пример:
route-gateway 192.168.0.22
После успешного запуска виртуального туннеля клиенту будет задан шлюз 192.168.0.22route-delay < seconds > — указывает подождать n-секунд перед установкой маршрутов. Пример:
route-delay 5
Т.е. через 5 секунд после установки туннеля будут заданы маршруты.route-up < cmd > — выполнить скрипт или программу < cmd > после установки маршрутов. Пример:
route-up /script.shredirect-gateway — установить шлюзом по умолчанию удаленный сервер. Т.е. когда удаленный пользователь подключается к нашему серверу, то ему будет задан шлюз по умолчанию на наш сервер.

Iptables и другие

Проект iptables, разработанный Расти Расселом (Rusty Russell) в 1999 году для управления netfilter и заменивший в ядре 2.4 ipchains и ряд других инструментов вроде ipnatctl, предлагает более расширяемый способ фильтрации пакетов, обеспечивающий сисадмину больший контроль при упрощении самих правил. Так, в ipchains нужно было создавать правило в каждой цепочке, прослеживая весь маршрут пакета, теперь достаточно одного. Появление модулей позволяло очень просто расширять возможности. В процессе развития проекта iptables был портирован для IPv6 (в 2011 году, ip6tables), добавлялись дополнительные модули (ULOG, nf_conntrack), он научился производить разные манипуляции с пакетами, классифицировать трафик (до седьмого уровня OSI), балансировать нагрузку и многое другое. С ростом количества функций усложнились и настройки. При этом, даже несмотря на некоторую унификацию, каждое расширение имеет свой синтаксис, одни поддерживают диапазоны, отрицание, префиксы, другие — нет. Поначалу каждое изменение правил требовало полного перезапуска брандмауэра, включая выгрузку модулей, что приводило к разрыву установленных соединений. Сейчас такой проблемы нет.

Для простых случаев настройка при помощи iptables — дело нехитрое, но в сложных сетях управлять большим количеством правил становится тяжело; чтобы изучить все настройки и понять, как оно работает, нужно потратить время. Трудно с ходу разобраться, что делают все цепочки, правила начинают повторяться, их становится сложно обслуживать, обновлять и переносить на другие системы.

Неудивительно, что для решения этих проблем были придуманы разные надстройки. Так, в Ubuntu для простой настройки правил используется ufw (Uncomplicated Firewall — несложный файрвол). Например, чтобы открыть доступ к SSH-порту, достаточно ввести

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

Еще один известный проект, позволяющий легко поддерживать сложные правила, — FERM (for Easy Rule Making). В FERM все правила хранятся в одном файле, который легко читается, редактируется и загружается одной командой. Такой файл просто переносить между компьютерами. Сами правила группируются в блоки, содержат переменные, списки, что позволяет задать те же настройки в более коротком и понятном виде. Итоговый размер правил FERM раза в три меньше аналогичных для iptables. Например, запрещаем все соединения, кроме HTTP, SSH и FTP.

Под капотом FERM находится обычный Perl-скрипт, который конвертирует конфигурационные файлы в правила iptables.

В Fedora 18 был анонсирован демон firewalld, ставший официальным приложением для управления настройками netfilter в RHEL 7 / CentOS 7. Последние становятся все популярнее на VDS, а значит, придется столкнуться с их особенностями.

Базовые понятия в Iptables

Все данные отправляются через интернет в форме пакетов. Ядро Linux обеспечивает интерфейс для фильтрации как входящих, так и исходящих пакетов используя таблицы для фильтра пакетов. Iptables – это приложение командной строки, межсетевой экран Linux. Вы можете использовать его для установки, обслуживания и проверки этих таблиц. Могут быть определены сложные таблицы. В каждой таблице может быть несколько цепочек. Цепочки – это ни что иное, как набор правил. Каждое правило определяет, что делать с пакетом, если он соответствует некоторому заданному шаблону. Когда пакет соответствует, задаётся TARGET (действие). Действие может быть обнаружить соответствие с другой цепочкой или одному из трёх специальный значений:

  • ACCEPT (принять): Что означает, пакету будет разрешено прохождение.
  • DROP (сбросить): Что означает, пакету не будет разрешено прохождение, он будет сброшен и «забыт».
  • RETURN (вернут): Означает, пропустить текущую цепочку и вернуться к следующему правилу в цепочке, из которой он был вызван.

В рамках данного руководства мы собираемся работать с одной из таблиц по умолчанию под названием filter. Таблица фильтров имеет три цепочки (набора правил).

  • INPUT – Эта цепочка используется для контроля входящих на сервер пакетов. Вы можете разрешить/заблокировать подключение, в зависимости от порта, протокола или IP-адреса источника.
  • FORWARD – Данная цепочка используется для фильтра входящих на сервер пакетов, но перенаправляемых куда-то ещё.
  • OUTPUT – Эта цепочка используется для фильтра исходящих с вашего сервера пакетов.

Enable port forwarding

After going trough the above steps, we’re ready to active the port forwarding. As an example, I will forward the TCP port 9999 of host 192.168.202.103 to TCP port 80 on host 192.168.202.105.

First I will check that nothing is actually listening on port 9999 of host 192.168.202.103 by doing a telnet to port 9999 on that machine:

jensd@deb:~$ telnet 192.168.202.103 9999
Trying 192.168.202.103…
telnet: Unable to connect to remote host: Connection refused

To be sure that something is listening at port 80 of host 192.168.202.105, where I want to get forwarded, I can do the same check:

jensd@test:~$ telnet 192.168.202.105 80
Trying 192.168.202.105...
Connected to 192.168.202.105.
Escape character is '^]'.
GET /index.html HTTP/1.0

HTTP/1.1 200 OK
Date: Thu, 06 Nov 2014 11:00:49 GMT
Server: Apache/2.2.22 (Debian)
Last-Modified: Thu, 06 Nov 2014 10:48:30 GMT
ETag: "563-b1-5072e6fe83634"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
Connection closed by foreign host.

As you can see, there is a webserver running on port 80 on host 192.168.202.105.

Now, to forward port 9999 on host 192.168.202.103 to port 80 on host 192.168.202.105, we need to add the following rules to the iptables configuration of host 192.168.202.103:

$ sudo iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to-destination 192.168.202.105:80
$ sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.202.105 --dport 80 -j SNAT --to-source 192.168.202.103
$ sudo iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9999 to:192.168.202.105:80

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       tcp  --  0.0.0.0/0            192.168.202.105      tcp dpt:80 to:192.168.202.103

To test if my NAT-rule is working, I will repeat the test with telnet:

jensd@test:~$ telnet 192.168.202.103 9999
Trying 192.168.202.103...
Connected to 192.168.202.103.
Escape character is '^]'.
GET /index.html HTTP/1.0

HTTP/1.1 200 OK
Date: Thu, 06 Nov 2014 11:03:07 GMT
Server: Apache/2.2.22 (Debian)
Last-Modified: Thu, 06 Nov 2014 10:48:30 GMT
ETag: "563-b1-5072e6fe83634"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
Connection closed by foreign host.

To permanently save the rules, execute iptables-save

CentOS/RHEL:

$ sudo iptables-save|sudo tee /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Thu Nov  6 12:02:25 2014
*nat
:PREROUTING ACCEPT 
:INPUT ACCEPT 
:OUTPUT ACCEPT 
:POSTROUTING ACCEPT 
-A PREROUTING -p tcp -m tcp --dport 9999 -j DNAT --to-destination 192.168.202.105:80
-A POSTROUTING -d 192.168.202.105/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.202.103
COMMIT
# Completed on Thu Nov  6 12:02:25 2014
# Generated by iptables-save v1.4.21 on Thu Nov  6 12:02:25 2014
*filter
:INPUT ACCEPT 
:FORWARD ACCEPT 
:OUTPUT ACCEPT 
COMMIT
# Completed on Thu Nov  6 12:02:25 2014

Debian:

jensd@deb:~$ sudo iptables-save | sudo tee /etc/iptables.up.rules
# Generated by iptables-save v1.4.14 on Thu Nov  6 12:07:27 2014
*nat
:PREROUTING ACCEPT 
:INPUT ACCEPT 
:OUTPUT ACCEPT 
:POSTROUTING ACCEPT 
-A PREROUTING -p tcp -m tcp --dport 9999 -j DNAT --to-destination 192.168.202.103:80
-A POSTROUTING -d 192.168.202.103/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.202.105
COMMIT
# Completed on Thu Nov  6 12:07:27 2014
# Generated by iptables-save v1.4.14 on Thu Nov  6 12:07:27 2014
*filter
:INPUT ACCEPT 
:FORWARD ACCEPT 
:OUTPUT ACCEPT 
COMMIT
# Completed on Thu Nov  6 12:07:27 2014

Проверить текущий статус

Чтобы проверить статус firewalld выполните

sudo firewall-cmd —state

Возможные варианты:

running
not running

Проверить статус с помощью systemctl:

sudo systemctl status -l firewalld

firewalld.service — firewalld — dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-05-12 00:00:01 EEST; 2h 55min ago 1683840473
Docs: man:firewalld(1)
Main PID: 783 (firewalld)
Tasks: 2
CGroup: /system.slice/firewalld.service
└─783 /usr/bin/python2 -Es /usr/sbin/firewalld —nofork —nopid

May 12 00:29:53 localhost.localdomain systemd: Starting firewalld — dynamic firewall daemon…
May 12 00:29:53 localhost.localdomain systemd: Started firewalld — dynamic firewall daemon.
May 12 00:29:53 localhost.localdomain firewalld: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.

Форвардинг портов на другую машину

По сути форвардинг портов на другую машину не отличается от форварда портов в пределах одной машины, но по существу это не одно и то же, поскольку пакеты будут передаваться не в пределах одной машины, как в случае с loopback-интерфейсом, когда фактически пакеты транслируются в пределах сетевого стека. Обычно форвардинг портов производится с определенного порта внешнего интерфейса на определенный порт машины во внутренней сети, поэтому между сетевыми интерфейсами должен быть настроен форвардинг. Например, проброс порта 3389 для работы удаленного рабочего стола (RDP) с внешнего сетевого интерфейса (192.168.100.25) на порт 3389 на одну из машин во внутренней сети (192.168.0.15):

iptables -t nat -A PREROUTING -d 192.168.100.25/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.15:3389
iptables -t nat -A POSTROUTING -s 192.168.0.15/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.100.25
Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: