Как настроить брандмауэр в centos 8 и управлять им

Введение

Я заметил подозрительную активность на сайте. Заходили какие-то боты, немного скролили и тыкали по ссылкам. Кто и зачем направил их на мой сайт мне было не понятно. Ничего плохого, по сути, они не делали, просто нарушали подсчет статистики, искажая реальную картину. Я быстро прикинул по статистике сайта, с каких стран в основном ко мне заходят люди. В моем случае это страны СНГ и немного заграницы. Боты же лезли со всего мира. Было принято решение временно закрыть доступ к сайту для всех стран, кроме самых популярных, с которых приходит около 95-98% пользователей. Забегаю вперед скажу, что это дало очень хороший результат, отсеяв почти всех нежелательных посетителей.

Есть разные способы решить данную задачу. Наиболее простой и популярный — воспользоваться модулем для nginx — http_geoip_module. Не стал его реализовывать по 2-м причинам:

  1. По-умолчанию, этот модуль не включен в сборку, необходимо собирать веб сервер заново.
  2. Nginx быстрый сервер, успешно справляется с высокими нагрузками, но все же мне казалось более правильно отсечь все лишнее еще на подходах к серверу.

В итоге решил блокировать ботов с помощью iptables. Если у вас он не настроен, можете воспользоваться моей статьей — настройка iptables. Первое, что пришло в голову, это вручную добавить полный список ip адресов конкретной страны. Эта информация без проблем ищется в интернете, например вот тут — http://ipdeny.com/ipblocks/. Я взял список адресов одной страны и загнал его в свой скрипт для iptables, о котором рассказано в моей статье.

Запуск скрипта с добавленным списком огромного количество ip адресов и диапазонов длился секунд 10. Сейчас уже точно не помню, какую страну взял, если не ошибаюсь, то список был на несколько тысяч строк. Я понял, что так дело не пойдет, но все же решил попробовать добавить еще одну страну. После запуска скрипта сервер просто завис. Перестал отвечать на запросы, по ssh меня отключило. Пошел в консоль и перезагрузил сервер.

Я понял, что просто в лоб нельзя в iptables загнать большие списки. Стал искать другой способ, как реализовать ограничение доступа к серверу на основе большого списка правил. Решение было найдено — ipset. Официальная страница проекта — http://ipset.netfilter.org/. Ipset представляет из себя модуль ядра и утилиту для настройки, поэтому работает все быстро и переваривает огромные списки правил. В iptables при этом добавляется только одно правило.

Дальше я расскажу, как установить и настроить ipset. Работать будем на сервере CentOS 7. В других дистрибутивах никаких отличий не будет, за исключением установки и запуска модуля ядра.

Включение логов

Во время настройки полезно включить логи, чтобы мониторить заблокированные пакеты и выяснять, почему отсутствует доступ к необходимым сервисам, которые мы вроде бы уже открыли. Я отправляю все заблокированные пакеты в отдельные цепочки (block_in, block_out, block_fw), соответствующие направлению трафика и маркирую в логах каждое направление. Так удобнее делать разбор полетов. Добавляем следующие правила в самый конец скрипта, перед сохранением настроек:

Все заблокированные пакеты вы сможете отследить в файле /var/log/messages.

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

Настройка хостинга

На предыдущем шаге представлена ссылка на статью, по которой мы сконфигурировали полноценный веб-сервер. Но для хостинга необходимо внести некоторые дополнительные настройки.

Общий пользователь

Так как к одним и тем же каталогам необходимы права доступа для nginx и apache, создаем общую группу и добавим в нее учетные записи, от которых работают данные веб-сервисы.

Добавим группу virtwww:

groupadd virtwww

Задаем созданную группу как дополнительную для apache и nginx:

usermod apache -G virtwww

usermod nginx -G virtwww

Запуск виртуальных доменов от определенного пользователя

Чтобы каждый виртуальный домен apache мог работать от отдельного пользователя, устанавливаем модуль httpd-itk:

yum install httpd-itk

После открываем следующий файл:

vi /etc/httpd/conf.modules.d/00-mpm-itk.conf

и снимаем комментарий для LoadModule — получится:

