Захист мережі за допомогою Iptables - Proxy - NAT - IDS: ЧАСТИНА 1

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

Цей вміст заснований на книзі "Linux - адміністрування системи та робота мережевих служб" - Себастьян БОБІЛЬЄ

Маршрутизація та фільтрація

Щоб поговорити і зрозуміти про маршрутизацію, ми спочатку можемо визначити, яка функція маршрутизатора? Для цього ми можемо сказати, що маршрутизатор, крім створення мережі та дозволу з'єднання з іншим обладнанням (знаючи, що ми можемо зробити це за допомогою точки доступу, комутатора, концентратора або інших), має можливість з'єднувати дві різні мережі між собою.

маршрутизатор

Як ми бачимо на зображенні, існує локальна мережа "10.0.1.0", яка створюється маршрутизатором і досягає одного з двох її інтерфейсів. Тоді маршрутизатор на іншому інтерфейсі має іншу мережу із загальнодоступним IP-адресою, за допомогою якої він може підключатися до Інтернету. Функція маршрутизації в основному служить посередником між цими двома мережами, щоб вони могли спілкуватися.

Linux як маршрутизатор.

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

/proc/sys/net/ipv4/ip_forward

Там ми виявимо, що це файл, який містить лише нуль "0", і ми повинні змінити його на "1", щоб активувати цю поведінку. На жаль, це видаляється при перезавантаженні комп’ютера, щоб залишити його активованим за замовчуванням, ми повинні використовувати команду:

sysctl net.ipv4.ip_forward=1

Або відредагуйте його безпосередньо у файлі /etc/sysctl.conf. Залежно від розподілу ця конфігурація також може бути у файлі у форматі  /etc/sysctl.d/.

За замовчуванням наш Linux повинен мати таблицю маршрутизації, яка, як правило, є конфігурацією нашої мережі LAN і підключенням до маршрутизатора. Якщо ми хочемо побачити цю маршрутизацію, ми можемо використовувати дві команди:

route -n

o

netstat -nr

Обидві команди повинні повертати однакові.

Знімок екрана з 2014 09:30:18

Загалом, цієї конфігурації достатньо, щоб ваш Linux служив шлюзом, а інші комп’ютери могли переходити через наш комп’ютер. Тепер, якщо ми хочемо, щоб наш Linux з'єднував дві або більше мереж, локальних чи ні, наприклад, ми можемо використовувати статичні маршрути.

Припустимо, мій Linux має два мережеві інтерфейси, перший має підключення до Інтернету, мережа якого становить 172.26.0.0, а друга (10.0.0.0) має комп’ютери з іншої локальної мережі. Якщо ми хочемо направити пакети до цієї іншої мережі, ми можемо використовувати:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

Загалом це:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

якщо ми дамо маршрут -n незалежно від того, існує ця мережа чи ні, ця маршрутизація буде виправлена ​​в нашій таблиці.

Знімок екрана з 2014 09:30:18

Якщо ми хочемо усунути згадану маршрутизацію, ми можемо використовувати

route del -net 10.0.0.0 netmask 255.0.0.0

iptables.

В основному iptables використовується для фільтрації пакетів, вихідних, вхідних чи інших, це робить його чудовим інструментом для управління нашим мережевим трафіком. Ну, iptables, так як це дозволяє нам фільтрувати трафік того самого комп'ютера, це також дозволяє фільтрувати трафік, який проходить через нього. (Пересилання). Iptables можна розділити на таблиці, ланцюжки та дії.

  • Дошки:  в основному може бути дві таблиці, фільтр, фільтрувати пакети та  nat перекладати адреси, тобто переходити з однієї мережі в іншу.
  • Ланцюги: Ланцюг відноситься до типу трафіку, який ми хочемо відфільтрувати або переплисти, тобто до якого трафіку ми будемо застосовувати таблиці? і вони можуть бути:  ВХІД: Вхідний трафік, ВИХІД: вихідний трафік або ВПЕРЕД: Трафік, який проходить через нього, але це не належне з'єднання.
  • Це також може з'явитися ПОРОШТУВАННЯ, який використовується для обробки пакету певним чином після його маршрутизації.
  • Дії: Дії - це в основному дії, які слід виконати з ланцюжком. Ця дія може бути КРАПЛЕННЯ, що просто руйнує цей трафік або ПРИЙМІТИ. що дозволяє трафіку робити таку дію.

Правила IPTABLES зберігаються та виконуються в тому порядку, в якому вони були створені, і якщо правило видаляє попереднє правило, завжди застосовується останнє правило в порядку.

Політика брандмауера.

Загалом, брандмауери, природно, працюють двома способами:

  1. Дозволити весь трафік, крім, або
  2. Не дозволяти рух, крім ...

Щоб застосувати правила, використовуйте IPTABLES - РАБОЧИЙ ЛАНЦЮГ

Де рядок представляє тип трафіку (INPUT, OUTPUT, FORWARD, POSTROUTING ...), а дія - DROP OR ACCEPT.

Давайте розглянемо приклад.

Знімок екрана з 2014 09:30:18

Тут ми бачимо, що спочатку мені вдалося здійснити пінг, а потім я сказав IPTABLES, що весь вихідний трафік був ПАДИМ або заборонений. Потім я сказав IPTABLES прийняти це.

