LINUX.ORG.RU

Сообщения SteelLinux

 

Linux быстро, без вопросов и всегда под рукой

Форум — Talks

Собственно, давно имея намерения подрихтовать раздутый initrd, выпустили релиз, собранный уже на kiwi-ng. Это сборка SteelLinux. Представляет собой обычный openSUSE Tumbleweed с уже предустановленным софтом, дровами, кодеками, фирмварами, фиксами и проч., с расчётом на то, чтобы при установке системы не пришлось делать лишних телодвижений (было актуально, когда приходилось ставить систему часто на разные машины). При этом хотелось, чтобы у пользователя не возникало после установки никаких вопросов, даже если он до этого Линуксом не пользовался ни разу. Ну и чтобы максимально расширить круг используемого железа.

Неплохо работает на старом железе (тоже одна из задач). Здесь есть 32- и 64-битная архитектура, графические оболочки KDE, Xfce и IceWM (моя любимая).

Live-образы, которые можно установить на диск или работать прямо с флешки/DVD.

Требуется 512 Мб RAM для работы в Live-режиме для SteelMINI и 1 Гб (рекомендую 2) для KDE. Разумеется, Live-система тормозна и жрёт намного больше памяти (64-битная после загрузки более 200 мегабайт), чем установленная. Удобно всегда иметь под рукой для загрузки в любое время и в любом месте. А также для восстановления системы на любом носителе.

Собственно, делается для себя и знакомых, но не против, чтобы пользовались все, кто хочет. Отзывы и новые идеи по улучшению всегда нужны ;-)

Кстати, исходники конфигов, логи, подробный список пакетов и всё такое в папке sources, кому интересно посмотреть, что там внутри и как это делается. Желающих делать свои сборки могу также обучить (может кто наш проект продолжит).

Из винды на флешку записывать с помощью ROSA ImageWriter (на сайте есть).

 , , ,

SteelLinux
()

Защита от DDoS и флуда (iptables)

Форум — Security

Поделюсь своим опытом борьбы с DDoS флудом. Защищать будем операционную систему openSUSE Linux с помощью правил iptables.

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

Сначала о настройке системы. Моё содержимое файла /etc/sysctl.conf:

( читать дальше... )

Теперь о правилах iptables.

Создайте файл /etc/init.d/iptables_myrules и сделайте его исполняемым: chmod +x /etc/init.d/iptables_myrules. Его содержимое:

( Содержимое файла iptables_myrules )

Здесь заданы непосредственно правила iptables.

Рассмотрим настройки:

PROTECTZONE - в этой константе перечисляются через пробел интерфейсы, которые будут защищаться правилами (внешняя зона). Обычно это один интерфейс, через который осуществляется выход в интернет. В данном примере это интерфейс dsl0. Вы должны задать свой интерфейс.
FREEZONE - здесь перечисляются через пробел интерфейсы внутренней зоны, на которой разрешена любая активность (локальные интерфейсы). Интерфейс lo должен обязательно быть здесь. Если у Вас лишь один cетевой интерфейс (например, eth0), через который осуществляется выход в интернет, то он должен быть указан во внешней зоне, а интефейс lo во внутренней.
TCP_PORTS - перечень TCP портов через запятую без пробелов, которые нужно открыть (на которых у нас работают те или иные сервисы, принимающие входящие соединения из внешней зоны).
UDP_PORTS - перечень UDP портов через запятую без пробелов, которые нужно открыть.
TCP_PORTS_PRIV и UDP_PORTS_PRIV - аналогичны константам TCP_PORTS и UDP_PORTS соответственно, только к перечисленным здесь портам будут разрешены подключения лишь с определённых диапазонов IP-адресов, перечисленных в константе PRIV_RANGES (приватные диапазоны).
PRIV_RANGES - перечень приватных диапазонов IP-адресов (начальный-конечный, без пробелов через дефиз), по одному диапазону на каждой строчке. Перечисленные здесь адреса допускаются для соединения с портами, перечисленными в константах TCP_PORTS_PRIV и UDP_PORTS_PRIV. Чтобы задать лишь один IP-адрес, просто укажите одинковые начальный и конечный адреса диапазона.
IS_CONNLIMIT - задаётся разрешённое число оновременных соединений с одного IP-адреса (модуль connlimit). Если задать значение '0', то правило будет отключено.
CONNLIMIT_MASK - маска для проверки одновременных соединений модуля connlimit.
IS_RECENT - активация модуля recent, который ограничивает число соединений с одного адреса за определённый период времени. 1 - включено, 0 - выключено.
RECENT_SECONDS - период в секундах, за который не должно быть превышения лимита количества соединений за заданный интервал времени с одного IP-адреса.
RECENT_HITCOUNT - количество соединений за заданный период времени для модуля recent.
HASHLIMIT_UPTO - количество соединений в единицу времени для модуля hashlimit. Временной интервал может быть: /sec, /min, /hour, /day. При превышении данного лимита пакет будет заблокирован.
HASHLIMIT_BURST - пик количества разовой доставки соединений для модуля hashlimit.
HASHLIMIT_MODE - режим хеширования для модуля hashlimit. Варианты могут быть: dstip, srcip, dstport, srcport (несколько разделяютя запятыми без пробелов).
HASHLIMIT_EXPIRE - время жизни записи в хэш-таблице для модуля hashlimit.
IS_GRE - разрешение протокола GRE (1 - включено, 0 - выключено).
IS_BROADCAST - разрешение broadcast трафика (1 - включено, 0 - выключено).
IS_ICMP_ECHO - icmp echo пакеты (1 - включено, 0 - выключено).
BLACKLIST_IP - здесь можно указать перечень IP-адресов, которые будут блокироваться (по одному на каждой строчке).
BLACKLIST_RANGES - здесь можно указать перечень диапазонов IP-адресов, которые будут блокироваться (по одному на каждой строчке, через дефиз без пробелов).
BLACKLIST_COUNTRIES - перечень кодов стран, которые будут блокироваться, через запятую без пробелов (модуль geoip).

Если система используется как шлюз или маршрутизатор, то нужно разрешить ip_forward и send_redirects.

При запуске скрипта без параметров все правила перезадаются. При запуске с параметром clean правила обнуляются. Параметр list выводит текущий список правил и статистику срабатываний.

Для добавления скрипта в автозапуск, выполните команду: chkconfig -a iptables_myrules. Для удаления скрипта из автозапуска выполните команду: chkconfig iptables_myrules off.

Теперь опишу дополнительный скрипт ddos_block.lua, который следит за входящими соединениями на заданные порты (или группы портов) и блокирует IP-адреса, с которых превышен лимит одновременного числа установленных соединений. Этот лимит задаётся отдельно для каждого порта или группы портов. Вот код скрипта:

( Содержимое файла ddos_block.lua )

Для удобства запуска сделайте его исполняемым. Скрипт написан на языке LUA. Рассмотрим настройки:

ports_protect - перечень защищаемых портов и разрешённое количество соединений с одного IP для каждого из них (или их группы). Количество соединений к группе портов отслеживается в совокупности, как к одному. Формат таблицы таков, что на каждой строке должна быть запись вида:
[{P1,P2,...,Pn}]=N,
где P1,P2,...,Pn - перечень группы портов через запятую, соединения к которым отслеживаются в совокупности. Здесь может быть просто один порт. N - количество разрешённых одновременно установленных соединений к данному порту или группе.
ranges_allow - перечень диапазонов IP-адресов и соответствующий им список портов. Перечисленные здесь адреса не будут ограничены по количеству соединений на указанные порты. Формат таблицы таков, что на каждой строке должна быть запись вида:
[{'IPstart','IPend'}]='P1,P2,...,Pn',
где IPstart - начальный адрес диапазона, IPend - конечный адрес диапазона, P1,P2,...,Pn - перечень разрешённых для данного диапазона портов, соединения к которым не будет ограничиватья. Если в качестве переченя портов указано 'all', то будут разрешены все порты. Чтобы задать только один IP-адрес, просто укажите его как начальный и конечный адрес диапазона.
time_ban - время блокировки IP-адреса, который превысил разрешённый лимит соединений (в секундах).
drop_allow - разрешённое количество попыток соединения во время блокировки. Если после истечения времени блокировки количество попыток соединения не будет превышать разрешённое число, IP-адрес будет разблокирован. В противном случае, блокировка будет продлена ещё на один срок.
scan_period - период между сканированиями в секундах.
log_folder - полный путь к папке для записи логов блокировок и разблокировок (должен оканчиваться слэшем). Если путь не задан (пустая строка), то ведение логов будет отключено.

Константы ниже менять не рекомендуется.
filter_command - шаблон команды для получения списка текущих соединений с защищаемыми портами (шаблон %PORTS заменится на защищаемые порты).
ban_command - шаблон команды блокировки IP-адреса.
unban_command - шаблон команды удаления блокировки IP-адреса.
stat_command - команда для получения статистики о заблокированных IP-адресах.

Данный скрипт должен быть постоянно запущен в терминале.

Вышеописанные методы отлично помогали против DDoS-атак даже на слабом ADSL-соединении, линк не терялся, серверы продолжали работу. Количество ботов было порядка 2000. У себя на ресурсах я использую свою же сборку SteelLinux на базе openSUSE. Во всяком случае, описанные ниже методы работоспособны на этой системе (на Ubuntu, например, это уже не помогало и сервер на её базе падал в оффлайн).

Скачать скрипты можно тут:
iptables_myrules
ddos_block.lua

 , , , ,

SteelLinux
()

SteelLinux (сборка на базе дистибутива openSUSE). Приглашаю единомышленников.

Форум — General

Довольно давно уже собираю сборку SteelLinux. Это сборка с собственными настройками и составом ПО, отличным от стандартного базового дистрибутива openSUSE. В настоящий момент используется вариант дистрибутива openSUSE Tumbleweed, представляющий собой дистрибутив с непрерывным обновлением, с актуальными на текущий момент версиями ядра и ПО. Сборка выполняется с применением утилиты KIWI. Сборка по-началу делалась чисто «для себя», чтобы устанавливать систему с уже необходимым набором ПО, кодеков, драйверов, фиксов и настроек. В дальнейшем было решено выложить её в общем доступе. Исходники также выкладываются вместе с дистрибутивами.

( Подробнее )

*** *** ***
Собственно, было бы неплохо, если бы откликнулись желающие принимать участие в разработке в любой форме: от написания полезных утилит и скриптов до полезных и дельных советов, обмена опытом. Так, в данный момент за неимением машины с 64-битной системой нужна помощь владельцев 64-битных версий openSUSE с достаточно быстрым интернетом для создания 64-битного варианта дистрибутива. Помощь для сборки 32-битных тоже не помешает, так как мощности автора ограничены. Буду благодарен за любую помощь и поддержку. Также буду отвечать на интересующие вопросы.

 , , , ,

SteelLinux
()

Прошу помощи владельцев видеокарт AMD/Radeon и Intel в тестировании дистрибутива

Форум — General

Владельцев видеокарт и графических чипов AMD (ATI) и Intel прошу принять участие в тестировании LiveDVD с авторской сборкой openSUSE SteelLinux. Загрузка прямо с DVD (или Flash USB брелка), а также, если есть возможность, установка дистрибутива на диск. Тестирование нужно, чтобы понять, как ведёт себя дистрибутив с различным моделями видеокарт на данных графических чипах.

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

ICQ: 233560855 ; Jabber: Phazeus@jabber.ru ; Skype: Phazeus ; EMail: steellinux@yandex.ru

Благодарю!

 , , , ,

SteelLinux
()

RSS подписка на новые темы