LoadModule mpm_itk_module modules/mod_mpm_itk.so

Настройка Apache

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

vi /etc/httpd/conf/httpd.conf

<Directory /var/www/*/*/www>
    AllowOverride All
    Options Indexes ExecCGI FollowSymLinks
    Require all granted
</Directory>
<Directory /var/www/*/*/cgi>
        AllowOverride All
        Options Indexes ExecCGI FollowSymLinks
        Require all granted
</Directory>

* по предложенной статье права были выданы на каталоги  /var/www/*/www, для хостинга мы будем использовать немного другую вложенность.

Просмотр загрузки сети с помощью iftop

Теперь представим ситуацию, что кто-то забил весь интернет канал и вам надо быстро выяснить, кто это сделал. По-умолчанию, никаких подручных и удобных средств на шлюзе для этого нету. Установим одно из таких средств — программу iftop. Это простая консольная утилита, которая дает возможность оперативно посмотреть статистику загруженности сетевого интерфейса в реальном времени.

Устанавливаем iftop на debian:

# apt-get install -y iftop

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

# iftop -i eth1

Чтобы увидеть порты, по которым идет трафик, добавляем ключ -P:

# iftop -i eth1 -P

На основе этой картинки уже можно сделать определенные выводы по использованию интернет канала

Обращаю внимание, что я смотрю загрузку локального интерфейса eth1. Если смотреть на eth0, то мы увидим только исходящие соединения сервера

Сетевые настройки на сервере CentOS

Первый раз с сетевыми настройками сервера CentOS 7 или 8 мы сталкиваемся, когда производим установку. На экране первоначальной настройки есть отдельный пункт, касающийся настройки сетевых интерфейсов:

Зайдя в него мы видим список подключенных сетевых карт. Каждую из них можно включить соответствующим ползунком (пункт 1 на картинке). При активировании интерфейса он автоматически получает настройки по dhcp. Результат работы dhcp можно посмотреть тут же. Если вас не устраивают эти настройки, их можно отредактировать, нажав configure (пункт 3 на картинке). Здесь же можно задать hostname (пункт 2 на картинке):

Открыв окно дополнительный настроек Ehernet, вы сможете изменить имя сетевого интерфейса, указать настройки IP (пункт 1 на картинке), выбрать ручные настройки (пункт 2 на картинке), назначить ip адрес (пункт 3 на картинке), установить dns сервер (пункт 4 на картинке) и сохранить сетевые настройки (пункт 5 на картинке):

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

Теперь рассмотрим другую ситуацию. Сервер, а соответственно и конфигурацию сети, производили не вы, а теперь вам надо ее посмотреть либо изменить. В вашем распоряжении консоль сервера, в ней и будем работать. Если у вас установка производилась с дистрибутива minimal, то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:

или в русской версии:

Для работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools. Сделаем это:

Теперь можно увидеть настройки сети:

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

Мы увидели конфигурацию сети, теперь давайте ее отредактируем. Допустим, нам нужно сменить ip адрес. Для этого идем в директорию /etc/sysconfig/network-scripts и открываем на редактирование файл ifcfg-eth0 или ifcfg-ens18. Название файла будет зависеть от имени сетевого интерфейса. В Centos 8 по-умолчанию убрали поддержку настройки сети через конфигурационные скрипты, поэтому установите отдельно пакет network-scripts.

По настройкам из этого файла мы получаем ip адрес по dhcp. Чтобы вручную прописать статический ip, приводим файл к следующему содержанию:

Мы изменили параметры:

BOOTPROTO с dhcp на none
DNS1 указали dns сервер
IPADDR0 настроили статический ip адрес
PREFIX0 указали маску подсети
GATEWAY0 настроили шлюз по-умолчанию

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

Проверяем, применилась ли новая конфигурация сети:

Все в порядке, новые настройки сетевого интерфейса установлены.

Действия с соединениями

Есть три типа действий, выполняемых с соединениями:

Accept — разрешить соединение.

Drop — игнорировать (блокировать) соединение без сообщения источнику об отказе. Это рекомендуемый вариант для обработки трафика на портах, подключенных к интернету, так как в этом случае злоумышленники получают минимум информации при сканировании портов.

Reject — отказать в соединении, сообщив источнику запроса об отказе. По умолчанию отправляется ответный пакет «icmp-port-unreachable», но также возможна дополнительная настройка сообщения (например, «icmp-host-unreachable», «icmp-net-prohibited», «icmp-host-prohibited» и др.). 

Указываем сетевые параметры

Итак, у нас в наличии только что установленная система. Узнать или проверить ее версию можно командами:

# uname -a
Linux debian10 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64 GNU/Linux

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

Очень подробно про настройку сети в Debian я написал в отдельной статье. Рекомендую с ней ознакомиться. Здесь же кратко выполним основное. Для настройки сети, необходимо отредактировать файл /etc/network/interfaces. Сделаем это:

# nano /etc/network/interfaces

Для получения IP адреса по dhcp достаточно будет следующего содержания:

allow-hotplug eth0
iface eth0 inet dhcp

Если у вас статический адрес, то его настроить можно следующими параметрами в файле:

allow-hotplug eth0
iface eth0 inet static
address 192.168.1.24
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

Сохраняем файл. Теперь нужно выполнить перезапуск сети. В Debian это делается командой:

# systemctl restart networking.service

В системном логе /var/log/syslog при этом будут записи:

debian10 systemd: Stopping Raise network interfaces...
debian10 systemd: networking.service: Succeeded.
debian10 systemd: Stopped Raise network interfaces.
debian10 systemd: Starting Raise network interfaces...
debian10 systemd: Started Raise network interfaces.

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

К сетевым настройкам я отношу установку пакета net-tools, в состав которого входят старые и привычные утилиты для работы с сетью — ifconfig, netstat, route и другие. В современных дистрибутивах их заменили одной командой ip, но лично мне вывод некоторых старых команд, конкретно, netstat, нравится больше, поэтому я иногда ими тоже пользуюсь.

# apt install net-tools

На этом настройка сети закончена.

Какие бывают правила

Для легкой работы с файрволом разработана тройка основных правил (команд):

1.Input.

Правило применяется, когда необходимо контролировать входящий трафик. Например, когда юзер подключается к удаленному серверу по протоколу Secure Shell, файрвол начнет сравнивать его айпи с другими айпи из своего списка. В зависимости от результата, то есть от наличия в списке запретов, доступ пользователю будет открыт или закрыт.

2.Forward.

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

3.Output.

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

Примечание:

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

Дополнительные материалы по Debian

Рекомендую полезные материалы по Debian:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка сети
  • Обновление 8 до 9
  • Обновление 7 до 8
  • Включение логов cron

Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика.

Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования.

Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.

Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления.

Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления.

Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog.

Настройка программных комплексов
 
  • Proxmox
  • Шлюз в интернет
  • Установка Asterisk
  • Asterisk+Freepbx
  • PostgreSQL для 1С
  • Настройка pptp

Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке.

Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop.

Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk.

Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки.

Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива.

Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети.

Разное
  • Бэкап с помощью rsync
  • Тюнинг postgresl для 1C

Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows.

Ускорение работы 1С с postgresql и диагностика проблем производительности

Примеры часто используемых команд iptables

Общие команды

Просмотр правил с их номерами:

iptables -L —line-numbers

Для каждой таблицы смотреть правила нужно отдельно: 

iptables -t nat -L —line-numbers

Удалить все правила:

iptables -F

Установить правила по умолчанию:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* в данных примерах по умолчанию для всех входящих (INPUT) и исходящих (OUTPUT) пакетов будет работать запрещающее правило (DROP).

Разрешить все

Способ 1. С помощью добавления правила:

iptables -I INPUT 1 -j ACCEPT

iptables -I OUTPUT 1 -j ACCEPT

iptables -I FORWARD 1 -j ACCEPT

* данные три команды создадут правила, которые разрешают все входящие, исходящие и транзитные пакеты.

Способ 2. Чисткой правил:

iptables -F

iptables -S

* здесь мы сначала удаляем все правила (-F), затем устанавливаем политику по умолчанию — разрешать входящие, исходящие и транзитные (-S).

Способ 3. Отключение сервиса (удобно для диагностики проблем на время отключить firewall):

service iptables stop

iptables stop

Работа с правилами

1. Добавить правило в конец списка:

iptables -A INPUT -p tcp —dport 25 -j ACCEPT

iptables -A INPUT -p tcp -s ! 192.168.0.25 —dport 993 -i eth0 -j ACCEPT

2. Добавить диапазон портов:

iptables -A INPUT -p tcp —dport 3000:4000 -j ACCEPT

* в данном случае, от 3000 до 4000.

3. Вставить правило:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 —dport 53 -i eth1 -j ACCEPT

4. Заблокировать определенный IP-адрес для подключения по 25 порту:

iptables -I INPUT 1 -s 1.1.1.1 -p tcp —dport 25 -j DROP

5. Разрешить несколько портов:

iptables -A INPUT -p tcp —match multiport —dports 20,21,25,80,8080,3000:4000 -j ACCEPT

Проброс портов (port forwarding)

Рассмотрим пример проброса одного порта и диапазона портов.

Один порт (одинаковые порты)

Существует два способа настройки.

1. Правила PREROUTING + POSTROUTING:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —to-destination 192.168.1.15:22

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sport 22 -j SNAT —to-source 19.8.232.80:22

* где 19.8.232.80 — адрес, на котором слушаем запросы на подключение; 22 — порт для проброса; 192.168.1.15 — внутренний IP-адрес, на который переводим все запросы.

2. Правила PREROUTING + FORWARD:

iptables -t nat -A PREROUTING -p tcp -i eth1 —dport 22 -j DNAT —to-destination 192.168.1.15:22

iptables -A FORWARD -p tcp -d 192.168.1.15 —dport 22 -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT

* где eth1 — сетевой интерфейс, на котором слушаем запросы; 22 — порт для проброса; 192.168.1.15 — внутренний IP-адрес, на который переводим все запросы.

Один порт (разные порты)

Рассмотрим ситуацию, когда мы слушаем один порт, а пробрасываем на другой.

iptables -t nat -A PREROUTING -p tcp -i eth1 —dport 8022 -j DNAT —to-destination 192.168.1.15:22

iptables -A FORWARD -p tcp -d 192.168.1.15 —dport 22 -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT

* где eth1 — сетевой интерфейс, на котором слушаем запросы; 8022 — порт для проброса, на котором будем слушать запросы; 22 — порт для проброса на внутренний адрес; 192.168.1.15 — внутренний IP-адрес, на который переводим все запросы.

Диапазон портов

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

iptables -t nat -I PREROUTING -p tcp -m tcp —dport 1000:5000 -j DNAT —to-destination 192.168.1.15:1000-5000

iptables -A FORWARD -d 192.168.1.15 -i eth1 -p tcp -m tcp —dport 1000:5000 -j ACCEPT

* где eth1 — сетевой интерфейс, на котором слушаем запросы; 1000:5000 — порты для проброса (от 1000 до 5000); 192.168.1.15 — внутренний IP-адрес, на который переводим все запросы.

Стартовая настройка

Разрешаем SSH:

iptables -A INPUT -p tcp —dport 22 -j ACCEPT

Создаем правила для нормальной работы apt-get или yum:

iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

Разрешаем ICMP (для выполнения команды ping):

iptables -A INPUT -p icmp -j ACCEPT

Разрешаем все входящие на адрес локальной петли:

iptables -A INPUT -i lo -j ACCEPT

Ставим политику запрета на входящие и разрешаем все исходящие:

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

7: Удаление правил брандмауэра

Существует два способа удалить правило: указать номер правила или само правило.

Удаление правила по его номеру

Для начала просмотрите список существующих правил. Для этого запросите состояние брандмауэра с опцией numbered.

К примеру, чтобы удалить правило 2 (открывающее трафик HTTP), нужно запустить команду:

Программа запросит подтверждения.

Примечание: Если сервер поддерживает IPv6, нужно удалить соответствующее правило и для этого протокола.

Удаление правила

Также можно указать в команде само правило, которое нужно удалить. К примеру, чтобы удалить allow http, нужно запустить:

или

Этот метод работает и для IPv4, и для IPv6.

Что такое Iptables?

Операционные системы Linux, на которых чаще всего и функционируют серверы (виртуальные машины), имеют встроенный инструмент защиты – программный фильтр Iptables. Все сетевые пакеты идут через ядро приложения и проходят проверку на безопасность для компьютера. Сценария всего два – или данные передаются дальше на обработку, или полностью блокируются.

Виды пакетов

Информационные пакеты фильтруются исходя из назначения. Под контроль попадают все данные, входящие на сервер, исходящие из него или проходящие через него как маршрутизатор (например, если компьютер используется в качестве прокси). Такой подход создает сплошной защитный экран (файрвол), через который практически нереально проникнуть с вредоносными целями.

Описания пакетов:

  1. Input. Обрабатываются входящие подключения вроде подключения по протоколу SSH или при отправке на веб-сайт каких-либо файлов.
  2. Forward. Цепочка формируется при активации проходящего соединения, когда информация предназначена «третьему» компьютеру, а текущий сервер выполняет роль маршрутизатора.
  3. Output. Исходящие пакеты данных, например, при запуске какого-либо сайта в браузере или при проверке скорости соединения и доступности PING.

В реальной работе сервера постоянно формируется минимум два вида пакетов – Input и Output. Ведь на каждый запрос пользователя положено дать ответ: сначала о поступлении данных на сервер, а затем и о результате обработки. Если «принято решение» отказать в доступе, об этом также сообщается на удаленное рабочее место. Иначе запрос зависнет, и пользователь будет видеть пустой экран.

Правила и действия Iptables

На каждый тип пакетов распространяется определенный набор правил, и их следует учитывать при настройке программы Iptables. Большая часть запросов проходит в виде последовательных цепочек в различных комбинациях. Если ошибиться на этом этапе, приложение будет функционировать со сбоями и блокировать «полезные» запросы.

Примеры действий:

  1. ACCEPT – пропустить пакет данных далее по цепочке;
  2. DROP – полностью удалить пакет;
  3. REJECT – отклонить запрос и направить пользователю ответ с информацией об этом;
  4. LOG – инициируется запись в лог-файл об обработанном пакете;
  5. QUEUE – отправка данных на компьютер пользователя.

Правила проверки устанавливаются в зависимости от характера соединения. Возможен мониторинг IP-адреса, порта подключения, отправителя, заголовка. Если пакет не проходит хотя бы по одному критерию, осуществляется действие ACCEPT (сквозное пропускание пакета, который не требуется блокировать файрволом). Фильтрация возможна на двух этапах:

  • prerouting – система только получила пакет, и нет команды «что с ним делать»: обрабатывать на сервере, возвращать пользователю или пропускать насквозь;
  • postroutnig – обработка после оценки «пункта назначения».

Как загрузить правила iptables

Для ручного восстановления настроек можно использовать вызов утилиты iptables-restore. Она восстанавливает настройки брандмауэра Netfilter с указанного файла или из потока ввода STDIN, если файл не задан явно. Рассмотрим синтаксис iptables-restore:

iptables-restore

Основные опции:

  • -c: восстанавливает значения всех счетчиков пакетов и байтов;
  • -n: позволяет не сбрасывать содержимое правил обновляемой таблицы правил iptables. Если не указан — все текущие правила обновляемой таблицы сбрасываются. Получается, что правила из файла дописываются в конец таблиц рабочей конфигурации, если указан этот параметр;
  • -t: происходит только сборка и тестирование набора правил из файла, без обновление рабочей таблицы правил iptables;
  • -v: выводит дополнительную отладочную информацию в течении восстановления набора правил;
  • -V: выводит номер версии программы;
  • -w секунды: дождаться монопольной блокировки фильтра пакетов ядра linux xtables. Применяется, чтобы предотвратить одновременное выполнение нескольких экземпляров утилиты. Опция заставляет ждать программу в течении некоторого времени возможности монопольной блокировки xtables;
  • -W миллисекунды: интервал ожидания для каждой попытки запуска пакета в монопольном режиме. Часто многие приложения системы критичны к времени запуска и выполнения, поэтому длительное ожидания для монопольной блокировки xtables часто является неприемлемым. Данный параметр в миллисекундах задает максимальное время такого ожидания. По умолчанию равно 1 секунде. Применяется только совместно с ключом -w;
  • -M modprobe: Указывает путь к программе modprobe. По умолчанию iptables-restore проверяет /proc/sys/kernel/modprobe для определения пути к исполняемому файлу. modprobe — утилита управления модулями ядра. Существует несколько вариантов данной утилиты. Данный параметр можно проигнорировать;
  • -T таблица: Восстанавливает только таблицу правил с указанным именем, даже если поток данных содержит другие таблицы;
  • имя файла: путь до файла с восстанавливаемыми таблицами правил в файловой системе

Вот пример команды iptables-restore:

Или вариант восстановления правил из файла без сброса содержимого текущих таблиц Netfilter:

Как добавить статический маршрут в CentOS

Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat:

В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.

Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:

Проверяем, появился ли добавленный маршрут в таблицу маршрутизации:

Все в порядке, маршрут добавлен. Делаем то же самое с помощью утилиты ip.

Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:

Перезагружаемся и проверяем, на месте ли маршрут:

Все в порядке, статический маршрут добавлен.

Дополнительные настройки

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

$ iptables-t таблицадействиецепочкадополнительные_параметры

Здесь «таблица» указывает таблицу, с которой нужно работать. «Действие» — указывает действие, которое нужно выполнить (например, создать/удалить правило). «Дополнительные параметры» описывают действие и правило, которое нужно выполнить. Какими бывают действия?

  • -A. Добавить правило в цепочку; 
  • -С. Проверить все правила; 
  • -D. Удалить правило; 
  • -I. Вставить правило с нужным номером; 
  • -L. Вывести все правила в текущей цепочке; 
  • -S. Вывести все правила; 
  • -F. Очистить все правила; 
  • -N. Создать цепочку; 
  • -X. Удалить цепочку; 
  • -P. Установить действие по умолчанию. 

Среди дополнительных настроек для правил выделим следующие:

  • -p. Указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh; 
  • -s. Указать ip адрес устройства-отправителя пакета; 
  • -d. Указать ip адрес получателя; 
  • -i . Входной сетевой интерфейс; 
  • -o. Исходящий сетевой интерфейс; 
  • -j. Выбрать действие, если правило подошло.

В целом это всё, что нужно знать о настройке iptables в Linux-системах. Напоминаем, что без необходимости и достаточных знаний менять системные настройки опасно. Рекомендуем экспериментировать на виртуальной машине.

Вступление

Iptables в настоящее время является стандартом де-факто в среде современных linux дистрибутивов. Я даже сходу не могу припомнить, что еще используют в качестве фаервола. Так что любому администратору линукс приходится сталкиваться в своей работе с настройкой этого межсетевого экрана.

К этому фаерволу существуют разные обвязки, которые используются для более «удобной» настройки. В ubuntu есть ufw, в centos — firewalld, с другими не знаком. Лично я не вижу никакого удобства в использовании этих инструментов. Я привык настраивать линуксовый фаервол по-старинке, как научился в самом начале работы. Мне кажется это наиболее простым и удобным способом, которым я с вами и поделюсь. Суть его сводится к тому, что создается скрипт с правилами фаервола. Этот скрипт можно легко редактировать под свои нужды и переносить с сервера на сервер.

3: Настройка соединений SSH

Если включить UFW сейчас, он заблокирует все входящие соединения. Потому нужно создать правила, которые разрешат входящий трафик заведомо безопасных сервисов (например, SSH и HTTP). Обязательно нужно разрешить трафик SSH на облачном сервере, так как этот протокол позволяет вам подключаться к серверу.

Чтобы разблокировать соединения SSH, введите:

Это правило разрешит входящие соединения порта 22 (порт SSH по умолчанию). UFW знает имена некоторых сервисов (в том числе и SSH). Все эти сервисы перечислены в файле /etc/services.

Вместо названия сервиса в правиле можно указать порт. Например:

Если вы используете нестандартный порт SSH, укажите его в команде. К примеру, если SSH прослушивает порт 2222, нужно ввести:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: