Включаем firewalld вместо iptables на CentOS 7

Вот уж не знаю почему, но у большинства VDS хостеров на CentOS 7 по умолчанию включен iptables, а не firewalld который в данной OS идет по умолчанию. Скорее всего это связано с неумением большинства панелей управления работать с firewalld. Но мне с firewalld работать почему то комфортнее чем с iptables, поэтому я как правило последний отключаю, а первый включаю.
Данная процедура по шагам:
Смотрим существующие правила iptables

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh
ispmgr_deny_ip  all  --  anywhere             anywhere
ispmgr_allow_ip  all  --  anywhere             anywhere
ispmgr_allow_sub  all  --  anywhere             anywhere
ispmgr_deny_sub  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW multiport dports heathview:35999
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW multiport dports ftp-data:ssh,smtp,http,https,pop3,imap,urd,submission,imaps,pop3s,domain,mysql,postgres,vlsi-lm
ACCEPT     udp  --  anywhere             anywhere             ctstate NEW multiport dports domain
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain f2b-sshd (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Chain ispmgr_allow_ip (1 references)
target     prot opt source               destination

Chain ispmgr_allow_sub (1 references)
target     prot opt source               destination

Chain ispmgr_deny_ip (1 references)
target     prot opt source               destination

Chain ispmgr_deny_sub (1 references)
target     prot opt source               destination

Устанавливаем firewalld

yum install firewalld

Перед запуском на всякий случай убеждаемся что порт ssh открыт

cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="http"/>
  <service name="https"/>
  <service name="ssh"/>
  <port protocol="tcp" port="465"/>
</zone>

Что бы не следовать известной поговорке что удалённая настройка файервола – это к поездке, делаем маленькую подстраховочку (запланируем перезагрузку системы в 15:00):

at 15:00
at> reboot
at> 
job 4 at Sun Nov 20 15:00:00 2016
atq
4       Sun Nov 20 15:00:00 2016 a root

Останавливаем iptables и запускаем firewalld

systemctl stop iptables
systemctl start firewalld

Отключаем iptables и включаем firewalld

systemctl disable iptables
Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.
systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/basic.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

Всё прошло нормально, удаляем нашу подстраховку:

atrm 4

Смотрим список предустановленных зон

firewall-cmd --get-zones
block dmz drop external home internal public trusted work

Условное назначение предопределённых зон:
block – входящие соединения отклоняются (rejected) с ответом icmp-host-prohibited (или icmp6-adm-prohibited). Разрешены только инициированные системой соединения.
dmz – зона DMZ, разрешены только определенные входящие соединения.
drop – все входящие пакеты отбрасываются (drop) без ответа. Разрешены только исходящие соединения.
external – зона для внешнего интерфейса роутера (т.н. маскарадинг). Разрешены только определенные нами входящие соединения.
home – домашняя зона. Мы доверяем окружению, но разрешены только определенные входящие соединения
internal – внутренняя зона. Мы доверяем окружению, но разрешены только определенные входящие соединения
public – зона по-умолчанию. Из названия ясно, что эта зона нацелена на работу в общественных сетях. Мы не доверяем этой сети и разрешаем только определенные входящие соединения.
trusted – разрешено все.
work – зона рабочей сети. Мы все еще не доверяем никому, но уже не так сильно, как раньше. Разрешены только определенные входящие соединения.

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

firewall-cmd --get-active-zones
public
interfaces: eth0

Смотрим что разрешено

firewall-cmd --permanent --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client dns ssh
ports: 1500/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Добавляем нужные нам сервисы и порты

firewall-cmd --permanent --zone=public --add-service=http
success
firewall-cmd --permanent --zone=public --add-service=https
success
firewall-cmd --permanent --zone=public --add-port=465/tcp
success
firewall-cmd --permanent --zone=public --add-port=587/tcp
success

Перезагружаем правила

firewall-cmd --reload
success

На этом всё.

Добавить комментарий