Настройка Alpine Linux для Docker с файрволом, SSH и утилитами

Этот гайд описывает установку и настройку Alpine Linux для использования в качестве сервера с Docker, настройкой файрвола (iptables), SSH, а также установкой необходимых утилит, DNS и timezone. Alpine Linux — это легковесная ОС, идеально подходящая для контейнеризации и виртуальных машин.

Предварительные требования

  • Виртуальная машина (VM) с гипервизором (VMware, VirtualBox, KVM и т.д.).
  • ISO-образ Alpine Linux (скачать с alpinelinux.org).
  • Минимальные ресурсы: 1 CPU, 256 МБ RAM, 2 ГБ диска.
  • Доступ к интернету для загрузки пакетов.

Установка Alpine Linux

  1. Загрузка и установка ISO:

    • Скачайте ISO-образ alpine-standard-<version>.iso.
    • Создайте VM и подключите ISO.
    • Загрузитесь с ISO и войдите (логин: root, пароль не требуется).
  2. Базовая настройка:

    setup-alpine
    
    • Выберите раскладку клавиатуры (например, us).
    • Настройте сеть (обычно eth0, выберите DHCP или статический IP).
    • Установите пароль для root.
    • Выберите часовой пояс (например, Europe/Kiev).
    • Настройте зеркало репозитория (http://dl-cdn.alpinelinux.org/alpine).
  3. Установка на диск:

    setup-disk
    
    • Выберите диск (например, /dev/sda).
    • Установите загрузчик (обычно grub).
    • Перезагрузите VM: reboot.

Настройка системы

1. Обновление системы

apk update
apk upgrade --available

2. Настройка DNS

Редактируйте /etc/resolv.conf для настройки DNS-серверов:

echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

3. Настройка часового пояса

apk add tzdata
cp /usr/share/zoneinfo/Europe/Kiev /etc/localtime
echo "Europe/Kiev" > /etc/timezone
apk del tzdata # Опционально: удалить для экономии места

4. Установка SSH

apk add openssh
rc-update add sshd
rc-service sshd start

Настройте SSH для безопасности:

sed -i 's/#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
rc-service sshd restart
  • Создайте пользователя и настройте SSH-ключи:
adduser -h /home/user user
mkdir -p /home/user/.ssh
echo "<your-public-key>" > /home/user/.ssh/authorized_keys
chown -R user:user /home/user/.ssh
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys

5. Установка утилит

Установите все необходимые утилиты:

apk add vim net-tools mc tmux htop atop iftop wget traceroute ncdu ccze fd curl unzip git make tree lsof bzip2 gdisk nano sudo bash-completion fail2ban

Примечание: Некоторые пакеты имеют другие названия в Alpine:

  • fd-findfd
  • qemu-guest-agent может потребовать включения дополнительных репозиториев:
    echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
    apk update
    apk add qemu-guest-agent
    rc-update add qemu-guest-agent
    rc-service qemu-guest-agent start
    

6. Настройка sudo

apk add sudo
echo "user ALL=(ALL) ALL" > /etc/sudoers.d/user

7. Установка Docker

apk add docker docker-compose
rc-update add docker boot
rc-service docker start

Добавьте пользователя в группу docker:

addgroup user docker

8. Настройка файрвола (iptables)

Установите iptables:

apk add iptables
rc-update add iptables

Создайте базовые правила для совместимости с Docker:

iptables -F
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP (опционально)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS (опционально)
iptables -A INPUT -j DROP
iptables-save > /etc/iptables/rules.v4

Для Docker убедитесь, что цепочка FORWARD настроена:

iptables -A FORWARD -i docker0 -o docker0 -j ACCEPT
iptables -A FORWARD -i docker0 -j ACCEPT
iptables-save > /etc/iptables/rules.v4

Сохраните правила:

rc-service iptables save
rc-service iptables restart

9. Настройка fail2ban

apk add fail2ban
rc-update add fail2ban
rc-service fail2ban start

Настройте защиту SSH:

cat > /etc/fail2ban/jail.d/sshd.conf << EOL
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 3600
findtime = 600
EOL
rc-service fail2ban restart

Работа с Docker и docker-compose

  1. Создание docker-compose.yml:
version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
  1. Запустите контейнер:
docker-compose up -d
  1. Проверьте статус:
docker ps

musl libc и grsecurity

  • musl libc: Легковесная C-библиотека, используемая в Alpine вместо glibc. Обеспечивает компактность и безопасность. Если приложение не работает, установите libc6-compat:
    apk add libc6-compat
    
  • grsecurity: Патчи ядра для повышения безопасности. Включены по умолчанию в Alpine. Для настройки используйте /etc/sysctl.conf или модули PaX.

Где используется Alpine Linux

  • Контейнеры: База для Docker-образов (Nginx, Python, Redis).
  • Виртуальные машины: Легковесные серверы.
  • IoT: Встраиваемые системы.
  • DevOps: CI/CD и Kubernetes.

Полезные команды

  • Обновление системы: apk update && apk upgrade
  • Перезапуск сервиса: rc-service <service> restart
  • Проверка логов: tail -f /var/log/<service>.log
  • Мониторинг: htop, atop, iftop

Заключение

Alpine Linux — идеальная ОС для Docker благодаря легковесности, musl libc и grsecurity. Настройте SSH, iptables и fail2ban для безопасности, используйте apk для установки утилит и наслаждайтесь минималистичным сервером!

🇺🇦 Stop Russian Aggression!
See what you can do →

Выберите мессенджер

Telegram Email Forms