В этой статье хочу поделиться опытом установки и настройки межсетевого экрана на базе Linux RHEL, в частности RedOS.

Что же из себя представляет NGFW (Next Generation Firewall)? За основу я взял модель FW Check Point. А значит, как минимум:

  • Firewall Blade - Собственно сам брандмауэр

  • IPS - Intruder Prevention System - система обнаружения и блокировки атак на основе поведенческого анализа по базе сигнатур

  • IPSec - построение VPN-туннелей (site-2-site, client-2-site)

  • Application Control / URL Filtering - контроль приложений и фильтрация по URL

  • Antivirus / AntiBot - проверка на вирусы/боты на лету, анализ пакетов

  • SandBlast - песочница с очисткой активного содержимого в файлах

На текущий момент из всего списка компонентов реализовано только FW, IPS, IPSec VPN. Напомню, что все компоненты OpenSource, а сама RedOS бесплатна для домашнего использования.

Версии ПО:
RedOS Murom 7.3.3 (server-minimal)
Suricata 7.0.1
WireGuard 1.0
OpenVPN 2.6.0
ShadowSocks 2.9.1
StrongSwan 5.9.9

В качестве FW будем использовать nftables (в RedOS он хоть и встроен в ядро, самой утилиты управления нет, предполагается, что админ сам выберет утилиту firewalld, nft, iptables)

При настройке всех VPN-сервисов важно знать, что сети, выдаваемые клиентам не должны пересекаться, повторяться и т.п.

Сразу оговорю, все настройки лучше делать под root. Сейчас в меня посыпятся хейты, однако сразу сообщу, NGFW - это не пользовательская задача. И да, SSH-доступ следует открывать только для внутренних администраторов, с внешней стороны его лучше не открывать. Также PermitRootLogin ставить no, использовать sudoers и т.п. и желательно использовать ssh-ключи с паролем. И да, параметр Listen в /etc/ssh/sshd_config лучше указывать конкретный IP из внутренней сети.

Итак, приступим. Этап 1. Настройка FW

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

dnf update -y
reboot

Во-первых необходимо установить и преднастроить FW, для этого ставим и настраиваем nftables. Предварительно проверяем, что же установлено.

iptables -V
iptables v1.8.9 (nf_tables)

В выводе nf_tables означает, что в ядре используется nftables. В моем случае я использовал mininal server инсталляцию, поэтому никаких "обвесов" у меня нет. Но для общего случая следует проверить и по необходимости деинсталировать лишнее

Удаляем обвесы nftables
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
dnf remove firewalld

Проверим все ли необходимые модули ядра загружены. xt_conntrack / nf_conntrack (контроль состояния сессий) и 802.1q (для поддержки VLAN)

lsmod | grep xt_conntrack
lsmod | grep 8021q

Если таковых нет, необходимо проверить, доступны ли эти модули

modprobe xt_conntrack
modprobe 8021q

Если ошибок нет, то добавляем модули для загрузки в boot time. Создаем файл /etc/modules-load.d/mymod.conf

xt_conntrack
8021q

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

dnf install nftables
systemctl enable nftables --now

Далее в файле /etc/sysconfig/nftables.conf указываем откуда подгружать конфиг FW

include "/etc/nftables/mynetworkfw.nft"

Далее есть 2 варианта управления файрволом, через конфиг и службу, либо прямыми командами nft и сохранением конфига nft list ruleset >/etc/nftables/mynetworkfw.nft.Принципиально разницы нет, однако при перезагрузке службы Handle правил будет обнуляться (то же самое при перезагрузке системы в целом). При редактировании правил через команды nft, Handle будет уникальным.

Теперь собственно необходим дефолтовый конфиг nftables. В частности, input/output и сама цепочка forward. Ниже приведу примерный файл /etc/nftables/mynetworkfw.nft

