Налаштування iptables для чайників

Кожен комп`ютер, підключений до мережі, знаходиться в потенційну небезпеку. У мережі дуже багато загроз починаючи від програм, які будуть намагатися будь-яким способом проникнути в систему і закінчуючи хакерами, які хочуть отримати доступ до потрібного їм комп`ютера. А програмне забезпечення, встановлене на комп`ютері, може містити ще не відомі і невиправлені уразливості, які і можуть стати дірою в безпеці.

Якщо для домашніх комп`ютерів це не дуже актуально, так як вони підключені до мережі через роутери і NAT, які приховують їх від зовнішньої мережі, то для серверів це актуально як ніколи. В операційній системі Linux в ядро ​​вбудований дуже гнучкий і надійний фаєрвол iptables.

Саме за допомогою цієї програми виконується захист системи від зовнішніх вторгнень, перенаправлення портів, а також ще дуже багато дій з трафіком. Але її мінус в тому, що вона трохи складна в налаштуванні. У цій статті буде розглянута настройка iptables для чайників. Я сподіваюся, що після неї ви зможете впевнено користуватися базовими можливостями iptables.

Що таке Iptables?

Підсистема iptables і Netfilter вже досить давно вбудована в ядро ​​Linux. Всі мережеві пакети, які проходять через комп`ютер, відправляються комп`ютером або призначені комп`ютера, ядро ​​направляє через фільтр iptables. Там ці пакети піддаються перевіркам і потім для кожної перевірки, якщо вона пройдена виконується зазначена в ній дію. Наприклад, пакет передається далі ядру для відправки цільовій програмі, або відкидається.

види пакетів

Всі пакети діляться на три типи: вхідні, вихідні і проходять. Вхідні - це ті, які були відправлені на цей комп`ютер, вихідні - відправлені з цього комп`ютера в мережу. А що проходять - це пакети, які просто повинні бути переслані далі, наприклад, якщо ваш комп`ютер виступає в якості маршрутизатора.

Відповідно в фільтрі iptables все пакети діляться на три аналогічні ланцюжка:

  • Input - обробляє вхідні пакети і підключення. Наприклад, якщо який-небудь зовнішній користувач намагається підключитися до вашого комп`ютера за ssh або будь-який веб-сайт відправить вам свій контент за запитом браузера. Всі ці пакети потраплять в цей ланцюжок;
  • forward - цей ланцюжок застосовується для перехожих з`єднань. Сюди потрапляють пакети, які відправлені на ваш комп`ютер, але не призначені йому, вони просто пересилаються по мережі до своєї мети. Як я вже говорив, таке спостерігається на маршрутизаторах або, наприклад, якщо ваш комп`ютер роздає wifi;
  • output - цей ланцюжок використовується для вихідних пакетів і з`єднань. Сюди потрапляють пакети, які були створені при спробі виконати ping inuasparwil.ru або коли ви запускаєте браузер і намагаєтеся відкрити будь-який сайт.

Але якщо ви думаєте що можна просто повністю закрити ланцюжок Input для збільшення безпеки, то ви дуже сильно помиляєтеся. При роботі мережі використовуються обидві ланцюжки input і output. Наприклад, ви намагаєтеся виконати ping, дані відправляються через output, але відповідь приходить через input. Те ж саме відбувається при перегляді сайтів і інших діях. А ось ланцюжок forward може взагалі не використовуватися якщо ваш комп`ютер не є маршрутизатором. Так що настройка iptables повинна виконуватися дуже акуратно.

Правила та дії

Перед тим як перейти до створення списку правил iptables потрібно розглянути як вони працюють і які бувають. Для кожного типу пакетів можна встановити набір правил, які по черзі будуть перевірятися на відповідність з пакетом і якщо пакет відповідає, то застосовувати до нього вказане в правилі дію. Правила утворюють ланцюжок, тому input, output і forward називають ланцюжками, ланцюжками правил. Дій може бути декілька:

  • ACCEPT - дозволити проходження пакета далі по ланцюжку правил;
  • DROP - видалити пакет;
  • REJECT - відхилити пакет, відправнику буде відправлено повідомлення, що пакет був відхилений;
  • LOG - зробити запис про пакет в лог файл;
  • QUEUE - відправити пакет призначеному для користувача додатком.

Правила можуть перевіряти будь-які відповідності, наприклад, по ip, по порту одержувача або відправника, заголовкам пакета і багато чому іншому. Якщо пакет не підходить жодному з правил, то до нього застосовується дія за замовчуванням, зазвичай ACCEPT.

Коли ми розібралися з правилами, можна повернуться назад до ланцюжків. Крім перерахованих вище, є ще дві додаткові ланцюжка правил:

  • prerouting - в цей ланцюжок пакет потрапляє перед обробкою iptables, система ще не знає куди він буде відправлений, в input, output або forward;
  • postrouting - сюди потрапляють всі, хто проходить пакети, які вже пройшли ланцюжок forward.

Але це ще не все. У нас ще є таблиці iptables, з якими теж бажано розібратися.

таблиці ipatables

