7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Настройка firewalld CentOS 7 с примерами команд

Настройка firewalld CentOS 7 с примерами команд

Centos 7, в отличие от CentOS 6, в базе идет с новым брандмауэром — firewalld. Его можно отключить и заменить на старый добрый iptables, но если к этому нет прямых предпосылок, то лучше привыкать к чему-то новому, а не упираться в старое. Это не значит, что Windows 10 лучше Windows 7, а Windows XP лучше Windows 7 😉 Хороший пример на эту тему — selinux. Если вначале почти все (и я тоже) его отключали и даже немного ругали, то теперь почти никто это не советует, только если есть уверенность, что так надо. Напротив, многие уже привыкли (или привыкают) пользоваться semanage. Не будем и мы сразу отключать firewalld, а попробуем, как он на вкус.

Firewalld — это не принципиально иной брандмауэр. Это другая надстройка над netfilter, поэтому если вы обладаете опытом работы с iptables, то помучившись немного вы спокойно начнете пользоваться новым инструментом.

Включение брандмауэра firewalld

Для начала нужно включить демон. Unit-файл systemd называется firewalld.service. Чтобы запустить демон, введите:

Убедитесь, что сервис запущен:

Теперь брандмауэр запущен и работает согласно конфигурации по умолчанию.

На данный момент сервис включен, но не будет запускаться автоматически вместе с сервером. Чтобы случайно не заблокировать себя на собственном сервере, сначала создайте набор правил, а затем настройте автозапуск.

Стоит сделать небольшое замечание по поводу GUI-интерфейса, он очень удобен, но совершенно не гибок в отличие от способа, если бы мы конфигурировали МЭ через консольные команды

Об этом прямо говорит справка при открытии GUI.

Просмотр правил по умолчанию

Чтобы узнать, какая зона используется по умолчанию, введите:

На данный момент firewalld не получал никаких инструкций относительно других зон, кроме того, к другим зонам не привязан ни один интерфейс, поэтому сейчас зона public является зоной по умолчанию, а также единственной активной зоной.

Чтобы получить список активных зон, введите:

К зоне public привязаны два сетевых интерфейса: eth0 и eth1. Интерфейсы, привязанные к зоне, работают согласно правилам этой зоны.

Чтобы узнать, какие правила использует зона по умолчанию, введите:

Итак, теперь вы знаете, что:

• public является зоной по умолчанию и единственной активной зоной.
• К ней привязаны интерфейсы eth0 и eth1.
• Она поддерживает трафик DHCP (присваивание IP-адресов) и SSH (удаленное администрирование).

Читайте так же:
Как посмотреть модель материнской платы на Windows 10

Другие зоны брандмауэра

Теперь следует ознакомиться с другими зонами.

Чтобы получить список всех доступных зон, введите:

Чтобы вывести определения всех доступных зон, добавьте опцию —list-all-zones. Для более удобного просмотра вывод можно передать в пейджер:

Управление зонами

Для определения уровня доверия сетевому соединению в firewalld используются зоны. Зона может содержать несколько сетевых подключений, но сетевое соединение может входить только в одну зону. Список всех зон получаем командой firewall-cmd —get-zones .

Получаем список зон

Получаем список зон

Другие статьи в выпуске:

Xakep #217. Сценарий для взлома

После установки создается девять зон, в зависимости от назначения может быть использована одна или несколько зон:

  • trusted — все сетевые соединения разрешены;
  • work/home/internal — зоны похожи по настройкам, отличаются назначением. Устанавливается максимальное доверие к компьютерам в сети, разрешается устанавливать только конкретные входящие соединения (по умолчанию SSH и DHCPv6 client, в home и internal плюс MDNS и Samba client);
  • dmz — для компьютеров, находящихся в демилитаризованной зоне, доступные из Сети и с ограниченным доступом к внутренней сети. Разрешаются только указанные входящие соединения (по умолчанию SSH);
  • external — правило, подходящее для роутеров, для использования во внешних сетях с разрешенным маскарадингом, с максимальным недоверием и четко установленными разрешенными входящими соединениями (по умолчанию SSH);
  • public — для использования в общественных местах, с максимальным недоверием к другим компьютерам, разрешены только конкретные входящие соединения (по умолчанию SSH и DHCPv6 client);
  • block — входящие сетевые соединения отклоняются с icmp-host-prohibited сообщением, разрешены только соединения, инициированные в этой системе;
  • drop — разрешаются только исходящие соединения, все входящие блокируются.

Описания зон также представлены в XML-файлах в /usr/lib/firewalld/zones .

После установки системы обычно используется зона public. Если имеющихся зон недостаточно, то можно создавать новые зоны при помощи

Настройки зон по умолчанию

Настройки зон по умолчанию

Все пакеты, не попадающие под определенные зоны, обрабатываются в зоне по умолчанию.

Теперь — какие зоны сейчас активны и какие интерфейсы к ним привязаны.

Также можем получить обратную информацию — к какой зоне привязан интерфейс.

Смотрим настройки зоны (сервисы, порты, протоколы. ).

Если параметр пуст, то это значит, что настройки не установлены. При необходимости переназначаем интерфейс зоне:

Если сейчас проверить вывод firewall-cmd —zone=public —list-all , то увидим, что из списка установок пропал сетевой интерфейс. Разрешим подключение сервиса:

Удаляется он так же:

К зонам можно привязывать и другие источники, определяемые по MAC, отдельному IP или адресу сети. Пакет, пришедший из такого источника, будет обрабатываться по правилам зоны.

Читайте так же:
Программы для изменения формата музыки

Список всех source смотрим при помощи —zone=trusted —list-sources . NAT, позволяющий нескольким компьютерам подключаться к сети, в firewalld включается одной командой. Смотрим текущие настройки маскарадинга:

Если в ответ получим no , то включаем:

Это все. Для доступа извне настроим форвардинг порта в один из компьютеров. Например, нам нужен доступ по SSH к внутреннему серверу:

Удаляется правило форвардинга при помощи —remove-forward-port .

Настройка Firewall в CentOS 7

1. Статус брандмауэра

Первым делом необходимо посмотреть состояние брандмауэра. Для этого выполните:

sudo systemctl status firewalld

Если служба Firewalld отключена, то необходимо её включить:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Теперь нужно посмотреть, запущен ли Firewalld, с помощью команды firewall-cmd:

sudo firewall-cmd —state

Если программа запущена и всё хорошо, то вы получите сообщение «running».

2. Управление зонами

Как вы уже поняли, зоны — это основной инструмент для управления сетевыми подключениями. Чтобы посмотреть зону по умолчанию, выполните:

sudo firewall-cmd —get-default-zone

В моем случае это зона public. Вы можете изменить текущую зону с помощью опции —set-default-zone:

sudo firewall-cmd —set-default-zone=public

Чтобы посмотреть, какие зоны используются для всех сетевых интерфейсов, выполните:

sudo firewall-cmd —get-active-zones

В списке будут выведены зоны и интерфейсы, для которых они присвоены. Такой командой можно посмотреть конфигурацию для определённой зоны. Например, для зоны public:

sudo firewall-cmd —zone=public —list-all

3. Настройка сервисов

Вы можете посмотреть все предопределенные сервисы командой:

sudo firewall-cmd —get-services

Команда выведет все доступные сервисы, вы можете добавить любой из них к зоне, чтобы его разрешить. Например, разрешим подключение к http:

sudo firewall-cmd —zone=public —add-service=http —permanent

А чтобы удалить этот сервис, выполните:

sudo firewall-cmd —zone=public —remove-service=http —permanent

В обоих случаях мы использовали опцию —permanent, чтобы конфигурация сохранялась после перезагрузки. После изменений нужно обновить правила:

sudo firewall-cmd —reload

Затем, если вы посмотрите конфигурацию зоны, то там появится добавленный сервис:

sudo firewall-cmd —zone=public —list-all

4. Как открыть порт в Firewalld

Если для нужной вам программы нет сервиса, вы можете открыть её порт вручную. Для этого просто добавьте нужный порт к зоне. Например порт 8083:

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

Чтобы удалить этот порт из зоны, выполните:

sudo firewall-cmd —zone=public —remove-port=8083/tcp —permanent

Аналогично сервисам, чтобы открыть порт в firewall centos 7 надо перезагрузить брандмауэр.

