Asplinux 12 настроить интернет через межсетевой экран
Решил написать статью по следам курса, который я делал в прошлом семестре в институте. Конечно, тут я опишу лишь самые главные основы и максимально все упрощу. Постараюсь дать немного теоритической информации, но в основном больше ссылок, картинок и практики.
Итак, речь пойдет о написании firewall в среде Linux. Всю статью я поделю на несколько частей. То, что вы читаете сейчас – первая часть, она поделена еще на три части. Некоторые темы хорошо известны и задокументированы, поэтому я постараюсь отдельно давать минимум теории по ним и отдельно практику. Чтобы всем было интересно. А также ссылки для углубления (часто это будут английские статьи).
Содержание первой части:
Содержание второй части:
Часть 2. Еще не готова, но думаю затронуть следующие темы: краткое введение в таблицы firewall. Stateless vs statefull firewall. Добавление еще одного модуля для загрузки таблиц правил (через виртуальную файловую систему sysfs из первой части, может быть тут я просто дам исходный код, потому что принципиально ничего нового тут нет). Добавим небольшую прокси-программу в user space и пошлем нужный траффик из kernel в прокси, поработаем с содержанием траффика и на этой основе примем решения о его дальнейшей судьбе (добавим возможность блокировать отдельные сайты). А так же возьмем реальную известную атаку основанную на buffer overflow, захватим управление над удаленным компьютером с ее помощью и посмотрим как наш firewall может защитить от этого.
Возможно вторая часть будет разбита на две, или изменена. Буду очень рад вашим комментариям и пожеланиям как по первой части так и по второй.
5. OpenWRT
Брандмауэр для маршрутизаторов
OpenWRT немного отличается от большинства в этом списке, поскольку это брандмауэр, разработанный специально для использования в маршрутизаторах и сетях. Это означает, что он не предназначен для обычных домашних пользователей, желающих просто установить новый брандмауэр на свой компьютер, а для опытных пользователей, сетевых энтузиастов и разработчиков беспроводных устройств.
OpenWRT — существует уже более 15 лет, но и до сих пор активно развивается и поддерживается, в то время как другие некогда популярные разработки брандмауэров для дистрибутивов отошли на второй план.
Он также имеет удивительно приличный графический интерфейс и предлагает ряд дополнительных пакетов в своем репозитории, позволяющих настроить OpenWRT различными способами для всех видов использования. Несмотря на всю свою гибкость, OpenWRT по-прежнему является одним из наименее требовательных дистрибутивов и работает быстро.
Уверен, что у большинства системных администраторов или сетевых инженеров возникал вопрос: "Правильно ли я настроил межсетевой экран и что еще можно сделать для лучшей защиты?". Естественно, в этом вопросе стоит опираться на различные руководства (PCI DSS, ISO, NIST и т.д.) и здравый смысл. Помощь более опытных коллег также приветствуется.
В рамках же данной статьи мы попробуем описать основные рекомендации или лучшие практики (best practices) по настройке межсетевых экранов. Это некий “чек-лист”, следуя которому можно существенно повысить качество защиты сети. Руководство составлено специально для оборудования Check Point, однако оно также может быть использовано, как основа для самостоятельного аудита сети, построенной на оборудовании других вендоров (Cisco, Fortinet, Palo Alto и т.д.). Если вас это заинтересовало, то добро пожаловать под кат…
Compliance Blade
Вообще говоря, в случае с Check Point аудит «правильности» настроек можно выполнять в автоматическом режиме. Осуществляется это с помощью программного блейда Compliance, который активируется на менеджмент сервере:
Данный блейд выполняет следующие функции:
-
Мониторинг программных блейдов в режиме 24/7
- Постоянный контроль за тем, чтобы система управления, программные блейды и шлюзы безопасности были настроены оптимально.
- Показывает неправильные настройки конфигурации и уязвимости в защите.
- Предоставляет рекомендации по укреплению безопасности.
- Показывает, как изменение конфигурации повлияет на безопасность.
- Уведомляет об изменениях политик, негативно влияющих на безопасность.
- Обучает пользователей, какими будут последствия желаемых изменений.
- Переводит тысячи требований регуляторов на язык практических рекомендаций.
- Постоянная оценка совместимости с требованиями регуляторов (PCI DSS, ISO, NIST, DSD и так далее).
Оценка соответствия требованиям регуляторов:
Оценка производительности отдельных шлюзов и блейдов:
Блейд Compliance поставляется бесплатно с подпиской на 1 год при покупке сервера управления (будь то физический appliance Smart-1 или виртуальная машина). Этого времени вполне достаточно для комплексной настройки средств защиты с последующей оценкой конфигураций. Таким образом, в первый год вы получаете бесплатный аудит сетевой безопасности (настроек Check Point).
Если вы еще ни разу не активировали данный блейд, то это весьма просто сделать в свойствах сервера управления (Management Server), как это было показано на картинке выше. После этого проинсталлировать политики и подождать некоторое время (в зависимости от размеров сети и количества шлюзов). С результатом оценки конфигураций можно ознакомиться на соответствующей вкладке Compliance в консоли SmartDashboard:
Стоит заметить, что дальнейшее использование блейда Compliance требует продления соответствующей подписки, цена которой не всегда соответствует бюджету малых и средних компаний.
Что же делать после окончания подписки?
Специально для таких случаев мы создали данное руководство, которое позволит в ручном режиме проверить “адекватность” и безопасность текущих настроек в соответствии с рекомендациями Check Point. При этом мы не будем рассматривать стандарты различных регуляторов (PCI DSS, ISO и т.д.), а лишь затронем лучшие практики (Best Practices) по настройке средств сетевой защиты.
Firewall Best Practices
1. Присутствует правило Management (название может отличаться):
Данное правило используется для доступа с сервера управления (Management Server) и компьютера администратора к шлюзу безопасности (Security Gateway). Остальным доступ должен быть запрещен.
2. Присутствует правило Stealth (название может отличаться):
Данное правило используется для блокирования любой попытки доступа к самому шлюзу, что делает его “невидимым” и исключает возможность несанкционированного доступа. Убедитесь, что это правило расположено ниже чем Management.
3. Присутствует правило Clean up rule (название может отличаться):
По умолчанию Check Point блокирует все соединения, которые явно не разрешены. Данное правило используется исключительно для логирования всех пакетов, которые и без этого были бы заблокированы. Правило должно быть самым последним в списке.
4. Присутствует правило Do Not Log (название может отличаться) для которого отключено логирование:
Данное правило используется для фильтрования “паразитного” широковещательного трафика. К такому трафику относятся: udp-high-ports (UDP ports > 1024-65535), domain-udp, bootp, NBT (NetBios), rip (список может отличаться, в зависимости от вашей сети). Логирование отключается намеренно, дабы не перегружать логи межсетевого экрана бесполезной информацией. Правило должно находиться как можно выше в списке (лучше первым).
5. В списках доступа в колонке источник (source) отсутствует значение Any, т.е. любой трафик. Всегда указывайте конкретный источник в правилах, будь то сеть или хост. За исключением правил Stealth, Clean up rule, Do Not Log.
6. Отсутствуют правила разрешающие весь трафик (any any accept).
7. Запрещен входящий Internet трафик для сегментов Бухгалтерии (Finance) и Отдела кадров (HR).
8. Запрещен FTP трафик из сети Internet в DMZ.
9. Отсутствуют неиспользуемые правила. В консоли SmartDashboard можно просматривать счетчик совпадений по каждому списку доступа:
Если счетчик показывает нулевое значение или последнее совпадение (Last hit) было более чем 6 месяцев назад, то рекомендуется удалить данное правило, дабы не перегружать общий список.
10. Для всех правил в поле Track выставлена опция Log. Кроме правила Do Not Log. Так вы сможете логировать все важные события исключая широковещательный трафик.
11. Для всех правил указано “адекватное” имя и присутствует комментарий, поясняющий назначение этого правила.
12. На всех шлюзах включено логирование.
В качестве Лог-сервера может выступать сервер управления (Management Server) либо другое стороннее решение (возможно использование SIEM или Log Management систем).
14. На всех шлюзах также включена функция локального хранения логов. Это позволит сохранить информацию о событиях в случае недоступности Лог-сервер.
15. На всех шлюзах настроено создание нового Лог-файла при достижении определенного размера старого.
Это значительно ускорит обработку логов (отображение, поиск). Вернуться к более старым логам можно будет переключив Лог-файл.
16. На всех шлюзах настроены уведомления сигнализирующие о заканчивающемся дисковом пространстве. Уровень срабатывания выбирается в зависимости от общего объема жесткого диска. Как правило порог выставляется в районе 50-100 МБайт.
17. На всех шлюзах настроено удаление старых Лог-файлов при заканчивающемся дисковом пространстве. Уровень срабатывания выбирается в зависимости от общего объема жесткого диска. Как правило порог выставляется в районе 50 МБайт.
18. На всех шлюзах настроены скрипты, которые выполняются перед удалением старых Лог-файлов.
С помощью данной функции можно убедиться, что созданы бэкапы логов.
19. В глобальных настройках включено логирование для “VPN packet handling errors”, “VPN successful key exchange”, “VPN configuration & key exchange errors”, “Administrative notifications”, “Packet is incorrectly tagged” и “Packet tagging brute force attack”:
20. На всех шлюзах включен Anti-Spoofing в режиме prevent (для всех интерфейсов):
21. В глобальных настройках (global properties) проверьте значения временных интервалов по умолчанию для stateful inspection:
В случае необходимости измените в соответствии с требованиями вашей сети.
22. Для полей “Drop out of state TCP packets”, “Drop out of state ICMP packets” и “Drop out of state SCTP packets” включено Log on drop (смотри картинку выше).
23. В свойствах каждого шлюза включен счетчик Hit Count:
Это позволит видеть кол-во совпадений по каждому правилу (списку доступа) и удалять неиспользуемые.
24. В настройках оптимизации шлюза укажите максимальное количество конкурентных сессий.
Этот параметр зависит от модели шлюза и позволяет предотвратить перегрузку.
25. В глобальных настройках (global properties) пароли учетных записей пользователей (User Accounts) и администраторов (Administartor Accounts) истекают не позднее чем через 180 дней.
Также должно быть настроено оповещение об истекающем пароле.
26. При интеграции с Active Directory настроена смена пароля:
27. В глобальных настройках (global properties) активирована блокировка Администраторов. Учетная запись блокируется на 30 минут в случае 3-х неудачных попыток входа.
Также настроено уведомление о блокировке и сброс сессии управления, неактивной в течении 15 минут.
28. В свойствах шлюзов выставлена опция “Rematch connections”.
Это позволит блокировать запрещенные соединения сразу после установки новой политики и не ждать окончания сессии.
29. Настроена синхронизация времени (NTP)
Это позволит видеть актуальную дату и время для всех событий (логов).
Таковы рекомендации Check Point по настройке блейда Firewall. Но думаю многие заметили, что большинство советов применимы и к другим вендорам. Подобные рекомендации есть по всем блейдам (IPS, DLP, Application Control, URL Filtering и т.д.), которые мы возможно рассмотрим в следующих статьях.
Больше информации по Check Point можно найти в нашем корпоративном блоге. А чтобы бесплатно провести настроек безопасности Check Point, нажмите сюда.
Создание виртуальной среды. Теория
Немного про виртуальные машины. В нашем случае, виртуальная машина – это программа, которая будет эмулировать копьютер, благодаря чему, мы сможем запустить на нашем компьютере сразу три операционные системы. Для тех кто совсем не знаком с темой, могут начать тут.
Мы воспользуемся бесплатной программой VirtualBox, которая позволяет создавать виртуальные сети на одном компьютере. Конечно же не принципиально чем именно пользоваться, главное иметь возможность сконфигурировать сеть. Программа бесплатна, ищем, качаем, ставим.
Следующим шагом будет добавить виртуальные машины. Я буду работать с Linux Ubuntu 12, по «историческим причинам». Вы можете скачать последнюю версию. Тем более если ваш копьютер достаточно мощный. Образ Ubuntu можно найти тут.
Я надеюсь, что читающий справится с добавление образа в virtualbox и теперь у вас есть что-то похожее на картинку. Я советую воспользоваться функцией “clone” в virtualbox, для быстрого создания еще двух машин. У меня в роли host1, host2 специально урезанные «легкие» версии ubuntu, без графического интерфейса (не хватает RAM для полноценных).
Примерно так это должно выглядеть в конце
Глава 8. Межсетевой экран iptables
В данной главе описаны некоторые простые правила межсетевого экрана, а также методика их применения с помощью приложения iptables .
Приложение iptables предоставляет пользователю возможность осуществления настройки межсетевого экрана системы, который является частью ядра Linux .
Пример простой монозональной конфигурации
Предположим, что вам нужно ужесточить правила межсетевого экрана. Для этого достаточно просто удалить из конфигурации межсетевого экрана ссылки на сетевые службы, которые на данный момент активны в рамках публичной зоны и перезагрузить конфигурационные данные:
В результате исполнения данных команд будет сформирована следующая конфигурация межсетевого экрана:
Руководствуясь соображениями максимальной защиты системы, при возникновении необходимости в открытии временного доступа к той или иной службе на уровне межсетевого экрана (возможно, к службе защищенной командной оболочки ssh), вы можете активировать сетевую службу лишь в рамках текущей сессии (убрать параметр --permanent ), а также сообщить firewalld о том, что стоит отменить внесенное изменение правил по прошествии заданного промежутка времени:
Параметр --timeout позволяет использовать значения промежутков времени в секундах (s), минутах (m) или часах (h).
При обработке сетевого пакета с учетом таких параметров зоны, как исходный адрес или сетевой интерфейс, в условиях отсутствии явного правила для его обработки, поведение межсетевого экрана описывается с помощью цели зоны:
- ACCEPT : сетевой пакет должен быть принят.
- %%REJECT%% : сетевой пакет должен быть отклонен с передачей информация об этом событии отправителю.
- DROP : сетевой пакет должен быть отброшен без передачи какой-либо информации отправителю.
- default : не должно выполняться никаких действий. Зона должна не участвовать в обработке пакета, а просто пересылать его "наверх".
В версии firewalld 0.3.9 была допущена досадная ошибка (которая была исправлена в версии 0.3.10), заключающаяся в том, что в зонах с заданными источниками и целями, отличными от default , цели применялись вне зависимости от разрешенных сетевых служб. Например, зона с заданным источником и целью DROP отбрасывала все сетевые пакеты даже в том случае, если эти сетевые пакеты генерировались разрешенными сетевыми службами. К сожалению, данная версия firewalld была включена в состав дистрибутива RHEL 7 и производных дистрибутивов, что делает описанную ошибку достаточно часто встречающейся. Примеры, приведенные в данной статье, составлялись таким образом, чтобы избежать описанного поведения.
8.2. Активация и деактивация межсетевого экрана iptables
В следующем примере показана методика деактивации и последующей активации межсетевого экрана iptables в дистрибутиве Red Hat/Fedora/CentOS и совместимых дистрибутивах.
В дистрибутиве Debian и различных вариантах дистрибутива Ubuntu не используется аналогичный сценарий системы инициализации, но возможно удаление соответствующего пакета программного обеспечения для деактивации межсетевого экрана.
3. pfSense
Многофункциональный брандмауэр и маршрутизатор на базе FreeBSD
pfSense позиционирует себя как самый надежный брандмауэр с открытым исходным кодом. Оригинальный дистрибутив брандмауэра на базе FreeBSD, pfSense имеет много общих черт с OPNsense. Например, помимо того, что он является мощной, гибкой платформой для межсетевого экранирования и маршрутизации, он включает длинный список сопутствующих функций. Для начала, как и в OPNsense, вы можете использовать pfSense для развертывания системы предотвращения вторжений, а также для включения VPN-доступа.
Кроме того, как и все аналоги, pfSense можно полностью управлять с помощью интуитивно понятного веб-интерфейса. В отличие от большинства аналогов, pfSense доступен в виде аппаратного устройства, виртуального устройства и загружаемой версии для сообщества.
Благодаря своей богатой истории, pfSense, возможно, имеет самую обширную документацию и одно из самых больших сообществ пользователей, которые публикуют учебные пособия и видео на своих официальных каналах поддержки, а также в других местах в Интернете. Кроме того, коммерческие разработчики дистрибутива предлагают платные учебные курсы, которые помогут вам наилучшим образом использовать развертывание pfSense.
8.3. Таблица filter
8.3.1. О фильтрации сетевых пакетов
Процесс фильтрации сетевых пакетов не намного сложнее процесса пересылки сетевых пакетов . В процессе пересылки сетевых пакетов для принятия решений используется лишь таблица маршрутизации, в то время, как в процессе фильтрации сетевых пакетов используется еще и список правил межсетевого экрана. Ядро ОС исследует сетевые пакеты и принимает решение о возможности передачи каждого из этих пакетов на основе упомянутых правил.
8.3.2. Таблица filter
Таблица filter межсетевого экрана iptables содержит три цепочки правил (или набора правил). Цепочка INPUT используется для обработки любого сетевого пакета, попадающего в систему. Цепочка OUTPUT используется для обработки любого сетевого пакета, покидающего систему. Цепочка FORWARD используется для обработки сетевых пакетов, которые пересылаются (передаются) через систему.
В примере ниже показана методика вывода информации о таблице filter и всех ее правилах.
Как вы можете видеть, во всех трех цепочках правил межсетевого экрана из таблицы filter используется политика пропуска всех сетевых пакетов (ACCEPT). Политика пропуска всех сетевых пакетов является используемой по умолчанию политикой.
8.3.3. Стандартные правила межсетевого экрана
Стандартной политикой используемых по умолчанию правил межсетевого экрана является пропуск всех сетевых пакетов (ACCEPT). Эксплуатация настроенного подобным образом межсетевого экрана не является безопасной практикой.
Ниже приведена последовательность команд для блокировки сетевого доступа к компьютеру. Не исполняйте эти команды при работе в рамках удаленной сессии ssh.
8.3.4. Правила для кольцевого сетевого интерфейса
Для начала давайте установим стандартные политики отбрасывания всех сетевых пакетов (DROP) для всех трех цепочек правил межсетевого экрана. Обратите внимание на то, что в случае работы через ssh ваше соединение с удаленной системой может закрыться в момент ввода данных команд ;-).
После этого мы позволим серверу использовать кольцевой интерфейс (благодаря наличию которого сервер имеет возможность работать со своими службами). В первую очередь мы добавим правило в цепочку INPUT для пропуска (ALLOW) трафика от сетевого интерфейса lo (кольцевого интерфейса), после чего выполним аналогичное действие для того, чтобы сетевые пакеты могли покидать систему через кольцевой интерфейс.
Теперь взглянем на таблицу filter снова (в данном случае мы не используем параметр -t, так как информация об интересующей нас таблице выводится по умолчанию).
8.3.5. Разрешение использования протокола ssh при работе с сетевым интерфейсом eth0
В данном примере показана методика добавления двух правил, позволяющих получить доступ к вашей системе извне по протоколу ssh.
Таблица filter будет выглядеть аналогично таблице, представленной в данном примере (обратите внимание на то, что параметр -v был использован для получения более подробного вывода).
8.3.6. Разрешение доступа к системе из подсети
В данном примере показана методика разрешения доступа к системе с любого компьютера из сети 10.1.1.0/24, но только посредством сетевого интерфейса eth1. В данном случае не накладывается каких-либо ограничений на использование различных номеров портов (приложений).
Как и в предыдущих примерах, ниже приведено описание результирующих правил.
8.3.7. Команда iptables save
Используйте команду iptables save для автоматического применения данных правил после перезапуска межсетевого экрана.
8.3.8. Пример сценария для применения правил межсетевого экрана
Вы можете разработать простой сценарий для применения описанных выше правил межсетевого экрана. Ниже приведен пример сценария, предназначенного для применения правил, которые вы уже видели ранее в данной главе.
8.3.9. Разрешение обмена ICMP-трафиком (генерируемым утилитой ping)
В примере ниже показана последовательность команд, позволяющая настроить межсетевой экран iptables для пропуска трафика, генерируемого утилитой ping на вашей машине или принимаемого вашей машиной.
В некотором смысле, в Linux есть брандмауэр, встроенный прямо в ядро. Тем не менее, он не самый удобный в использовании.
Существует несколько графических утилит, которые могут помочь вам управлять им, но его защита ограничена вашей установкой Linux. А как насчет других устройств в вашей сети?
Независимо от того, являетесь ли вы домашним пользователем или руководите малым предприятием, скорее всего, у вас есть несколько устройств, подключенных к Интернету. Помимо компьютеров, довольно часто в учреждениях любого размера имеется множество IoT-устройств, которые также необходимо защитить от злоумышленников в Интернете.
Выделенный брандмауэр стоит между Интернетом и проверяет весь трафик, прежде чем он достигнет вашей внутренней сети.
Хотя для установки такого брандмауэра с нуля требуется определенный навык, существует несколько специализированных дистрибутивов, которые помогут вам легко установить выделенный брандмауэр.
Простой пример мультизональной конфигурации
после исполнения которых будет сгененрирована следующая конфигурация межсетевого экрана:
В случае использования данной конфигурации попытки кого-либо с IP-адресом 1.1.1.1 воспользоваться сетевой службой ssh будут завершаться успешно, так как адресная зона (внутренняя) применяется в первую очередь и позволяет осуществлять доступ к службе ssh.
Если же получить доступ к сетевой службе ssh попытается кто-либо с другим IP-адресом, к примеру, 2.2.2.2, адресная зона не будет использоваться, так как для этого IP-адреса попросту не существует такой зоны. Исходя из этого, запрос будет передан напрямую интерфейсной зоне (публичной), которая не обрабатывает обращения именно к службе ssh. Так как целью публичной зоны является default , по отношению к запросу применяется стандартное правило firewalld, в результате чего он отклоняется.
Теперь давайте предположим, что кто-либо с IP-адресом 3.3.3.3 пытается вывести из строя ваш веб-сайт. Для ограничения доступа к веб-серверу клиента с данным IP-адресом достаточно просто использовать это адрес в качестве исходного IP-адреса специальной зоны drop, названной так из-за того, что она предназначена для сброса всех соединений:
При следующей попытке клиента с IP-адресом 3.3.3.3 осуществить доступ к веб-сайту firewalld в первую очередь отправит запрос в адресную зону (drop). Так как целью данной зоны является DROP , запрос будет отклонен и не достигнет интерфейсной зоны (публичной), в которой он мог бы быть принят.
Введение
Наша цель в этой части – написание программы, которая будет на очень простом уровне контролировать весь траффик. А именно – мы определим какие пакеты можно пропускать, а какие удалять. Создадим простую систему логов, для отслеживания результатов, а так же программу для конечно пользователя, через которую можно будет читать эти результаты и немного управлять программой. Такой вот тривиальный firewall или на русском языке — Межсетево́й экра́н, сетево́й экра́н — это комплекс аппаратных и программных средств в компьютерной сети, осуществляющий контроль и фильтрацию проходящих через негосетевых пакетов в соответствии с заданными правилами. (Wikipedia).
В нашем случае, функцию firewall будет выполнять отдельный компьютер. Выглядить это будет так:
Давайте смотреть. Мы сделаем сеть, в которой будет три виртуальных компьютера – host1, host2, fw и соединим их как на картинке выше.
В двух словах про DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) —сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. (Wikipedia).
То есть он будет сам получать различные настройки, включая IP, для того чтобы иметь возможность через этот сетевой интерфейс, выходить без лишней головной боли в интернет.
Создание виртуальной среды. Практика
И так, я предполагаю, что у Вас уже есть три виртуальных 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. Много информации про конфигурацию интерфесов можно почитать тут.
Практический пример мультизональной конфигурации
После этого уберем сетевые службы mdns, samba-client и dhcpv6-client из внутренней зоны (оставив в ней лишь службу ssh) и установим диапазон IP-адресов вашей организации в качестве источника соединений для данной зоны:
Для организации работы компьютеров из вашей рабочей группы с сервером samba придется добавить расширенное правило:
Наконец, нужно перезагрузить правила межсетевого экрана, активировав внесенные изменения в рамках активной сессии:
Но подождите, ведь в этом случае вы больше не сможете использовать утилиту ping даже во внутренней зоне! Кроме того, в списке разрешенных служб firewalld нет упоминания о протоколе icmp (который используется утилитой ping). Это объясняется тем, что протокол icmp является протоколом 3 уровня сетевой модели OSI и не поддерживает концепции порта в отличие от протоколов, привязанных к определенным портам. Перед установкой цели DROP для публичной зоны ping-пакеты проходят через межсетевой экран, так как цели default обеих зон позволяют задействовать стандартное правило firewalld, которое позволяет пропустить их. Теперь же они отбрасываются.
Для восстановления работоспособности утилиты ping в рамках внутренней сети может использоваться расширенное правило:
В общем, это конфигурация двух активных зон:
Данная конфигурация наглядно демонстрирует концепцию трехуровневого межсетевого экрана. Внешний уровень или публичная зона является интерфейсной зоной, которая предназначена для обработки соединений от клиентов изо всех уголков мира. Следующий уровень или внутренняя зона является адресной зоной, предназначенной для обработки соединений от клиентов из вашей организации и представляющей собой часть публичной зоны. Наконец, расширенное правило добавляет дополнительный внутренний уровень, предназначенный для обработки соединений в рамках вашей рабочей группы и являющийся по своей сути частью внутренней зоны.
Подводя итог, можно сказать, что при возможности разделения конфигурации на отдельные вложенные уровни наиболее широкий уровень должен быть представлен интерфейсной зоной, следующий уровень - адресной зоной, а дополнительные уровни - расширенными правилами в рамках адресной зоны.
8.1. Таблицы межсетевого экрана iptables
По умолчанию на уровне ядра ОС используются три таблицы для хранения наборов правил.
Таблица filter используется для хранения правил фильтрации сетевых пакетов.
Таблица nat используется для хранения правил преобразования сетевых адресов.
Таблица mangle может использоваться для специфической обработки сетевых пакетов.
Наборы правил межсетевого экрана в каждой таблице называются цепочками правил ( chains ). Мы будем обсуждать цепочки правил межсетевого экрана и таблицу nat позднее в рамках данной главы.
Проверка
Осталось проверить, что все связно друг с другом и работает. Проверять будем классическим ping
Как видно на картинке, ping «прошел» с host1 -> host2, host2 -> host1, fw -> host1, fw -> host2. Готово, «лаборатория» для будущих экспериментов настроена.
Оригинал: Understanding Firewalld in Multi-Zone Configurations
Авторы: Nathan Vance, William F. Polik
Дата публикации: 2 февраля 2017 г.
Перевод: А.Панин
Дата перевода: 1 марта 2017 г.
Истории о скомпрометированных серверах и кражах данных в наше время не редко появляются в новостных лентах. Любой человек без труда может осуществить несанкционированный доступ к системе после прочтения информативного поста об использовании некорректной конфигурации системой службы, недавно обнаруженной уязвимости или похищенного пароля. Вообще, любая из множества сетевых служб, работающих на среднестатистическом Linux-сервере, может содержать уязвимость, позволяющую осуществить несанкционированный доступ к системе.
Так как защита системы от любых видов атак на уровне приложений является практически невыполнимой задачей, в большинстве случаев для защиты различных систем применяются межсетевые экраны, позволяющие ограничивать доступ к ним извне. Межсетевые экраны фильтруют входящие сетевые пакеты на основе их исходных и целевых IP-адресов и номеров портов, а также протоколов. Таким образом, система может работать лишь с несколькими комбинациями IP-адресов/номеров портов/протоколов и игнорировать все остальные.
В Linux межсетевые экраны основываются на netfilter, специализированном фреймворке уровня ядра. В течение более чем десяти лет утилита iptables выступала в качестве уровня абстракции для netfilter из пространства пользователя. iptables позволяет обрабатывать сетевые пакеты с помощью наборов правил, причем при совпадении комбинации IP-адрес/номер порта/протокол правила с аналогичной комбинацией свойств сетевого пакета осуществляется применение правила, приводящее в конечном итоге к приему, отклонению или отбрасыванию пакета.
2. OPNsense
Форк оригинального проекта pfSense, ориентированный на безопасность
OPNSense является результатом усилий двух существующих проектов с открытым исходным кодом, а именно pfSense и m0n0wall.
Вместо Linux, OPNsense работает на базе HardenedBSD, которая представляет собой ориентированный на безопасность форк FreeBSD. Дистрибутив предназначен для использования в качестве межсетевого экрана и платформы маршрутизации и, помимо фильтрации трафика, может использоваться для отображения captive portal, шейпинга трафика, обнаружения и предотвращения вторжений, а также для настройки виртуальной частной сети (VPN) и многого другого.
Стремясь своевременно реагировать на угрозы, дистрибутив брандмауэра предлагает еженедельные обновления безопасности. Одной из лучших особенностей OPNsense является то, что он раскрывает все свои функциональные возможности благодаря веб-интерфейсу, который очень удобен в использовании и доступен на нескольких языках.
OPNsense реализует сетевой экран с контролем состояния и позволяет пользователям группировать правила брандмауэра по категориям, что, согласно веб-сайту компании, является удобной функцией для более требовательных сетевых настроек.
Брандмауэр использует систему предотвращения вторжений Inline Intrusion Prevention System. Это мощная форма глубокой проверки пакетов, при которой вместо простой блокировки IP-адреса или порта, OPNsense может проверять отдельные пакеты данных или соединения и при необходимости останавливать их до того, как они достигнут отправителя.
Цели проектирования Firewalld
Разработчики Firewalld понимали, что большинство вариантов использования утилиты iptables подразумевало задействование нескольких уникальных исходных IP-адресов с соответствующими списками разрешенных к использованию сетевых служб и запретом использования всех остальных служб. Для реализации подобного подхода firewalld разделяет входящий трафик на зоны, описываемые с помощью исходного IP-адреса или имени сетевого интерфейса. Каждая зона имеет свои данные конфигурации, позволяющие осуществлять прием или отклонение сетевых пакетов на основе заданных критериев.
Другим усовершенствованием концепции, представленной в iptables, является упрощение процесса конфигурации. Firewalld упрощает процесс описания сетевых служб благодаря возможности использования имени сетевой службы вместо указания ее номера порта и протокола - например, вы можете использовать имя сетевой службы samba вместо указания номеров UDP-портов 137 и 138 и TCP-портов 139 и 445. Кроме того, синтаксис правил дополнительно упрощается благодаря устранению зависимости от порядка следования правил, присутствующей в iptables.
Наконец, firewalld позволяет осуществлять изменение состояния фреймворка netfilter в динамическом режиме, то есть, изменять настройки межсетевого экрана вне зависимости от правил, хранящихся на постоянной основе в файле конфигурации формата XML. Таким образом, с помощью следующей команды может осуществляться временная модификация правил межсетевого экрана, которая утратит свою силу после перезагрузки системы.
А эти команды позволяют осуществить модификацию правила межсетевого экрана на постоянной основе, причем она будет актуальной даже после перезагрузки системы:
Верхним уровнем организации правил межсетевого экрана в firewalld являются зоны. Пакет является частью зоны в том случае, если он принадлежит к ассоциированному с этой зоной сетевому интерфейсу или имеет ассоциированный с ней исходный IP-адрес/маску сети. По умолчанию пользователю доступно несколько зон:
Активной зоной является любая зона, которой поставлен в соответствие сетевой интерфейс и/или исходный IP-адрес. Для вывода списка активных зон может использоваться следующая команда:
Интерфейсами ( Interfaces ) называются имена, выдаваемые системой аппаратным и виртуальным сетевым адаптерам, что несложно увидеть в примере выше. Все активные интерфейсы связываются с зонами, причем в соответствие интерфейсу может быть поставлена как стандартная зона, так и любая зона, выбранная пользователем. Однако, сетевому интерфейсу не может быть поставлено в соответствие более одной зоны.
При использовании стандартной конфигурации firewalld ставит в соответствие всем сетевым интерфейсам публичную зону (public) и не устанавливает для зон каких-либо исходных IP-адресов. В результате публичная зона является единственной активной зоной.
Источниками ( Sources ) называются диапазоны исходных IP-адресов, которые также могут связываться с зонами. Источник (или перекрывающиеся источники) не могут ставиться в соответствие множеству зон. Выполнение подобной операции приведет к неопределенному поведению межсетевого экрана, ведь firewalld не сможет определить, какие правила должны применяться по отношению к заданному источнику.
Так как указание источника не является необходимым условием создания зоны, каждый сетевой пакет будет иметь ассоциированную зону с заданным сетевым интерфейсом, но не обязан иметь ассоциированную зону с заданным источником. Из этого можно сделать вывод, что имеет место распределение приоритетов, причем приоритет отдается зонам с четко заданными источниками, о чем будет сказано ниже. В первую очередь предлагаю исследовать конфигурацию публичной зоны:
Рассмотрим приведенный вывод построчно:
- public (default, active) указывает на то, что публичная зона является стандартной зоной (используемой для появляющихся сетевых интерфейсов), а также активна, ведь она связана как минимум с одним сетевым интерфейсом или источником.
- interfaces: eno1 eno2 содержит список сетевых интерфейсов, связанных с данной зоной.
- sources: содержит список источников данной зоны. На данный момент они не заданы, а в случае их наличия после двоеточия должны были бы находиться IP-адреса в формате xxx.xxx.xxx.xxx/xx.
- services: dhcpv6-client ssh содержит список служб, которые могут осуществлять обмен данными через межсетевой экран. Вы можете получить исчерпывающий список известных firewalld имен сетевых служб, воспользовавшись командой firewall-cmd --get-services .
- ports: содержит список целевых портов, с которыми могут работать сетевые службы через межсетевой экран. Эта директива может оказаться полезной в том случае, если вам нужно разрешить использование сетевой службы, которая не известна firewalld.
- masquerade: no указывает на то, что IP-маскарадинг отключен в рамках данной зоны. При активации упомянутого механизма станет возможным использование IP-форвардинга (проброса портов) с превращением вашего компьютера в маршрутизатор.
- forward-ports: содержит список пробрасываемых портов.
- icmp-blocks: содержит список адресов для блокировки ICMP-трафика.
- rich rules: содержит правила для сложных конфигураций, обрабатываемые в первую очередь при загрузке параметров зоны.
- default является целью зоны, которая описывает действие, выполняемое по отношению к соответствующему зоне сетевому пакету, не подпадающему под действие какого-либо из приведенных выше параметров.
Приоритеты
Активные зоны могут выступать в двух различных ролях. Зоны с ассоциированными сетевыми интерфейсам выступают в роли интерфейсных зон, а зоны с ассоциированными исходными IP-адресами - адресных зон (при этом каждая из зон может выступать сразу в двух описанных ролях). Firewalld осуществляет обработку сетевых пакетов в описанной ниже последовательности:
- Сначала применяется правило соответствующей адресной зоны. При этом такая зона может либо существовать в единичном экземпляре, либо не существовать вообще. Если адресная зона обрабатывает сетевой пакет из-за того, что он удовлетворяет ее расширенному правилу, сетевая служба является разрешенной или ее цель отличается от default, то процесс обработки рассматриваемого сетевого пакета может считаться оконченным. В противном случае сетевой пакет подвергается дополнительной обработке.
- Далее приходит очередь соответствующей интерфейсной зоны. Ровно одна такая зона должна существовать в любом случае. Если пакет обрабатывается на уровне этой зоны, процесс его обработки может считаться оконченным. В противном случае пакет подвергается дополнительной обработке.
- Теперь используется стандартное правило Firewalld. Оно заключается в том, что принимаются все сетевые пакеты, связанные с протоколом icmp, а все остальные сетевые пакеты просто отбрасываются.
Если говорить максимально кратко, то можно сказать, что адресные зоны имеют приоритет перед интерфейсными зонами. Таким образом, основное правило проектирования мультизональных конфигураций межсетевого экрана будет заключаться в создании привилегированной адресной зоны для организации доступа к системным службам клиентов с определенными IP-адресами и ограниченной интерфейсной зоны для предотвращения доступа к сетевым службам всех остальных клиентов.
Отладка
Firewalld реализует интуитивно понятные парадигмы настройки межсетевого экрана, которые обуславливают повышенную неоднозначность правил по сравнению с ранее использовавшейся для аналогичных целей утилитой iptables. Для упрощения разбора возникающих вариантов неопределенного поведения или для лучшего понимания принципа работы firewalld следует рассмотреть настройки фреймворка netfilter, которые генерируются в процессе работы с утилитой iptables. Настройки данного фреймворка для предыдущего примера с убранными для простоты цепочками forward, output и logging приведены ниже:
В приведенном выше выводе утилиты iptables новые цепочки (в строках, начинающихся с -N ) объявляются в первую очередь. Остальные правила добавляются (в строках, начинающихся с -A ) в iptables. Установленные соединения и локальный трафик принимаются, при этом входящие пакеты отправляются в цепочку INPUT_ZONES_SOURCE с последующей оправкой в зоны, связанные с их IP-адресами, если эти зоны существуют. После этого трафик передается в цепочку INPUT_ZONES , перенаправляясь в интерфейсную зону. Если он не обрабатывается в данной зоне, пакеты icmp принимаются, некорректные пакеты отбрасываются, а все остальные пакеты - отклоняются.
Заключение
Firewalld является недостаточно документированным инструментом для настройки межсетевого экрана с потенциалом, о котором наверняка даже не догадываются многие пользователи. Благодаря инновационной парадигме зон, системные администраторы могут использовать firewalld для разделения трафика на категории, каждая из которых может предполагать уникальную методику обработки сетевых пакетов, что значительно упрощает процесс конфигурирования. Ну а интуитивно понятные дизайн и синтаксис делают firewalld практичным инструментом для создания как монозональных, так и мультизональных конфигураций межсетевого экрана.
Оригинал: Iptables firewall
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 13 июля 2015 г.
4. ClearOS
Хорошо продуманный дистрибутив, который очень прост в использовании
ClearOS — это дистрибутив на базе CentOS, который разработан как полнофункциональная замена коммерческим серверным дистрибутивам, таким как Red Hat Enterprise Server или Windows Small Business Server.
Существует несколько редакций ClearOS, включая поддерживаемую сообществом редакцию, которая предлагается для бесплатной загрузки. Вы можете использовать редакцию ClearOS для развертывания всех видов сетевых служб, включая брандмауэр с функциями фильтрации содержимого и обнаружения вторжений.
Самое лучшее в ClearOS — это простота развертывания. Поскольку большинство дистрибутивов брандмауэров написаны для стереотипных гиков, приятно видеть свежие изменения в том, что, похоже, стало стандартом де-факто — «собери все вместе и подумай об интерфейсе потом».
После установки вы можете управлять своим брандмауэром на базе ClearOS с помощью веб-интерфейса. Интерфейс администрирования интуитивно понятен в использовании и поможет вам не только настроить и контролировать ваш брандмауэр, но также может быть использован для настройки нескольких других сетевых служб с помощью нескольких щелчков мыши.
1. IPFire
Простой в использовании брандмауэр с некоторыми суперпродвинутыми функциями.
IPFire — это дистрибутив управляемого брандмауэра на базе Linux, построенный на основе Netfilter. Он начинался как форк проекта IPCop, но затем был переписан на основе Linux From Scratch. IPFire может быть развернут на широком спектре оборудования, включая устройства ARM, такие как Raspberry Pi.
Благодаря своей минималистской сущности, IPFire является более доступным по сравнению с некоторыми аналогами. Процесс установки позволяет настроить сеть на различные сегменты безопасности, причем каждый сегмент имеет цветовое кодирование. Зеленый сегмент — это безопасная область, представляющая всех обычных клиентов, подключенных к локальной проводной сети. Красный сегмент представляет интернет. Никакой трафик не может проходить из красного сегмента в любой другой сегмент, если только вы специально не настроили его таким образом в брандмауэре.
Помимо функций межсетевого экрана, IPFire также обладает возможностями обнаружения и предотвращения вторжений, а также может быть использован для предоставления возможностей VPN. Дистрибутив также может быть расширен с помощью удобного набора дополнений для придания ему дополнительных функций.
Введение
Наша цель в этой части – написание программы, которая будет на очень простом уровне контролировать весь траффик. А именно – мы определим какие пакеты можно пропускать, а какие удалять. Создадим простую систему логов, для отслеживания результатов, а так же программу для конечно пользователя, через которую можно будет читать эти результаты и немного управлять программой. Такой вот тривиальный firewall или на русском языке — Межсетево́й экра́н, сетево́й экра́н — это комплекс аппаратных и программных средств в компьютерной сети, осуществляющий контроль и фильтрацию проходящих через негосетевых пакетов в соответствии с заданными правилами. (Wikipedia).
В нашем случае, функцию firewall будет выполнять отдельный компьютер. Выглядить это будет так:
Давайте смотреть. Мы сделаем сеть, в которой будет три виртуальных компьютера – host1, host2, fw и соединим их как на картинке выше.
В двух словах про DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) —сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. (Wikipedia).
То есть он будет сам получать различные настройки, включая IP, для того чтобы иметь возможность через этот сетевой интерфейс, выходить без лишней головной боли в интернет.
Читайте также: