Исследуем сетевую безопасность посредством Linux Netwosix::Журнал СА 2.2006
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

ЭКСПЕРТНАЯ СЕССИЯ 2019


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 1420
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 1542
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1169
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 911
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1477
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Исследуем сетевую безопасность посредством Linux Netwosix

Архив номеров / 2006 / Выпуск №2 (39) / Исследуем сетевую безопасность посредством Linux Netwosix

Рубрика: Безопасность /  Механизмы защиты

Сергей Яремчук

Исследуем сетевую безопасность посредством Linux Netwosix

Буквально через пять дней после объявления релиза 1.3 дистрибутива Linux Netwosix был анонсирован тестовый вариант следующей второй ветки. Что нового появилось и для каких целей предназначен Linux Netwosix?

Основателем и главным разработчиком дистрибутива является итальянец Vincenzo Ciaglia. На основной странице проекта [1] сказано, что Linux Netwosix является небольшим, мощным, легко настраиваемым, оптимизированным дистрибутивом, созданным для потребностей сетевого администратора. Предназначен для применения на серверах и работы, связанной с исследованием сетевой безопасности. Распространяется по лицензии GNU GPL.

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

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

При таком подходе Linux Netwosix в некотором смысле напоминает Trustix Secure Linux. Этот базирующийся на RedHat дистрибутив отличается от своего прародителя тщательным подбором пакетов и отсутствием лишнего софта, за счет чего считается более безопасным. Но если Trustix является типичным представителем rpm-based дистрибутивов, то Netwosix принадлежит с source-based-дистрибутивам, в котором утилиты собираются из исходных текстов.

Базовый набор помещается на диск размером 242 Мб, и вся установка занимает не более 10 минут даже далеко не на самых мощных системах. Естественно, весь набор софта не мог поместиться в такой маленький объем, для его пополнения и обновления используется система портов Nepote (NEtwosix POrting Tool Environment), подобная xBSD-системам.

Во второй ветке дистрибутив получил новую систему установки, взятую с CRUX Linux (те, кто работал с CRUX, вообще найдут очень много общего), обновлены многие программы, дистрибутив стал более стабильным и безопасным.

В комплект 2.0-rc1 входит последнее стабильное ядро на момент релиза 2.6.14.5. Работает Linux Netwosix на компьютерах с x86-процессорами, поддержка других архитектур планируется в будущем.

В течение первого года с официального сайта проекта дистрибутив был скачан более 25 тысяч раз. Диск с ним был приложен к итальянскому журналу Linux Magazine. Его использует финское министерство образования, и некоторые университеты в Италии.

Установка Linux Netwosix

Скачиваем iso-образ с официального сайта проекта или любого из зеркал. После этого проверяем правильность полученного файла при помощи контрольной суммы.

# md5sum netwosix2.0-rc1.x86.iso

e88a3a4c2d1f388cb9352442c89038f7

ISO-образ является LiveCD, поэтому записываем на диск, вставляем в привод и перезагружаемся. После появления приглашения boot: необходимо нажать на Enter и затем зарегистрироваться как root с пустым паролем. Краткую инструкцию по установке и настройке Linux Netwosix (на английском) можно получить, зарегистрировавшись во второй консоли ( + ) и введя «netwosix_howto». Следующий этап – создание дисковых разделов. Для этих целей используются fdisk или cfdisk (GNU/parted нет). Разработчики рекомендуют создать четыре раздела:

n  swap (2хОЗУ);

n  root (350-500 Мб);

n  /var (не менее 100 Мб);

n  /usr (> 1 Гб).

Хотя в зависимости от назначения сервера можно в этот список добавить /home, /usr/local или /opt. Каждому разделу должен быть присвоен свой тип, т.е. swap 82, остальным 83. После создания разделов форматируем их под нужную файловую систему. В HOWTO приведены команды для создания ext2 (mke2fs /dev/hdaN), ext3 (mke2fs J) и ReiserFS (mkreiserfs), но в дистрибутиве имеются утилиты для создания JFS (mkfs.jfs) и XFS (mkfs.xfs). Поэтому можно выбрать любую из этих файловых систем. Создаем и активируем своп-раздел.

