Межсетевые экраны для linux

Содержание
  1. Настройка межсетевого экрана в Linux
  2. Содержание
  3. Немного теории [ править ]
  4. Принцип работы [ править ]
  5. Встроенные действия [ править ]
  6. Таблицы [ править ]
  7. Таблица mangle [ править ]
  8. Таблица nat [ править ]
  9. Таблица filter [ править ]
  10. Цепочки [ править ]
  11. Персональный межсетевой экран рабочей станции [ править ]
  12. Проверим состояние [ править ]
  13. Вариант 1 (рекомендуется в целях безопасности) [ править ]
  14. Вариант 2 [ править ]
  15. Установим политики по умолчанию [ править ]
  16. Исключения (для входящих соединений) [ править ]
  17. Сохраним правила [ править ]
  18. Arch Linux [ править ]
  19. RedHat Linux [ править ]
  20. 10 полезных межсетевых экранов с открытым исходным кодом для систем Linux
  21. Содержание:
  22. 1. Iptables
  23. Особенности IPtables
  24. 2. Межсетевой экран IPCop
  25. Особенности IPCop Firewall
  26. 3. Shorewall
  27. Особенность Shorewall
  28. 4. UFW — простой межсетевой экран
  29. Особенности UFW
  30. 5. Вуурмуур
  31. Особенности Вуурмуура
  32. 6. pfSense
  33. Особенности pfsense
  34. 7. IPFire
  35. Особенности IPFire
  36. 8. SmoothWall и SmoothWall Express
  37. Особенности SmoothWall
  38. 9. Порядок байтов
  39. Особенности Endian
  40. 10. Межсетевой экран ConfigServer Security
  41. Защита Linux-сервера. Что сделать в первую очередь
  42. Содержание
  43. Нерутовый юзер
  44. Ключи вместо паролей SSH
  45. Файрвол
  46. Fail2Ban
  47. Автоматические обновления безопасности
  48. Смена портов по умолчанию
  49. На правах рекламы

Настройка межсетевого экрана в Linux

Внимание! Это руководство нужно применять только войдя в систему локально. Если же Вы войдете в систему удалённо (по SSH, например), то скорее всего потеряете соединение с удалённой системой.

Содержание

Немного теории [ править ]

Принцип работы [ править ]

Все пакеты пропускаются через определенные для них последовательности цепочек. При прохождении пакетом цепочки, к нему последовательно применяются все правила этой цепочки в порядке их следования. Под применением правила понимается: во-первых, проверка пакета на соответствие критерию, и во-вторых, если пакет этому критерию соответствует, применение к нему указанного действия. Под действием может подразумеваться как элементарная операция (встроенное действие, например, ACCEPT, MARK), так и переход в одну из пользовательских цепочек. В свою очередь, действия могут быть как терминальными, то есть прекращающими обработку пакета в рамках данной базовой цепочки (например, ACCEPT, REJECT), так и нетерминальными, то есть не прерывающими процесса обработки пакета (MARK, TOS). Если пакет прошел через всю базовую цепочку и к нему так и не было применено ни одного терминального действия, к нему применяется действие по умолчанию для данной цепочки (обязательно терминальное).

Встроенные действия [ править ]

ACCEPT, DROP и REJECT — базовые операции фильтрации

Таблицы [ править ]

Таблица mangle [ править ]

Данная таблица предназначена для операций по классификации и маркировке пакетов и соединений, а также модификации заголовков пакетов (поля TTL и TOS).

Таблица nat [ править ]

Предназначена для операций stateful-преобразования сетевых адресов и портов обрабатываемых пакетов.

Таблица filter [ править ]

Предназначена для фильтрации трафика, то есть разрешения и запрещения пакетов и соединений.

Цепочки [ править ]

Таблица filter содержит следующие цепочки:

  • INPUT — эта цепочка обрабатывает трафик, поступающий непосредственно самому хосту.
  • FORWARD — позволяет фильтровать транзитный трафик.
  • OUTPUT — эта цепочка позволяет фильтровать трафик, исходящий от самого хоста.

Правила стоит располагать по возможности в порядке от наиболее частых попаданий к наиболее редким.

Персональный межсетевой экран рабочей станции [ править ]

Проверим состояние [ править ]

Вариант 1 (рекомендуется в целях безопасности) [ править ]

При отсутствии правил вывод будет примерно таким:

Если вывод отличается, то сброс настроек можно сделать командой

где empty.rules — текстовый файл, содержащий 5 строк, как в выводе выше.

