Настройка 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
-
Загрузка и установка ISO:
- Скачайте ISO-образ
alpine-standard-<version>.iso
. - Создайте VM и подключите ISO.
- Загрузитесь с ISO и войдите (логин:
root
, пароль не требуется).
- Скачайте ISO-образ
-
Базовая настройка:
setup-alpine
- Выберите раскладку клавиатуры (например,
us
). - Настройте сеть (обычно
eth0
, выберите DHCP или статический IP). - Установите пароль для root.
- Выберите часовой пояс (например,
Europe/Kiev
). - Настройте зеркало репозитория (
http://dl-cdn.alpinelinux.org/alpine
).
- Выберите раскладку клавиатуры (например,
-
Установка на диск:
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-find
→fd
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
- Создание docker-compose.yml:
version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
- Запустите контейнер:
docker-compose up -d
- Проверьте статус:
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
для установки утилит и наслаждайтесь минималистичным сервером!