table inet fw {
        chain incoming {
                type filter hook input priority filter; policy drop;
                ct state established,related accept
                ip saddr { 192.168.10.50, 192.168.20.25 } tcp dport 22 counter accept comment "SSH_admin"
                iifname "lo" accept comment "Localhost"
                # IPSec VPN Clients
                udp port 1194 counter accept comment "OpenVPN_clients"
                udp port 51820 counter accept comment "WireGuard_clients"
                udp port { 4500,500 } counter accept comment "IPSec_IKEv2_clients"
                tcp port 26789 counter accept comment "ShadowSocks_clients"
        }

        chain outgoing {
                type filter hook output priority filter; policy drop;
                ct state established,related accept
                ip daddr 192.168.1.1 udp dport 53 oifname "ens224.40" counter accept comment "DNS_UDP_requests"
                ip daddr 192.168.1.1 tcp dport 53 oifname "ens224.40" counter accept comment "DNS_TCP_requests"
                tcp dport { 80, 443, 21 } counter accept comment "FW_to_Inet"
                oifname "lo" accept comment "Localhost"
        }

        chain forwarding {
                type filter hook forward priority filter; policy drop;
                ct state established,related accept
                counter queue to 0
        }
}

Поясню по конфигу, 192.168.10.50, 192.168.20.25 это IP-адреса админов NGFW. 192.168.1.1 это наш роутер, подключенный в инет и осуществляющий NAT и играющий роль DNS-сервера локальной сети. Разумеется это лишь пример. Обратите внимание, что фильтрация трафика осуществляется не только на вход к серверу, но и на выход. Когда закончим настройку NGFW основная цепочка будет именно forwarding, тут будут правила NGFW. Забегаю наперед, counter queue to 0 - это уже IPS-правило, его надо будет указать уже после запуска Suricata. Кроме того, в FW уже преднастроены клиенты VPN с портами по умолчанию. Если порты в настройках VPN-сервисов указываете другие, то и в FW их надо учесть. Интерфейсы ens192 (external) и ens224 (internal), на последний из них приходит trunc (802.1q). Все настройки интерфейсов располагаются /etc/sysconfig/network-scripts/, где ifcfg-<interface> - настройки интерфейса, route-<interface> настройки маршрутов если на интерфейсе их не 1. Примеры таких настроек в спойлере

Настройки интерфейсов

ifcfg-ens192

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="manual"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens192"
DEVICE="ens192"
ONBOOT="yes"
UUID="3cec767a-e4ba-3130-839e-5588d3602a81"
IPADDR="192.168.1.254"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="192.168.1.1"
DNS2="8.8.8.8"

узнать UUID интерфейса можно через nmcli con show

отсюда DNS попадут в /etc/resolv.conf, а GATEWAY в таблицу маршрутизации, DEFROUTE=yes означает, что маршрут 0.0.0.0/0.0.0.0 будет через GATEWAY

ifcfg-ens224

BOOTPROTO="none"
DEVICE="ens224"
ONBOOT="yes"
TYPE="Ethernet"

Обратите внимание, что здесь нет особо никаких настроек. Это публикация интерфейса для использования в 802.1q. UUID здесь также не указан, чтобы NetworkManager не управлял этой заглушкой.

ifcfg-ens224.20

DEVICE=ens224.20
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.20.1
PREFIX=24
NETWORK=192.168.20.0
VLAN=yes

после расписывания всех файлов конфигураций, рестартанем NetworkManager

systemctl restart NetworkManager

Итак, предварительно настроили FW. правила FW применяются "на лету", а значит при ручном написании правил через команду nft, создавая chain в таблице не спешите ставить drop, первоначально лучше ставить accept, чтобы не потерять подключение к серверу.

Этап 2. Установка Suricata.