# mkswap /dev/hda1

# swapon /dev/hda1

Интересно, что в документации названия разделов приводятся поочередно то в традиционном обозначении вроде /dev/hda1, то в стиле devfs -/dev/discs/disc0/part1. В отличие от CRUX, в котором не поддерживается обратная совместимость, здесь будут работать оба варианта, но такое расхождение может запутать новичка (хотя вряд ли новичок будет его ставить). И монтируем все созданные разделы в /mnt/.

# mount /dev/hda2 /mnt   # корневой

# mkdir /mnt/usr

# mkdir /mnt/var

# mount /dev/hda3 /mnt/usr  

# mount /dev/hda3 /mnt/var

После этого приступаем к собственно установке, введя setup. В первом экране выбираем установку или обновление Linux Netwosix, затем необходимо ввести каталог, в который смонтированы разделы (/mnt). После этого предлагается установить базовый набор ( ), в который входит около 65 пакетов. Среди них auticonf 2.59, automake 1.9.5, bash 3.0, coreutils 5.2.1, devfsd 1.3.25, gcc 3.43, glibs 2.3.5, make 3.80, patch, lilo 22.7, ncurces, perl 5.8.6, vim, sendmail 8.13.4, wget, net-tools.

Рисунок 1. Выбор пакетов базовой установки

Рисунок 1. Выбор пакетов базовой установки

Выберите обязательно утилиты для работы с портами ports. Кроме базового набора, на жесткий диск копируются исходные тексты ядра 2.6.14.5. По окончании процесса выводится отчет об установленных пакетах. На этом установка считается законченной. Но в традициях всех дистрибутивов, собираемых из исходных текстов ядра, в такой системе нет. Поэтому следующим шагом идет компиляция ядра. Переходим в chroot-окружение.

# mount -t devfs devfs /mnt/dev

# mount -t proc proc /mnt/proc

# chroot /mnt /bin/bash

И собираем ядро:

# cd /usr/src/linux-2.6.14.5

# make menuconfig

# make all

# make modules_install

# cp arch/i386/boot/bzImage /vmlinuz

# cp System.map /

Чтобы не терять времени, пока компилируется ядро, переходим во вторую консоль и приступаем к настройке системы. Первым делом устанавливаем пароль суперпользователя командой passwd. Далее при помощи редактора vi редактируем файлы /etc/fstab, /etc/rc.conf, /etc/rc.d/net, /etc/hosts и /etc/resolv.conf. Хочется отметить, что разработчики не стали усложнять жизнь, а заготовили шаблоны. Например:

#  /dev/#REISERFS_ROOT#  /   reiserfs  defaults   0      0

Причем такие строки существуют для всех поддерживаемых ядром файловых систем. Остается только раскомментировать нужную строку и вместо #REISERFS_ROOT# вписать нужный раздел. Теперь /etc/rc.conf, в котором необходимо указать клавиатурную раскладку (можно посмотреть имеющиеся в /usr/share/kbd/keymaps/i386/qwerty), установить часовой пояс (/usr/share/zoneinfo/), шрифт (/usr/share/kbd/consolefonts/) и указать автоматически запускающиеся при старте системы сервисы.

У меня он получился такой:

FONT=Cyr_a8x16

KEYMAP=ru4

TIMEZONE=Europe/Kiev

HOSTNAME=host.com

SERVICES=(net crond)

Обратите внимание на строку SERVICES, в которой просто перечислены сервисы, которые необходимо автоматически запустить при старте системы, все имеющиеся на данный момент можно найти в /etc/rc.d/. После установки в этом каталоге будет четыре файла, crond, inetd, net, sendmail. Сетевые интерфейсы настраиваются в /etc/rc.d/net, который также снабжен шаблонами. Настроим один интерфейс жестко с IP-адресом 192.168.0.1, второму адрес назначает провайдер.