Читайте так же:
Удаленное управление компьютером

sudo firewall-cmd —reload

5. Проброс портов Firewalld

Проборс портов в Firewalld настраивается намного проще, чем в iptables. Если вам нужно, например, перенаправить трафик с порта 2223 на порт 22, достаточно добавить к зоне перенаправление:

sudo firewall-cmd —zone=public —add-forward-port=port=2223:proto=tcp:toport=22

Здесь перенаправление выполняется только на текущей машине. Если вы хотите настроить сеть NAT и пробрасывать порт на другую машину, то вам нужно сначала включить поддержку masquerade:

sudo firewall-cmd —zone=public —add-masquerade

Затем уже можно добавить порт:

sudo firewall-cmd —zone=publiс —add-forward-port=port=2223:proto=tcp:toport=22:toaddr=192.168.56.4

6. Расширенные правила

Если функциональности зон вам недостаточно, вы можете использовать расширенные правила. Общий синтаксис расширенных правил такой:

rule family = «семейтво» source значение destination значение log audit действие

Вот значение основных параметров:

  • В качестве семейства протоколов можно указать ipv4 или ipv6 или ничего не указывать, тогда правило будет применяться к обоим протоколам;
  • source и destination — это отправитель и получатель пакета. В качестве этих параметров может быть использован IP-адрес (address), сервис (service name), порт (port), протокол (protocol) и так далее;
  • log — позволяет логгировать прохождение пакетов, например в syslog. В этой настройке вы можете указать префикс строчки лога и уровень подробности логгирования;
  • audit — это альтернативный способ логгирования, когда сообщения будут отправляться в службу auditd.
  • Действие — это действие, которое необходимо выполнить с совпавшим пакетом. Доступны: accept, drop, reject, mark.

Давайте рассмотрим несколько примеров. Нам необходимо заблокировать доступ к серверу для пользователя с IP 135.152.53.5:

sudo firewall-cmd —zone=public —add-rich-rule ‘rule family=»ipv4″ source address=135.152.53.5 reject’

Или нам нужно запретить для этого же пользователя только доступ к порту 22:

sudo firewall-cmd —zone=public —add-rich-rule ‘rule family=»ipv4″ source address=135.152.53.5 port port=22 protocol=tcp reject’

Посмотреть все расширенные правила можно командой:

sudo firewall-cmd —list-rich-rules

Создание файла подкачки

Добавление “swap” на сервер Linux позволяет системе реже перемещать запущенные программы из оперативной памяти в папку на диске. Доступ к данным, хранящимся на диске гораздо медленнее (не относиться к ssd), чем доступ к оперативной памяти, что снижает продуктивность сервера. Это особенно полезно, если вы планируете вести какие-либо базы данных в вашей системе.

Советы по оптимальному размеру для подкачки значительно варьируется в зависимости от источника. Как правило, равной или вдвое большей объема оперативной памяти вашей системы является хорошей отправной точкой.

Читайте так же:
Топ-10 лучших приложений для просмотра TV на Android

Выделяют пространство, которое вы хотите использовать для файла подкачки с помощью утилиты fallocate . Например, если нам нужен файл 4Gb, мы можем создать файл подкачки, расположенный в /swapfile , выполнив:

После создания файла, нам нужно ограничить доступ к файлу, так чтобы не могли видеть другие пользователи или процессы:

Теперь у нас есть файл с правильными разрешениями. Для того, чтобы сообщить системе отформатировать файл подкачки, мы можем ввести:

Теперь, скажите системе, что она может использовать файл подкачки, набрав:

Наша система использует файл подкачки для этой сессии, но мы должны изменить системный файл, так чтобы наш сервер делал это автоматически при загрузке. Вы можете сделать это, набрав:

С этим дополнением, ваша система должна использовать файл подкачки автоматически при каждой загрузке.

Дополнительные ресурсы и последующие шаги

Отсюда, ваш путь целиком и полностью зависит от того, что вы хотите сделать с вашим сервером. Приведенный ниже список руководств никоим образом не является исчерпывающим, но представляет некоторые из наиболее распространенных конфигураций, к которым чаще всего обращаются пользователи:

