iptables-services в CentOS/RHEL системах
В CentOS существует утилита управления правилами iptables, делающая все вышеописанное, она создает файл для записи, сохраняет изменения, загружает правила при запуске системы. Эта утилита называется iptables-services.
# Устанавливаем yum -y install iptables-services # Добавляем в автозагрузку и запускаем systemctl start iptables.service systemctl enable iptables.service
После установки в директории /etc/sysconfig появляются файлы iptables и ip6tables, в эти файлы производится запись правил. В файл iptables производится запись правил для протокола IPv4, в файл ip6tables для протокола IPv6.
Конфигурационный файл находится в /etc/sysconfig/iptables-config. Здесь нас интересуют два параметра:
- IPTABLES_SAVE_ON_STOP=»no» — сохранение текущих правил при остановке демона iptables, по умолчанию отключено.
- IPTABLES_SAVE_ON_RESTART=»no» — сохранение текущих правил при перезапуске/перезагрузке системы, по умолчанию отключено.
Включим сохранение текущих правил, нужно заменить значения с «no» на «yes». Правила будут сохраняться автоматически в файл /etc/sysconfig/iptables, при перезагрузке системы/службы iptables. Также правила можно сохранять командой restart.
service iptables restart
Остальные параметры оставляем по умолчанию, без веской причины трогать их не следует.
- IPTABLES_MODULES=»» — здесь указываются дополнительные модули iptables, которые будут загружаться при старте.
- IPTABLES_MODULES_UNLOAD=»yes» — выгрузка модулей iptables, при перезагрузке или остановке межсетевого экрана.
- IPTABLES_SAVE_COUNTER=»no» — сохранение счетчиков правил и цепочек, при остановке или перезагрузке.
- IPTABLES_STATUS_NUMERIC=»yes» — вывод значений ip-адресов и портов в числовом виде.
- IPTABLES_STATUS_VERBOSE=»no» — расширенный вывод информации.
- IPTABLES_STATUS_LINENUMBERS=»yes» — вывод информации в пронумерованных строках.
- #IPTABLES_SYSCTL_LOAD_LIST=».nf_conntrack .bridge-nf» — перезагрузка параметров ядра при старте или перезапуске.
Отключение брандмауэра Windows 7/8/10
Сразу скажу, что по сравнению с фаерволом Windows XP, в семёрке достаточно надёжная защита, и отключать её стоит только если вы точно знаете на что её променяли и что вам с этого будет.
Если вы всё же решили отключить брандмауэр Windows, то я вам покажу как это просто сделать по шагам:
- Чтобы войти в окно включения/отключения брандмауэра нужно пройти в панель управления Windows 7/10 и запустить настройку брандмауэра. Идём в «Пуск -> Панель управления», а далее, в зависимости от вида представления панели управления, размещение иконки брандмауэра будет несколько различаться. Для классического представления кликаем по иконке фаервола:Для категорий нажимаем на «Система и безопасность», а там на «Брандмауэр»
- В окне настроек нам надо пройти в «Включение и отключение брандмауэра Windows»
- А здесь уже непосредственно отключаем работу фаервола в выбранных типах сетей
Здесь требуется небольшое отступление. Дело в том, что Windows 7-10 различает Домашние (Рабочие) сети и Общественные сети. Несложно догадаться, что домашние и рабочие сети – это локальные сети под вашим управлением, а общественные – это интернет. Для домашних сетей обычно не включают фаервол, даже если нет альтернативы, просто чтобы не иметь проблем с доступом. Например, если у вас есть компьютер или медиаплеер, подключённый к домашней сети, то чтобы не было проблем с доступом к ресурсам компьютера брандмауэр лучше отключить применительно к домашним сетям.
Если же вы поставили другую программу или антивирус с встроенным фаерволом, то отключать брандмауэр Windows 7 обязательно для всех сетей! Это необходимо потому что на компьютере не должны одновременно работать два фаервола, точно так же как не следует устанавливать два антивируса. Иначе, они будут конфликтовать друг с другом, что может привести к сильному торможению компьютера или даже зависанию. Это всё равно что пустить свекровь и невестку на одну кухню
Однако, большинство программ с встроенным фаерволом заменяют фаервол виндовса и в окошке так и будет написано «Управление этими параметрами осуществляет приложение поставщика ESET Internet Security», т.е. указывается программа, которая установлена у вас.
В этом случае из панели управления вы ничего не сможете отключить, для этого нужно открывать настройки программы. Например, у меня стоит NOD32, и чтобы отключить защиту нужно просто кликнуть правой кнопкой по иконке приложения в системном трее и выбрать «Приостановить работу фаервола (разрешить весь трафик)»
В большинстве других антивирусов делается аналогично.
Настройка сети CentOS 8 через конфигурационные файлы
Первый метод мы с вами разобрали, он подходит всем, кто делает установку системы сам. Теперь ситуация, когда вам передали уже готовую CentOS 8, пусть в установке Minimal, это стандартный нормальный вариант использования CentOS 8, в качестве серверной ОС. Нет графики, нет кучи компонентов, меньше фронт атаки. Подключаемся к вашему терминалу. Первое, что вам необходимо сделать, это посмотреть список и названия всех ваших сетевых интерфейсов, для этого есть команда:
ip a (То же самое, что и ввести ip addr show)
Как видим у меня два сетевых интерфейса ens33 и ens36. У меня почему, то у интерфейса ens33 нет IPv4 адреса, у второго я получил 192.168.253.145, это мой интернет шнурок.
Если у вас один интерфейс и он не получил ни какого IP-адреса, то логично что вы поставить IFCONFIG не сможете, поэтому сразу переходите к редактированию конфигурационных файлов и настройке статического или динамического IP
Пробуем с вами посмотреть текущие сетевые настройки IP адреса, маску, шлюз в более удобном виде, для этого мы использовали утилиту IFCONFIG. Пишем команду:
ifconfig
Но в случае с CentOS 8 Minimal у вас выскочит ошибка “Command not found” или в русском варианте “ifconfig команда не найдена“. Нам ее нужно установить
Установка IFCONFIG в CentOS 8
Давайте выясним, в каком пакете у нас идет утилита IFCONFIG, для этого вам необходимо выполнить команду:
yum provides ifconfig
На выходе я получил “Basic networking tools (BaseOS)”
Установим данный пакет, пишем команду:
yum install net-tools
Вас спросят хотите ли вы установить данный пакет net-tools, нажмите “Y”. Видим, что все успешно установилось.
Пробуем теперь запустить IFCONFIG. Как видим в таком варианте считывание информации, о настройках сети CentOS 8 куда приятнее.
Давайте теперь я отредактирую сетевые настройки для интерфейса ens33 и задам ему:
- IP – 192.168.31.31
- Маску – 255.255.255.0
- Шлюз – 192.168.31.1
- DNS – 192.168.31.1, 192.168.31.2
- Автоматическое включение при старте CentOS 8
В операционных системах CentOS настройки сетевых интерфейсах лежат по пути /etc/sysconfig/network-scripts/. Давайте посмотрим содержимое Для этого введите:
dir /etc/sysconfig/network-scripts/
Вы увидите конфигурационные файлы ваших сетевых интерфейсов, в моем случае, это ens33 и ens36
Чтобы настроить сеть на интерфейсах CentOS 8, вам необходимо отредактировать нужный конфигурационный файл. Для этого я воспользуюсь встроенным редактором vi. Пишем команду:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
Чтобы начать редактировать файл нажмите клавишу “INSERT“
Далее чтобы задать статический IP-адрес приведите настройки вот к такому виду:
- TYPE=Ethernet
- BOOTPROTO=none (означает задать статические настройки), можно поменять значение на DHCP
- NAME=ens33
- ONBOOT=yes (иначе не будет стартовать при запуске)
- NAME=ens33 мое имя интерфейса
- UUID можно менять при клонировании конфигурационного файла
- IPADDR=192.168.31.31 мой IP-адрес
- PREFIX=24 маска 255.255.255.0
- DNS1=192.168.31.1 мой основной DNS
- DNS2=192.168.31.2 дополнительный DNS
- DOMAIN=root.pyatilistnik.org
- GATEWAY=192.168.31.1 основной шлюз
Чтобы сохранить настройки нажмите ESC, потом введите :wq если нужно выйти без сохранения введите :qa!
Чтобы получать динамический IP-адрес по DHCP, выставите в опции BOOTPROTO=dhcp и удалите пункты DNS, IPADDR, PREFIX, GATEWAY
осталось теперь поднять наш сетевой интерфейс для этого есть несколько методов, самый простой использование ifup введите:
ifup ens33
Как видим, у меня сетевой интерфейс стал в состояние подключено и я вижу через ifconfig его ip адрес.
Проверим через утилиту PING доступность контроллера домена и другого сервера, отлично пакеты ходят.
Встречается в статьях
Инструкции:
- Как установить и использовать OpenVZ на CentOS
- Установка и настройка OpenVPN на CentOS
- Настройка кластера Ceph на Linux CentOS 7
- Трансляция видео с веб-сервера с помощью NGINX + rtmp
- Как настроить почту на базе Postfix для корпоративной среды
- Настройка веб-сервера на CentOS 7 со всем необходимым для правильной работы
- Установка и настройка FTP-сервера vsFTPd на CentOS 7
- Сервер радиовещания на базе Icecast под Windows и Linux
- Настройка портала TeamPass для совместного хранения паролей
- Инструкция по установке и использованию GLPI на Linux CentOS
- Установка и настройка системы мониторинга Prometheus на Linux
- Использование связки Elasticsearch + Kibana + Logstash на Linux
- Настройка веб-сервера на CentOS 8 со всем необходимым для правильной работы
- Как установить и настроить панель управления виртуальными машинами VMmanager
- Установка XMPP-сервера Openfire на CentOS для мгновенного обмена сообщениями
- Установка и настройка файлового сервера Samba на CentOS 8
- Установка и настройка почтового сервера Zimbra на Linux
- Настройка L2TP VPN-сервера на CentOS 8 для возможности подкючения стандартными средствами Windows
- Как настроить почту для корпоративной среды на CentOS 8
Мини-инструкции:
- Отключение Selinux в системе Linux
- Как настроить систему безопасности с SELinux в CentOS
- Шпаргалка по настройке SELinux для различных программ
- Способы отключения использования IP версии 6 в Linux CentOS
- Настройка защиты DNS ответов от BIND при помощи DNSSEC
- Установка и настройка OwnCloud на CentOS 7 или 8
- Инструкция по установке и настройке phplist
- Настройка проксирования почты с NGINX для IMAP, POP3 и SMTP
- Настройка сервера мониторинга Zabbix на Linux CentOS
- Как настроить мониторинг репликации MySQL/MariaDB с помощью Zabbix
- Настройка потоковой репликации СУБД PostgreSQL
- Как наблюдать за репликацией в PostgreSQL с помощью Zabbix
- Установка и настройка своего локального репозитория CentOS
- Установка панели управления ISPmanager на Ubuntu или CentOS
- Как создать свой собственный образ для Docker
- Отправка логов на удаленный сервер с помощью journald
- Настройка rsyslog для хранения логов на удаленном сервере Linux
- Установка и настройка LDAP сервера FreeIPA на Linux CentOS
- Установка и настройка CRM Битрикс24 от 1С на Linux CentOS
- Настройка мониторинга RAID LSI MegaRaid на Linux с помощью Zabbix
- Как установить и настроить сервер OpenVPN на CentOS 8
- Установка и использование сервера Freeradius на Linux CentOS 8
- Настройка сервера видеоконференцсвязи OpenMeetings на Linux CentOS 8
- Как установить и настроить telegraf + InfluxDB для хранения метрик
- Установка и настройка сервера NextCloud на CentOS 8
- Установка и использование почтового клиента WebMail Lite на Linux CentOS
- Настройка сервера мониторинга Zabbix 5 на Linux CentOS 8
Getting Familiar with the Current Firewall Rules
Before we begin to make modifications, we should familiarize ourselves with the default environment and rules provided by the daemon.
Exploring the Defaults
We can see which zone is currently selected as the default by typing:
Since we haven’t given any commands to deviate from the default zone, and none of our interfaces are configured to bind to another zone, that zone will also be the only “active” zone (the zone that is controlling the traffic for our interfaces). We can verify that by typing:
Here, we can see that our example server has two network interfaces being controlled by the firewall ( and ). They are both currently being managed according to the rules defined for the public zone.
How do we know what rules are associated with the public zone though? We can print out the default zone’s configuration by typing:
We can tell from the output that this zone is both the default and active and that the and interfaces are associated with this zone (we already knew all of this from our previous inquiries). However, we can also see that this zone allows for the normal operations associated with a DHCP client (for IP address assignment) and SSH (for remote administration).
Exploring Alternative Zones
Now we have a good idea about the configuration for the default and active zone. We can find out information about other zones as well.
To get a list of the available zones, type:
We can see the specific configuration associated with a zone by including the parameter in our command:
You can output all of the zone definitions by using the option. You will probably want to pipe the output into a pager for easier viewing:
Добавить услугу в зону
Нам часто нужно добавить какие-то сервисы в зону, в которой мы сейчас работаем.
Мы можем получить все службы, используя параметр –get-services в команде firewall-cmd:
Чтобы получить более подробную информацию о любой службе, мы можем посмотреть файл.xml этой конкретной службы. Сервисный файл находится в каталоге / usr / lib / firewalld / services.
Например, если мы посмотрим на службу HTTP, она будет выглядеть так:
Чтобы включить или добавить службу в любую зону, мы можем использовать параметр –add-service и указать ей имя службы.
Если мы не предоставим параметр –zone, служба будет включена в зону по умолчанию.
Например, если мы хотим добавить службу HTTP в зону по умолчанию, команда будет выглядеть так:
В отличие от этого, если вы хотите добавить службу в определенную зону, укажите имя зоны в параметре –zone:
Чтобы проверить добавление службы в общедоступную зону, вы можете использовать параметр –list-services в команде firewall-cmd:
В приведенном выше выводе вы можете увидеть, что отображаются службы, добавленные в общедоступную зону.
Однако служба HTTP, которую мы только что добавили в общедоступную зону, находится в конфигурациях времени выполнения брандмауэра. Итак, если вы хотите добавить службу в постоянную конфигурацию, вы можете сделать это, указав дополнительный флаг –permanent при добавлении службы:
Но если вы хотите добавить все конфигурации среды выполнения в постоянные конфигурации брандмауэра, выполните команду firewall-cmd с параметром –runtime-to-constant:
Все желаемые или нежелательные конфигурации среды выполнения будут добавлены к постоянным конфигурациям, выполнив указанную выше команду. Поэтому лучше использовать флаг –permanent, если вы хотите добавить конфигурацию к постоянным конфигурациям.
Теперь, чтобы проверить изменения, перечислите службы, добавленные в постоянные конфигурации, используя параметр –permanent и –list-services в команде firewall-cmd:
Какую ОС выберут вместо СentOS. Опрос ISPsystem
Мы решили провести собственное исследование, чтобы понять, кто займет нишу CentOS. Для этого провели выборочный опрос среди представителей наших клиентов: DevOps инженеров, ИТ-директоров, системных администраторов и архитекторов. Респондентов спросили: «Что вы рассматривайте как альтернативу CentOS в своих проектах?»
Опрос не показал неожиданных результатов. Можно сделать следующие выводы:
- Большая часть специалистов рассматривают Debian-based дистрибутивы как альтернативу для своих проектов.
- Многие не готовы мигрировать с RH-based дистрибутивов и рассматривают альтернативные клоны RHEL.
- Часть опрошенных нами специалистов не спешит с решением и планирует спокойно ждать до 2021 или 2024 года внимательно рассматривая альтернативы на рынке операционных систем.
Ни один из респондентов не выразил желания перейти на RHEL. Возможно, эти специалисты не попали в наш опрос.
Заключительные шаги и тестирование
У вас может быть несколько человек, использующих эту конкретную систему. В нашем примере slaghoople — дополнительный пользователь. Запустите следующее в терминальной сессии:
Откройте приложение Google Authenticator на своем мобильном устройстве. Введите шестизначный код аутентификации, который приложение предоставило в окне терминала. Введите свой пароль sudo и нажмите Enter. Теперь вы должны войти в систему. Как новый пользователь, введите следующую команду:
Теперь вы можете просто выполнить те же действия, что и для первого пользователя, описанного выше. Ответив на вопросы, откройте мобильное приложение Google Authenticator. Добавьте другой аккаунт. Введите slaghoople в качестве имени учетной записи, чтобы вы могли различать их на своем мобильном устройстве. Выберите либо отсканировать штрих-код, либо введите ключ подтверждения. Slaghoople теперь будет требовать код из мобильного приложения вместе с ее паролем sudo для входа в систему и выдачи повышенных команд. Промойте и повторите для любых дополнительных пользователей. Как только все ваши пользователи будут настроены, вы заметите, что для входа в систему или выполнения команд sudo требуется проверочный код.
Вот и все. Ваша Linux-машина стала намного более безопасной. чем было раньше. Некоторые могут утверждать, что этот процесс является проблемой. Конечно, это является! В этом-то и дело!
Кредит Фотографии: Дейв Кларк Цифровое Фото через Shutterstock.com
Почему вы хотите отключить брандмауэр на CentOS 7?
Брандмауэры включены в большинство операционных систем по соображениям безопасности. Однако некоторые люди хотят отключить эти брандмауэры по разным причинам. Одна из наиболее распространенных причин отключения брандмауэра — установка определенных приложений. Это означает, что некоторые приложения перестают обеспечивать полную производительность при наличии активного брандмауэра. Таким образом, чтобы получить лучшее из этих приложений, сначала нужно отключить брандмауэр. Кроме того, некоторые пользователи испытывают небольшую задержку при подключении к сети из-за брандмауэра. Итак, они хотят попробовать отключить брандмауэр и проверить, все ли в порядке со скоростью.
Установка CentOS 7
Даже при выборе минимального образа CentOS 7 предложит воспользоваться графическим интерфейсом для установки системы на жесткий диск.
Процесс этот проходит в 6 основных шагов:
- Настройка даты и времени – на этом этапе достаточно выбрать свой часовой пояс, и время будет выставлено автоматически.
- Настройка языка и раскладки – необходимо выбрать один основной язык системы и один дополнительный, а также указать необходимые раскладки клавиатуры для них.
- Источник установки – на данном этапе можно ничего не менять, тогда файлы для установки будут взяты с носителя с системой.
- Программное обеспечение для установки – на этом этапе необходимо выбрать минимальный пакет программ, так как нам нужно развернуть сервер без рабочего стола и графического интерфейса.
- Место установки – на этом этапе выбираем жесткий диск, на который будет произведена установка, а также разметку.
- Настройка интернета – здесь нужно внести данные о подключении к Сети.
После введения данных необходимо будет создать профиль пользователи и указать пароль Root. После завершения процесса установки компьютер перезагрузится и предложит запустить новую операционную систему.
Возможные проблемы при работе с firewalld
1. Ошибка command not found (команда не найдена).
Возможные причины: не установлен пакет или не запущена служба.
Выполняем установку пакета firewalld:
yum install firewalld firewall-config
Запускаем службу:
systemctl start firewalld
2. Не применяются правила.
Причина: не введена команда перезапуска правил.
Перечитываем правила:
firewall-cmd —reload
Если это не помогло, делаем перезапуск со сбросом подключений:
firewall-cmd —complete-reload
В некоторых случаях, необходимо перезапустить сетевые службы:
systemctl restart network
В исключительных случаях, перезагружаем компьютер:
shutdown -r now
3. The interface is under control of NetworkManager and already bound to the default zone.
Ошибка появляется при попытке удалить интерфейс из зоны, настройками которого управляет NetworkManager.
Для решения открываем конфигурационный файл для настройки сетевого интерфейса, например:
vi /etc/sysconfig/network-scripts/ifcfg-ens34
И дописываем следующее:
ZONE=external
* в данном примере сетевой интерфейс ens34 будет добавлен в зону external.
Перезагружаем сетевую службу:
systemctl restart network
Отключение Selinux и Firewalld в CentOS/RHEL системах
Если вы хотите начать использовать iptables в CentOS или других Red Hat производных системах, то перед настройкой необходимо отключить Selinux и firewalld.
Для отключения selinux отредактируем файл /etc/sysconfig/selinux.
# Открываем файл для редактирования nano /etc/sysconfig/selinux # Находим строку SELINUX=enforced, заменяем на disabled SELINUX=disabled # Сохраняем и выходим.
Firewalld — надстройка над iptables, играющая роль брандмауэра, применяется в RHEL системах по умолчанию. Так как управлять фаерволом мы будем при помощи собственных правил, то firewalld необходимо отключить.
# Останавливаем firewalld и удаляем его из автозагрузки systemctl stop firewalld systemctl disable firewalld
Установите предпочитаемую среду рабочего стола
Теперь мы можем установить среду рабочего стола, которую будем использовать. В этом руководстве мы опробуем Xfce, MATE и GNOME.
Примечание: если вы не можете подключиться через Remote Desktop Connection после установки среды рабочего стола, откройте порт 3389/TCP с помощью команды firewall-cmd, упомянутой выше.
Установите рабочую среду XFCE
Xfce — одна из самых легких настольных сред. Она быстрая, потребляет мало системных ресурсов, но все же остается визуально привлекательной. Кроме того, у неё очень активное сообщество, поэтому доступно множество вариантов настройки.
Чтобы установить Xfce, выполните следующие команды:
Затем создайте файл .Xclients в каталоге пользователя, с помощью которого будет осуществлено подключение:
Теперь вы можете подключиться к серверу, используя Remote Desktop Connection. Вот как выглядит Xfce:
Скриншот №1. Xfce
Удаление Xfce
Чтобы удалить Xfce с вашего CentOS 7, выполните следующие команды:
Установите MATE Desktop Environment
Чтобы установить MATE, выполните следующие команды:
Затем создайте файл .Xclients в каталоге пользователя, с которым вы соединяетесь:
Теперь вы можете подключиться к серверу, используя Remote Desktop Connection. Вот как выглядит MATE:
Скриншот №2. MATE
Удаление MATE
Чтобы удалить MATE с CentOS 7, выполните следующие команды:
Установите GNOME Desktop Environment
Теперь попробуем установить GNOME 3. Для этого нам необходимо установить группу пакетов GNOME Desktop, которая установит все пакеты, необходимые для установки с графическим интерфейсом:
Это может занять некоторое время. На минимальной конфигурации дистрибутива CentOS 7 будет установлено около 1000 пакетов.
Запустите графический интерфейс
Хотя мы установили группу пакетов GNOME Desktop, графический интерфейс не будет загружаться по умолчанию при перезагрузке. Мы можем проверить это, запустив:
Вывод:
Если значением по умолчанию является multi-user.target, это означает, что графический интерфейс не будет загружен. Поменяем значение по умолчанию на graphical.target. Для этого выполните следующие команды:
Вывод:
Created symlink from /etc/systemd/system/default.target to usr/lib/systemd/system/graphical.target.
После этого выполните следующую команду, для незамедлительного перехода к графическому интерфейсу:
Теперь вы можете подключиться через xRDP к вашему CentOS 7 с помощью GNOME.
Вот как выглядит GNOME 3 при первом подключении после установки. Просто следуйте начальным шагам настройки, чтобы завершить настройку:
Скриншот №3. GNOME 3
Примечание: Если до момента установки графической оболочки GNOME Desktop для подключения к CentOS 7 использовались Xfce или MATE Desktop, выполните следующую команду:
Настраиваем firewall
Сейчас мы быстро и просто настроим firewall. В CentOS 7 в качестве фаервола выступает iptables. По-умолчанию он запущен. Чтобы посмотреть текущие правила, нужно ввести команду:
# iptables -L -v -n
Сразу хочу предупредить, что не имея доступа к консоли сервера, настраивать firewall плохая идея. Даже если вы очень хорошо понимаете что делаете и проделывали подобное много раз, все равно есть шанс остаться без доступа к серверу. Так что первым делом перед настройкой iptables проверяем доступ к консоли через KVM или физически.
В 7-й версии CentOS для управления iptables разработан новый инструмент под названием firewalld и все управление производится через него. Я не понял зачем это сделали, и не могу сказать, удобнее с ним стало или нет. По мне, так удобнее использовать одни и те же наработки по iptables. Мигрируя от сервера к серверу и от дистрибутива к дистрибутиву, я просто редактирую скрипт настроек фаервола.
Но CentOS зачем-то придумали firewalld, в Ubuntu стоит ufw, но суть одна и та же — это утилиты для конфигурирования iptables, который один и тот же во всех дистрибутивах. Я привык управлять iptables через самописный скрипт, который переношу от сервера к серверу и редактирую под конкретные потребности. Этим скриптом я и поделюсь. Так что для начала остановим и отключим firewalld:
# systemctl stop firewalld # systemctl disable firewalld rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' rm '/etc/systemd/system/basic.target.wants/firewalld.service'
Установим утилиты для iptables:
# yum -y install iptables-services
Включим автозапуск iptables:
# systemctl enable iptables
Теперь создадим файл /etc/iptables_rules.sh следующего содержания:
#!/bin/bash # # Объявление переменных export IPT="iptables" # Интерфейс который смотрит в интернет export WAN=eth0 export WAN_IP=149.154.71.205 # Очистка всех цепочек iptables $IPT -F $IPT -F -t nat $IPT -F -t mangle $IPT -X $IPT -t nat -X $IPT -t mangle -X # Установим политики по умолчанию для трафика, не соответствующего ни одному из правил $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP # разрешаем локальный траффик для loopback $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT # Разрешаем исходящие соединения самого сервера $IPT -A OUTPUT -o $WAN -j ACCEPT # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. # Пропускать все уже инициированные соединения, а также дочерние от них $IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Пропускать новые, а так же уже инициированные и их дочерние соединения $IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешить форвардинг для уже инициированных и их дочерних соединений $IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Включаем фрагментацию пакетов. Необходимо из за разных значений MTU $IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu # Отбрасывать все пакеты, которые не могут быть идентифицированы # и поэтому не могут иметь определенного статуса. $IPT -A INPUT -m state --state INVALID -j DROP $IPT -A FORWARD -m state --state INVALID -j DROP # Приводит к связыванию системных ресурсов, так что реальный # обмен данными становится не возможным, обрубаем $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP # Рзрешаем пинги $IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT $IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT $IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # Открываем порт для ssh $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT # Открываем порт для DNS #$IPT -A INPUT -i $WAN -p udp --dport 53 -j ACCEPT # Открываем порт для NTP #$IPT -A INPUT -i $WAN -p udp --dport 123 -j ACCEPT # Логирование # Все что не разрешено, но ломится отправим в цепочку undef $IPT -N undef_in $IPT -N undef_out $IPT -N undef_fw $IPT -A INPUT -j undef_in $IPT -A OUTPUT -j undef_out $IPT -A FORWARD -j undef_fw # Логируем все из undef $IPT -A undef_in -j LOG --log-level info --log-prefix "-- IN -- DROP " $IPT -A undef_in -j DROP $IPT -A undef_out -j LOG --log-level info --log-prefix "-- OUT -- DROP " $IPT -A undef_out -j DROP $IPT -A undef_fw -j LOG --log-level info --log-prefix "-- FW -- DROP " $IPT -A undef_fw -j DROP # Записываем правила /sbin/iptables-save > /etc/sysconfig/iptables
Делаем файл c правилами исполняемым и запускаем:
# chmod 0740 /etc/iptables_rules.sh # /etc/iptables_rules.sh
Проверяем, применились ли правила:
# iptables -L -v -n
При каждом запуске файла с правилами iptables, все изменения записываются в файл /etc/sysconfig/iptables и применяются при загрузке системы.
Проброс (forward) порта
Рассмотрим ситуацию, когда необходимо выполнить проброс портов с внешнего интерфейса на какой-то компьютер в локальной сети. Допустим, вам необходимо получить rdp доступ к компьютеру 10.1.3.50 из интернета. Делаем проброс TCP порта 3389:
Если вы не хотите светить снаружи известным портом, то можно сделать перенаправление с нестандартного порта на порт rdp конечного компьютера:
Если вы пробрасываете порт снаружи внутрь локальной сети, то обязательно закомментируйте правило, которое блокирует доступ из внешней сети во внутреннюю. В моем примере это правило:
$IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT
Либо перед этим правилом создайте разрешающее правило для доступа снаружи к внутреннему сервису, например вот так:
$IPT -A FORWARD -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPT