Firewall CentOS

Содержание
Введение
Проверить статус
Перезагрузка
Выключить firewall
Зоны
Перенести в другую зону
Удалить/Заблокировать сервис
Добавить/Разрешить сервис
Конфигурационные файлы для сервисов
Создать новый сервис
masquerade
Список открытых портов
Открыть порт
Заблокировать порт
Добавить IP в 'белый' список
Удалить IP из 'белого' списка
Заблокировать IP
Посмотреть все rich-rules
Удалить правило
Похожие статьи

Введение

firewalld - это инструмент управления брандмауэром для операционных систем Linux.

Он предоставляет функции брандмауэра, выступая в качестве интерфейса для платформы netfilter ядра Linux с помощью утилиты nftables userspace (до версии v0.6.0 iptables backend), выступая в качестве альтернативы программе командной строки nft.

То есть в CentOS 7 firewalld это интерфейс для iptables (legacy)

В Rocky Linux или CentOS 8 это интерфейс для iptables (nf_tables), подробнее про iptables - здесь

Имя firewalld соответствует соглашению Unix об именовании системных демонов, добавляя букву "d". firewalld написан на Python .

Предполагалось, что он будет перенесен на C++ , но проект переноса был заброшен в январе 2015 года.

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

Чтобы проверить статус 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 2024-03-19 00:00:01 EEST; 2h 55min ago 1710817840 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 Mar 19 06:12:40 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon... Mar 19 06:12:40 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon. Mar 19 06:12:40 localhost.localdomain firewalld[783]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.

Перезагрузка

Чтобы перезагружить настройки firewalld выполните

firewall-cmd --reload

success

Перезапустить сервис через systemctl

systemctl restart firewalld

Выключить firewall

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

systemctl stop firewalld

Зоны

Зона по умолчанию

firewall-cmd --get-default-zone

public

Список активных зон

firewall-cmd --get-active-zones

public interfaces: enp0s3 enp0s8

Все доступные зоны

firewall-cmd --get-zones

block dmz drop external home internal public trusted work

Полный список

sudo firewall-cmd --list-all

public (active) target: default icmp-block-inversion: no interfaces: enp0s3 enp0s8 sources: services: dhcpv6-client http https ssh ports: 8443/tcp 3389/tcp 2222/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Переназначить интерфейс в другую зону

Выберите интерфейс и выполните

firewall-cmd --permanent --zone=public --remove-interface=enp0s10

The interface is under control of NetworkManager and already bound to the default zone The interface is under control of NetworkManager, setting zone to default. success

Интерфейс enp0s8 будет добавлен в зону internal, enp0s10 в external

firewall-cmd --permanent --zone=internal --add-interface=enp0s8

The interface is under control of NetworkManager, setting zone to 'internal'. success

firewall-cmd --permanent --zone=external --add-interface=enp0s10

The interface is under control of NetworkManager, setting zone to 'external'. success

Осталось перезагрузить firewalld и проверить результат

systemctl restart firewalld
firewall-cmd --get-active-zones

internal interfaces: enp0s8 external interfaces: enp0s10 public interfaces: enp0s9

Можно задать зону по умолчанию. В данном примере дефолтной зоной назначена external

firewall-cmd --set-default-zone=external

success

firewall-cmd --get-default-zone

external

Каждую зону можно изучить отдельно

firewall-cmd --list-all --zone=external

external (active) target: default icmp-block-inversion: no interfaces: enp0s10 sources: services: ssh ports: protocols: masquerade: yes forward-ports: source-ports: icmp-blocks: rich rules:

Удалить сервис

Чтобы удалить доступ, например, по ssh выполните

firewall-cmd --permanent --zone=external --remove-service=ssh

success

firewall-cmd --reload
firewall-cmd --list-all --zone=external

external (active) target: default icmp-block-inversion: no interfaces: enp0s10 sources: services: ports: protocols: masquerade: yes forward-ports: source-ports: icmp-blocks: rich rules:

Удалить несколько сервисов одновременно

Список сервисов в зоне можно изучить выполнив

firewall-cmd --list-services --zone=internal

dhcpv6-client mdns nfs samba-client ssh

Чтобы удалить сразу несколько сервисов перечислите из через запятую внутри фигурных скобок

firewall-cmd --remove-service={dhcpv6-client,mdns,samba-client} --zone=internal --permanent

success

firewall-cmd --list-services --zone=internal

nfs ssh

Изображение баннера

Добавить сервис

Чтобы добавить сервис, например, nfs выполните

firewall-cmd --permanent --add-service=nfs --zone=internal

success

firewall-cmd --reload
firewall-cmd --list-all --zone=internal

internal (active) target: default icmp-block-inversion: no interfaces: enp0s8 enp0s9 sources: services: dhcpv6-client mdns nfs samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Добавить несколько сервисов одновременно

Список сервисов в зоне можно изучить выполнив

firewall-cmd --list-services --zone=internal

nfs ssh

Чтобы добавить сразу несколько сервисов перечислите из через запятую внутри фигурных скобок

firewall-cmd --add-service={high-availability,http} --zone=internal --permanent

success

firewall-cmd --reload
firewall-cmd --list-services --zone=internal

high-availability http nfs ssh

Конфигурационные файлы для сервисов

Файлы для сервисов, созданных системой, находятся в

/usr/lib/firewalld/services/

ls /usr/lib/firewalld/services/

amanda-client.xml high-availability.xml nfs3.xml slp.xml amanda-k5-client.xml https.xml nfs.xml smtp-submission.xml amqps.xml http.xml nmea-0183.xml smtps.xml amqp.xml imaps.xml nrpe.xml smtp.xml apcupsd.xml imap.xml ntp.xml snmptrap.xml audit.xml ipp-client.xml nut.xml snmp.xml bacula-client.xml ipp.xml openvpn.xml spideroak-lansync.xml bacula.xml ipsec.xml ovirt-imageio.xml squid.xml bgp.xml ircs.xml ovirt-storageconsole.xml ssh.xml bitcoin-rpc.xml irc.xml ovirt-vmconsole.xml steam-streaming.xml bitcoin-testnet-rpc.xml iscsi-target.xml plex.xml svdrp.xml bitcoin-testnet.xml isns.xml pmcd.xml svn.xml bitcoin.xml jenkins.xml pmproxy.xml syncthing-gui.xml ceph-mon.xml kadmin.xml pmwebapis.xml syncthing.xml ceph.xml kerberos.xml pmwebapi.xml synergy.xml cfengine.xml kibana.xml pop3s.xml syslog-tls.xml condor-collector.xml klogin.xml pop3.xml syslog.xml ctdb.xml kpasswd.xml postgresql.xml telnet.xml dhcpv6-client.xml kprop.xml privoxy.xml tftp-client.xml dhcpv6.xml kshell.xml proxy-dhcp.xml tftp.xml dhcp.xml ldaps.xml ptp.xml tinc.xml distcc.xml ldap.xml pulseaudio.xml tor-socks.xml dns.xml libvirt-tls.xml puppetmaster.xml transmission-client.xml docker-registry.xml libvirt.xml quassel.xml upnp-client.xml docker-swarm.xml lightning-network.xml radius.xml vdsm.xml dropbox-lansync.xml llmnr.xml redis.xml vnc-server.xml elasticsearch.xml managesieve.xml RH-Satellite-6-capsule.xml wbem-https.xml etcd-client.xml matrix.xml RH-Satellite-6.xml wbem-http.xml etcd-server.xml mdns.xml rpc-bind.xml wsmans.xml finger.xml minidlna.xml rsh.xml wsman.xml freeipa-ldaps.xml mongodb.xml rsyncd.xml xdmcp.xml freeipa-ldap.xml mosh.xml rtsp.xml xmpp-bosh.xml freeipa-replication.xml mountd.xml salt-master.xml xmpp-client.xml freeipa-trust.xml mqtt-tls.xml samba-client.xml xmpp-local.xml ftp.xml mqtt.xml samba-dc.xml xmpp-server.xml ganglia-client.xml mssql.xml samba.xml zabbix-agent.xml ganglia-master.xml ms-wbt.xml sane.xml zabbix-server.xml git.xml murmur.xml sips.xml gre.xml mysql.xml sip.xml

Файлы для сервисов, которые создал сам пользователь можно увидеть выполнив

ls /etc/firewalld/services/

По умолчанию там пусто. О том как создавать свои сервисы читайте ниже.

Создать новый сервис

firewall-cmd --permanent --new-service="puppet"

success

ls /etc/firewalld/services/

puppet.xml

restorecon /etc/firewalld/services/puppet.xml
ls -la /etc/firewalld/services/ | grep puppet

-rw-r--r--. 1 root root 60 Jan 11 19:00 puppet.xml

chmod 640 /etc/firewalld/services/puppet.xml
ls -la /etc/firewalld/services/ | grep puppet

-rw-r-----. 1 root root 60 Jan 11 19:00 puppet.xml

Сконфигурировать сервис

vi /etc/firewalld/services/puppet.xml

<?xml version="1.0" encoding="utf-8"?> <service> <short>Puppet</short> <port protocol="tcp" port="443"/> <port protocol="tcp" port="8140"/> </service>

masquerade

Допустим хост выходит во внешнюю сеть через enp0s9 итерфейс роутера.

Чтобы запросы проходили адекватно нужно этот интерфейс перенести в зону со включённым masquarade или включить его в текущей зоне

firewall-cmd --add-masquerade --zone=public --permanent
firewall-cmd --reload

Выключить masquerade

firewall-cmd --remove-masquerade --zone=public --permanent
firewall-cmd --reload

Список открытых портов

Список открытых портов

firewall-cmd --list-ports

8443/tcp 3389/tcp 2222/tcp

Открыть порт

sudo firewall-cmd --zone=public --add-port=19999/tcp --permanent

sucess

Затем нужно перезапустить firewall

sudo firewall-cmd --reload

sucess

Проверка

sudo firewall-cmd --list-ports

8443/tcp 3389/tcp 2222/tcp 19999/tcp

Если вам вдруг стало интересно - что за порт 19999 - его использует Locust

Заблокировать порт

sudo firewall-cmd --remove-port=22/tcp --permanent
sudo firewall-cmd --remove-port=53/udp --permanent
sudo firewall-cmd --reload

Добавить IP в "белый" список

Чтобы добавить один IP адрес

sudo firewall-cmd --permanent --add-source=192.168.56.101

Чтобы добавить всю подсеть 255.255.255.0 выполнить

sudo firewall-cmd --permanent --add-source=192.168.2.0/24
sudo firewall-cmd --reload

Удалить IP из "белого" списка

Чтобы удалить один IP адрес

sudo firewall-cmd --permanent --remove-source=192.168.2.50
sudo firewall-cmd --reload

Чтобы удалить всю подсеть 255.255.255.0 выполнить

sudo firewall-cmd --permanent --remove-source=192.168.2.50/24
sudo firewall-cmd --reload

Заблокировать IP

Чтобы заблокировать входящие соединения с определённого IP адреса воспользуйтесь rich-rule

sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.50' reject"
sudo firewall-cmd --reload

Посмотреть все rich-rules

Чтобы посмотреть все существующие rich-rules выполните

sudo firewall-cmd --list-rich-rules

rule family="ipv4" source address="192.168.56.109" reject

Удалить правило

Чтобы удалить существующий rich-rule выполните

sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.56.109" reject'
sudo firewall-cmd --reload

sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'

Похожие статьи
Настройка сети в CentOS
Создать новый интерфейс
CentOS
Компьютерные сети
ip
hostname
DNS
route: Маршруты
Firewall
netstat
iftop: Мониторинг сети
nethogs: Мониторинг сети
tc: Контроль за трафиком
iperf: Измерение скорости сети
uuidgen: uuid для сетевого интерфейса
SCP: обмен файлами;
SSH: удалённый доступ
Сокеты в C
Изображение баннера

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: