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

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Настройка файрвола (iptables/ufw) = == 1. Подготовка системы == * Войдите в систему под учетной з…»)
 
Строка 11: Строка 11:
  
 
1. Проверьте статус UFW:
 
1. Проверьте статус UFW:
<code>
+
<code>sudo ufw status</code>
sudo ufw status
 
</code>
 
  
 
2. Если UFW не установлен, установите его:
 
2. Если UFW не установлен, установите его:
<code>
+
<code>sudo apt update</code>
sudo apt update
+
<code>sudo apt install ufw</code>
sudo apt install ufw
 
</code>
 
  
 
3. Включите UFW:
 
3. Включите UFW:
<code>
+
<code>sudo ufw enable</code>
sudo ufw enable
 
</code>
 
  
 
=== Базовая настройка UFW ===
 
=== Базовая настройка UFW ===
  
 
1. Разрешите SSH подключения (ВАЖНО!):
 
1. Разрешите SSH подключения (ВАЖНО!):
<code>
+
<code>sudo ufw allow ssh</code>
sudo ufw allow ssh
 
</code>
 
  
 
2. Разрешите HTTP и HTTPS трафик:
 
2. Разрешите HTTP и HTTPS трафик:
<code>
+
<code>sudo ufw allow 80/tcp</code>
sudo ufw allow 80/tcp
+
<code>sudo ufw allow 443/tcp</code>
sudo ufw allow 443/tcp
 
</code>
 
  
 
3. Разрешите трафик на конкретный порт:
 
3. Разрешите трафик на конкретный порт:
<code>
+
<code>sudo ufw allow 8080/tcp</code>
sudo ufw allow 8080/tcp
 
</code>
 
  
 
4. Разрешите трафик с конкретного IP:
 
4. Разрешите трафик с конкретного IP:
<code>
+
<code>sudo ufw allow from 192.168.1.100</code>
sudo ufw allow from 192.168.1.100
 
</code>
 
  
 
=== Дополнительные правила UFW ===
 
=== Дополнительные правила UFW ===
  
 
1. Запретите трафик на порт:
 
1. Запретите трафик на порт:
<code>
+
<code>sudo ufw deny 23/tcp</code>
sudo ufw deny 23/tcp
 
</code>
 
  
 
2. Разрешите трафик только на определенный порт:
 
2. Разрешите трафик только на определенный порт:
<code>
+
<code>sudo ufw allow 3306/tcp</code>
sudo ufw allow 3306/tcp
 
</code>
 
  
 
3. Настройте правила для конкретного интерфейса:
 
3. Настройте правила для конкретного интерфейса:
<code>
+
<code>sudo ufw allow in on eth0 to any port 80</code>
sudo ufw allow in on eth0 to any port 80
 
</code>
 
  
 
=== Управление UFW ===
 
=== Управление UFW ===
  
 
1. Просмотрите статус:
 
1. Просмотрите статус:
<code>
+
<code>sudo ufw status verbose</code>
sudo ufw status verbose
 
</code>
 
  
 
2. Просмотрите нумерованные правила:
 
2. Просмотрите нумерованные правила:
<code>
+
<code>sudo ufw status numbered</code>
sudo ufw status numbered
 
</code>
 
  
 
3. Удалите правило по номеру:
 
3. Удалите правило по номеру:
<code>
+
<code>sudo ufw delete 1</code>
sudo ufw delete 1
 
</code>
 
  
 
4. Сбросьте все правила:
 
4. Сбросьте все правила:
<code>
+
<code>sudo ufw --force reset</code>
sudo ufw --force reset
 
</code>
 
  
 
== 3. Настройка iptables ==
 
== 3. Настройка iptables ==
Строка 93: Строка 65:
  
 
1. Просмотрите текущие правила:
 
1. Просмотрите текущие правила:
<code>
+
<code>sudo iptables -L -n -v</code>
sudo iptables -L -n -v
 
</code>
 
  
 
2. Просмотрите правила с номерами строк:
 
