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, 2014DmytroНовости

В операционной системе 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
  • Disk Usage 🧮 in Linux: Tools, Tips, and That One Mysterious 20GB Log File

  • OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy

  • Mastering the Art of Redirecting Chaos: Linux Shell I/O Redirection Explained

  • Выпущен Centos 8

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

Recent Posts

  • 🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10
    🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10

    So, your server is still running CentOS...

  • 🐬 5 Modern MySQL-Compatible Databases Worth Knowing
    🐬 5 Modern MySQL-Compatible Databases Worth Knowing

    These days, saying “I’m using MySQL” is...

  • 🛠️ Mission Complete: NL Datacenter Maintenance Report!
    🛠️ Mission Complete: NL Datacenter Maintenance Report!

    Last week, while most people were enjoyi...

  • Disk Usage 🧮  in Linux: Tools, Tips, and That One Mysterious 20GB Log File
    Disk Usage 🧮 in Linux: Tools, Tips, and That One Mysterious 20GB Log File

    You’re running your awesome website, cru...

  • OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy
    OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy

    TL;DR: OpenSSH just hit version 10.0, an...

  • 🛠️ DUS Datacenter Maintenance Complete: New Servers In!
    🛠️ DUS Datacenter Maintenance Complete: New Servers In!

    Guten Tag, liebe Hosting-Freunde! 🇩🇪 Gue...

  • Bash Process Management: How to Tame Your Shell Like a Pro
    Bash Process Management: How to Tame Your Shell Like a Pro

    Running Linux commands is cool. Running...

  • 🚀 Beyond Nginx: Exploring the Best Lightweight Web Servers for PHP & HTTPS
    🚀 Beyond Nginx: Exploring the Best Lightweight Web Servers for PHP & HTTPS

    Nginx has long been the go-to web server...

US/APAC Support

ITLDC

PO Box #800054
Aventura
FL 33280
USA

+1 561 2500001

[email protected]

EU Support

Smart Industries LLC

187E Warm Springs Rd B218
Las Vegas
NV 89119
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.