Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!
Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив
- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I
Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!
Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!
Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!
Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.
Задайте питання в службу підтримки 24/7/365
Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями
Як користуватися цією настановою
Для початку потрібно встановити iptables на свій сервер.
Більшість описаних в керівництві правил скидають вхідний трафік згідно з політикою за замовчуванням (DROP). Ви можете вибірково розблокувати вхідний трафік самостійно.
Вам необов'язково виконувати все керівництво по порядку. Знайдіть розділ, який містить необхідні вам інструкції, і використовуйте запропоновані в ньому правила. В основному, розділи керівництва ніяк не пов'язані один з одним.
При необхідності ви можете просто скопіювати і вставити запропоновані тут приклади правил, попередньо скоригувавши їх.
Запам'ятайте: порядок правил у файлі має величезне значення! Кожна команда iptables використовує прапор -A, щоб вставити правило в кінець ланцюжка. Якщо ви хочете вибрати місце, яке буде займати правило в ланцюжку, використовуйте прапор -I. Щоб помістити правило в початок ланцюжка, просто не вказуйте в команді його номер.
Примітка. При роботі з брандмауером можна випадково заблокувати собі доступ до власного сервера - заборонити SSH-трафік, порт 22. Якщо це сталося, спробуйте підключитися до сервера за допомогою консолі і виправте налаштування брандмауера, дозвольте трафік на порт 22. Якщо ж ви не зберегли новий набір правил, який блокує SSH, а старі правила відкривають порт 22, просто запустіть сервер. Незбережені правила будуть скинуті, і ви знову зможете підключитися до сервера.
Щоб перевірити поточний набір правил iptables, використовуйте команди:
sudo iptables -S
sudo iptables -L
збереження правил
Правила Iptables скидаються після перезавантаження сервера. Щоб вони використовувалися на постійній основі, їх потрібно зберегти вручну.
Збереження правил в Ubuntu
В Ubuntu правила зберігаються за допомогою пакета iptables-persistent. Встановіть цей пакет:
sudo apt-get install iptables-persistent
Під час установки буде запропоновано зберегти поточний набір правил.
Якщо ви оновили правила і хочете зберегти їх, введіть команду: е
sudo invoke-rc.d iptables-persistent save
Збереження правил в CentOS 6 і старіших версіях
Примітка. CentOS 7 за умовчанням використовує FirewallD.
У CentOS 6 і старіших версіях можна використовувати скрипт ініціалізації iptables, щоб зберегти файл:
sudo service iptables save
Поточний набір правил iptables буде збережений в / etc / sysconfig / iptables.
Ця тема докладно розглянута в керівництві Висновок і видалення правил IPTables.
Загальні правила IPTables
В даному розділі ви знайдете найпоширеніші правила і команди IPTables.
Підтримка інтерфейсу зворотного петлі
Інтерфейс зворотного петлі (також називається lo) - це інтерфейс, який комп'ютер використовує для підключення до мережі до самого себе.
Щоб дозволити трафік на інтерфейс зворотнього петлі, виконайте наступні команди:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
Дозвіл існуючих і пов'язаних з ними вхідних підключень
Мережевий трафік в цілому повинен бути двостороннім (вхідний і вихідний). Потрібно додати правило брандмауера, яке дозволяє існуючі з'єднання і пов'язаний з ними вхідний трафік, щоб сервер підтримував зворотний трафік вихідних з'єднань, ініційованих самим сервером.
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT
Дозвіл існуючих вихідних з'єднань
Щоб дозволити серверу підтримувати вихідний трафік існуючих з'єднань, використовуйте команду:
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
Зовнішня і внутрішня мережа
З огляду на, що eth0 - зовнішня мережа, а eth1 - внутрішня мережа, наступне правило налаштує їх взаємодія:
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Скидання недійсних пакетів
Іноді пакети мережевого трафіку позначаються як недійсні. У деяких ситуаціях такі пакети потрібно зареєструвати в балці, але зазвичай їх краще скинути. Це робиться за допомогою наступної команди:
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
sudo iptables -A INPUT -s 15.15.15.51 -j DROP
У даній команді -s 15.15.15.51 вказує джерело з'єднань, який потрібно заблокувати.
Примітка. Вказати IP джерела можна в будь-якому правилі брандмауера, включаючи allow.
sudo iptables -A INPUT -s 15.15.15.51 -j REJECT
Обмеження з'єднань по інтерфейсу
Брандмауер може заблокувати з'єднання, що надходять від IP (наприклад, 15.15.15.51) на певний інтерфейс (наприклад, eth0).
iptables -A INPUT -i eth0 -s 15.15.15.51 -j DROP
Ця команда відрізняється від попередньої тільки опцією -i eth0. Ви можете вказати мережевий інтерфейс в будь-якому правилі брандмауера.
сервіс SSH
Щоб працювати з хмарним сервером, потрібно дозволити вхідні з'єднання SSH (порт 22).
Дозвіл всього вхідного трафіку
Для цього використовуйте команди:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих SSH-з'єднань, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
sudo iptables -A INPUT -p tcp -s 15.15.15.0/24 --dport 22 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих SSH-з'єднань, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Дозвіл вихідного трафіку
Якщо політика OUTPUT - НЕ ACCEPT, але вам потрібно дозволити вихідні SSH-з'єднання, використовуйте:
sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Вхідні з'єднання rsync
Rsync використовує порт 873 і дозволяє передавати файли з одного комп'ютера на інший.
sudo iptables -A INPUT -p tcp -s 15.15.15.0/24 --dport 873 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 873 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань rsync, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Веб-сервери
Веб-сервери (наприклад Apache і Nginx) зазвичай прослуховують HTTP і HTTPS з'єднання на портах 80 та 443 відповідно. Якщо політика брандмауера блокує або відхиляє з'єднання, вам потрібно створити правила-виключення з цієї політики, щоб веб-сервери могли обслуговувати запити.
Дозвіл вхідного трафіку HTTP
Щоб дозволити весь вхідний HTTP-трафік (порт 80), використовуйте:
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих HTTP-з'єднань, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Дозвіл вхідного трафіку HTTPS
Щоб дозволити весь вхідний HTTPS -трафік (порт 443), введіть:
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих HTTPS-з'єднань, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Дозвіл вхідного трафіку HTTP і HTTPS
Щоб дозволити трафік HTTP і HTTPS, використовуйте модуль multiport. Створіть правило, яке відкриває обидва порту для вхідного трафіку:
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих HTTP і HTTPS-з'єднань, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Система управління базами даних MySQL
MySQL прослуховує клієнтські з'єднання на порту 3306. Якщо сервер бази даних MySQL використовується клієнтом на віддаленому сервері, ви повинні обов'язково вирішити цей трафік.
sudo iptables -A INPUT -p tcp -s 15.15.15.0/24 --dport 3306 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань MySQL, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Мережеві інтерфейси MySQL
Щоб дозволити доступ до MySQL за допомогою певного мережевого інтерфейсу (наприклад, eth1), використовуйте наступні команди:
sudo iptables -A INPUT -i eth1 -p tcp --dport 3306 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -o eth1 -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань MySQL, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Система управління базами даних PostgreSQL
PostgreSQL прослуховує клієнтські з'єднання на порту 5432. Якщо сервер PostgreSQL використовується клієнтом на віддаленому сервері, ви повинні обов'язково вирішити цей трафік.
sudo iptables -A INPUT -p tcp -s 15.15.15.0/24 --dport 5432 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT
де 15.15.15.0/24 - підмережа, яка зможе отримати доступ до PostgreSQL.
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань PostgreSQL, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Мережеві інтерфейси PostgreSQL
Щоб дозволити доступ до PostgreSQL за допомогою певного мережевого інтерфейсу (наприклад, eth1), використовуйте наступні команди:
sudo iptables -A INPUT -i eth1 -p tcp --dport 5432 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -o eth1 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань PostgreSQL, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
поштові сервіси
Блокування вихідної пошти SMTP
Якщо сервер не повинен відправляти вихідну пошту, ви можете заблокувати цей вид трафіку. SMTP використовує порт 25. Щоб заблокувати вихідний трафік, виконайте наступну команду:
sudo iptables -A OUTPUT -p tcp --dport 25 -j REJECT
Тепер iptables буде відхиляти весь вихідний трафік на порт 25. Щоб скинути трафік іншого порту, просто вкажіть в команді його номер.
Дозвіл трафіку SMTP
Щоб відкрити весь SMTP-трафік на порт 25, запустіть:
sudo iptables -A INPUT -p tcp --dport 25 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 25 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань SMTP, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Примітка. Зазвичай SMTP-сервери використовують порт 587 для вихідної пошти.
Дозвіл вхідного трафіку IMAP
Щоб сервер міг відповідати на IMAP-з'єднання на порту 143, запустіть:
sudo iptables -A INPUT -p tcp --dport 143 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 143 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань IMAP, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Дозвіл вхідного трафіку IMAPS
Щоб сервер міг відповідати на IMAPS -соєдіненія на порте 993, запустіть команди:
sudo iptables -A INPUT -p tcp --dport 993 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 993 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань IMAPS, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Дозвіл вхідного трафіку POP3
Щоб сервер міг відповідати на POP3-з'єднання на порту 110, введіть такі команди:
sudo iptables -A INPUT -p tcp --dport 110 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 110 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань POP3, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
Дозвіл вхідного трафіку POP3S
Щоб сервер міг відповідати на POP3S -соєдіненія на порте 995, введіть:
sudo iptables -A INPUT -p tcp --dport 995 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 995 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Друга команда, яка дозволяє вихідний трафік існуючих з'єднань POP3S, потрібна тільки в тому випадку, якщо політика OUTPUT - НЕ ACCEPT.
висновок
Даний посібник охоплює більшість найпоширеніших команд і правил брандмауера iptables. Звичайно, iptables дуже гнучкий інструмент; щоб підібрати найбільш оптимальні правила, поекспериментуйте з настройками брандмауера самостійно.