Настройка файрвола (iptables/ufw)

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск

Содержание

Настройка файрвола (iptables/ufw)

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через консоль (не только SSH).

2. Настройка UFW (Ubuntu/Debian)

Установка и активация UFW

1. Проверьте статус UFW:

sudo ufw status

2. Если UFW не установлен, установите его:

sudo apt update
sudo apt install ufw

3. Включите UFW:

sudo ufw enable

Базовая настройка UFW

1. Разрешите SSH подключения (ВАЖНО!):

sudo ufw allow ssh

2. Разрешите HTTP и HTTPS трафик:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

3. Разрешите трафик на конкретный порт:

sudo ufw allow 8080/tcp

4. Разрешите трафик с конкретного IP:

sudo ufw allow from 192.168.1.100

Дополнительные правила UFW

1. Запретите трафик на порт:

sudo ufw deny 23/tcp

2. Разрешите трафик только на определенный порт:

sudo ufw allow 3306/tcp

3. Настройте правила для конкретного интерфейса:

sudo ufw allow in on eth0 to any port 80

Управление UFW

1. Просмотрите статус:

sudo ufw status verbose

2. Просмотрите нумерованные правила:

sudo ufw status numbered

3. Удалите правило по номеру:

sudo ufw delete 1

4. Сбросьте все правила:

sudo ufw --force reset

3. Настройка iptables

Основы iptables

1. Просмотрите текущие правила:

sudo iptables -L -n -v

2. Просмотрите правила с номерами строк:

sudo iptables -L -n -v --line-numbers

Базовая настройка iptables

1. Очистите все правила:

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X

2. Установите политики по умолчанию:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

3. Разрешите loopback трафик:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

Настройка правил для веб-сервера

1. Разрешите установленные соединения:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

2. Разрешите SSH (ВАЖНО!):

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

3. Разрешите HTTP и HTTPS:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

4. Разрешите ping:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Дополнительные правила iptables

1. Ограничьте количество соединений:

sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP

2. Заблокируйте подозрительный трафик:

sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

3. Заблокируйте конкретный IP:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

4. Сохранение правил iptables

Для Ubuntu/Debian

1. Установите iptables-persistent:

sudo apt install iptables-persistent

2. Сохраните текущие правила:

sudo netfilter-persistent save

3. Включите автозапуск:

sudo systemctl enable netfilter-persistent

Для CentOS/RHEL

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

sudo iptables-save > /etc/sysconfig/iptables

2. Включите автозапуск:

sudo systemctl enable iptables

Ручное сохранение

1. Сохраните правила в файл:

sudo iptables-save > /etc/iptables/rules.v4

2. Создайте скрипт для загрузки:

sudo nano /etc/rc.local

3. Добавьте строку:

iptables-restore < /etc/iptables/rules.v4

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

Установка fail2ban

1. Установите fail2ban:

sudo apt install fail2ban

2. Создайте локальную конфигурацию:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Настройка fail2ban

1. Отредактируйте конфигурацию:

sudo nano /etc/fail2ban/jail.local

2. Настройте основные параметры:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3

3. Запустите fail2ban:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Мониторинг fail2ban

1. Проверьте статус:

sudo fail2ban-client status

2. Проверьте конкретную тюрьму:

sudo fail2ban-client status sshd

3. Разблокируйте IP:

sudo fail2ban-client set sshd unbanip 192.168.1.100

6. Настройка для конкретных сервисов

Настройка для веб-сервера

1. Разрешите трафик на порты веб-сервера:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

2. Настройте iptables для веб-сервера:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Настройка для базы данных

1. Разрешите подключения к MySQL только с локальных адресов:

sudo ufw allow from 192.168.1.0/24 to any port 3306

2. Настройте iptables:

sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT

Настройка для FTP

1. Разрешите FTP трафик:

sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
sudo ufw allow 1024:65535/tcp

2. Настройте iptables для пассивного FTP:

sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT

7. Мониторинг и логирование

Просмотр логов

1. Просмотрите логи UFW:

sudo tail -f /var/log/ufw.log

2. Просмотрите логи iptables:

sudo dmesg | grep iptables

3. Просмотрите логи fail2ban:

sudo tail -f /var/log/fail2ban.log

Мониторинг подключений

1. Просмотрите активные соединения:

sudo netstat -tulpn

2. Просмотрите соединения по протоколам:

sudo ss -tulpn

3. Просмотрите статистику трафика:

sudo iptables -L -n -v

8. Устранение неполадок

Частые проблемы

1. Заблокирован доступ к серверу:

  • Подключитесь через консоль
  • Отключите файрвол:
    sudo ufw disable
  • Или сбросьте iptables:
    sudo iptables -F

2. SSH не работает:

  • Проверьте правила:
    sudo ufw status
  • Разрешите SSH:
    sudo ufw allow ssh

3. Веб-сайт недоступен:

  • Проверьте правила для портов 80 и 443
  • Убедитесь, что веб-сервер запущен

Диагностика

1. Проверьте статус файрвола:

sudo ufw status verbose
sudo iptables -L -n -v

2. Проверьте открытые порты:

sudo nmap -sT -O localhost

3. Проверьте сетевые интерфейсы:

ip addr show

9. Дополнительные настройки безопасности

Ограничение по времени

1. Создайте скрипт для временного открытия порта:

sudo nano /usr/local/bin/temp-open-port.sh

2. Добавьте содержимое:

PORT=$1
DURATION=$2
sudo ufw allow $PORT/tcp
echo "sudo ufw delete allow $PORT/tcp" | at now + $DURATION minutes
echo "Порт $PORT будет открыт в течение $DURATION минут"

3. Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/temp-open-port.sh

Настройка геоблокировки

1. Установите geoip модуль:

sudo apt install xtables-addons-common

2. Заблокируйте трафик из определенных стран:

sudo iptables -A INPUT -m geoip --src-cc CN,KR -j DROP

10. Автоматизация и скрипты

Скрипт для быстрой настройки

1. Создайте скрипт настройки:

sudo nano /usr/local/bin/firewall-setup.sh

2. Добавьте содержимое:

sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
echo "Файрвол настроен и включен"

3. Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/firewall-setup.sh

Заключение

Файрвол успешно настроен! Теперь ваш сервер защищен от нежелательного трафика.

Для размещения ваших защищенных проектов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой файрвола и обеспечением безопасности вашего сервера!