Просто настраиваемый в простых случаях.
Штатный для RHEL, CentOS, openSUSE, REDOS...
https://www.dmosk.ru/miniinstruktions.php?mini=firewalld-centos
systemctl enable --now firewalld
systemctl stop firewalld # выключение firewalld
Для управления используется команда firewall-cmd, когда firewalld погашен, она не работает
firewall-offline-cmd # работает с "permanent"-конфигом при погашеном firewalld
Управление конфигурациями: их две: рабочая(work) и сохраняемая(permanent)
без ключа --permanent сразу изменяется действующий конфиг "work", но не все команды доступны
с ключем --permanent # работа с сохраняемым конфигом
firewall-cmd --reload # загрузить сохраненный конфиг (permanent >> work)
firewall-cmd --runtime-to-permanent # завиксировать текущую настройку (work >> permanent)
firewall-offline-cmd # работает с "permanent"-конфигом при погашеном firewalld
firewall-cmd --list-all # просмотреть конфиги: рабочий
firewall-cmd --list-all --permanent # и сохраненный
Логика разрешения/ограничения доступа при использовании зон
ZONA=(подцепленныe интерфейсы)+(открытыe порты)+(разрешенные source-IP)+(reach-rules)
Зона становится активной если в нее добавлен INTERFACE или SOURCE-IP
Добавление port/service/reach-rule зону НЕ активирует
firewall-cmd --get-active-zones
Доступ к порту: (source-ip || interface ) && ( port || reach-rule )
source-ip проверяется РАНЬШЕ interface и передает разбор на source-ip-зону
ACCESS с ЛЮБЫХ ip на КОМПЛЕКТ портов
zona: добавить interface, добавить port
--permanent --add-interface=eth0 --add-port=777/udp --add-port=777-790/tcp
ACCESS с КОМПЛЕКТА ip на все порты
zona: НЕ добавлять интерфейс, добавить source-ip, --permanent --set-target=ACCEPT
--permanent --add-source=192.168.1.0/24 --set-target=ACCEPT
ACCESS с КОМПЛЕКТА ip на КОМПЛЕКТ портов
zona: НЕ добавлять интерфейс, добавить source-ip, добавить port
--permanent --zone nfs-zone --add-source=192.168.1.0/24 \
--add-service=nfs --add-service=rpc-bind --add-service=mountd
ACCESS|REJECT|DROP индивидуальный с разных ip на разные порты
zona: добавить интерфейс, НЕ добавлять port, добавить reach-rule
(source "address/netmask" + port|service ==> accept|reject|drop)
--permanent --zone buhgalt --add-interface=wlan0 \
--add-rich-rule 'rule family=ipv4 source ipset=hackers service name=ssh drop' \
--add-rich-rule 'rule family=ipv4 source address=10.8.1.0/24 port port=80 protocol=tcp accept'
ZONA=(подцепленныe интерфейсы)+(открытыe порты)+(разрешенные source-IP)+(reach-rules)
firewall-cmd --info-zone=public # конфиг зоны
firewall-cmd --list-all --zone=public # конфиг зоны
firewall-cmd --get-active-zones # зоны с интерфейсами
firewall-cmd --get-zones # список зон
# если не указано, к какой зоне применяется команда - то применяется к дефолтной
firewall-cmd --get-default-zone # изначально дефолтная зона == public
firewall-cmd --set-default-zone=internal
firewall-cmd --permanent --new-zone=region
firewall-cmd --zone=public --add-interface=ens34
firewall-cmd --zone=public --remove-interface=wlan0
firewall-cmd --zone=dmz --add-source=192.168.1.0/24
firewall-cmd --zone=trusted --add-source=ipset:IP-whitelist
firewall-cmd --permanent --zone=trusted --set-target=ACCEPT
firewall-cmd --permanent --zone=region --set-target=DROP
# дефолтное правило для зоны ACCEPT|DROP|REJECT|default=reject+accept-icmp
Открытие/закрытие портов и сервисов
firewall-cmd --list-all # просмотреть порты и сервисы: рабочий дефолтной зоны
firewall-cmd --list-all --zone public --permanent # просмотреть сохраненный конфиг зоны public
firewall-cmd --list-ports # открытые порты
firewall-cmd --list-services # открытые сервисы
firewall-cmd --get-services # все известные сервисы
firewall-cmd --info-service=nfs # подробности о сервисе
firewall-cmd --add-service=iscsi # открыть сервис
firewall-cmd --remove-service=rkn-service # закрыть сервис
firewall-cmd --add-port=777/udp --add-port=8200-8250/tcp # открыть порты
Управление сервисами (требуется ключ --permanent)
### создать свой сервис и добавить в него порты и source-IP
firewall-cmd --permanent --new-service=rkn-service --set-short="Name RKN-SERVICE"
firewall-cmd --permanent --service=rkn-service --add-port=2200/tcp
firewall-cmd --info-service=name-service
Ограничение доступа по IP (белые и черные списки)
firewall-cmd --add-source=192.168.1.0/24 --permanent --zone web # добавить в белый список зоны
firewall-cmd --remove-source=192.168.1.0/24 --permanent --zone web # удалить из белого списка зоны
# ограничить доступ по IP
firewall-cmd --add-rich-rule='rule family="ipv4" source address="X.X.X.X/Y" reject'
firewall-cmd --add-rich-rule='rule source ipset=blacklist drop' # блэклист зоны из ipset
# ограничить доступ к порту/сервису по IP
--add-rich-rule 'rule family=ipv4 source address=10.9.8.0/24 service name=ssh reject'
--add-rich-rule 'rule family=ipv4 source address=15.1.1.9/32 port port=22 protocol=tcp accept'
firewall-cmd --get-ipset-types
hash:ip hash:ip,mark hash:ip,port hash:ip,port,ip hash:ip,port,net hash:mac
hash:net hash:net,iface hash:net,net hash:net,port hash:net,port,net
firewall-cmd --get-ipsets
firewall-cmd --permanent --new-ipset=IPSETNAME --type=hash:net
firewall-cmd --ipset=IPSETNAME --set-description="IPSet Description" --set-short="Description"
firewall-cmd --delete-ipset=IPSETNAME
firewall-cmd --info-ipset=IPSETNAME
firewall-cmd --ipset=IPSETNAME --add-entry=192.168.1.0/24 --add-entry=10.10.1.0/24
firewall-cmd --ipset=IPSETNAME --add-entries-from-file=/path/to/file.list # по адресу в строке
firewall-cmd --add-rich-rule='rule source ipset=IPSETNAME drop' # блэклист дефолтной зоны
firewall-cmd --ipset=ipset --get-entries
firewall-cmd --ipset=ipset --add-entry=entry
firewall-cmd --ipset=ipset --remove-entry=entry
firewall-cmd --ipset=ipset --query-entry=entry
Режим --direct - использование iptables
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens32 -o ens33 -j ACCEPT
firewall-cmd --permanent --zone=dmz --add-masquerade
Проброс порта 25/tcp -> 192.168.0.15:8025
--zone=external --permanent --add-forward-port=port=25:proto=tcp:toport=825:toaddr=10.1.0.9
Популярность: 3, Last-modified: Sat, 20 Dec 2025 17:57:22 GmT