Я установил firewalld на новую минимальную установку CentOS 7 на VPS (как ни странно, из того, что я искал, firewalld уже должен быть установлен вместе с системой).
Я попытался открыть несколько портов, но при запуске такой команды, как
firewall-cmd --zone=public --add-port=80/tcp --permanent
Я получаю следующее сообщение об ошибке: Error: INVALID_ZONE: public
.
При просмотре доступных зон с помощью firewall-cmd --get-zones
я ничего не получаю.
Как его настроить?
VPS делают разные глупости. Некоторые из них уничтожают SELinux на уровне ядра, так что вы даже не можете его включить. Прежде всего, вы хотите проверить свое ядро с помощью uname -r
. Следует сказать el7
, например
3.10.0-693.2.2.el7.x86_64
Если это el7, все в порядке. Если нет, вам необходимо проверить на своем VPS, можете ли вы использовать стандартные ядра EL или переустановить свой экземпляр из собственного CentOS ISO (это то, что я сделал на Vultr). Возможно, все еще можно исправить firewalld с помощью специального ядра, но лучше иметь официальные.
В любом случае, если firewalld действительно работает, просто не имея зон, просто создайте зону и добавьте службы.
firewall-cmd --new-zone=public --permanent
firewall-cmd --reload
firewall-cmd --zone=public --add-service=ssh --permanent
firewall-cmd --reload
Примечание: вы должны сделать это в одном сеансе, иначе вы можете заблокироваться из SSH и прибегнуть к консольному доступу, чтобы исправить свой брандмауэр.
Это звучит как довольно странная установка и проблема с VPS, но вы можете достаточно легко создать свои собственные зоны, если не возражаете написать немного XML.
Моя общедоступная зона:
<?xml version="1.0" encoding="utf-8"?>
<zone target="DROP">
<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="ssh"/>
<port protocol="tcp" port="443"/>
</zone>
Это слегка измененная версия файла public.xml по умолчанию, который отбрасывает, а не отклоняет пакеты, и разрешает HTTPS, а также SSH.
Вы бы поместили это (я думаю) в /etc/firewalld/zones/public.xml.