Якщо ми збираємося створювати брандмауер з нуля, ми завжди повинні застосовувати правила (Не допускати жодного трафіку, крім ... Для цього тоді ми застосовуємо правила

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Якщо ці правила застосовуються, вони не матимуть жодного типу зв’язку
.

Для повернення ми пишемо те саме і замінюємо DROP на ACCEPT.

На цьому етапі, оскільки весь трафік відмовлено, ми починаємо повідомляти нашим IPTABLES, який трафік він може мати.

Синтаксис:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

Де:

Рядок = ВХІД, ВИХІД або ВПЕРЕД

origin_ip = Походження пакетів, це може бути окремий IP або мережа, і в цьому випадку ми повинні вказати маску).

destination_ip = куди прямують пакети. це може бути окремий IP або мережа, і в цьому випадку ми повинні вказати маску).

протокол = вказує протокол, що використовується пакетами (icmp, tcp, udp ...)

порт = пункт призначення пункту руху.

дія = ПАДАЙТЕ або ПРИЙМАЙТЕ.

Приклад:

Знімок екрана з 2014 09:30:19

Застосовуються ВСІ обмежені правила.

Знімок екрана з 2014 09:30:19

Потім ми додаємо правила, щоб мати змогу отримувати трафік через порти 80 HTTP та 443 HTTPS, з протоколом TCP. Потім порт 53 Застосовується для DNS-клієнта для вирішення доменів, інакше ви не будете керувати. Це працює з протоколом udp.

Лінія:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Це відбувається через наступне: Коли ви, наприклад, робите HTTP-запит, ви підключаєтесь до порту 80 сервера, але сервер для повернення інформації повинен підключатися до вас через будь-який порт. (Загалом більше 1024).

Оскільки всі наші порти закриті, цього не буде досягнуто, якщо ми не відкриємо всі порти вище 1024 (погана ідея). Це говорить про те, що весь вхідний трафік, що надходить від з'єднання, яке я встановив сам, приймається. Я маю на увазі зв’язок, який я в принципі започаткував.

Вкладаючи ВИХІД у правила, це стосується лише відповідного обладнання, якщо ми використовуємо наше обладнання як маршрутизатор, щоб дозволити ці підключення, ми повинні змінити ВИХІД на ВПЕРЕД. Оскільки трафік проходить через комп’ютер, але не ініціюється ним
Всі ці правила видаляються після перезапуску, тому вам доведеться створювати сценарії, щоб вони запускалися за замовчуванням. Але ми побачимо це в наступному

Сподіваюся, вам сподобалась ця інформація. У наступному я розповім про NAT, проксі та сценарії Firewal.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Роджеліо Пінто - сказав він

    Це основа, яку багато підприємців беруть для виготовлення власних брандмауерів, тому на ринку існує стільки брандмауерів із вбудованим Linux, деякі хороші, а інші не так вже й багато.

  2.   Хебер - сказав він

    Відмінна стаття. З нетерпінням чекаю другої частини.

  3.   Milton - сказав він

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

  4.   фаустод - сказав він

    Привіт, Jlcmux,

    Чудово, мені дуже сподобалось, коли буде доступна інша сторона?

    Вітаю та дякую за поділ

    1.    @Jlcmux - сказав він

      Дякую за коментар.

      Я надіслав іншу частину вчора, протягом дня, думаю, вони її опублікують.

      Привіт.

  5.   Ізраїль - сказав він

    Дуже хороший друг зі статтею @ Jlcmux, я справді дізнався з ним, оскільки він прояснив деякі сумніви, які у мене були деякий час, до речі, ви не проти були б поділитися книгою джерела статті, Себастьяном БОБІЛЬЄ, ну slau2s і зараз побачити 2-ю частину, salu2s.

    1.    @Jlcmux - сказав він

      Привіт Дякую за коментар Ізраїлю.

      Виявляється, книга у мене є у фізичному вигляді. Але я знайшов це посилання в Google Books. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Я думаю, що це закінчено.

  6.   Аріель - сказав він

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

    1.    @Jlcmux - сказав він

      Ну, я думаю, переваги та недоліки залежать від сценарію, коли ви збираєтесь це реалізувати. Чому, звичайно, ви не збираєтесь купувати UTM або щось подібне для свого будинку? І, можливо, для малого бізнесу, який теж не може собі цього дозволити. Це також добре як вправа, оскільки воно допомагає зрозуміти всю логіку цього, і ви можете краще налаштувати виділений FWall. На додаток до цього майже всі ці пристрої насправді є вбудованим Linux.

      Привіт.

  7.   Аріель - сказав він

    Привіт, запитання, чи можете ви створити "штучний" інтерфейс у Linux для подібної маршрутизації між мережами? (стиль трасування пакетів) для роботи з віртуальними машинами? наприклад, якщо у мене є eth0 (оскільки, звичайно, у мене є одна карта), чи можу я створити eth1 для створення іншої мережі? Дуже хороший репетитор!

    1.    елав - сказав він

      Звичайно, в Linux ви можете створювати віртуальні інтерфейси. Якщо у вас є eth0, ви можете мати eth0: 0, eth0: 1, eth0: 2 ... тощо

  8.   хінолоко - сказав він

    Так добре, дякую за поділ