Code 126 найден указанный модуль. Решение проблемы, связанной с видеокартой Radeon

28.02.2019

Зоны

Демон firewalld управляет группами правил при помощи так называемых зон.

Зоны – это, по сути, наборы правил, которые управляют трафиком на основе уровня доверия к той или иной сети. Зоны присваиваются сетевым интерфейсам и управляют поведением брандмауэра.

Компьютеры, которые часто подключаются к разным сетям (например, ноутбуки) могут использовать зоны, чтобы изменять наборы правил в зависимости от среды. К примеру, при подключении к общественной сети WiFi брандмауэр может применять более строгие правила, а в домашней сети ослаблять ограничения.

В firewalld существуют следующие зоны:

  • drop: самый низкий уровень доверия сети. Весь входящий трафик сбрасывается без ответа, поддерживаются только исходящие соединения.
  • block: эта зона похожа на предыдущую, но при этом входящие запросы сбрасываются с сообщением icmp-host-prohibited или icmp6-adm-prohibited.
  • public: эта зона представляет публичную сеть, которой нельзя доверять, однако поддерживает входящие соединения в индивидуальном порядке.
  • external: зона внешних сетей. Поддерживает маскировку NAT, благодаря чему внутренняя сеть остается закрытой, но с возможностью получения доступа.
  • internal: обратная сторона зоны external, внутренние сети. Компьютерам в этой зоне можно доверять. Доступны дополнительные сервисы.
  • dmz: используется для компьютеров, расположенных в DMZ (изолированных компьютеров, которые не будут иметь доступа к остальной части сети); поддерживает только некоторые входящие соединения.
  • work: зона рабочей сети. Большинству машин в сети можно доверять. Доступны дополнительные сервисы.
  • home: зона домашней сети. Окружению можно доверять, но поддерживаются только определённые пользователем входящие соединения.
  • trusted: всем машинам в сети можно доверять.

Сохранение правил

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

Большинство команд firewall-cmd может использовать флаг —permanent, который сохранит правило, после чего оно будет использоваться на постоянной основе.

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

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

sudo systemctl start firewalld.service

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

firewall-cmd --state
running

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

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

Правила брандмауэра по умолчанию

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

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

firewall-cmd --get-default-zone
public

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

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


public
interfaces: eth0 eth1

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

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

firewall-cmd --list-all
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

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

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

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

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

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

firewall-cmd --get-zones

Чтобы получить параметры конкретной зоны, добавьте в команду флаг —zone=.

firewall-cmd --zone=home --list-all
home
interfaces:
sources:
services: dhcpv6-client ipp-client mdns samba-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

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

firewall-cmd --list-all-zones | less

Настройка зон интерфейсов

Изначально все сетевые интерфейсы привязаны к зоне по умолчанию.

Изменение зоны интерфейса на одну сессию

Чтобы перевести интерфейс в другую зону на одну сессию, используйте опции —zone= и —change-interface=.

Например, чтобы перевести eth0 в зону home, нужно ввести:

sudo firewall-cmd --zone=home --change-interface=eth0
success

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

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

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

После перезагрузки брандмауэра интерфейс будет снова привязан к зоне по умолчанию.

sudo systemctl restart firewalld.service
firewall-cmd --get-active-zones
public
interfaces: eth0 eth1

Изменение зоны интерфейса на постоянной основе

Если в настройках интерфейса не указана никакая другая зона, после перезапуска брандмауэра интерфейс будет снова привязан к зоне по умолчанию. В CentOS такие конфигурации хранятся в каталоге /etc/sysconfig/network-scripts, в файлах формата ifcfg-interface.

Чтобы определить зону интерфейса, откройте конфигурационный файл этого интерфейса, например:

В конец файла добавьте переменную ZONE= и в качестве значения укажите другую зону, например, home:

. . .
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=home

Сохраните и закройте файл.

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

sudo systemctl restart network.service
sudo systemctl restart firewalld.service

После перезапуска интерфейс eth0 будет привязан к зоне home.

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

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

Также вы можете выбрать другую зону по умолчанию.

Для этого используется параметр —set-default-zone=. После этого все интерфейсы будут привязаны к другой зоне:

sudo firewall-cmd --set-default-zone=home
home
interfaces: eth0 eth1

Создание правил для приложений

Добавление сервиса в зону