По дефолту, в репозитории Fedora Extra (epel) есть пакет Suricata, однако он скомпилирован с ограничениями, да и версия Python нас не устроит, так что придется собирать из исходников. Установим репозиторий epel, скачиваем исходник Suricata и устанавливаем нужные компоненты для компиляции.

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum localinstall epel-release-latest-7.noarch.rpm
cd /usr/src
wget https://www.openinfosecfoundation.org/download/suricata-7.0.1.tar.gz
tar xzvf suricata-7.0.1.tar.gz
rm -f suricata-7.0.1.tar.gz
cd suricata-7.0.1/
dnf groupinstall "Development Tools"
dnf install -y pcre2-devel libyaml-devel jansson-devel libpcap-devel pcapy python3-pcapy libcap-ng-devel file-devel lz4-devel rustc cargo
dnf install -y libunwind libunwind-devel GeoIP-devel zlib zlib-devel libnetfilter_queue-devel libnetfilter_log-devel
./configure --enable-nfqueue --enable-nflog --prefix=/usr/ --sysconfdir=/etc/ --localstatedir=/var/
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
python -m pip install pyyaml
make
make install-full

Дальше нам необходимо поправить несколько моментов. Во-первых, надо настроить запуск службы suricata. Для этого создаем файл /usr/lib/systemd/system/suricata.service

[Unit]
Description=Suricata IDS/IDP daemon
After=network.target
Requires=network.target
Documentation=man:suricata(8) man:suricatasc(8)
Documentation=https://redmine.openinfosecfoundation.org/projects/suricata/wiki

[Service]
Type=forking
Environment=LD_PREDLOAD=/usr/lib/libtcmalloc_minimal.so.4
Environment=CFG=/etc/suricata/suricata.yaml PID=/var/run/suricata/suricata.pid
CapabilityBoundingSet=CAP_NET_ADMIN
PIDFile=/var/run/suricata/suricata.pid
ExecStart=/usr/bin/suricata -D -q 0 -q 1 -c $CFG --pidfile $PID -D
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID
PrivateTmp=yes
InaccessibleDirectories=/home /root
ReadOnlyDirectories=/boot /usr /etc

[Install]
WantedBy=multi-user.target

Далее делаем chmod 755 /usr/lib/systemd/system/suricata.service и systemctl daemon-reload. Проверяем права доступа к созданным папкам, файлам, и т.д. /var/run/suricata, /etc/suricata/, /var/log/suricata. Если все права выставлены верно, значит проблем с запуском не возникнет. Запускам службу и ставим в автозапуск. systemctl enable suricata --now

Далее в cron добавляем обновление баз и перезагрузку этих правил. crontab -e

0 0 * * * /usr/lib/suricata-update >>/var/log/suricata/update.log
5 0 * * * /usr/lib/suricatasc -c reload-rules

Этап 3. Часть 1. Установка WireGuard

Установка WireGuard в RedOS задача не тривиальная.

Для начала необходимо установить необходимые репозитории. В частности, от Oracle Linux 7.

cd
wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oraclelinux-release-el7-1.0-17.el7.x86_64.rpm
wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oraclelinux-developer-release-el7-1.0-6.el7.x86_64.rpm
yum localinstall oraclelinux-release-el7-1.0-17.el7.x86_64.rpm
yum localinstall oraclelinux-developer-release-el7-1.0-6.el7.x86_64.rpm

Потом выполнить преконфиг и установку в соответствии с Installation manual WireGuard

yum-config-manager --disable ol7_developer
yum-config-manager --enable ol7_developer_UEKR6
yum-config-manager --save --setopt=ol7_developer_UEKR6.includepkgs='wireguard-tools*'
dnf install wireguard-tools

После чего, эти репозитории можно отключить/удалить и т.п. Больше они не потребуются, но могут мешать. Лучше отключать после чего сделать очистку dnf clean packages

yum-config-manager --disable ol7_developer
yum-config-manager --disable ol7_developer_UEKR6
# и д.р. пакеты от Oracle Linux. либо вручную в файлах /etc/yum.repos.d/.repo
# установить параметр enable=0
# oraclelinux-developer-ol7.repo
# oracle-linux-ol7.repo
# uek-ol7.repo
# virt-ol7.repo

После чего также проверяем наличие модуля ядра, его автозагрузку и т.п.

