Centos 7 идет в комплекте с новым брандмауэром — firewalld. Он отличается от привычного iptables. Основные команды.
Статус процесса:
1 |
systemctl status firewalld |
Управление через systemctl, как и для других процессов: stop, start, disable, enable.
Перезагрузка правил firewalld через firewall-cmd:
1 |
# firewall-cmd --reload |
Зоны
В firewalld используются наборы правил, которые обозначаются как зоны. Для разных сетей (для каждой зоны — свой уровень доверия) можно применить разные наборы правил. Условное назначение зон:
trusted — разрешены все входящие и исходящие соединения.
drop — разрешены только исходящие соединения, все входящие пакеты — drop (отбрасываются).
block — разрешены только инициированные ОС соединения, а все входящие соединения отклоняются (rejected) с ответом icmp-host-prohibited/icmp6-adm-prohibited.
public — применяется по-умолчанию, применяется для работы в общественных сетях. Степень доверия сети — низкая, разрешены только определенные входящие соединения.
external — зона для внешнего интерфейса роутера (masquerade/nat). Разрешены только определенные нами входящие соединения.
dmz — зона DMZ, разрешены только определенные входящие соединения.
work — зона рабочей сети, разрешены только определенные входящие соединения.
home — домашняя зона, разрешены только определенные входящие соединения
internal — внутренняя зона, разрешены только определенные входящие соединения
Узнаём зону по-умолчанию:
1 2 |
firewall-cmd --get-default-zone public |
Список всех доступных зон:
1 2 |
# firewall-cmd --get-zones block dmz drop external home internal public trusted work |
Список активных зон:
1 2 3 |
firewall-cmd --get-active-zones public interfaces: eth0 eth1 |
Какие правила использует активная зона:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# firewall-cmd --list-all public target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client ssh ftp ports: 80/tcp 21/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
Получить список правил для какой-либо определённой зоны:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# firewall-cmd --zone=home --list-all home target: default icmp-block-inversion: no interfaces: sources: services: ssh mdns samba-client dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
Посмотреть правила для всех зон:
1 |
# firewall-cmd --list-all-zones | less |
Перевод интерфейса в другую зону:
1 |
# sudo firewall-cmd --zone=home --change-interface=eth0 |
До этого лучше убедиться в том, что SSH соединение разрешено новой зоной и не будет сброшено, в противном случае придётся подключаться к консоли/перезагружать сервер/ОС. Для возврата в исходное состояние достаточно просто перезагрузить firewalld. Для применения изменений на постоянной основе нужно редактировать файл настроек конкретного интерфейса (например, /etc/sysconfig/network-scripts/ifcfg-eth0), где указать зону постоянной привязки (например, ZONE=public). Настройки применяются после перезагрузки firewalld.
Выбор другой зоны по-умолчанию:
1 |
# firewall-cmd --set-default-zone=home |
Сервисы
Список всех сервисов:
1 2 |
# firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https |
Описание сервисов хранится в файле: firewalld/services.
Включить поддержку сервиса зоной:
1 |
# firewall-cmd --zone=public --add-service=http |
Данное изменение не будет активно после перезагрузки firewalld. Параметр —permanent сохранит изменение и после перезагрузки.
Посмотреть список permanent-сервисов:
1 |
# firewall-cmd --zone=public --permanent --list-services |
Удалить сервис из зоны:
1 |
# firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client |
Посмотреть список сервисов в данной зоне:
1 2 |
# firewall-cmd --zone=public --list-services dhcpv6-client http ssh |
Порты
Открыть порт:
1 |
# firewall-cmd --zone=public --add-port=2000/tcp |
диапазон портов: —add-port=2000-2500/tcp, —permanent — сохраняет настройки
Список открытых портов:
1 |
# firewall-cmd --list-ports |
Полезные примеры
Перезагрузка правил со сбросом текущих соединений:
1 |
# firewall-cmd --complete-reload |
Включение режима блокировки входящих и исходящих пакетов:
1 |
# firewall-cmd --panic-on |
—panic-off — отключение режима
Узнать включен ли данный режим:
1 |
# firewall-cmd --query-panic |
Перенаправить входящие соединения на 22 порт другому хосту:
1 |
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=207.149.145.91 |
Свежие комментарии