- Создание и тестирование Firewall в Linux, Часть 1.1 Виртуальная лаборатория
- Введение
- Создание виртуальной среды. Теория
- Создание виртуальной среды. Практика
- Проверка
- Лучшие бесплатные брандмауэры Linux 2021 года: выходим за рамки iptables для настольных компьютеров и серверов
- Лучшие бесплатные firewalls linux
- 1. IPFire
- 2. OPNsense
- 3. pfSense
- 4. ClearOS
- 5. OpenWRT
Создание и тестирование Firewall в Linux, Часть 1.1 Виртуальная лаборатория
Решил написать статью по следам курса, который я делал в прошлом семестре в институте. Конечно, тут я опишу лишь самые главные основы и максимально все упрощу. Постараюсь дать немного теоритической информации, но в основном больше ссылок, картинок и практики.
Итак, речь пойдет о написании firewall в среде Linux. Всю статью я поделю на несколько частей. То, что вы читаете сейчас – первая часть, она поделена еще на три части. Некоторые темы хорошо известны и задокументированы, поэтому я постараюсь отдельно давать минимум теории по ним и отдельно практику. Чтобы всем было интересно. А также ссылки для углубления (часто это будут английские статьи).
Содержание первой части:
Содержание второй части:
Часть 2. Еще не готова, но думаю затронуть следующие темы: краткое введение в таблицы firewall. Stateless vs statefull firewall. Добавление еще одного модуля для загрузки таблиц правил (через виртуальную файловую систему sysfs из первой части, может быть тут я просто дам исходный код, потому что принципиально ничего нового тут нет). Добавим небольшую прокси-программу в user space и пошлем нужный траффик из kernel в прокси, поработаем с содержанием траффика и на этой основе примем решения о его дальнейшей судьбе (добавим возможность блокировать отдельные сайты). А так же возьмем реальную известную атаку основанную на buffer overflow, захватим управление над удаленным компьютером с ее помощью и посмотрим как наш firewall может защитить от этого.
Возможно вторая часть будет разбита на две, или изменена. Буду очень рад вашим комментариям и пожеланиям как по первой части так и по второй.
Введение
Наша цель в этой части – написание программы, которая будет на очень простом уровне контролировать весь траффик. А именно – мы определим какие пакеты можно пропускать, а какие удалять. Создадим простую систему логов, для отслеживания результатов, а так же программу для конечно пользователя, через которую можно будет читать эти результаты и немного управлять программой. Такой вот тривиальный firewall или на русском языке — Межсетево́й экра́н, сетево́й экра́н — это комплекс аппаратных и программных средств в компьютерной сети, осуществляющий контроль и фильтрацию проходящих через негосетевых пакетов в соответствии с заданными правилами. (Wikipedia).
В нашем случае, функцию firewall будет выполнять отдельный компьютер. Выглядить это будет так:
Давайте смотреть. Мы сделаем сеть, в которой будет три виртуальных компьютера – host1, host2, fw и соединим их как на картинке выше.
host1 — получит статичный IP address – 10.0.1.1. Его мы будем защищать.
host2 — который будет в последней части аттакующим и будет иметь статичный IP – 10.0.2.2
fw — будет отслеживать весь трафик, сконфигурируем ему так же интерфейс для выхода в интернет, чтобы можно было при (читать ВК и новости) необходимости скачивать нужный софт.
В двух словах про DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) —сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. (Wikipedia).
То есть он будет сам получать различные настройки, включая IP, для того чтобы иметь возможность через этот сетевой интерфейс, выходить без лишней головной боли в интернет.
Создание виртуальной среды. Теория
Немного про виртуальные машины. В нашем случае, виртуальная машина – это программа, которая будет эмулировать копьютер, благодаря чему, мы сможем запустить на нашем компьютере сразу три операционные системы. Для тех кто совсем не знаком с темой, могут начать тут.
Мы воспользуемся бесплатной программой VirtualBox, которая позволяет создавать виртуальные сети на одном компьютере. Конечно же не принципиально чем именно пользоваться, главное иметь возможность сконфигурировать сеть. Программа бесплатна, ищем, качаем, ставим.
Следующим шагом будет добавить виртуальные машины. Я буду работать с Linux Ubuntu 12, по «историческим причинам». Вы можете скачать последнюю версию. Тем более если ваш копьютер достаточно мощный. Образ Ubuntu можно найти тут.
Я надеюсь, что читающий справится с добавление образа в virtualbox и теперь у вас есть что-то похожее на картинку. Я советую воспользоваться функцией “clone” в virtualbox, для быстрого создания еще двух машин. У меня в роли host1, host2 специально урезанные «легкие» версии ubuntu, без графического интерфейса (не хватает RAM для полноценных).
Примерно так это должно выглядеть в конце
Создание виртуальной среды. Практика
И так, я предполагаю, что у Вас уже есть три виртуальных linux машины, которые мы сейчас сконфигурирует в одну сеть и проверим, что все работает, прежде чем начать писать программу.
Идем в settings и конфигурируем как на фото:
Добавляем сетевое устройство:
Теперь, linux «будет думать», что у нашего компьютера, есть сетевая карта, а если вы посмотрите в Advanced, то увидите, что в нее еще и вставлен кабель. Отлично. Теперь надо сконфигурировать этк карту в операционной системе. Для этого запускаем host1.
На данном этапе, я предполагаю, что читателю ивестно, что такое IP адресс как он выгледит и зачем он нужен. Я буду редактировать в vi, вы можете в любом другом редакторе, но не забываем давать права администратора (запускать с sudo), чтобы иметь возможность сохранить.
«Просим» систему заново прочитать файл конфигурации (чтобы не перезагружать машину):
Запускаем ifconfig и проверяем, что у нас есть сетевая карта под именем eth0, с IP == 10.0.1.1, маской и тд и тп.
То же самое делаем с host2, только IP установить в 10.0.2.2, gateway 10.0.2.3 и не забыть «добавить» сетевую карту в настройках машины в virtualbox (у меня после изменений настроек в virtualbox, машина при загрузке подвисала на пару минут и писала waiting for network configuration… Это связано с тем, что по умолчанию, сетевой интерфейс сконфигурирован как dhcp, то есть, операционная система ждет динамически получить сетевые настройки, но в virtualbox, для этого она должна быть сконфигурирована как NAT, но мы это поменяли, поэтому ОС пытается понять, что не так. Можно сначало загрузить ОС, отредактировать interfaces, потом выключить компьютер, изменить настройки и запустить заново).
Теперь пришла очередь главной машины, которая будет выполнять роль firewall. Напоминаю, что нам понадобятся три сетевые карты, через одну мы сможем выходить в интернет в случае необходимости поэтому она будет определена как NAT. Остальные две будут ответственны пересылать трафик с host1 -> host2 и обратно с host2 -> host1.
Adapter1 – должен быть выставлен как NAT. Настройки Adapter2, Adapter3, такие же как и в предыдущих примерах (Internal network). Запускаем, начинаем конфигурировать сетевые карты. Так должен выглядеть файл interfaces.
А вот – конечный результат конфигурации, после перезапуска:
Последнее, что осталось сделать — это разрешить packet forwarding, для того чтобы компьютер мог брать пакеты с одного сетевого интерфейса(10.0.2.3) на который приходят пакеты от host2 и передать их на другой сетевой интерфейс 10.0.1.3 связннаый соответственно с host1.
Тут все подробно описано. Чтобы настройка была постоянной, нужно изменить следующую строчку в /etc/sysctl.conf:
Сделать это можно любым удобным способом, не забываем sudo. Много информации про конфигурацию интерфесов можно почитать тут.
Проверка
Осталось проверить, что все связно друг с другом и работает. Проверять будем классическим ping
Как видно на картинке, ping «прошел» с host1 -> host2, host2 -> host1, fw -> host1, fw -> host2. Готово, «лаборатория» для будущих экспериментов настроена.
Источник
Лучшие бесплатные брандмауэры Linux 2021 года: выходим за рамки iptables для настольных компьютеров и серверов
Лучшие бесплатные firewalls linux
В некотором смысле, в Linux есть брандмауэр, встроенный прямо в ядро. Тем не менее, он не самый удобный в использовании.
Существует несколько графических утилит, которые могут помочь вам управлять им, но его защита ограничена вашей установкой Linux. А как насчет других устройств в вашей сети?
Независимо от того, являетесь ли вы домашним пользователем или руководите малым предприятием, скорее всего, у вас есть несколько устройств, подключенных к Интернету. Помимо компьютеров, довольно часто в учреждениях любого размера имеется множество IoT-устройств, которые также необходимо защитить от злоумышленников в Интернете.
Выделенный брандмауэр стоит между Интернетом и проверяет весь трафик, прежде чем он достигнет вашей внутренней сети.
Хотя для установки такого брандмауэра с нуля требуется определенный навык, существует несколько специализированных дистрибутивов, которые помогут вам легко установить выделенный брандмауэр.
1. IPFire
Простой в использовании брандмауэр с некоторыми суперпродвинутыми функциями.
IPFire — это дистрибутив управляемого брандмауэра на базе Linux, построенный на основе Netfilter. Он начинался как форк проекта IPCop, но затем был переписан на основе Linux From Scratch. IPFire может быть развернут на широком спектре оборудования, включая устройства ARM, такие как Raspberry Pi.
Благодаря своей минималистской сущности, IPFire является более доступным по сравнению с некоторыми аналогами. Процесс установки позволяет настроить сеть на различные сегменты безопасности, причем каждый сегмент имеет цветовое кодирование. Зеленый сегмент — это безопасная область, представляющая всех обычных клиентов, подключенных к локальной проводной сети. Красный сегмент представляет интернет. Никакой трафик не может проходить из красного сегмента в любой другой сегмент, если только вы специально не настроили его таким образом в брандмауэре.
Помимо функций межсетевого экрана, IPFire также обладает возможностями обнаружения и предотвращения вторжений, а также может быть использован для предоставления возможностей VPN. Дистрибутив также может быть расширен с помощью удобного набора дополнений для придания ему дополнительных функций.
2. OPNsense
Форк оригинального проекта pfSense, ориентированный на безопасность
OPNsense
OPNSense является результатом усилий двух существующих проектов с открытым исходным кодом, а именно pfSense и m0n0wall.
Вместо Linux, OPNsense работает на базе HardenedBSD, которая представляет собой ориентированный на безопасность форк FreeBSD. Дистрибутив предназначен для использования в качестве межсетевого экрана и платформы маршрутизации и, помимо фильтрации трафика, может использоваться для отображения captive portal, шейпинга трафика, обнаружения и предотвращения вторжений, а также для настройки виртуальной частной сети (VPN) и многого другого.
Стремясь своевременно реагировать на угрозы, дистрибутив брандмауэра предлагает еженедельные обновления безопасности. Одной из лучших особенностей OPNsense является то, что он раскрывает все свои функциональные возможности благодаря веб-интерфейсу, который очень удобен в использовании и доступен на нескольких языках.
OPNsense реализует сетевой экран с контролем состояния и позволяет пользователям группировать правила брандмауэра по категориям, что, согласно веб-сайту компании, является удобной функцией для более требовательных сетевых настроек.
Брандмауэр использует систему предотвращения вторжений Inline Intrusion Prevention System. Это мощная форма глубокой проверки пакетов, при которой вместо простой блокировки IP-адреса или порта, OPNsense может проверять отдельные пакеты данных или соединения и при необходимости останавливать их до того, как они достигнут отправителя.
3. pfSense
Многофункциональный брандмауэр и маршрутизатор на базе FreeBSD
pfSense
pfSense позиционирует себя как самый надежный брандмауэр с открытым исходным кодом. Оригинальный дистрибутив брандмауэра на базе FreeBSD, pfSense имеет много общих черт с OPNsense. Например, помимо того, что он является мощной, гибкой платформой для межсетевого экранирования и маршрутизации, он включает длинный список сопутствующих функций. Для начала, как и в OPNsense, вы можете использовать pfSense для развертывания системы предотвращения вторжений, а также для включения VPN-доступа.
Кроме того, как и все аналоги, pfSense можно полностью управлять с помощью интуитивно понятного веб-интерфейса. В отличие от большинства аналогов, pfSense доступен в виде аппаратного устройства, виртуального устройства и загружаемой версии для сообщества.
Благодаря своей богатой истории, pfSense, возможно, имеет самую обширную документацию и одно из самых больших сообществ пользователей, которые публикуют учебные пособия и видео на своих официальных каналах поддержки, а также в других местах в Интернете. Кроме того, коммерческие разработчики дистрибутива предлагают платные учебные курсы, которые помогут вам наилучшим образом использовать развертывание pfSense.
4. ClearOS
Хорошо продуманный дистрибутив, который очень прост в использовании
ClearOS
ClearOS — это дистрибутив на базе CentOS, который разработан как полнофункциональная замена коммерческим серверным дистрибутивам, таким как Red Hat Enterprise Server или Windows Small Business Server.
Существует несколько редакций ClearOS, включая поддерживаемую сообществом редакцию, которая предлагается для бесплатной загрузки. Вы можете использовать редакцию ClearOS для развертывания всех видов сетевых служб, включая брандмауэр с функциями фильтрации содержимого и обнаружения вторжений.
Самое лучшее в ClearOS — это простота развертывания. Поскольку большинство дистрибутивов брандмауэров написаны для стереотипных гиков, приятно видеть свежие изменения в том, что, похоже, стало стандартом де-факто — «собери все вместе и подумай об интерфейсе потом».
После установки вы можете управлять своим брандмауэром на базе ClearOS с помощью веб-интерфейса. Интерфейс администрирования интуитивно понятен в использовании и поможет вам не только настроить и контролировать ваш брандмауэр, но также может быть использован для настройки нескольких других сетевых служб с помощью нескольких щелчков мыши.
В дополнение ко всему, ClearOS имеет множество документации, которая поможет начинающим пользователям справиться с некоторыми наиболее распространенными задачами. Фактически, даже сам интерфейс имеет множество полезных указателей, которые помогут вам пройти процесс настройки и администрирования.
5. OpenWRT
Брандмауэр для маршрутизаторов
OpenWRT
OpenWRT немного отличается от большинства в этом списке, поскольку это брандмауэр, разработанный специально для использования в маршрутизаторах и сетях. Это означает, что он не предназначен для обычных домашних пользователей, желающих просто установить новый брандмауэр на свой компьютер, а для опытных пользователей, сетевых энтузиастов и разработчиков беспроводных устройств.
OpenWRT — существует уже более 15 лет, но и до сих пор активно развивается и поддерживается, в то время как другие некогда популярные разработки брандмауэров для дистрибутивов отошли на второй план.
Он также имеет удивительно приличный графический интерфейс и предлагает ряд дополнительных пакетов в своем репозитории, позволяющих настроить OpenWRT различными способами для всех видов использования. Несмотря на всю свою гибкость, OpenWRT по-прежнему является одним из наименее требовательных дистрибутивов и работает быстро.
Источник