US: +1 561 2500001/EU: +359 2 4925555 LiveChat
[email protected] Sign Up Login
ITLDC
  • SSD VDS
  • HD VDS
  • Серверы
  • Хостинг
  • Поддержка
  • Блог
  • Контакт
  • [EN]
  • [UA]
  • SSD VDS
  • HD VDS
  • Серверы
  • Хостинг
  • Поддержка
  • Блог
  • Контакт
  • [EN]
  • [UA]

Популярно об iptables

Популярно об iptables

Мар 28, 2014DmitryНовости

В операционной системе Linux есть мощный инструмент для управления трафиком — межсетевой экран (firewall), который называется iptables. Помимо базовых возможностей, связанных с безопасностью, iptables и сопутствующие модули ядра могут использоваться для множества применений: обеспечения трансляции адресов и портов, установки приоритетов и т.д. Давайте рассмотрим примеры использования iptables для основных, базовых задач. Для начала — общий, базовый синтаксис вызова iptables для установки правил:

1
iptables -A очередь -s источник -j действие

Удалить все правила с определенной очереди можно с помощью ключа -F:

1
iptables -F очередь

Самая простая задача файрвола — блокировка всего трафика в сторону нашего сервера с определенного IP. Для этого необходимо выполнить такую команду:

1
iptables -A INPUT -s 1.2.3.4 -j DROP

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

1
iptables -A INPUT -s 1.2.3.4 -j REJECT

В случае использования REJECT система на каждый приходящий пакет будет формировать специальный ответ, информирующий отправителя о невозможности доставки. Используйте REJECT только в необходимых случаях — при формировании этих ответов используются ресурсы сервера, поэтому в большинстве случаев достаточно использовать DROP.

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

1
iptables -A INPUT -p UDP -s 1.2.3.4 -j DROP

В следующем примере рассмотрим, как можно указать номера портов. Воспользуемся ключем —dport (порт назначения, destination port) для того, чтобы запретить для хоста 1.2.3.4 подключение к нашему серверу по протоколу ssh на стандартный порт 22:

1
iptables -A INPUT -p TCP -s 1.2.3.4 --dport 22 -j DROP

Есть возможность протоколировать работу определенных правил. Давайте сделаем так, чтобы в лог-файле (обычно — в /var/log/messages) были записи о работе фильтра. Первое правило протоколирует поступившие пакеты, второе — уничтожает их:

1
2
iptables -A INPUT -p TCP -s 1.2.3.4 --dport 22 -j LOG --log-prefix "SSH Filter:"
iptables -A INPUT -p TCP -s 1.2.3.4 --dport 22 -j DROP

В iptables можно указывать не только единичный адрес — возможно указать целую сеть. Для примера — заблокируем подключение к нашему вэбсерверу (порт 80) с диапазона адресов 10.1.2.* (в CIDR-нотации 10.1.2.0/24):

1
iptables -A INPUT -p TCP -s 10.1.2.0/24 --dport 80 -j DROP

Следующий пример покажет, как можно использовать iptables для проверки содержимого IP-пакетов. Например, можно журналировать или уничтожать пакеты, в которых есть определенная последовательность символов, в данном примере — ‘hack.php’:

1
iptables -I INPUT  -p TCP -m string --string "hack.php" -j LOG --log-prefix "HACK:"

Рассмотрим еще одну практическую задачу — ограничение количества подключений в сторону нашего сервера за единицу времени. Это может быть полезно для борьбы с флудом или простыми атаками. Следующим правилом мы установим лимит в 5 одновременных подключений с одного IP к нашему серверу по протоколу ssh:

1
iptables -A INPUT -p TCP --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT

Можно использовать другую конструкцию — следующее правило будет ограничивать количество новых соединений в сторону вэбсервера в 25 в минуту, причем этот лимит включится в том случае, если за предыдущую минуту было отмечено 100 соединений:

1
iptables -A INPUT -p TCP --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

Можно лимитировать соединения не по единичным адресам или в целом по системе, но и с использованием маски. В примере ниже мы установим блокировку для целой сети /24 в том случае, если ее адресов поступит более 20 соединений:

1
iptables -A INPUT -p TCP --dport 80 -m iplimit --iplimit-above 20 --iplimit-mask 24 -j REJECT

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

1
service iptables save

Для Debian рекомендуется установить вспомогательный пакет iptables-persistent, его следует инсталлировать с помощью стандартного менеджера пакетов:

1
aptitude install iptables-persistent

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

Напоследок хотим дать достаточно важную рекомендацию: при установке правил возможны ошибки, из-за которых вы можете заблокировать сами себя. Мы рекомендуем перед настройкой файрвола получить доступ к консоли вашего сервера (для выделенных серверов — запросить IP KVM, для VDS — воспользоваться встроенным VNC-клиентом). Если возникнет необходимость, вы всегда сможете с консоли восстановить доступ, «сбросив» ошибочные правила.

Tags: firewall,  iptables,  linux
Related Posts
  • Выпущен Centos 8

  • Как «растянуть» файловую систему VDS после смены тарифа без потери данных?

  • Основные команды systemd

  • Fedora 25 — новая версия популярного дистрибутива

← Вопросы и ответы: SSD VDS
Ajenti V — бесплатная панель управления с большими возможностями →

Recent Posts

  • ITLDC News — December 2022
    ITLDC News — December 2022

    We did not publish updates for November...

  • Let’s start our biggest SALE!
    Let’s start our biggest SALE!

    We will not complicate and publish some...

  • ITLDC News — October 2022
    ITLDC News — October 2022

    It's time to make a brief report on what...

  • Price adjustments for selected services
    Price adjustments for selected services

    Since the autumn of last year, the price...

  • Support for our friends and colleagues in Ukraine
    Support for our friends and colleagues in Ukraine

    Dear friends and colleagues from Ukraine...

  • Новый датацентр — UA2.IEV: Kyiv, Ukraine!
    Новый датацентр — UA2.IEV: Kyiv, Ukraine!

    Мы продолжаем увеличивать количество наш...

  • CyberMonday — продолжаем марафон скидок!
    CyberMonday — продолжаем марафон скидок!

    Черная Пятница прошла, но не будем остан...

  • Black Friday 2021 — скидки до 50% на все SSD VDS!
    Black Friday 2021 — скидки до 50% на все SSD VDS!

    Черная Пятница официально началась! На п...

EU Support

ITLDC EU Team

PO Box #201
Burgas
Burgas reg. 8000
Bulgaria

+1 561 2500001

[email protected]

US/APAC Support

ITLDC NOAM Team

PO Box 800054
Aventura
FL, 33280
USA

+1 561 2500001

[email protected]

Services

  • SSD VDS
  • Dedicated Servers
  • Shared Hosting
  • Colocation
  • DDoS Protection
  • SSL Certificates
  • Backup Storage
  • Reselling

Support

  • Get Help
  • ITLDC Status
  • Looking Glass
  • Our SLA
  • Datacenters
  • FAQ & Knowledgebase
  • Data Security
  • Contact us

© Copyright 1995-2019 ITLDC Team. You can freely use or share information from this site with a hyperlink to the original page.