В этой статье хочу поделиться опытом установки и настройки межсетевого экрана на базе Linux RHEL, в частности RedOS.
Что же из себя представляет NGFW (Next Generation Firewall)? За основу я взял модель FW Check Point. А значит, как минимум:
На текущий момент из всего списка компонентов реализовано только FW, IPS, IPSec VРN. Напомню, что все компоненты OpenSource, а сама RedOS бесплатна для домашнего использования.
Версии ПО:
В качестве FW будем использовать nftables (в RedOS он хоть и встроен в ядро, самой утилиты управления нет, предполагается, что админ сам выберет утилиту firewalld, nft, iptables)
При настройке всех VРN-сервисов важно знать, что сети, выдаваемые клиентам не должны пересекаться, повторяться и т.п.
В связи с вышедшим указом о запрете публикаций о популяризации средств обхода блокировок, данная статья не будет содержать информации о настройке каких-либо VРN-сервисов, предназначенных для обхода блокировок. Данная статья содержит только информацию о том, как построить собственный VРN для целей доступа к корпоративной либо домашней сети, а также соединений офисов точка-точка.
Сразу оговорю, все настройки лучше делать под root. Сейчас в меня посыпятся хейты, однако сразу сообщу, NGFW - это не пользовательская задача. И да, SSH-доступ следует открывать только для внутренних администраторов, с внешней стороны его лучше не открывать. Также PermitRootLogin ставить no, использовать sudoers и т.п. и желательно использовать ssh-ключи с паролем. И да, параметр Listen в /etc/ssh/sshd_config
лучше указывать конкретный IP из внутренней сети.
Итак, приступим.
Разумеется первым, а вернее нулевым действием после установки чистой ОС ее надо обновить.
dnf update -y
reboot
Во-первых необходимо установить и преднастроить FW, для этого ставим и настраиваем nftables. Предварительно проверяем, что же установлено.
iptables -V
iptables v1.8.9 (nf_tables)
В выводе nf_tables означает, что в ядре используется nftables. В моем случае я использовал mininal server инсталляцию, поэтому никаких «обвесов» у меня нет. Но для общего случая следует проверить и по необходимости деинсталировать лишнее
Удаляем обвесы nftables
Проверим все ли необходимые модули ядра загружены. 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"
udp port 1194 counter accept comment "ОpеnVРN_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 уже преднастроены клиенты VРN с портами по умолчанию. Если порты в настройках VРN-сервисов указываете другие, то и в FW их надо учесть. Интерфейсы ens192 (external) и ens224 (internal), на последний из них приходит trunc (802.1q). Все настройки интерфейсов располагаются /etc/sysconfig/network-scripts/
, где ifcfg-<interface>
- настройки интерфейса, route-<interface>
настройки маршрутов если на интерфейсе их не 1. Примеры таких настроек в спойлере
Настройки интерфейсов
Итак, предварительно настроили FW. правила FW применяются «на лету», а значит при ручном написании правил через команду nft, создавая chain в таблице не спешите ставить drop, первоначально лучше ставить accept, чтобы не потерять подключение к серверу.
По дефолту, в репозитории 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
Установка 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
UPD: Подробнее про использование WireGuard прочитать тут
Установка ОpеnVРN простая, у RedOS есть 2 версии ОpеnVРN и ОpеnVРN-Гост. Кому какой нравится. Мне ГОСТ не требуется, поэтому тут все просто. dnf install ОpеnVРN -y
Пример конфигурации ОpеnVРN. Создание CA опишу ниже. Этот CA мы будем использовать для ОpеnVРN / StrongSwan. Обратите внимание, что критично для конфигураций ОpеnVРN - это размещение конфигов клиента и сервера. В общих чертах, указание port обязательно для server и необязательно для client. Запускать службу ОpеnVРN будем так: systemctl start ореnvрn@config.service
(для файла конфигурации /etc/ореnvрn/config.conf
), systemctl start ореnvрn-client@config.service
(для файла /etc/ореnvрn/client/config.conf
) или systemctl start ореnvрn-server@config.service
(для файла /etc/ореnvрn/server/config.conf
). В нашем случае это файл /etc/ореnvрn/server/myvрnserver.conf
port 1194
proto udp
dev tun0
ca /etc/ореnvрn/server/myvрnserver/ca.crt
cert /etc/ореnvрn/server/myvрnserver/server.crt
key /etc/ореnvрn/server/myvрnserver/server.key
crl-verify /etc/ореnvрn/server/myvрnserver/crl.pem
dh /etc/ореnvрn/server/myvрnserver/dh.pem
tls-server
tls-timeout 120
tls-auth /etc/ореnvрn/server/myvрnserver/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/ореnvрn/server/00-universal/cips
client-config-dir /etc/ореnvрn/server/00-universal/ccd
management localhost 7510 /etc/ореnvрn/server/myvрnserver/pwd
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/ореnvрn/myvрnserver-status.log
log /var/log/ореnvрn/myvрnserver-log.log
Теперь перед запуском сервиса необходимо создать все используемые файлы и настроить SELinux
dnf install libsemanage libsemanage-python
semanage port -a -t ореnvрn_port_t -p tcp 7510
mkdir /etc/ореnvрn/server/myvрnserver
mkdir /etc/ореnvрn/server/myvрnserver/ccd
mkdir /var/log/ореnvрn
echo "superhiddenpassword" >/etc/ореnvрn/server/myvрnserver/pwd
chmod 700 /etc/ореnvрn/server/myvрnserver/pwd
ореnvрn --genkey --secret /etc/ореnvрn/server/myvрnserver/ta-srv.key
Файл cips ОpеnVРN создаст сам, в нем будет хранить закрепленные за пользователями/серверами IP-адреса. Про сертификаты, ключи Diffie-Hellman, списки отзыва сертификатов ниже, в разделе про StrongSwan. А пока проверим запуск ОpеnVРN (будут ошибки из-за отсутствующих файлов)
systemctl start ореnvрn-server@myvрnserver.service
увидели ошибку, теперь добавим в загрузку, но без запуска
systemctl enable ореnvрn-server@myvрnserver.service
UPD: Подробнее про использование ОреnVРN прочитать тут
Установка же 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
Создаем пользователя, папку конфигов и сервис (для удобства ОpеnVРN-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
Устанавливаем и запускаем
dnf install strongswan
systemctl enable strongswan --now
Создаем CA (без него не построить туннели на базе сертификатов). Лучше такой CA не держать на сервере в публичной сети, по крайней мере его приватный ключ. Для этой задачи штатно можно использовать strongswan pki, openssl, либо готовый скрипт easy-rsa. Мы возьмем последний, поскольку будем делать универсальный CA для служб ОpеnVРN и 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
Создаем сертификат для ОpеnVРN сервера
./easyrsa gen-req oVРN nopass
./easyrsa sign-req server oVРN
./easyrsa gen-crl
UPD: Подробнее про использование EasyRSA прочитать тут
Копируем нужные ключи для ОреnVРN
cp ./pki/ca.crt /etc/ореnvрn/server/myvрnserver/
cp ./pki/issued/ovрn.crt /etc/ореnvрn/server/myvрnserver/server.crt
cp ./pki/private/ovрn.key /etc/ореnvрn/server/myvрnserver/server.key
cp ./pki/dh.pem /etc/ореnvрn/server/myvрnserver/
cp ./pki/crl.pem /etc/ореnvрn/server/myvрnserver/
Можно запускать наш ОpеnVРN
systemctl start ореnvрn-server@myVРNserver.service
Инициировали CA, выпустили сертификат, запустили ОpеnVРN. Что дальше? Настраиваем strongswan.
Создаем новый тип сертификата IPSec
cp ./x509-types/serverClient ./x509-types/ipsec
Заменяем строку
extendedKeyUsage = serverAuth,clientAuth
на
extendedKeyUsage = serverAuth, clientAuth, 1.3.6.1.5.5.7.3.17
В файл ./vars добавляем переменные
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_EXTRA_EXTS "DNS:VРN.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:VРN.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. Для ОpеnVРN можно использовать pem, либо при использовании eToken,ruToken,JaCarta и пр. - pfx с паролем. Для этого можно использовать встроенные в easyrsa командлеты. export-p7, export-p12.
UPD: Подробнее про использование VРN прочитать тут
DHCP-Relay - важная составляющая любого маршрутизатора (тем более FW)
Установка пакета также тянет за собой файл сервиса, его мы кастомизируем, для более гибкой настройки
dnf install dhcrelay
Создадим директорию для конфигураций различных инстанций:
mkdir /etc/dhcp/dhcrelay.d
Вот пример конфигурации DHCP-Relay: (/etc/dhcp/dhcrelay.d/main-server.conf):
UP=vlan100
DOWN="-id vlan200 -id vlan500"
SERVER=192.168.1.1
Теперь кастомизируем файл службы, для этого можно взять за основу имеющийся файл /lib/systemd/system/dhcrelay.service. Наш файл службы будет иметь название /etc/systemd/system/dhcrelay@.service:
[Unit]
Description=DHCP Relay Agent Daemon
Documentation=man:dhcrelay(8)
Wants=network-online.target
After=network-online.target
[Service]
Type=notify
EnvironmentFile=/etc/dhcp/dhcrelay.d/%i.conf
ExecStart=/usr/sbin/dhcrelay -d --no-pid -iu $UP $DOWN $SERVER
StandardError=null
[Install]
WantedBy=multi-user.target
Запуск и автозапуск соответственно будет таким:
systemctl enable --now dhcrelay@main-server.service
Для идентификации пользователей аля Identity через AD. Требует интеграцию с LDAP
cd /usr/src
wget https://github.com/FreeRADIUS/freeradius-server/releases/download/release_3_2_3/freeradius-server-3.2.3.tar.gz
tar -xzvf freeradius-server-3.2.3.tar.gz
rm -f freeradius-server-3.2.3.tar.gz
cd freeradius-server-3.2.3/
dnf install libtalloc-devel openssl-devel
./configure
make
make install
Опишем сервис /usr/lib/systemd/system/radius.service
:
[Unit]
Description=RADIUS Auth-proxy server
[Service]
User=radius
Group=root
Type=forking
ExecStart=/usr/local/sbin/radiusd
[Install]
WantedBy=multi-user.target
Создадим пользователя и укажем права на каталоги:
adduser --system --no-create-home -s /sbin/nologin radius
chown -R radius /usr/local/var/run/radiusd
chown -R radius /usr/local/var/log/radius
systemctl enable radius --now
Конфиги лежат тут:
/usr/local/etc/raddb/radiusd.conf
/usr/local/etc/raddb/proxy.conf
В процессе make install
генерируется самоподписной-корневой сертификат, сертификат сервера и сертификат клиента. Все сертификаты экспортируются в DER-формат. Клиентский сертификат также экспортируется в p12 с паролем: whatever. Внимание - сертификаты выпускаются сроком на 60 дней
Все сертификаты располагаются тут:
/usr/local/etc/raddb/certs/
Для включения маршрутизации вносим изменения в 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
Послесловие
Ну и в конце, после настроек необходимых VРN-сервисов не забывайте открывать для них входящие и исходящие правила на FW. Также для маршрутизации и NAT необходимо прописывать соответствующие правила МЭ.
Оф.сайт Suricata
Установка и настройка StrongSwan на Centos 7
Утилита easyrsa
Статья является переносом собственной статьи на habr