#!/bin/sh

    #

    # /etc/rc.d/net: start/stop network

    # Linux Netwosix

    # <http://www.netwosix.org>

     if [ "$1" = "start" ]; then

      /sbin/ifconfig lo 127.0.0.1

      /sbin/ifconfig eth0 192.168.0.1 netmask 255.255.255.0

      /sbin/dhcpcd eth1

      /sbin/route add default gw 192.168.1.100

     elif [ "$1" = "stop" ]; then

      /sbin/ifconfig eth1 down

      /sbin/ifconfig eth0 down

      /sbin/ifconfig lo down

            killall -q /sbin/dhcpcd

      else

  echo "usage: $0 start|stop"

      fi

    # End of file

И последним этапом конфигурируем и устанавливаем загрузчик LILO. Файл /etc/lilo.conf также имеет шаблон, и нам остается только указать правильно корневой раздел.

#

# /etc/lilo.conf

# Linux Netwosix

# <http://www.netwosix.org>

#

lba32

install=text

boot=/dev/hdа

image=/vmlinuz

        label=LinuxNetwosix

        root=/dev/hdа2

        read-only

        append="quiet"

 

# End of file

Редактируем, записываем, нажав <Esc> и набрав «:wq». И устанавливаем:

#lilo -v

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

Система пакетов и портов Linux Netwosix

В документации проекта сказано все о системе портов nepote, но абсолютно ни слова не говорится о системе пакетов, хотя они в системе используются, и умолчать об этом прав не имеем. Очевидно, пакеты планируется использовать только при установке и обновлении системы, главную же роль при построении сервера будет играть все-таки nepote. Система пакетов не только полностью заимствована, но и даже совместима с Crux.

Устанавливаются пакаджи при помощи команды pkgadd с указанием полного имени пакета, при этом будет произведена проверка зависимостей и после чего предварительно скачанный с сайта пакет установится. Если пакет уже установлен, но требуется обновить его, то набрав:

# pkgadd -u package_name

избежим сообщения о том, что пакет уже установлен. Для того чтобы предотвратить модификацию некоторых важных для системы каталогов и файлов они указываются в /etc/pkgadd.conf. Например:

# UPGRADE  ^.*$         YES

UPGRADE    ^etc/.*$            NO

UPGRADE    ^var/log/.*$        NO

UPGRADE    ^etc/mail/cf/.*$    YES

Если снять комментарий с первой строки, будут модифицированы все файлы. Более поздняя запись имеет больший приоритет при запросе. Во второй и третьей строках запрещается модификация каталога и подкаталогов /etc и /var/log, но в последней строке разрешено изменение файлов в /etc/mail/cf/. Удалить пакет также просто:

# pkgrm bash

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

# pkginfo -i

или если нужен определенный, то:

# pkginfo -l bash

Используя pkgmk, можно собрать пакаджи самому.

Но основным средством, предназначенным для установки приложений, является nepote. На момент написания статьи в системе портов было около 190 приложений в 9 категориях. Понятие порта здесь немного отличается от таковых в FreeBSD. Под портом понимается скрипт, обеспечивающий загрузку и компиляцию конкретной программы, а также набор программ, упрощающих обновление дерева, поиск нужных портов. Перед началом работы рекомендуется обновить дерево портов. Пока это делается вручную, в будущем планируется операцию автоматизировать, хотя при желании простенький скрипт можно написать и самому.

# cd /

# wget –c ftp://rm.mirror.garr.it/mirrors/netwosix/nepote/ports.tgz

# tar xzf ports.tgz

# rm ports.tgz

Либо при помощи утилиты nepote:

# nepote

*******************> Linux Netwosix - NEPOTE <*******************

Select an option and press enter, please.

*****************************************************************

(1) to update your NETWOSIX portage tree (from the net)

(2) to update from the net your Linux Netwosix box

(0) to quit

*****************************************************************

Nepote is developed by Vincenzo Ciaglia

