Защита на вашата мрежа с Iptables - Proxy - NAT - IDS: ЧАСТ 1

Тази публикация се опитва да изясни малко за това как работят мрежите и как да превърнем нашето Linux оборудване в рутер, който осигурява малко повече нашата мрежа, независимо дали е домашна или дори бизнес. Така че нека да се заемем с бизнеса:

Това съдържание се базира на книгата "Linux - Системна администрация и работа с мрежови услуги" - Sébastien BOBILLIER

Маршрутизиране и филтриране

За да говорим и разбираме за маршрутизацията, първо можем да определим каква е ролята на рутера? За това можем да кажем, че рутерът, освен че създава мрежа и позволява връзка с друго оборудване (знаейки, че можем да направим това с AP, Switch, Hub или други), има способността да свързва две различни мрежи помежду си.

рутер

Както виждаме на изображението, има локална мрежа „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 - P ДЕЙСТВИТЕЛНА ВЕРИГА

Когато низът представлява вида на трафика (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 или мрежа и в този случай трябва да посочим маската).

дестинация_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 (лоша идея). Това казва, че целият входящ трафик, идващ от връзка, която сам установих, се приема. Искам да кажа, връзка, която по принцип започнах.

Когато поставяте OUTPUT в правилата, това се отнася само за въпросното оборудване, ако използваме нашето оборудване като рутер, за да разрешим тези връзки, трябва да променим OUTPUT на FORWARD. Тъй като трафикът преминава през компютъра, но не се инициира от него
Всички тези правила се изтриват след рестартирането, така че трябва да създадете скриптове, така че те да стартират по подразбиране. Но това ще видим в следващото

Надявам се тази информация да ви е харесала. В следващия ще говоря за NAT, прокси и скриптове за Firewal.


12 коментара, оставете своя

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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

  1.   Рогелио Пинто каза той

    Това е основата, която много предприемачи вземат, за да произвеждат свои собствени защитни стени, затова на пазара има толкова много марки защитни стени с вграден Linux, някои добри, а други не толкова.

  2.   Хебър каза той

    Отлична статия. Очаквам с нетърпение втората част.

  3.   Милтън каза той

    Много добро обяснение, помогна ми да разбера проксито на моята работа. Благодаря ти

  4.   фаустод каза той

    Здравейте Jlcmux,

    Отлично, наистина ми хареса, кога отсрещната страна ще бъде на разположение?

    Поздрави и благодарности за споделянето

    1.    @Jlcmux каза той

      Благодаря за коментара.

      Изпратих другата част вчера, в течение на деня мисля, че ще я публикуват.

      Поздрави.

  5.   Израел каза той

    Много добър член на статията @ Jlcmux, наистина научих с него, тъй като той изясни някои съмнения, които имах от известно време, между другото няма да имате нищо против да споделите книгата на източника на статията, тази на Sébastien BOBILLIER, добре 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.   хинолоко каза той

    Толкова добре, благодаря за споделянето