Защита вашей сети с помощью 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 должна быть таблица маршрутизации, которая обычно является конфигурацией нашей локальной сети и подключения к маршрутизатору. Если мы хотим увидеть эту маршрутизацию, мы можем использовать две команды:

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

IP-таблицы.

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

  • Доски:  в принципе может быть две таблицы, фильтр, фильтровать пакеты и  натуральный переводить адреса, то есть переходить из одной сети в другую.
  • Цепи: Цепочка относится к типу трафика, который мы хотим фильтровать или плавать, то есть к какому трафику мы будем применять таблицы? и они могут быть:  ВХОД: Входящий трафик, ВЫХОД: исходящий трафик или ВПЕРЕД: Через него проходит трафик, но это неправильное соединение.
  • Также может появиться ПОСТРОУТИНГ, который используется для обработки пакета определенным образом после его маршрутизации.
  • действия: Действия - это в основном действия, выполняемые с цепочкой. Это действие может быть УРОНИТЬ, это просто уничтожает этот трафик или ACCEPT. который позволяет трафику выполнять это действие.

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

Политики межсетевого экрана.

Обычно брандмауэры работают двумя способами:

  1. Разрешить весь трафик, кроме, или
  2. Не разрешать трафик, кроме ...

Чтобы применить политики, используйте IPTABLES - ЦЕПЬ ДЕЙСТВИЙ

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

Давайте посмотрим на пример.

Скриншот от 2014 09:30:18

Здесь мы видим, что сначала я смог выполнить ping, а затем сказал IPTABLES, что весь OUTPUT трафик был DROP или не разрешен. Затем я сказал 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 ...)

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

действие = DROP или ACCEPT.

пример:

Скриншот от 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.   Rogelio pinto сказал

    Это основа, которую многие предприниматели берут на себя при производстве собственных межсетевых экранов, поэтому на рынке так много брендов межсетевых экранов со встроенным Linux, одни хорошие, а другие нет.

  2.   Хебер сказал

    Отличная статья. С нетерпением жду вторую часть.

  3.   Мильтон сказал

    Очень хорошее объяснение, оно помогло мне понять суть моей работы. Спасибо

  4.   Faustod сказал

    Привет Jlcmux,

    Отлично, очень понравилось, когда будет вторая партия?

    Приветствую и спасибо, что поделились

    1.    @Jlcmux сказал

      Спасибо за комментарий.

      Вчера отправил вторую часть, думаю, в течение дня ее опубликуют.

      Привет.

  5.   Израиль сказал

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

    1.    @Jlcmux сказал

      Привет Спасибо за комментарий Израиль.

      Оказывается, книга у меня в физическом виде. Но я нашел эту ссылку в Google Книгах. 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.   Ariel сказал

    Очень хорошая статья, я добавляю вопрос: в чем будет преимущество использования Linux в качестве маршрутизатора, если он есть, по отношению к выделенному для него оборудованию? Или это просто для упражнений? Я знаю, что существуют специализированные дистрибутивы, но не знаю, предназначены ли они для восстановления старых компьютеров или обеспечения большей гибкости в конфигурации.

    1.    @Jlcmux сказал

      Что ж, я думаю, что преимущества и недостатки зависят от сценария, в котором вы собираетесь это реализовать. Почему вы, конечно, не собираетесь покупать UTM или что-то подобное для своего дома? И, возможно, для малого бизнеса, который тоже не может себе этого позволить. Это также полезно в качестве упражнения, так как помогает понять всю логику этого и лучше настроить специальный FWall. В дополнение к этому почти все эти устройства действительно имеют встроенный Linux.

      Привет.

  7.   Ariel сказал

    Здравствуйте, вопрос, а можно ли в linux сгенерировать "искусственный" интерфейс для подобной маршрутизации между сетями? (стиль трассировщика пакетов) для работы с виртуальными машинами? например, если у меня есть eth0 (потому что, конечно, у меня одна карта), могу ли я создать eth1 для создания другой сети? Очень хороший репетитор!

    1.    Elav сказал

      В Linux, конечно, можно создавать виртуальные интерфейсы. Если у вас есть eth0, вы можете иметь eth0: 0, eth0: 1, eth0: 2 ... и т. Д.

  8.   Chinoloco сказал

    Так хорошо, спасибо, что поделились