Настройка файрвола (iptables/ufw)
Содержание
- 1 Настройка файрвола (iptables/ufw)
- 1.1 1. Подготовка системы
- 1.2 2. Настройка UFW (Ubuntu/Debian)
- 1.3 3. Настройка iptables
- 1.4 4. Сохранение правил iptables
- 1.5 5. Настройка fail2ban
- 1.6 6. Настройка для конкретных сервисов
- 1.7 7. Мониторинг и логирование
- 1.8 8. Устранение неполадок
- 1.9 9. Дополнительные настройки безопасности
- 1.10 10. Автоматизация и скрипты
- 1.11 Заключение
Настройка файрвола (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. Разрешите трафик на порты веб-сервера:
- Apache
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
- Nginx
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. Добавьте содержимое:
- !/bin/bash
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. Добавьте содержимое:
- !/bin/bash
- Очистка правил
sudo ufw --force reset
- Базовые правила
sudo ufw default deny incoming
sudo ufw default allow outgoing
- SSH
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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для корпоративных проектов с продвинутой защитой
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой файрвола и обеспечением безопасности вашего сервера!