Вариант 2 [ править ]

При отсутствии правил вывод будет примерно таким:

Установим политики по умолчанию [ править ]

Для цепочки «проходящая» устанавливаем блокировку, для цепочки «выходная» устанавливаем разрешение, для цепочки «входная» устанавливаем блокировку. Далее будут правила, определяющие исключения для этих политик.

Внимание! На этом этапе произойдёт отключение, если связь производилась по SSH.

Исключения (для входящих соединений) [ править ]

1. Разрешим трафик, принадлежащий установленным соединениям

2. Разрешим локальный интерфейс

3. Запретим «неправильный» трафик (не открывающий новое соединение и не принадлежащий никакому установленному соединению).

4. Разрешим новые ICMP запросы (ping). Остальные запросы ping будут обработаны первым правилом.

5. Разрешим новые входные соединения по портам

Если установлен веб-сервер

Если необходима связь по SSH

Если установлен DNS-сервер

есть возможность объединить несколько правил (для увеличения производительности):

6. Все новые входящие соединения, не обработанные предыдущими цепочками, запретим.

Сохраним правила [ править ]

Arch Linux [ править ]

RedHat Linux [ править ]

добавим демон для применения правил при загрузке компьютера

Источник

10 полезных межсетевых экранов с открытым исходным кодом для систем Linux

Будучи Nix админ над 5+ лет, я всегда отвечаю за управление безопасностью Linux серверы. Брандмауэры играют важную роль в защите Linux системы/сети. Он действует как охранник между внутренней и внешне

Содержание:

Будучи Nix админ над 5+ лет, я всегда отвечаю за управление безопасностью Linux серверы. Брандмауэры играют важную роль в защите Linux системы/сети. Он действует как охранник между внутренней и внешней сетью путем контроля и управления входящим и исходящим сетевым трафиком на основе набора правил. Этот набор правил брандмауэра разрешает только законные соединения и блокирует те, которые не определены.

Читайте также:  Windows media player нет поток

На рынке доступны для загрузки десятки приложений брандмауэра с открытым исходным кодом. В этой статье мы придумали 10 самых популярных межсетевых экранов с открытым исходным кодом это может быть очень полезно при выборе того, что соответствует вашим требованиям.

1. Iptables

Iptables / Netfilter — самый популярный межсетевой экран на основе командной строки. Это первая линия защиты безопасности сервера Linux. Многие системные администраторы используют его для тонкой настройки своих серверов. Он фильтрует пакеты в сетевом стеке внутри самого ядра. Вы можете найти более подробный обзор Iptables здесь.

Особенности IPtables

  1. В нем отображается содержимое набора правил фильтрации пакетов.
  2. Это молниеносно, потому что проверяются только заголовки пакетов.
  3. Вы можете добавлять / удалять / изменять правила в соответствии с вашими потребностями в наборах правил фильтрации пакетов.
  4. Перечисление / обнуление счетчиков правил для наборов правил фильтрации пакетов.
  5. Поддерживает резервное копирование и восстановление с файлами.

Домашняя страница IPtables
Основное руководство по брандмауэру Linux IPTables

2. Межсетевой экран IPCop

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

Вы можете настроить старый компьютер как безопасный VPN, чтобы обеспечить безопасную среду в Интернете. Он также хранит некоторую часто используемую информацию, чтобы пользователям было удобнее просматривать веб-страницы.

Особенности IPCop Firewall

  1. Его веб-интерфейс с цветовой кодировкой позволяет отслеживать производительность графики для ЦП, памяти и диска, а также пропускную способность сети.
  2. Он просматривает и автоматически меняет журналы.
  3. Поддержка нескольких языков.
  4. Обеспечивает очень безопасное, стабильное и легко реализуемое обновление и добавление исправлений.

Домашняя страница IPCop

3. Shorewall

Shorewall или Shoreline Firewall — еще один очень популярный межсетевой экран с открытым исходным кодом, специализирующийся на GNU / Linux. Он основан на системе Netfilter, встроенной в ядро ​​Linux, которая также поддерживает IPV6.

Особенность Shorewall

  1. Использует средства отслеживания соединений Netfilter для фильтрации пакетов с отслеживанием состояния.
  2. Поддерживает широкий спектр приложений для маршрутизаторов / брандмауэров / шлюзов.
  3. Централизованное администрирование межсетевого экрана.
  4. Графический интерфейс с панелью управления Webmin.
  5. Поддержка нескольких интернет-провайдеров.
  6. Поддерживает маскарадинг и переадресацию портов.
  7. Поддерживает VPN

Домашняя страница Shorewall
Установка Shorewall

4. UFW — простой межсетевой экран

UFW — это инструмент межсетевого экрана по умолчанию для серверов Ubuntu, он в основном разработан для уменьшения сложности межсетевого экрана iptables и делает его более удобным для пользователя. Графический пользовательский интерфейс ufw, GUFW также доступен для пользователей Ubuntu и Debian.

Особенности UFW

  1. Поддерживает IPV6
  2. Расширенные возможности регистрации с возможностью включения / выключения
  3. Мониторинг статуса
  4. Расширяемый фреймворк
  5. Может быть интегрирован с приложениями
  6. Добавить / удалить / изменить правила в соответствии с вашими потребностями.

Домашняя страница UFW
Домашняя страница GUFW
Установка UFW

5. Вуурмуур

Vuurmuur — еще один мощный менеджер брандмауэра Linux, построенный или управляющий правилами iptables для вашего сервера или сети. В то же время он очень удобен для администрирования, никаких предварительных знаний работы с iptables для использования Vuurmuur не требуется.

Особенности Вуурмуура

  1. Поддержка IPV6
  2. Формирование трафика
  3. Более продвинутые функции мониторинга
  4. Мониторинг подключения и использования полосы пропускания в реальном времени
  5. Легко настраивается с помощью NAT.
  6. Имеют функции защиты от спуфинга.

Домашняя страница Вуурмуур
Флэш-демоверсии Vuurmuur

6. pfSense

pfSense — еще один открытый исходный код и очень надежный межсетевой экран для серверов FreeBSD. Он основан на концепции фильтрации пакетов с отслеживанием состояния. Он предлагает широкий спектр функций, которые обычно доступны только на дорогих коммерческих межсетевых экранах.

Особенности pfsense

  1. Легко настраивается и обновляется через веб-интерфейс.
  2. Может быть развернут как межсетевой экран по периметру, маршрутизатор, DHCP- и DNS-сервер.
  3. Настроен как точка беспроводного доступа и конечная точка VPN.
  4. Формирование трафика и информация о сервере в реальном времени.
  5. Балансировка входящей и исходящей нагрузки.

Домашняя страница pfSense

7. IPFire

IPFire — еще один брандмауэр на базе Linux с открытым исходным кодом для сред малого и домашнего офиса (SOHO). Его конструкция отличается модульностью и высокой гибкостью. Сообщество IPfire также позаботилось о безопасности и разработало его как межсетевой экран с отслеживанием пакетов (SPI).

Особенности IPFire

  1. Может быть развернут как межсетевой экран, прокси-сервер или VPN-шлюз.
  2. Фильтрация контента
  3. Встроенная система обнаружения вторжений
  4. Поддержка через Wiki, форумы и чаты
  5. Поддержка гипервизоров, таких как KVM, VmWare и Xen для среды виртуализации.
Читайте также:  Windows server 2019 core настройка контроллера домена

Домашняя страница IPFire

8. SmoothWall и SmoothWall Express

SmoothWall — это межсетевой экран Linux с открытым исходным кодом и легко настраиваемым веб-интерфейсом. Его веб-интерфейс известен как WAM (менеджер веб-доступа). Свободно распространяемая версия SmoothWall известна как SmoothWall Express.

Особенности SmoothWall

  1. Поддерживает LAN, DMZ и беспроводные сети, а также внешние.
  2. Фильтрация контента в реальном времени
  3. HTTPS фильтрация
  4. Поддержка прокси
  5. Просмотр журналов и мониторинг активности брандмауэра
  6. Управление статистикой трафика по IP, интерфейсам и посещениям
  7. Средство резервного копирования и восстановления нравится.

SmoothWall Домашняя страница

9. Порядок байтов

Брандмауэр Endian — это еще один брандмауэр на основе концепции Stateful Packet Inspection, который может быть развернут как маршрутизаторы, прокси и шлюз VPN с OpenVPN. Первоначально он был разработан на основе межсетевого экрана IPCop, который также является ответвлением Smoothwall.

Особенности Endian

  1. Двунаправленный межсетевой экран
  2. Предотвращение вторжений Snort
  3. Может защитить веб-сервер с помощью прокси HTTP и FTP, антивируса и черного списка URL.
  4. Может защищать почтовые серверы с помощью прокси SMTP и POP3, автоматического обучения спаму, серых списков.
  5. VPN с IPSec
  6. Регистрация сетевого трафика в реальном времени

Endian Домашняя страница

10. Межсетевой экран ConfigServer Security

Последнее, но не последнее, безопасность и брандмауэр Configserver. Это кроссплатформенный и очень универсальный межсетевой экран, он также основан на концепции межсетевого экрана с проверкой пакетов с отслеживанием состояния (SPI). Он поддерживает практически все среды виртуализации, такие как Virtuozzo, OpenVZ, VMware, XEN, KVM и Virtualbox.

Источник

Защита Linux-сервера. Что сделать в первую очередь


Habib M’henni / Wikimedia Commons, CC BY-SA

В наше время поднять сервер на хостинге — дело пары минут и нескольких щелчков мыши. Но сразу после запуска он попадает во враждебную среду, потому что открыт для всего интернета как невинная девушка на рокерской дискотеке. Его быстро нащупают сканеры и обнаружат тысячи автоматически скриптовых ботов, которые рыскают по сети в поисках уязвимостей и неправильных конфигураций. Есть несколько вещей, которые следует сделать сразу после запуска, чтобы обеспечить базовую защиту.

Содержание

Нерутовый юзер

Первым делом нужно завести для себя нерутового юзера. Дело в том, что у пользователя root абсолютные привилегии в системе, а если разрешить ему удалённое администрирование, то вы сделаете половину работы для хакера, оставив для него валидный username.

Поэтому нужно завести другого юзера, а для рута отключить удалённое администрирование по SSH.

Новый пользователь заводится командой useradd :

Затем для него добавляется пароль командой passwd :

Наконец, этого пользователя нужно добавить в группу, которая имеет право выполнять команды с повышением привилегий sudo . В зависимости от дитрибутива Linux, это могут быть разные группы. Например, в CentOS и Red Hat юзера добавляют в группу wheel :

В Ubuntu он добавляется в группу sudo :

Ключи вместо паролей SSH

Брутфорс или утечка паролей — стандартный вектор атаки, так что аутентификацию по паролям в SSH (Secure Shell) лучше отключить, а вместо неё использовать аутентификацию по ключам.

Есть разные программы для реализации протокола SSH, такие как lsh и Dropbear, но самой популярной является OpenSSH. Установка клиента OpenSSH на Ubuntu:

Установка на сервере:

Запуск демона SSH (sshd) на сервере под Ubuntu:

Автоматический запуск демона при каждой загрузке:

Нужно заметить, что серверная часть OpenSSH включает в себя клиентскую. То есть через openssh-server можно подключаться к другим серверам. Более того, со своей клиентской машины вы можете запустить SSH-туннель с удалённого сервера на сторонний хост, и тогда сторонний хост будет считать удалённый сервер источником запросов. Очень удобная функция для маскировки своей системы. Подробнее см. статью «Практические советы, примеры и туннели SSH».

На клиентской машине обычно нет смысла ставить полноценный сервер, чтобы не допускать возможность удалённого подключения к компьютеру (в целях безопасности).

Итак, для своего нового юзера сначала нужно сгенерировать ключи SSH на компьютере, с которого вы будете заходить на сервер:

Публичный ключ хранится в файле .pub и выглядит как строка случайных символов, которые начинаются с ssh-rsa .

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Затем из-под рута создать на сервере директорию SSH в домашнем каталоге пользователя и добавить публичный ключ SSH в файл authorized_keys , используя текстовый редактор вроде Vim:

Наконец, установить корректные разрешения для файла:

и изменить владение на этого юзера:

На стороне клиента нужно указать местоположение секретного ключа для аутентификации:

Теперь можно залогиниться на сервер под именем юзера по этому ключу:

После авторизации можно использовать команду scp для копирования файлов, утилиту sshfs для удалённого примонтирования файловой системы или директорий.

Желательно сделать несколько резервных копий приватного ключа, потому что если отключить аутентификацию по паролю и потерять его, то у вас не останется вообще никакой возможности зайти на собственный сервер.

Читайте также:  Не открывается windows search

Как упоминалось выше, в SSH нужно отключить аутентификацию для рута (по этой причине мы и заводили нового юзера).

На CentOS/Red Hat находим строку PermitRootLogin yes в конфигурационном файле /etc/ssh/sshd_config и изменяем её:

На Ubuntu добавляем строку PermitRootLogin no в конфигурационный файл 10-my-sshd-settings.conf :

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