*****************************************************************

Нажав клавишу <1>, можно произвести обновление всего дерева портов как с официального сайта, так и указав любой другой сервер. Если выбрать <2>, то будет загружен и установлен файл обновлений системы updateLN.tgz. Конфигурационные файлы nepote находятся в /etc/nepote, заглянув внутрь, можно легко подстроить систему под себя. Для поиска порта используется команда nepote-find. После запуска будет предложено ввести название порта, если такой пакет будет обнаружен, то будет выведен полный путь к нему. Например, файл порта веб-сервера Apaсhe выглядит так.

# LINUX NETWOSIX - NEPOTE PACKAGE

# Description: Apache Server

# URL: http://www.apache.org

# Date created: Dec, 25 2005

# Maintainer: Apache.org

# Please, change only this 4 lines, to build your package from a portage tree

package_name=httpd

version=2.2.0

release=2

source=http://mirrors.publicshout.org/apache/httpd/httpd-2.2.0.tar.gz

# STOP!

# Downloading the package ...

wget $source

# building the packages using NETWOSIX portage tree

    tar xzf $package_name-$version.tar.gz

    cd $package_name-$version

    ./configure

    make

    make install

    cd /usr/ports/net/apache

    rm $package_name-$version.tar.gz

    rm -r $package_name-$version

Как видите, ничего сложного здесь нет, это набор обычно задаваемых команд.

Для его установки необходимо зайти в каталог порта и ввести sh nepote.

# cd /usr/ports/net/apaсhe

# sh nepote

После чего файл будет скачан, распакован, скомпилирован и установлен. Если в процессе установки появятся проблемы, связанные с неудовлетворенными зависимостями, то в этом случае следует использовать команду «sh nepotedep».

Для установки флагов компилирования используется файл /etc/pkgmk.conf.

export CFLAGS="-O2 -march=i686 -pipe"

export CXXFLAGS="-O2 -march=i686 -pipe"

Хотя в дереве портов и программе установки 2.0 есть, на мой взгляд, несколько недоработок. Например, на CDдиске /netwosix/additional присутствует раздел, содержащий исходные тексты 116 приложений, в том числе и входящих в дерево портов. Но ни во время установки системы, ни при использовании nepote эти архивы никак не задействуются, лежа мертвым грузом. Хотя в принципе их можно использовать. Не скачивать же их повторно.

Например, смонтировать диск и скопировать архив веб-сервера Apaсhe httpd-2.2.0.tar.bz2 в каталог /usr/ports/net/apaсhe. Но так просто установить его не получится, т.к. скрипт nepote будет искать файл с расширением tar.gz. Поэтому просто переделываем под свои нужды скрипт, исправив следующие строки.

# wget $source

tar xjf $package_name-$version.tar.bz2

rm $package_name-$version.tar.bz2

Теперь Apache установится без проблем. Далее название подкаталога graphics, по моему мнению, несколько не соответствует ожидаемым приложениям, т.к. зайдя внутрь, готов увидеть что-то вроде GIMP. Сейчас внутри – 8 портов: axyftp, gftp, xchat, sylpheed, dxpc, pavuk, ethereal и crank.

Вывод

Есть два типа администраторов. Первый не будет (или не любит) заниматься «бесполезной» работой и использует то, что установлено вместе с дистрибутивом и доступно через обновления. Второй пересоберет критически важные для него пакеты со своими настройками и уберет, по его мнению, лишнее. Netwosix предназначен именно для вторых, которым этот дистрибутив будет несомненно интересен. При наличии подготовленных конфигурационных файлов ядра и серверов, систему под любые требования можно собрать в течение часа. И хотя предрелиз 2.0 явно сыроват, но это не мешает его использовать полноценно.

Ссылки:

  1. Сайт проекта Linux Netwosix – http://www.netwosix.org.
  2. Vincenzo Ciaglia, «Linux Netwosix One Year Later» – http://www.linuxsecurity.com/content/view/117808/49.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru