Alpine Linux

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 00:57, 7 февраля 2017.
Alpine Linux
Alpine Linux.svg
Разработчик Alpine Linux development team
Линейка ОС UNIX-подобная
Состояние разработки Активное
Исходный код Open source
Последний релиз 3.5.1 / 26 January 2017 года; 4 years ago (2017-01-26)[1]
Целевой маркетинг Developers, power users
Доступно в Многоязычие
Cистема управления пакетами APK
Платформы x86, x86-64, ARMhf, ARM (Advanced RISC Machine)#AArch64AArch64
Ядро (тип) Монолитное ядро (Linux)
Пользовательское
пространство
BusyBox (GNU Core Utilities опциональны)
По умолчанию
пользовательский
интерфейс
CLI (Command Line Interface)
Официальный веб-сайт alpinelinux.org

Alpine Linux — некоммерческий Linux дистрибутив общего назначения, предназначенный для использования опытными пользователями, ценящими безопасность, простоту и эффективность. Девиз проекта — "Small. Simple" Secure." Основан на musl и BusyBox, по умолчанию использует патчи ядра PaX и grsec, все пакеты компилируются с защитой от переполнения стека.

История

Проект первоначально развивался как ответвление от LEAF Project[2], чьей изначальной концепцией была разработка дистрибутива, который смог бы помещаться на одной 1.44MB дискете, тогда как разработчики пожелали включить более тяжеловесные пакеты (такие как Samba или Squid).

Особенности

  • Маленький размер дистрибутива и скромные требования к железу. Alpine Linux ориентирован на использование во встраиваемых или серверных системах, поэтому включает в себя только самые необходимые компоненты.
  • Два вида релизов – edge и stable. Edge-релиз постоянно существует в виде rolling release, получая самые свежие обновления по мере выпука пакетов, однако его стабильная работа не гарантируется разработчиками. Stable-релиз представляет из себя сборку последних стабильных версий всех пакетов (обычно раз в полгода) с поддержкой важных обновлений в течение 2 лет.
  • Собственная система управление пакетами apk-tools, которая изначально была в коллекции скриптов shell scipts но позже была переписана разработчиками на C. Alpine на данный момент включает в себя такие пакеты как GNOME, Xfce, Firefox, и другие. Однако, некоторые пакеты, такие как KDE, пока ещё не портированы.
  • По умолчанию, Alpine Linux во время запуска полностью [загружается в оперативную память].
  • Патчи безопасности PaX и grsecurity включены по умолчанию в ядро Alpine Linux, что помогает защите от эксплойтов, похожих на vmsplice local root exploit.[3] Также все пакеты скомпилированы с защитой от переполнения стека.
  • musl в качестве стандартной библиотеки языка Си. Первоначально Alpine Linux использовала uClibc вместо традиционной glibc. Однако, несмотря на легкий вес, у нее есть существенный очевидный недостаток — она бинарно несовместима с glibc. Таким образом, все программное обеспечение должно быть перекомпилировано с использованием uClibc для корректной работы. Однако, с 9 апреля 2014 года Alpine Linux использует библиотеку musl libc, которая является частично бинарно совместимой с glibc[4].
  • В качестве системы инициализации Alpine Linux использует OpenRC, в отличие от Debian, Ubuntu, RHEL или CentOS, которые используют systemd.[5]
  • У Alpine Linux небольшое, но весьма дружелюбное сообщество, готовое прийти на помощь. Большинство основных разработчиков можно найти на IRC-каналах #alpine-linux или #alpine-devel для обсуждения ошибок или возникших проблем.

Установка

Процесс установки подробно описан на официальной вики проекта.
Также есть видео-инструкция по установке дистрибутива в VirtualBox:

Настройка основного функционала

DHCP-сервер для локальной сети

Данный процесс настройки сетевого протокола для локальной сети представлен в виде нескольких шагов. DHCP предназначен для автоматического присвоения IP-адресов сетевым устройствам. Его настройка на Alpine Linux происходит следующим образом:

1) Определите радиус IP-адресов для использования. Вы должны использовать “Частный радиус IP-адресов”, иначе могут возникнуть проблемы с передачей данных через вашу сеть. Для простой LAN, используйте 192.168.0.100, с маской подсети 255.255.255.0 и количеством хостов 50. Таким образом вы сможете подключить к вашей сети до 50 устройств без каких-либо изменений.

2) Сделайте IP-адрес вашего компьютера 192.168.0.2, с маской подсети 255.255.255.0 (адрес диапазона вашей сети, не входящий в адреса раздачи DHCP сервера).

3) Скачайте tftpd32 с сайта

4) Разархивируйте файл на ваш компьютер и запустите tftpd32.exe.

5) Нажмите на Settings.

6) Выберите вкладку DHCP в окошке Settings.

7) Установите IP pool starting address. Это будет являться первым IP-адресом вашей сети, который раздаст DHCP сервер. (192.168.0.100, если не уверены!)

8) Установите Size of pool на значение, чуть большее чем нужное для планируемых сетевых устройств в вашей сети. (Если сомневаетесь, поставьте 50)

9) Оставьте поле Boot File пустым.

10) Если в вашей сети присутствует DNS сервер или сервер, доступный одной из машин в вашей сети, то укажите его IP-адрес в поле WINS/DNS Server. Если нет или вы не знаете, что это означает, то оставьте поле пустым.

11) Установите маску подсети в Mask. Если вы знаете что это такое, то следуйте схеме адресов данной статьи и поставьте 255.255.255.0.

12) Не изменяйте поля Domain Name и Additional Option.

13) Нажмите на Save.

14) Ваш DHCP сервер готов к работе!

DNS-сервер для локальной сети

Самая стабильная и ресурсо-сберегающая связка, это linux+bind. Установим DNS-сервер Bind9:

sudo apt-get install bind9

Главные настройки находятся в файле (named.conf.options), отредактируем его:

sudo vi /etc/bind/named.conf.options

Содержимое файла:

options {
        directory "/var/cache/bind";
        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.
        // forwarders {
        //      0.0.0.0;
        // };
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };};

Закомментированная секция forwarders, отвечает за то, куда будет передаваться DNS-запрос на разрешение имени. Вместо 0.0.0.0, нужно указать альтернативный DNS-сервер. Например 213.180.204.3 — yandex, 8.8.8.8 — google. После редактирования должно быть примерно так:


forwarders {

213.180.204.3;//yandex

8.8.8.8;      //google

};

Сохраняем изменения и выходим (:wq). Перезапускаем сервер (sudo reboot) и проверяем:

# nslookup ya.ru<br />
Non-authoritative answer:<br />
Name:        ya.ru<br />
Addresses:  213.180.204.3

В данном случае, сервер не является главным в обслуживании этой зоны (ya.ru). Cоздадим зону для сети, чтобы сопоставить ip-адреса компьютерам и сетевым устройствам. Зоны описываются в конфигурационном файле: named.conf.local

sudo vi /etc/bind/named.conf.local

Добавим в него секцию:

zone "home" {<br />
type master;<br />
file "/etc/bind/db.home";<br />
};

Сохраняем изменения и выходим (:wq).
Зону мы обозначили, теперь настроим ее:

sudo vi /etc/bind/db.home или sudo touch /etc/bind/db.home

Редактируем до следующего вида:

@ IN SOA home. root.home.    (

20131001        ; релиз зоны, дата
2h              ; время обновления 2 часа
2h              ; повтор каждый 2 часа
1w              ; как долго хранить информацию 1 неделю
1d    )         ; время жизни, TTL записи 1 день

@   IN    NS    name.        ; имя сервера имен
@   IN    A  192.168.20       ; A - запись - IP-адрес нашего DNS-сервера который обслуживает эту зону, @ корневая зона
*   IN    CNAME  @

webserver IN A 192.168.0.25      ; A - запись - IP-адрес нашего web-сервера в сети
torrentserver IN A 192.168.0.26  ; A - запись - IP-адрес нашего torrent-сервера в сети
vidserver IN A 192.168.0.27      ; A - запись - IP-адрес нашего сервера видеонаблюдения в сети</code>

Также, надо внести изменения в файл локального разрешения имен: resolv.conf

<console>sudo vi /etc/resolv.conf

Указать в нем адрес:

nameserver 127.0.0.1


Сохраняем изменения и выходим (:wq).

Перезапускам службу

sudo service bind9 restart</code><br /> 

Теперь разрешением имен в интернете будут заниматься DNS-сервера, указанные в секции forwarders.

Проверяем работоспособность:

1. Преобразование внутри сети:

ping webserver.home
Обмен пакетами с web.home [192.168.0.25] с 32 байтами данных:

Ответ от 192.168.0.25: число байт=32 время=115мс TTL=64
Ответ от 192.168.0.25: число байт=32 время=207мс TTL=64
Ответ от 192.168.0.25: число байт=32 время=86мс TTL=64
Ответ от 192.168.0.25: число байт=32 время=406мс TTL=64 

2. Разрешение имен в интернете:

# nslookup ya.ru

Unknown answer:
Addresses: 192.168.20

Non-authoritative answer:
Name:        ya.ru
Addresses:  213.180.204.3

Установка Snort

Snort – облегченная система обнаружения вторжения . Snort обычно называют “обгегченным” NIDS, - потому что это он разработан прежде всего для маленьких сетей. Основной сайт для Snort - http://www.snort.org. Snort распространяется согласно лицензии GNU GPL. После загрузки архива, разархивируем его в каталог snort-1.7:

root @lord]# tar -zxvf snort-1.7.tar.gz

После загрузки libpcap, разархивируйте его подобным образом. Войдите в каталог libpacp, и выполните следующие шаги:

root @lord]# ./configure root @lord]# make

Теперь, мы компилируем Snort. Войдите в каталог, в котором находится Snort, и выполните следующие команду:

root @lord]# ./configure --with-libpcap-includes=/path/to/libpcap/ {* in my case it was : root@lord ./configure --with-libpcap-includes=/home/dood/libpcap }
root @lord]# make root @lord]# make install

Snort теперь установлен на вашей машине. Создайте директорию, в которой Snort будет хранить файлы регистрации:

root @lord]#mkdir /var/log/snort

И как всегда, выполните:

root @lord]# whereis snort

чтобы подтвердить, где установлен Snort.

Источники

  1. "Alpine Linux 3.5.1 released". Alpine Linux. Alpine Linux Development Team. 2017-01-26. Retrieved 2016-02-02. 
  2. Alpine Linux. [Электронный ресурс]: Alpine Linux / Дата обращения: 30.11.2016. — Режим доступа:http://osdir.com/ml/linux.leaf.devel/2005-08/msg00039.html
  3. Alpine Linux [Электронный ресурс]:Alpine Linux / Дата обращения: 30.11.2016. — Режим доступа:https://lwn.net/Articles/268783/
  4. Alpine Linux[Электронный ресурс]:Alpine Linux/ Дата обращения: 30.11.2016. — Режим доступа:http://www.musl-libc.org/faq.html
  5. Alpine Linux [Электронный ресурс]:Alpine Linux / Дата обращения: 30.11.2016. — Режим доступа:http://wiki.alpinelinux.org/wiki/Alpine_Linux_Init_System