lsmod | grep wireguard
modprobe wireguard
echo wireguard >>/etc/modules-load.d/mymod.conf

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

cd /etc/wireguard
wg genkey | tee priv.key | wg pubkey > pub.key
chmod 600 *.key

Настраиваем подключение wireguard. Создаем файл /etc/wireguard/wgtun.conf

[Interface]
PrivateKey = 8Kfqf4QdHL1pBKxT1NknbC7k9JCjyRj6hO1Mj+a4yU8=
Address = 172.16.0.1/23
ListenPort = 51820

# Далее настройки каждого клиента
# Клиент 1
[Peer]
PublicKey = OIhY7IdxElaDH0amgCiZnLXx22sFn8QV8t40iihLaz8=
AllowedIPs = 172.16.0.2/30

# Клиент 2
[Peer]
PublicKey = QKqUuHDAtSw/xYs2AywdqiRHvcr1UzBwrKY7nphU8xg=
AllowedIPs = 172.16.0.5/30

После чего проверяем его, если ошибок нет, то включаем службу

wg-quick up wgtun
systemctl enable wg-quick@wgtun.service

Этап 3. Часть 2. Установка OpenVPN / ShadowSocks

Установка OpenVPN простая, у RedOS есть 2 версии OpenVPN и OpenVPN-Гост. Кому какой нравится. Мне ГОСТ не требуется, поэтому тут все просто. dnf install openvpn -y

Пример конфигурации OpenVPN. Создание CA опишу ниже. Этот CA мы будем использовать для OpenVPN / StrongSwan. Обратите внимание, что критично для конфигураций OpenVPN - это размещение конфигов клиента и сервера. В общих чертах, указание port обязательно для server и необязательно для client. Запускать службу OpenVPN будем так: systemctl start openvpn@config.service (для файла конфигурации /etc/openvpn/config.conf), systemctl start openvpn-client@config.service (для файла /etc/openvpn/client/config.conf) или systemctl start openvpn-server@config.service (для файла /etc/openvpn/server/config.conf). В нашем случае это файл /etc/openvpn/server/myvpnserver.conf

port 1194
proto udp
dev tun0

ca /etc/openvpn/server/myvpnserver/ca.crt
cert /etc/openvpn/server/myvpnserver/server.crt
key /etc/openvpn/server/myvpnserver/server.key
crl-verify /etc/openvpn/server/myvpnserver/crl.pem
dh /etc/openvpn/server/myvpnserver/dh.pem

tls-server
tls-timeout 120
tls-auth /etc/openvpn/server/myvpnserver/ta-srv.key 0

server 172.16.2.0 255.255.254.0
route 172.16.2.0 255.255.254.0

;routes
;see DEFAULT in CCD

;DHCP-Option
;see DEFAULT in CCD

ifconfig-pool-persist /etc/openvpn/server/00-universal/cips
client-config-dir /etc/openvpn/server/00-universal/ccd

management localhost 7510 /etc/openvpn/server/myvpnserver/pwd
keepalive 10 120
comp-lzo

persist-key
persist-tun

status /var/log/openvpn/myvpnserver-status.log
log /var/log/openvpn/myvpnserver-log.log

Теперь перед запуском сервиса необходимо создать все используемые файлы и настроить SELinux

dnf install libsemanage libsemanage-python
semanage port -a -t openvpn_port_t -p tcp 7510
mkdir /etc/openvpn/server/myvpnserver
mkdir /etc/openvpn/server/myvpnserver/ccd
mkdir /var/log/openvpn
echo "superhiddenpassword" >/etc/openvpn/server/myvpnserver/pwd
chmod 700 /etc/openvpn/server/myvpnserver/pwd
openvpn --genkey --secret /etc/openvpn/server/myvpnserver/ta-srv.key

Файл cips OpenVPN создаст сам, в нем будет хранить закрепленные за пользователями/серверами IP-адреса. Про сертификаты, ключи Diffie-Hellman, списки отзыва сертификатов ниже, в разделе про StrongSwan. А пока проверим запуск OpenVPN (будут ошибки из-за отсутствующих файлов)

