15.11. ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ НА УРОВНЕ ФИЛЬТРАЦИИ СЕТЕВЫХ ПАКЕТОВ

Для фильтрации сетевых пакетов применяется пакетный фильтр, настраиваемый в файле pf.conf. Файл pf.conf хранится в папке etc контроллера.
 
На картинке выше представлен пример файла pf.conf, содержащий определенный набор правил.
Строки с символом # вначале закомментированы и их содержимое не применяется.
Все правила, прописанные в файле, применяются сверху вниз.
 
Первоначально задан список разрешенных IP адресов для всей сети и инженерной станции:
table <ip_whitelist_public> const {172.29.33/24, 192.168.1.1}
table <ip_whitelist_admin> const {172.29.33.49}
 
Далее идет правило, блокирующее все пакеты:
block all
 
Правила, разрешающие работу по перечисленным tcp и udp портам:
allow_tcp_ports = "{502, 21, 2404, 49152:65534, 48010, 4840, 8080}"
allow_udp_ports = "{123}"
 
Правила, разрешающие входящие пакеты со стороны среды разработки Astra.IDE (только для IP адреса из списка ip_whitelist_admin):
pass in proto tcp from <ip_whitelist_admin> to any port {11740:11743} keep state
pass in proto udp from <ip_whitelist_admin> to any port 1740:1743 keep state
 
Правило, разрешающие все icmp пакеты из списка ip_whitelist_public на все внутренние IP адреса, назначенные сетевым интерфейсам ПЛК.
pass in proto icmp from <ip_whitelist_public> to any keep state
 
Правило, разрешающие входящие tcp и udp пакеты по IP адресам из стороны списка ip_whitelist_public на конкретные сетевые интерфейсы ПЛК, взятые из списка $allow_tcp(udp)_ports :
pass in proto tcp from <ip_whitelist_public> to any port $allow_tcp_ports keep state
pass in proto udp from <ip_whitelist_public> to any port $allow_udp_ports keep state
 
Правило, разрешающее исходящие пакеты на хосты из списка ip_whitelist_public:
pass out from any to <ip_whitelist_public> keep state
При наличии ошибок в файле pf.conf он не будет применяться целиком. Наличие ошибок можно посмотреть в файле system.log после применения пакетного фильтра.
Например:
Reloading packet filter rules – ошибок нет.
/etc/pf.conf:4: could not parse host specification – ошибка в строке 4.
 
После загрузки файла pf.conf на контроллер он применяется сразу (перезагрузка ПЛК не требуется).