Над ланцюжками правил в iptables є ще один рівень абстракції, і це таблиці. В системі є кілька таблиць, і всі вони мають стандартний набір ланцюжків input, forward і output. Таблиці призначені для виконання різних дій над пакетами, наприклад для модифікації або фільтрації. Зараз це для вас не так важливо і буде досить знати що фільтрація пакетів iptables здійснюється в таблиці filter. Але ми розглянемо їх все:

  • raw - призначена для роботи з сирими пакетами, поки вони ще не пройшли обробку;
  • mangle - призначена для модифікації пакетів;
  • nat - забезпечує роботу nat, якщо ви хочете використовувати комп`ютер в якості маршрутизатора;
  • filter - основна таблиця для фільтрації пакетів, використовується за умовчанням.

З теорією майже все, тепер давайте розглянемо утиліту командного рядка iptables, за допомогою якої і виконується управління системою iptables.

утиліта Iptables




Підсистема iptables і netfilter вбудовані в ядро, але ось набір утиліт для управління всім цим не завжди поставляється разом з системою. Для установки утиліти в Ubuntu наберіть:

$ Sudo yum install iptables

Коли установка iptables буде завершена, можна переходити до налаштування, але давайте спочатку розглянемо синтаксис утиліти. Зазвичай команда має такий загальний вигляд:

$ iptables -t таблиця дія ланцюжок Додаткові параметри

Тепер давайте розглянемо параметри iptables, таблиця вказує таблицю, з якої потрібно працювати, цей параметр можна упустити, дія - потрібну дію, наприклад, створити або видалити правило, а додаткові параметри описують дію і правило, яке потрібно виконати.

Залишилося розглянути основні дії, які дозволяє виконати iptables:

  • -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.

Приклади налаштування Iptables




Ми розглянемо кілька основних прикладів, щоб ви змогли закріпити все прочитане вище.

список правил

Спочатку давайте розглянемо як прокрутити правил iptables, для цього достатньо опції -L:

$ Iptables -L INPUT

очищення правил

Ви не можете просто так відключити iptables зупинивши сервіс поновлення правил iptables через systemd або навіть видаливши набір утиліт для настройки. Підсистема працює на рівні ядра і не залежить від того, що там у вас встановлено. Тому якщо зробите щось не так, то потрібно буде очистити правила. Для цього виконайте:

$ Sudo iptables -F Input

Нагадую, що всі ці дії виконуються для таблиці за замовчуванням - filter.

Правила за умовчанням

Як я вже говорив, якщо для пакета не підходить жодне правило, то для нього застосовується дія за замовчуванням. Його можна поставити за допомогою опції -p:


$ Sudo iptables -p OUTPUT ACCEPT
$ Sudo iptables -p FORWARD DROP

У цьому прикладі ми дозволяємо ланцюжка INPUT і OUTPUT, але забороняємо FORWARD.

$ Sudo iptables -L

iptables1

Блокування пакетів

Для блокування пакетів ми можемо використовувати дію DROP, фільтрувати пакети, які потрібно заблокувати ми можемо по безлічі критеріїв, наприклад, протоколу, ip адресою, масці мережі, порту і багато чому іншому.

Ось так буде виглядати команда, яка дозволяє додати правило iptables для блокування всіх вхідних пакетів від 10.10.10.10:

$ Sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

iptables2

Блокування діапазону ip виконується подібним чином. Для цього потрібно використовувати маску мережі 10.10.10.0/24. Це будуть всі адреси починаючи від 10.10.10.0 до 10.10.10.255:

$ Sudo iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Також ви можете заблокувати всі вхідні з`єднання ssh:

$ Sudo iptables -L

iptables3

Наприклад, ось так можна видалити правило iptables, яке було створено другим:

$ Sudo iptables -F

iptables6

Зберегти правила Iptables

Всі настройки iptables, які ви вказали за допомогою цих команд збережуться тільки до перезавантаження. Після перезавантаження комп`ютера всі зміни будуть стерті. Тому щоб зберегти правила iptables, потрібно виконати спеціальну команду. Тільки в різних дистрибутивах вона відрізняється. В Ubuntu виконайте:

$ Sudo / sbin / service iptables save

висновки

От і все. Наша стаття про те, як виконується настройка iptables для чайників підійшла до кінця. Ця система дійсно складна, на перший погляд, але якщо розібратися, то за допомогою неї можна створювати дуже цікаві речі. У цій статті була розглянуті основи використання iptables, в наступних статтях ми більш детально зупинимося на практичному застосуванні.

На завершення відео про те, як збільшити безпеку вашого сервера:

Поділися в соціальних мережах:

Схожі
Arp сканування локальної мережі linuxArp сканування локальної мережі linux
Як захистити комп`ютер від несанкціонованого доступу на виробництвіЯк захистити комп`ютер від несанкціонованого доступу на виробництві
Налаштування fail2ban centos 7Налаштування fail2ban centos 7
Налаштування мережі з консолі ubuntuНалаштування мережі з консолі ubuntu
Як підключити iphone до інтернетЯк підключити iphone до інтернет
Безпека сервера linuxБезпека сервера linux
Великий огляд red hat linuxВеликий огляд red hat linux
Як закрити порт iptablesЯк закрити порт iptables
Відкриті порти ubuntuВідкриті порти ubuntu
Віруси і linuxВіруси і linux
» » Налаштування iptables для чайників