2. Просмотрите правила с номерами строк:
<code>
+
<code>sudo iptables -L -n -v --line-numbers</code>
sudo iptables -L -n -v --line-numbers
 
</code>
 
  
 
=== Базовая настройка iptables ===
 
=== Базовая настройка iptables ===
  
 
1. Очистите все правила:
 
1. Очистите все правила:
<code>
+
<code>sudo iptables -F</code>
sudo iptables -F
+
<code>sudo iptables -X</code>
sudo iptables -X
+
<code>sudo iptables -t nat -F</code>
sudo iptables -t nat -F
+
<code>sudo iptables -t nat -X</code>
sudo iptables -t nat -X
 
</code>
 
  
 
2. Установите политики по умолчанию:
 
2. Установите политики по умолчанию:
<code>
+
<code>sudo iptables -P INPUT DROP</code>
sudo iptables -P INPUT DROP
+
<code>sudo iptables -P FORWARD DROP</code>
sudo iptables -P FORWARD DROP
+
<code>sudo iptables -P OUTPUT ACCEPT</code>
sudo iptables -P OUTPUT ACCEPT
 
</code>
 
  
 
3. Разрешите loopback трафик:
 
3. Разрешите loopback трафик:
<code>
+
<code>sudo iptables -A INPUT -i lo -j ACCEPT</code>
sudo iptables -A INPUT -i lo -j ACCEPT
+
<code>sudo iptables -A OUTPUT -o lo -j ACCEPT</code>
sudo iptables -A OUTPUT -o lo -j ACCEPT
 
</code>
 
  
 
=== Настройка правил для веб-сервера ===
 
=== Настройка правил для веб-сервера ===
  
 
1. Разрешите установленные соединения:
 
1. Разрешите установленные соединения:
<code>
+
<code>sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT</code>
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
</code>
 
  
 
2. Разрешите SSH (ВАЖНО!):
 
2. Разрешите SSH (ВАЖНО!):
<code>
+
<code>sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 
</code>
 
  
 
3. Разрешите HTTP и HTTPS:
 
3. Разрешите HTTP и HTTPS:
<code>
+
<code>sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
+
<code>sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
 
</code>
 
  
 
4. Разрешите ping:
 
4. Разрешите ping:
<code>
+
<code>sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT</code>
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 
</code>
 
  
 
=== Дополнительные правила iptables ===
 
=== Дополнительные правила iptables ===
  
 
1. Ограничьте количество соединений:
 
1. Ограничьте количество соединений:
<code>
+
<code>sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP</code>
sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP
 
</code>
 
  
 
2. Заблокируйте подозрительный трафик:
 
2. Заблокируйте подозрительный трафик:
<code>
+
<code>sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP</code>
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
+
<code>sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP</code>
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
 
</code>
 
  
 
3. Заблокируйте конкретный IP:
 
3. Заблокируйте конкретный IP:
<code>
+
<code>sudo iptables -A INPUT -s 192.168.1.100 -j DROP</code>
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
 
</code>
 
  
 
== 4. Сохранение правил iptables ==
 
== 4. Сохранение правил iptables ==
Строка 171: Строка 119:
  
 
1. Установите iptables-persistent:
 
1. Установите iptables-persistent:
<code>
+
<code>sudo apt install iptables-persistent</code>
sudo apt install iptables-persistent
 
</code>
 
  
 
2. Сохраните текущие правила:
 
2. Сохраните текущие правила:
<code>
+
<code>sudo netfilter-persistent save</code>
sudo netfilter-persistent save
 
</code>
 
  
 
3. Включите автозапуск:
 
3. Включите автозапуск:
<code>
+
<code>sudo systemctl enable netfilter-persistent</code>
sudo systemctl enable netfilter-persistent
 
</code>
 
  
 
=== Для CentOS/RHEL ===
 
=== Для CentOS/RHEL ===
  
 
1. Сохраните правила:
 
1. Сохраните правила:
<code>
+
<code>sudo iptables-save > /etc/sysconfig/iptables</code>
sudo iptables-save > /etc/sysconfig/iptables
 
</code>
 
  
 
2. Включите автозапуск:
 
2. Включите автозапуск:
<code>
+
<code>sudo systemctl enable iptables</code>
sudo systemctl enable iptables
 
</code>
 
  
 
=== Ручное сохранение ===
 
=== Ручное сохранение ===
  
 
1. Сохраните правила в файл:
 
1. Сохраните правила в файл:
<code>
+
<code>sudo iptables-save > /etc/iptables/rules.v4</code>
sudo iptables-save > /etc/iptables/rules.v4
 
</code>
 
  
 
2. Создайте скрипт для загрузки:
 
2. Создайте скрипт для загрузки:
<code>
+
<code>sudo nano /etc/rc.local</code>
sudo nano /etc/rc.local
 
</code>
 
  
 
3. Добавьте строку:
 
3. Добавьте строку:
<code>
+
<code>iptables-restore < /etc/iptables/rules.v4</code>
iptables-restore < /etc/iptables/rules.v4
 
</code>
 
  
 
== 5. Настройка fail2ban ==
 
== 5. Настройка fail2ban ==
Строка 219: Строка 151:
  
 
1. Установите fail2ban:
 
1. Установите fail2ban:
<code>
+
<code>sudo apt install fail2ban</code>
sudo apt install fail2ban
 
</code>
 
  
 
2. Создайте локальную конфигурацию:
 
2. Создайте локальную конфигурацию:
<code>
+
<code>sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local</code>
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
 
</code>
 
  
 
=== Настройка fail2ban ===
 
=== Настройка fail2ban ===
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>
+
<code>sudo nano /etc/fail2ban/jail.local</code>
sudo nano /etc/fail2ban/jail.local
 
</code>
 
  
 
2. Настройте основные параметры:
 
2. Настройте основные параметры:
<code>
+
<code>[DEFAULT]</code>
[DEFAULT]
+
<code>bantime = 3600</code>
bantime = 3600
+
<code>findtime = 600</code>
findtime = 600
+
<code>maxretry = 3</code>
maxretry = 3
+
<code>ignoreip = 127.0.0.1/8 ::1</code>
ignoreip = 127.0.0.1/8 ::1
+
<code>[sshd]</code>
 
+
<code>enabled = true</code>
[sshd]
+
<code>port = ssh</code>
enabled = true
+
<code>logpath = /var/log/auth.log</code>
port = ssh
+
<code>maxretry = 3</code>
logpath = /var/log/auth.log
 
maxretry = 3
 
</code>
 
  
 
3. Запустите fail2ban:
 
3. Запустите fail2ban:
<code>
+
<code>sudo systemctl start fail2ban</code>
sudo systemctl start fail2ban
+
<code>sudo systemctl enable fail2ban</code>
sudo systemctl enable fail2ban
 
</code>
 
  
 
=== Мониторинг fail2ban ===
 
=== Мониторинг fail2ban ===
  
 
1. Проверьте статус:
 
1. Проверьте статус:
<code>
+
<code>sudo fail2ban-client status</code>
sudo fail2ban-client status
 
</code>
 
  
 
2. Проверьте конкретную тюрьму:
 
2. Проверьте конкретную тюрьму:
<code>
+
<code>sudo fail2ban-client status sshd</code>
sudo fail2ban-client status sshd
 
</code>
 
  
 
3. Разблокируйте IP:
 
3. Разблокируйте IP:
<code>
+
<code>sudo fail2ban-client set sshd unbanip 192.168.1.100</code>
sudo fail2ban-client set sshd unbanip 192.168.1.100
 
</code>
 
  
 
== 6. Настройка для конкретных сервисов ==
 
== 6. Настройка для конкретных сервисов ==
Строка 278: Строка 193:
  
 
1. Разрешите трафик на порты веб-сервера:
 
1. Разрешите трафик на порты веб-сервера:
<code>
+
<code>sudo ufw allow 80/tcp</code>
# Apache
+
<code>sudo ufw allow 443/tcp</code>
sudo ufw allow 80/tcp
+
<code>sudo ufw allow 80/tcp</code>
sudo ufw allow 443/tcp
+
<code>sudo ufw allow 443/tcp</code>
 
 
# Nginx
 
sudo ufw allow 80/tcp
 
sudo ufw allow 443/tcp
 
</code>
 
  
 
2. Настройте iptables для веб-сервера:
 
2. Настройте iptables для веб-сервера:
<code>
+
<code>sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
+
<code>sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
 
</code>
 
  
 
=== Настройка для базы данных ===
 
=== Настройка для базы данных ===
  
 
1. Разрешите подключения к MySQL только с локальных адресов:
 
1. Разрешите подключения к MySQL только с локальных адресов:
<code>
+
<code>sudo ufw allow from 192.168.1.0/24 to any port 3306</code>
sudo ufw allow from 192.168.1.0/24 to any port 3306
 
</code>
 
  
 
2. Настройте iptables:
 
2. Настройте iptables:
<code>
+
<code>sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT</code>
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
 
</code>
 
  
 
=== Настройка для FTP ===
 
=== Настройка для FTP ===
  
 
1. Разрешите FTP трафик:
 
1. Разрешите FTP трафик:
<code>
+
<code>sudo ufw allow 21/tcp</code>
sudo ufw allow 21/tcp
+
<code>sudo ufw allow 20/tcp</code>
sudo ufw allow 20/tcp
+
<code>sudo ufw allow 1024:65535/tcp</code>
sudo ufw allow 1024:65535/tcp
 
</code>
 
  
 
2. Настройте iptables для пассивного FTP:
 
2. Настройте iptables для пассивного FTP:
<code>
+
<code>sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
+
<code>sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
+
<code>sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
 
</code>
 
  
 
== 7. Мониторинг и логирование ==
 
== 7. Мониторинг и логирование ==
Строка 327: Строка 227:
  
 
1. Просмотрите логи UFW:
 
1. Просмотрите логи UFW:
<code>
+
<code>sudo tail -f /var/log/ufw.log</code>
sudo tail -f /var/log/ufw.log
 
</code>
 
  
 
2. Просмотрите логи iptables:
 
2. Просмотрите логи iptables:
<code>
+
<code>sudo dmesg | grep iptables</code>
sudo dmesg | grep iptables
 
</code>
 
  
 
3. Просмотрите логи fail2ban:
 
3. Просмотрите логи fail2ban:
<code>
+
<code>sudo tail -f /var/log/fail2ban.log</code>
sudo tail -f /var/log/fail2ban.log
 
</code>
 
  
 
=== Мониторинг подключений ===
 
=== Мониторинг подключений ===
  
 
1. Просмотрите активные соединения:
 
1. Просмотрите активные соединения:
<code>
+
<code>sudo netstat -tulpn</code>
sudo netstat -tulpn
 
</code>
 
  
 
2. Просмотрите соединения по протоколам:
 
2. Просмотрите соединения по протоколам:
<code>
+
<code>sudo ss -tulpn</code>
sudo ss -tulpn
 
</code>
 
  
 
3. Просмотрите статистику трафика:
 
3. Просмотрите статистику трафика:
<code>
+
<code>sudo iptables -L -n -v</code>
sudo iptables -L -n -v
 
</code>
 
  
 
== 8. Устранение неполадок ==
 
== 8. Устранение неполадок ==
Строка 378: Строка 266:
  
 
1. Проверьте статус файрвола:
 
1. Проверьте статус файрвола:
<code>
+
<code>sudo ufw status verbose</code>
sudo ufw status verbose
+
<code>sudo iptables -L -n -v</code>
sudo iptables -L -n -v
 
</code>
 
  
 
2. Проверьте открытые порты:
 
2. Проверьте открытые порты:
<code>
+
<code>sudo nmap -sT -O localhost</code>
sudo nmap -sT -O localhost
 
</code>
 
  
 
3. Проверьте сетевые интерфейсы:
 
3. Проверьте сетевые интерфейсы:
<code>
+
<code>ip addr show</code>
ip addr show
 
</code>
 
  
 
== 9. Дополнительные настройки безопасности ==
 
== 9. Дополнительные настройки безопасности ==
Строка 398: Строка 280:
  
 
1. Создайте скрипт для временного открытия порта:
 
1. Создайте скрипт для временного открытия порта:
<code>
+
<code>sudo nano /usr/local/bin/temp-open-port.sh</code>
sudo nano /usr/local/bin/temp-open-port.sh
 
</code>
 
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>
+
<code>PORT=$1</code>
#!/bin/bash
+
<code>DURATION=$2</code>
PORT=$1
+
<code>sudo ufw allow $PORT/tcp</code>
DURATION=$2
+
<code>echo "sudo ufw delete allow $PORT/tcp" | at now + $DURATION minutes</code>
 
+
<code>echo "Порт $PORT будет открыт в течение $DURATION минут"</code>
# Открыть порт
 
sudo ufw allow $PORT/tcp
 
 
 
# Запланировать закрытие
 
echo "sudo ufw delete allow $PORT/tcp" | at now + $DURATION minutes
 
 
 
echo "Порт $PORT будет открыт в течение $DURATION минут"
 
</code>
 
  
 
3. Сделайте скрипт исполняемым:
 
3. Сделайте скрипт исполняемым:
<code>
+
<code>sudo chmod +x /usr/local/bin/temp-open-port.sh</code>
sudo chmod +x /usr/local/bin/temp-open-port.sh
 
</code>
 
  
 
=== Настройка геоблокировки ===
 
=== Настройка геоблокировки ===
  
 
1. Установите geoip модуль:
 
1. Установите geoip модуль:
<code>
+
<code>sudo apt install xtables-addons-common</code>
sudo apt install xtables-addons-common
 
</code>
 
  
 
2. Заблокируйте трафик из определенных стран:
 
2. Заблокируйте трафик из определенных стран:
<code>
+
<code>sudo iptables -A INPUT -m geoip --src-cc CN,KR -j DROP</code>
sudo iptables -A INPUT -m geoip --src-cc CN,KR -j DROP
 
</code>
 
  
 
== 10. Автоматизация и скрипты ==
 
== 10. Автоматизация и скрипты ==
Строка 439: Строка 305:
  
 
1. Создайте скрипт настройки:
 
1. Создайте скрипт настройки:
<code>
+
<code>sudo nano /usr/local/bin/firewall-setup.sh</code>
sudo nano /usr/local/bin/firewall-setup.sh
 
</code>
 
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>
+
<code>sudo ufw --force reset</code>
#!/bin/bash
+
<code>sudo ufw default deny incoming</code>
 
+
<code>sudo ufw default allow outgoing</code>
# Очистка правил
+
<code>sudo ufw allow ssh</code>
sudo ufw --force reset
+
<code>sudo ufw allow 80/tcp</code>
 
+
<code>sudo ufw allow 443/tcp</code>
# Базовые правила
+
<code>sudo ufw enable</code>
sudo ufw default deny incoming
+
<code>echo "Файрвол настроен и включен"</code>
sudo ufw default allow outgoing
 
 
 
# SSH
 
sudo ufw allow ssh
 
 
 
# Веб-сервер
 
sudo ufw allow 80/tcp
 
sudo ufw allow 443/tcp
 
 
 
# Включение файрвола
 
sudo ufw enable
 
 
 
echo "Файрвол настроен и включен"
 
</code>
 
  
 
3. Сделайте скрипт исполняемым:
 
3. Сделайте скрипт исполняемым:
<code>
+
<code>sudo chmod +x /usr/local/bin/firewall-setup.sh</code>
sudo chmod +x /usr/local/bin/firewall-setup.sh
 
</code>
 
  
 
== Заключение ==
 
== Заключение ==

Версия 20:02, 14 октября 2025

Содержание

Настройка файрвола (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):

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