Проще всего добавить сервис или порт в зону, которую использует брандмауэр. Просмотрите доступные сервисы:

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

Примечание : Больше информации о каждом конкретном сервисе можно найти в файлах.xml в каталоге /usr/lib/firewalld/services. К пример, сведения о сервисе SSH хранятся в /usr/lib/firewalld/services/ssh.xml и выглядят так:



SSH

Чтобы включить поддержку сервиса в той или иной зоне, используйте опцию —add-service=. Указать целевую зону можно с помощью опции —zone=. По умолчанию эти изменения будут работать в течение одной сессии. Чтобы сохранить изменения и использовать их на постоянной основе, добавьте флаг —permanent.

Например, чтобы запустить веб-сервер для обслуживания трафика HTTP, для начала нужно включить поддержку этого трафика в зоне public на одну сессию:

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

Если сервис нужно добавить в зону по умолчанию, флаг —zone= можно опустить.

Убедитесь, что операция выполнена успешно:

firewall-cmd --zone=public --list-services
dhcpv6-client http ssh

Протестируйте работу сервиса и брандмауэра. Если все работает правильно, можно изменить постоянный набор правил и добавить в него правило для поддержки этого сервиса.

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

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

sudo firewall-cmd --zone=public --permanent --list-services
dhcpv6-client http ssh

Теперь зона public поддерживает HTTP и порт 80 на постоянной основе. Если веб-сервер может обслуживать трафик SSL/TLS, вы также можете добавить сервис https (для одной сессии или в набор постоянных правил):

sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --permanent --add-service=https

Что делать, если нужный сервис недоступен?

Брандмауэр firewalld по умолчанию включает в себя многие наиболее распространённые сервисы. Однако некоторым приложениям необходимы сервисы, поддержка которых отсутствует в firewalld. В таком случае вы можете поступить двумя способами.

Способ 1: Настройка порта

Проще всего в такой ситуации открыть порт приложения в необходимой зоне брандмауэра. Нужно просто указать порт или диапазон портов и протокол.

Например, приложение, которое использует порт 5000 и протокол TCP, нужно добавить в зону public. Чтобы включить поддержку приложения на дну сессию, используйте параметр —add-port= и укажите протокол tcp или udp.

sudo firewall-cmd --zone=public --add-port=5000/tcp

Убедитесь, что операция прошла успешно:

firewall-cmd --list-ports
5000/tcp

Также можно указать последовательный диапазон портов, отделив первый и последний порт диапазона с помощью тире. Например, если приложение использует UDP-порты 4990-4999, чтобы добавить их в зону public, нужно ввести:

sudo firewall-cmd --zone=public --add-port=4990-4999/udp

После тестирования можно добавить эти правила в постоянные настройки брандмауэра.

sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
sudo firewall-cmd --zone=public --permanent --list-ports
success
success
4990-4999/udp 5000/tcp

Способ 2: Определение сервиса

Добавлять порты в зоны просто, но если у вас много таких приложений, в результате будет сложно отследить, для чего предназначен тот или иной порт. Чтобы избежать такой ситуации, можно вместо портов определить сервисы.

Сервисы – это просто наборы портов с определенным именем и описанием. С помощью сервисов проще управлять настройками, но сами по себе они сложнее, чем порты.

Для начала нужно скопировать существующий сценарий из каталога /usr/lib/firewalld/services в каталог /etc/firewalld/services (здесь брандмауэр ищет нестандартные настройки).

Например, можно скопировать определение сервиса SSH и использовать его для определения условного сервиса example. Имя сценария должно совпадать с именем сервиса и иметь расширение.xml.

sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

Откорректируйте скопированный файл.

sudo nano /etc/firewalld/services/example.xml

В файле находится определение SSH:



SSH
Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.

Большую часть определения сервиса составляют метаданные. Изменить краткое имя сервиса можно в тегах . Это человекочитаемое имя сервиса. Также нужно добавить описание сервиса. Единственное изменение, которое повлияет на работу сервиса – это изменение номера порта и протокола.

Вернёмся к сервису example; допустим, он требует открыть TCP- порт 7777 и UDP- порт 8888. Определение будет выглядеть так:



Example Service
This is just an example service. It probably shouldn"t be used on a real system.

Сохраните и закройте файл.

Перезапустите брандмауэр:

sudo firewall-cmd --reload

Теперь сервис появится в списке доступных сервисов:

firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns example 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

Создание зон

Брандмауэр предоставляет много предопределенных зон, которых в большинстве случаев достаточно для работы. Но в некоторых ситуациях возникает необходимость создать пользовательскую зону.

Например, для веб-сервера можно создать зону publicweb, а для DNS-сервиса – зону privateDNS.

Создавая зону, нужно добавить её в постоянные настройки брандмауэра.

Попробуйте создать зоны publicweb и privateDNS:

sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS

Убедитесь, что зоны существуют:

sudo firewall-cmd --permanent --get-zones

В текущей сессии новые зоны не будут доступны:

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

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

sudo firewall-cmd --reload
firewall-cmd --get-zones
block dmz drop external home internal privateDNS public publicweb trusted work

Теперь вы можете присвоить новым зонам требуемые сервисы и порты. К примеру, в зону publicweb можно добавить SSH, HTTP и HTTPS.

sudo firewall-cmd --zone=publicweb --add-service=ssh
sudo firewall-cmd --zone=publicweb --add-service=http
sudo firewall-cmd --zone=publicweb --add-service=https
firewall-cmd --zone=publicweb --list-all
publicweb
interfaces:
sources:
services: http https ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

В зону privateDNS можно добавить DNS:

sudo firewall-cmd --zone=privateDNS --add-service=dns
firewall-cmd --zone=privateDNS --list-all
privateDNS
interfaces:
sources:
services: dns
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Затем можно привязать сетевые интерфейсы к новым зонам:

sudo firewall-cmd --zone=publicweb --change-interface=eth0
sudo firewall-cmd --zone=privateDNS --change-interface=eth1

Теперь можно протестировать настройку. Если всё работает правильно, вы можете добавить эти правила в постоянные настройки.

sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh
sudo firewall-cmd --zone=publicweb --permanent --add-service=http
sudo firewall-cmd --zone=publicweb --permanent --add-service=https
sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns

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

К примеру, eth0 будет привязан к publicweb:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
. . .
IPV6_AUTOCONF=no
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=publicweb

А интерфейс eth1 будет привязан к privateDNS:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth1
. . .
NETMASK=255.255.0.0
DEFROUTE="no"
NM_CONTROLLED="yes"
ZONE=privateDNS

Перезапустите сетевые сервисы и брандмауэр:

sudo systemctl restart network
sudo systemctl restart firewalld

Проверьте зоны:

firewall-cmd --get-active-zones
privateDNS
interfaces: eth1
publicweb
interfaces: eth0

Убедитесь, что в зонах работают нужные сервисы:

firewall-cmd --zone=publicweb --list-services
http htpps ssh
firewall-cmd --zone=privateDNS --list-services
dns

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

sudo firewall-cmd --set-default-zone=publicweb

Автоматический запуск брандмауэра

Теперь, когда вы проверили все настройки и убедились, что все правила работают должным образом, вы можете настроить автозапуск брандмауэра.

Для этого введите:

sudo systemctl enable firewalld

Теперь брандмауэр будет запускаться вместе с сервером.

Заключение

Брандмауэр firewalld — очень гибкий инструмент. Зоны позволяют быстро изменять политику брандмауэра.

Теперь вы знаете, как работает firewalld, знакомы с основными понятиями брандмауэра, умеете создавать пользовательские зоны и добавлять сервисы.

Tags: ,

В данной статье будет описано, как настроить свежую систему для безопасной работы. Особенно актуально для тех, кто собирается хостить что-то либо на своей машине, либо открывать доступ к компьютеру извне. Итак, начнем.

SELinux

SELinux - это реализация системы принудительного контроля доступа, которая может работать параллельно с классической избирательной системой контроля доступа. Весьма полезный инструмент для гибкой и точной настройки безопасности. Многие считают, что его нужно сразу отключать и не использовать вообще. В этой статье мы не будем рассматривать его конфигурирование. Временно отключим SELinux, материала о его настройке достаточно для отдельной статьи.

Файл конфигурации находится в /etc/sysconfig/selinux. Открываем его текстовым редактором и правим строчку:

#nano /etc/sysconfig/selinux SELINUX = Enforcing Disabled

