Налаштування 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.
Блокування пакетів
Для блокування пакетів ми можемо використовувати дію DROP, фільтрувати пакети, які потрібно заблокувати ми можемо по безлічі критеріїв, наприклад, протоколу, ip адресою, масці мережі, порту і багато чому іншому.
Ось так буде виглядати команда, яка дозволяє додати правило iptables для блокування всіх вхідних пакетів від 10.10.10.10:
$ Sudo iptables -A OUTPUT -s 10.10.10.10 -j DROPБлокування діапазону 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Наприклад, ось так можна видалити правило iptables, яке було створено другим:
$ Sudo iptables -FЗберегти правила Iptables
Всі настройки iptables, які ви вказали за допомогою цих команд збережуться тільки до перезавантаження. Після перезавантаження комп`ютера всі зміни будуть стерті. Тому щоб зберегти правила iptables, потрібно виконати спеціальну команду. Тільки в різних дистрибутивах вона відрізняється. В Ubuntu виконайте:
$ Sudo / sbin / service iptables saveвисновки
От і все. Наша стаття про те, як виконується настройка iptables для чайників підійшла до кінця. Ця система дійсно складна, на перший погляд, але якщо розібратися, то за допомогою неї можна створювати дуже цікаві речі. У цій статті була розглянуті основи використання iptables, в наступних статтях ми більш детально зупинимося на практичному застосуванні.
На завершення відео про те, як збільшити безпеку вашого сервера:
- Установка і настройка squid3 проксі сервера, на базі ubuntu server 14.04.1
- Безпека сервера linux
- Великий огляд red hat linux
- Як користуватися nmap для сканування мережі
- Як закрити порт iptables
- Однорангові і ієрархічні мережі: в чому відмінність?
- Що таке трафік?
- Як відкрити порт ubuntu
- Як підключити iphone до інтернет
- Як дізнатися ip адресу linux
- Як захистити комп`ютер від несанкціонованого доступу на виробництві
- Віруси і linux
- Установка ntp в ubuntu
- Arp сканування локальної мережі linux
- Установка ssh ubuntu 16.04
- Налаштування shorewall для початківців
- Основні компоненти та різновиди комп`ютерних мереж
- Моніторинг мережі linux
- Відкриті порти ubuntu
- Налаштування fail2ban centos 7
- Налаштування gufw ubuntu 16.04