Всего комментариев: 8 Комментировать

Доброго времени суток, спасибо большое за информацию, а то по nftables информации не так много, обрывки

А примеры точно верные? Так как описано добавление правила на пинг выдает ошибку. Вот как оно реально срабатывает: nft add rule inet filter input icmp type echo-request accept, другими словами пропущен inet

Да действительно inet не хватает, причём на всех источниках примеры аналогичные стоит debian 10 , где-то нужно и ip убрать .
nft add rule inet ip filter input ip saddr <192.168.123.0/24, 46.22.4.15>tcp dport 22 accept

Я думаю, лучше закрыть порт 22 и вместо него использовать какой-нибудь «экзотический», например 56473. Это позволит защититься от хакерских атак на сервер. Я на своём сервере так и сделал. Использую Firewalld, поэтому приведу пример для него.
Выполните команду, например, для CentOS 7:
# nano /etc/ssh/sshd_config

В открывшемся файле найдите следующую строку:
# Port 22

Закомментируем её и добавим новую строку со случайным номером порта, например, 56473. Номер порта не должен превышать 65535. Также удостоверьтесь, что выбранное вами значение не конфликтует с другими сервисами в системе, например, mysqld использует порт 3306, httpd — 80, ftpd — 21. Рекомендуется выбрать пятизначное значение.
*** Обязательно. На всякий случай, для просмотра уже открытых в системе портов, выполните следующую команду:
# netstat -tupln | grep LISTEN

Читайте так же:
Загрузка драйверов для ноутбука Lenovo G550

После модификации, участок файла конфигурации SSH должен выглядеть примерно так:
#Port 22
Port 56473

Чтобы SSH-сервер начал слушать новый порт вместо прежнего, его нужно перезапустить:
# sysremctl restart sshd

Проверяем на каком порту висит сейчас sshd
# netstat -tulpn | grep sshd

Получаем ответ:
tcp 0 0 0.0.0.0:56473 0.0.0.0:* LISTEN 3586/sshd
tcp6 0 0 . 56473 . * ISTEN 3586/sshd

Видим 56473, значит все в норме.
После этих манипуляций надо закрыть порт 22 и открыть 56473, для этого сначала выполним команду:
# firewall-cmd —remove-port=22/tcp —permanent ‘ закрываем порт 22
# firewall-cmd —add-port=56473/tcp —permanent ‘ открываем порт 56473

Применяем новые настройки Firewall:
# firewall-cmd —reload

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

А можно ли установить в Debian 10 Firewalld, я к нему привык и свободно ориентируюсь. А то, сначала IPTables, затем Ferewalld, затем, nftables. Хорошо, если настройки будут аналогичны IPTables, и опять придётся их изучать.

Можно, так как firewalld может использовать в качестве бакенда как iptables так и nftables

Спасибо. Возможно я верну Debian на домашний сервер, как только закончу его тестирование на десктопе. У меня на нём 5 лет стоял Debian 7 и вполне меня устраивал. А когда закончилась его поддержка, решил обновить сначала до версии 8, а затем до 9 и получил полный облом, система даже не загружалась с выводом сообщения, что не может найти несуществующий раздел /dev/sdi7, /dev/sdh5. причём при каждой загрузке разный. Перешёл на CentOS 7, но его поддержка скоро закончится, а 8 версию пока не могу настроить, даже не могу подключить ни одного репозитория. Выход один, возвращаться на Debian.

Всё-таки, думаю, до возвращения Debian на домашний сервер, дело не дойдёт. Debian 10 почему-то очень сильно подтормаживает, даже Fedora 31 Plasma, установленная на USB_HDD работает намного быстрее, чем Debian 10 на SATA. К тому же уже практически настроил CentOS 8, его работа на сервере с USB_HDD гораздо быстрее, чем у 7 версии. А Debian тормозит даже в простейших приложениях, например в пасьянсе Aisleriot, я уже отпустил клавишу мышки, а карта перемещается, спустя 0,5 — 2 секунды. Ранее, когда у меня на сервере стоял Debian 7, открытие сетевого ресурса затягивалось от 20 секунд до нескольких минут, абсолютный рекорд открытия папки на сервере составил более 5 минут!

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector