Настройка файрвола (iptables/ufw): различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Нет описания правки
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026
 
(не показана 1 промежуточная версия этого же участника)
Строка 17: Строка 17:
<pre>sudo apt install ufw</pre>
<pre>sudo apt install ufw</pre>


3. Включите UFW:
3. Сначала разрешите SSH. Если включить файрвол без этого правила, связь с сервером оборвётся:
<pre>sudo ufw allow ssh</pre>
 
Если SSH работает на нестандартном порту, разрешите именно его (подставьте свой номер порта):
<pre>sudo ufw allow 2222/tcp</pre>
 
4. Только после этого включите UFW:
<pre>sudo ufw enable</pre>
<pre>sudo ufw enable</pre>


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


1. Разрешите SSH подключения (ВАЖНО!):
1. Убедитесь, что правило для SSH на месте (в списке должна быть строка с 22/tcp или вашим портом):
<pre>sudo ufw allow ssh</pre>
<pre>sudo ufw status verbose</pre>


2. Разрешите HTTP и HTTPS трафик:
2. Разрешите HTTP и HTTPS трафик:
Строка 72: Строка 78:
=== Базовая настройка iptables ===
=== Базовая настройка iptables ===


1. Очистите все правила:
'''Внимание:''' выполняйте шаги строго по порядку. Запрещающую политику (DROP) включают в последнюю очередь, когда правило для SSH уже добавлено, иначе связь с сервером оборвётся. На одном сервере используйте что-то одно: либо UFW, либо правила iptables вручную.
 
1. Временно установите разрешающую политику и очистите правила:
<pre>sudo iptables -P INPUT ACCEPT</pre>
<pre>sudo iptables -F</pre>
<pre>sudo iptables -F</pre>
<pre>sudo iptables -X</pre>
<pre>sudo iptables -X</pre>
Строка 78: Строка 87:
<pre>sudo iptables -t nat -X</pre>
<pre>sudo iptables -t nat -X</pre>


2. Установите политики по умолчанию:
2. Разрешите loopback трафик:
<pre>sudo iptables -A INPUT -i lo -j ACCEPT</pre>
<pre>sudo iptables -A OUTPUT -o lo -j ACCEPT</pre>
 
3. Разрешите установленные соединения и SSH (если SSH работает на другом порту, подставьте его вместо 22):
<pre>sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT</pre>
<pre>sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT</pre>
 
4. Только теперь установите политики по умолчанию:
<pre>sudo iptables -P INPUT DROP</pre>
<pre>sudo iptables -P INPUT DROP</pre>
<pre>sudo iptables -P FORWARD DROP</pre>
<pre>sudo iptables -P FORWARD DROP</pre>
<pre>sudo iptables -P OUTPUT ACCEPT</pre>
<pre>sudo iptables -P OUTPUT ACCEPT</pre>
3. Разрешите loopback трафик:
<pre>sudo iptables -A INPUT -i lo -j ACCEPT</pre>
<pre>sudo iptables -A OUTPUT -o lo -j ACCEPT</pre>


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


1. Разрешите установленные соединения:
1. Разрешите HTTP и HTTPS:
<pre>sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT</pre>
 
2. Разрешите SSH (ВАЖНО!):
<pre>sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT</pre>
 
3. Разрешите HTTP и HTTPS:
<pre>sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT</pre>
<pre>sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT</pre>
<pre>sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT</pre>
<pre>sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT</pre>


4. Разрешите ping:
2. Разрешите ping:
<pre>sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT</pre>
<pre>sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT</pre>


Строка 253: Строка 260:
* Подключитесь через консоль
* Подключитесь через консоль
* Отключите файрвол: <pre>sudo ufw disable</pre>
* Отключите файрвол: <pre>sudo ufw disable</pre>
* Или сбросьте iptables: <pre>sudo iptables -F</pre>
* Или сбросьте iptables. Сначала верните разрешающую политику: если очистить правила при политике DROP, сервер закроется полностью: <pre>sudo iptables -P INPUT ACCEPT</pre> <pre>sudo iptables -F</pre>


2. '''SSH не работает''':
2. '''SSH не работает''':
Строка 324: Строка 331:
Файрвол успешно настроен! Теперь ваш сервер защищен от нежелательного трафика.
Файрвол успешно настроен! Теперь ваш сервер защищен от нежелательного трафика.


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


* '''[Выделенные серверы](https://ark-hoster.ru/dedicated/)''' - для корпоративных проектов с продвинутой защитой
* '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для корпоративных проектов с продвинутой защитой
* '''[VPS/VDS серверы](https://ark-hoster.ru/vpsgame/)''' - для небольших и средних проектов
* '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних проектов


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

Текущая версия от 08:10, 14 ноября 2026

Настройка файрвола (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. Сначала разрешите SSH. Если включить файрвол без этого правила, связь с сервером оборвётся:

sudo ufw allow ssh

Если SSH работает на нестандартном порту, разрешите именно его (подставьте свой номер порта):

sudo ufw allow 2222/tcp

4. Только после этого включите UFW:

sudo ufw enable

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

1. Убедитесь, что правило для SSH на месте (в списке должна быть строка с 22/tcp или вашим портом):

sudo ufw status verbose

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

Внимание: выполняйте шаги строго по порядку. Запрещающую политику (DROP) включают в последнюю очередь, когда правило для SSH уже добавлено, иначе связь с сервером оборвётся. На одном сервере используйте что-то одно: либо UFW, либо правила iptables вручную.

1. Временно установите разрешающую политику и очистите правила:

sudo iptables -P INPUT ACCEPT
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X

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

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

3. Разрешите установленные соединения и SSH (если SSH работает на другом порту, подставьте его вместо 22):

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

4. Только теперь установите политики по умолчанию:

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

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

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

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

2. Разрешите 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. Сначала верните разрешающую политику: если очистить правила при политике DROP, сервер закроется полностью:
    sudo iptables -P INPUT ACCEPT
    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:

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