systemctl start openvpn-server@myvpnserver.service
# увидели ошибку, теперь добавим в загрузку, но без запуска
systemctl enable openvpn-server@myvpnserver.service

Установка же ShadowSocks не тривиальна и снова потребует сборки и компиляции

dnf install git pcre-devel asciidoc xmlto mbedtls-devel libsodium-devel libcares-devel libev-devel
cd /usr/src
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev/
git submodule update --init --recursive
./autogen.sh
./configure
make
make install

Создаем пользователя, папку конфигов и сервис (для удобства openvpn-like сервис)

adduser --system --no-create-home -s /sbin/nologin shadowsocks
mkdir -p /etc/shadowsocks

Содержание файла /usr/lib/systemd/system/shadowsocks@.service

[Unit]
Description=Shadowsocks proxy server

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks/%i.json -a shadowsocks -v start
ExecStop=/usr/local/bin/ss-server -c /etc/shadowsocks/%i.json -a shadowsocks -v stop

[Install]
WantedBy=multi-user.target

Примерное содержание конфига ss (/etc/shadowsocks/main.json)

{
    "server":"178.128.122.54",
    "server_port": 26789,
    "password":"your_password",
    "timeout": 300,
    "method": "aes-256-gcm",
    "fast_open": true
}

Права и запуск службы

chmod 755 /etc/systemd/system/shadowsocks@.service
systemctl daemon-reload
systemctl enable shadowsocks@main.service --now

Этап 3. Часть 3. Установка и настройка StrongSwan (IPSec IKEv2)

Устанавливаем и запускаем

dnf install strongswan
systemctl enable strongswan --now

Создаем CA (без него не построить туннели на базе сертификатов). Лучше такой CA не держать на сервере в публичной сети, по крайней мере его приватный ключ. Для этой задачи штатно можно использовать strongswan pki, openssl, либо готовый скрипт easy-rsa. Мы возьмем последний, поскольку будем делать универсальный CA для служб OpenVPN и StrongSwan.

dnf install easy-rsa
# забираем установленный набор в папку
mkdir /usr/ca
chmod 700 /usr/ca
cd /usr/ca
cp -Rv /usr/share/easy-rsa/3.0.8/ ./
# Инициируем CA
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-dh
# Создаем сертификат для OpenVPN сервера
./easyrsa gen-req ovpn nopass
./easyrsa sign-req server ovpn
./easyrsa gen-crl
# Копируем нужные ключи для OpenVPN
cp ./pki/ca.crt /etc/openvpn/server/myvpnserver/
cp ./pki/issued/ovpn.crt /etc/openvpn/server/myvpnserver/server.crt
cp ./pki/private/ovpn.key /etc/openvpn/server/myvpnserver/server.key
cp ./pki/dh.pem /etc/openvpn/server/myvpnserver/
cp ./pki/crl.pem /etc/openvpn/server/myvpnserver/
# Можно запускать наш OpenVPN
systemctl start openvpn-server@myvpnserver.service

Инициировали CA, выпустили сертификат, запустили OpenVPN. Что дальше? Настраиваем strongswan.

# Создаем новый тип сертификата IPSec
cp ./x509-types/serverClient ./x509-types/ipsec
# Заменяем строку
extendedKeyUsage = serverAuth,clientAuth
# на
extendedKeyUsage = serverAuth, clientAuth, 1.3.6.1.5.5.7.3.17
# и добавляем Subject Alternative Names. Важно указать реальные IP и привязанные при наличии DNS
subjectAltName=DNS:vpn.example.com,DNS:localhost,IP:127.0.0.1,IP:185.185.101.23,DNS:185.185.101.23
# В файл./vars добавляем переменные
set_var EASYRSA_CERT_EXPIRE     3650
set_var EASYRSA_EXTRA_EXTS      "DNS:vpn.example.com,DNS:localhost,IP:127.0.0.1,IP:185.185.101.23,DNS:185.185.101.23"
# Все готово, выпускаем сертификат
./easyrsa gen-req swan nopass
./easyrsa sign-req ipsec swan
# Проверяем наши сертификаты
openssl x509 -noout -text -in ./pki/issued/swan.crt
# Должны быть указаны параметры:
X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication, 1.3.6.1.5.5.7.3.17
X509v3 Subject Alternative Name:
                DNS:vpn.example.com, DNS:localhost, IP Address: 127.0.0.1, IP Address:185.185.101.23, DNS:185.185.101.23