Тем самым вы переведете режим работы SELinux в «отключить». Для применения настройки необходимо перезагрузиться командой:

#systemctl reboot

Firewalld

Firewalld предоставляет функциональность динамически управляемого брандмауэра с поддержкой сетевых зон, призванных определить уровень доверия для сетевого соединения или интерфейса. Он имеет поддержку настройки межсетевого экрана IPv4, IPv6 и сетевых мостов, а также разделяет среду выполнения и параметры конфигурации. Firewalld также имеет интерфейс для добавления правил брандмауэра непосредственно из служб и приложений.

По умолчанию Firewalld включен, а все порты считаются закрытыми. Если вам необходимо открыть какой-либо порт, воспользуйтесь командой:

#firewall-cmd --permanent --zone=public --add-port=80/tcp

В данном случае 80 - номер порта, который необходимо открыть (подставьте нужный). Порты будут открытыми до тех пор, пока вы их сами не закроете, или пока не отключите Firewalld. Firewalld отключается командами:

#systemctl stop firewalld #systemctl disable firewalld

#firewall-cmd --permanent --zone=public --add-port=12345/tcp

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

#firewall-cmd --permanent --zone=public --remove-port=12345/tcp

Fail2ban

Fail2ban — это система для защиты сервера от брутфорс-атак (атаки с перебором пароля). Принцип работы заключается в том, что если в течение определенного времени было n неудачных попыток авторизации, то ip-адрес, с которого были предприняты попытки авторизации заносится в бан-лист. Данная система просто необходима, т.к. без него к вашему серверу могут получить доступ. Fail2ban следит за указанными портами, например SSH — 22 (стандартный, желательно изменить на свой). Fail2ban настраивается через конфигурационный файл. Ниже инструкция о том, как установить и настроить Fail2ban.

Для начала необходимо подключить репозиторий EPEL, пакет Fail2ban находится там. Делаем это командой:

#rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

#yum install fail2ban

После установки производим настройку Fail2ban. Конфигурационный файл находится здесь — /etc/fail2ban/jail.conf , но, как сказано в комментариях в его начале, данный файл рекомендуется не изменять, вместо этого нужно создать локальную копию /etc/fail2ban/jail.local . И в дальнейшем править конфигурацию именно в нем.

#cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local #nano /etc/fail2ban/jail.local

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

Ignoreip = 127.0.0.1/8 192.168.1.10/24 bantime = 900 findtime = 600 maxretry = 6

ignoreip - означает, какие ip-адреса будут игнорироваться при отслеживании. Указываем здесь localhost, а также, через пробелы вы можете указать дополнительные ip-адреса, например адрес другого вашего компьютера в локальной сети, за которым вы постоянно работаете. Можно также указывать внешние ip-адреса, но, в таком случае, безопасность снижается.

bantime - время, на которое указанный ip-адрес попадет в бан-лист. Время указывается в секундах. Для постоянного бана достаточно указать любое отрицательное число.

findtime - время, в течение которого после неверной попытки авторизации будет производится слежение за данным ip-адресом. Если за время findtime совершится maxretry попыток неудачной авторизации, то ip-адрес попадет в бан-лист.

maxretry - максимальное количество неверных попыток авторизации за время findtime. При достижении этого порогового значения ip-адрес будет занесен в бан-лист.

Далее спускаемся ниже и находим раздел JAILS , в нем описывается, какие сервисы и порты нужно мониторить, и что с ними делать в случае срабатывания защиты. Также в каждой секции можно определить свои параметры bantime, findtime, maxretry, а если они не указаны, то параметры берутся из секции . Ищем интересующие нас секции и редактируем их, мы настроим слежение за сервисом SSH. Для этого переходим к секции , дописываем в нее строчку «enabled = true» , и меняем порт на назначенный нами ранее:

Enabled = true port = 12345 action = iptables-multiport logpath = %(sshd_log)s

Запускаем сервис fail2ban и добавляем его в автозагрузку:

#systemctl start fail2ban #systemctl enable fail2ban

На этом базовая настройка безопасности заканчивается. Теперь можно спокойно открывать доступ к серверу по SSH. Если какой-либо злоумышленник попытается использовать брутфорс для получения доступа к вашему серверу по SSH, то у него ничего не выйдет — его ip-адрес будет блокироваться. Все остальные порты защищены с помощью firewalld.