Вот уж не знаю почему, но у большинства 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
На этом всё.
Leave a Comment