# Теперь копируем все необходимое
cp ./pki/ca.crt /etc/strongswan/ipsec.d/cacerts/ca.pem
cp ./pki/issued/swan.crt /etc/strongswan/ipsec.d/certs/swan.pem
cp ./pki/private/swan.key /etc/strongswan/ipsec.d/private/swan.pem
# Подключаем сертификат, в файл /etc/strongswan/ipsec.secrets вписываем приватный ключ
: RSA swan.pem

Теперь пишем конфиг /etc/strongswan/ipsec.conf

config setup
    charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
    keyexchange=ikev2
    ike=aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024!
    esp=aes128gcm16-ecp256,aes256gcm16-ecp384,aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024,aes128gcm16,aes256gcm16,aes128-sha256,aes128-sha1,aes256-sha384,aes256-sha256,aes256-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftsubnet=0.0.0.0/0
    leftcert=swan.pem
    right=%any
    rightdns=8.8.8.8,8.8.4.4
    rightsourceip=172.16.4.0/23

conn IPSec-IKEv2
    keyexchange=ikev2
    auto=add

conn IPSec-IKEv2-EAP
    also="IPSec-IKEv2"
    rightauth=eap-mschapv2
    rightauthby2=pubkey
    rightsendcert=never
    eap_identity=%any

conn CiscoIPSec
    keyexchange=ikev1
    forceencaps=yes
    authby=xauthrsasig
    xauth=server
    auto=add

Клиентам StrongSwan нужны будут свои сертификаты в P12. Для OpenVPN можно использовать pem, либо при использовании eToken,ruToken,JaCarta и пр. - pfx с паролем. Для этого можно использовать встроенные в easyrsa командлеты. export-p7, export-p12.

Этап 4. Включение маршрутизации

Для включения маршрутизации вносим изменения в sysctl. /etc/sysctl.d/10-forward.conf

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
# Включаем "на лету". После переагрузки ОС параметры подтянутся автоматически.
sysctl -p /etc/sysctl.d/10-forward.conf

Послесловие

Ну и в конце, после настроек необходимых VPN-сервисов не забывайте открывать для них входящие и исходящие правила на FW. Также для маршрутизации и NAT необходимо прописывать соответствующие правила МЭ.

Полезные ссылки

Комментарии (7)


  1. Darka
    11.10.2023 21:28
    +7

    КПДВ, таги - кликбейт, NGFW здесь и не пахнет.


  1. toxella
    11.10.2023 21:28
    +2

    Для таких целей проще PfSense использовать


  1. NavL
    11.10.2023 21:28
    +1

    Зачем пытаться создать велосипед?Есть достаточное кол-во готовых open source решений. Pfsense,OpnSense,IPfire,VyOS в конце концов


    1. podvox23
      11.10.2023 21:28

      Потому что РедОС находится в реестре отечественного ПО и он закупается для импортозамещения


  1. krylov_sn
    11.10.2023 21:28

    Как и многие повелся на заголовок. Вернулся к IPfire - там не только куча возможностей, но и GUI нормальное есть.


  1. MaxStirlits
    11.10.2023 21:28

    Секас с Федей. Спасибо за мануал.


  1. Shaman_RSHU
    11.10.2023 21:28

    Firewall != NGFW != много много много разных opensource утилит (и причем тут конкретно RedOS, если это все есть везде, хоть в ArchLinux?)