На CentOS/Red Hat находим строку PasswordAuthentication yes в конфигурационном файле /etc/ssh/sshd_config и изменяем её следующим образом:

На Ubuntu добавляем строку PasswordAuthentication no в файл 10-my-sshd-settings.conf :

Инструкцию по подключению двухфакторной аутентификации по SSH см. здесь.

Файрвол

Файрвол гарантирует, что на сервер пойдёт только тот трафик по тем портам, которые вы напрямую разрешили. Это защищает от эксплуатации портов, которые случайно включились с другими сервисами, то есть сильно уменьшает поверхность атаки.

Перед установкой файрвола нужно убедиться, что SSH внесён в список исключений и не будет блокироваться. Иначе после запуска файрвола мы не сможем подключиться к серверу.

С дистрибутивом Ubuntu идёт Uncomplicated Firewall (ufw), а с CentOS/Red Hat — firewalld.

Разрешение SSH в файрволе на Ubuntu:

На CentOS/Red Hat используем команду firewall-cmd :

После этой процедуры можно запустить файрвол.

На CentOS/Red Hat запускаем сервис systemd для firewalld:

На Ubuntu используем такую команду:

Fail2Ban

Сервис Fail2Ban анализирует логи на сервере и подсчитывает количество попыток доступа с каждого IP-адреса. В настройках указаны правила, сколько попыток доступа разрешено за определённый интервал — после чего данный IP-адрес блокируется на заданный отрезок времени. Например, разрешаем 5 неудачных попыток аутентификации по SSH в промежуток 2 часа, после чего блокируем данный IP-адрес на 12 часов.

Установка Fail2Ban на CentOS и Red Hat:

Установка на Ubuntu и Debian:

В программе два конфигурационных файла: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf . Ограничения для бана указываются во втором файле.

Джейл для SSH включён по умолчанию с дефолтными настройками (5 попыток, интервал 10 минут, бан на 10 минут).

Кроме SSH, Fail2Ban может защищать и другие сервисы на веб-сервере nginx или Apache.

Автоматические обновления безопасности

Как известно, во всех программах постоянно находят новые уязвимости. После публикации информации эксплоиты добавляются в популярные эксплоит-паки, которые массово используются хакерами и подростками при сканировании всех серверов подряд. Поэтому очень важно устанавливать обновления безопасности как только они появляются.

На сервере Ubuntu в конфигурации по умолчанию включены автоматические обновления безопасности, так что дополнительных действий не требуется.

На CentOS/Red Hat нужно установить приложение dnf-automatic и включить таймер:

Смена портов по умолчанию

SSH был разработан в 1995 году для замены telnet (порт 23) и ftp (порт 21), поэтому автор программы Тату Илтонен выбрал порт 22 по умолчанию, и его утвердили в IANA.

Естественно, все злоумышленники в курсе, на каком порту работает SSH — и сканируют его вместе с остальными стандартными портами, чтобы узнать версию программного обеспечения, для проверки стандартных паролей рута и так далее.

Смена стандартных портов — обфускация — в несколько раз сокращает объём мусорного трафика, размер логов и нагрузку на сервер, а также сокращает поверхность атаки. Хотя некоторые критикуют такой метод «защиты через неясность» (security through obscurity). Причина в том, что эта техника противопоставляется фундаментальной архитектурной защите. Поэтому, например, Национальный институт стандартов и технологий США в «Руководстве по безопасности сервера» указывает необходимость открытой серверной архитектуры: «Безопасность системы не должна полагаться на скрытность реализации её компонентов», — сказано в документе.

Теоретически, смена портов по умолчанию противоречит практике открытой архитектуры. Но на практике объём вредоносного трафика действительно сокращается, так что это простая и эффективная мера.

Номер порта можно настроить, изменив директиву Port 22 в файле конфигурации /etc/ssh/sshd_config. Он также указывается параметром -p

в sshd. Клиент SSH и программы sftp тоже поддерживают параметр -p

можно использовать для указания номера порта при подключении с помощью команды ssh в Linux. В sftp и scp используется параметр -P

(заглавная P). Указание из командной строки переопределяет любое значение в файлах конфигурации.

Если серверов много, почти все эти действия по защите Linux-сервера можно автоматизировать в скрипте. Но если сервер только один, то лучше вручную контролировать процесс.

На правах рекламы

Закажи и сразу работай! Создание VDS любой конфигурации и с любой операционной системой в течение минуты. Максимальная конфигурация позволит оторваться на полную — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe. Эпичненько 🙂

Источник

Оцените статью