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

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Новая страница: «= Настройка файрвола (iptables/ufw) = == 1. Подготовка системы == * Войдите в систему под учетной з…»
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 11: Строка 11:


1. Проверьте статус UFW:
1. Проверьте статус UFW:
<code>
<pre>sudo ufw status</pre>
sudo ufw status
</code>


2. Если UFW не установлен, установите его:
2. Если UFW не установлен, установите его:
<code>
<pre>sudo apt update</pre>
sudo apt update
<pre>sudo apt install ufw</pre>
sudo apt install ufw
</code>


3. Включите UFW:
3. Включите UFW:
<code>
<pre>sudo ufw enable</pre>
sudo ufw enable
</code>


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


1. Разрешите SSH подключения (ВАЖНО!):
1. Разрешите SSH подключения (ВАЖНО!):
<code>
<pre>sudo ufw allow ssh</pre>
sudo ufw allow ssh
</code>


2. Разрешите HTTP и HTTPS трафик:
2. Разрешите HTTP и HTTPS трафик:
<code>
<pre>sudo ufw allow 80/tcp</pre>
sudo ufw allow 80/tcp
<pre>sudo ufw allow 443/tcp</pre>
sudo ufw allow 443/tcp
</code>


3. Разрешите трафик на конкретный порт:
3. Разрешите трафик на конкретный порт:
<code>
<pre>sudo ufw allow 8080/tcp</pre>
sudo ufw allow 8080/tcp
</code>


4. Разрешите трафик с конкретного IP:
4. Разрешите трафик с конкретного IP:
<code>
<pre>sudo ufw allow from 192.168.1.100</pre>
sudo ufw allow from 192.168.1.100
</code>


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


1. Запретите трафик на порт:
1. Запретите трафик на порт:
<code>
<pre>sudo ufw deny 23/tcp</pre>
sudo ufw deny 23/tcp
</code>


2. Разрешите трафик только на определенный порт:
2. Разрешите трафик только на определенный порт:
<code>
<pre>sudo ufw allow 3306/tcp</pre>
sudo ufw allow 3306/tcp
</code>


3. Настройте правила для конкретного интерфейса:
3. Настройте правила для конкретного интерфейса:
<code>
<pre>sudo ufw allow in on eth0 to any port 80</pre>
sudo ufw allow in on eth0 to any port 80
</code>


=== Управление UFW ===
=== Управление UFW ===


1. Просмотрите статус:
1. Просмотрите статус:
<code>
<pre>sudo ufw status verbose</pre>
sudo ufw status verbose
</code>


2. Просмотрите нумерованные правила:
2. Просмотрите нумерованные правила:
<code>
<pre>sudo ufw status numbered</pre>
sudo ufw status numbered
</code>


3. Удалите правило по номеру:
3. Удалите правило по номеру:
<code>
<pre>sudo ufw delete 1</pre>
sudo ufw delete 1
</code>


4. Сбросьте все правила:
4. Сбросьте все правила:
<code>
<pre>sudo ufw --force reset</pre>
sudo ufw --force reset
</code>


== 3. Настройка iptables ==
== 3. Настройка iptables ==
Строка 93: Строка 65:


1. Просмотрите текущие правила:
1. Просмотрите текущие правила:
<code>
<pre>sudo iptables -L -n -v</pre>
sudo iptables -L -n -v
</code>


2. Просмотрите правила с номерами строк:
2. Просмотрите правила с номерами строк:
<code>
<pre>sudo iptables -L -n -v --line-numbers</pre>
sudo iptables -L -n -v --line-numbers
</code>


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


1. Очистите все правила:
1. Очистите все правила:
<code>
<pre>sudo iptables -F</pre>
sudo iptables -F
<pre>sudo iptables -X</pre>
sudo iptables -X
<pre>sudo iptables -t nat -F</pre>
sudo iptables -t nat -F
<pre>sudo iptables -t nat -X</pre>
sudo iptables -t nat -X
</code>


2. Установите политики по умолчанию:
2. Установите политики по умолчанию:
<code>
<pre>sudo iptables -P INPUT DROP</pre>
sudo iptables -P INPUT DROP
<pre>sudo iptables -P FORWARD DROP</pre>
sudo iptables -P FORWARD DROP
<pre>sudo iptables -P OUTPUT ACCEPT</pre>
sudo iptables -P OUTPUT ACCEPT
</code>


3. Разрешите loopback трафик:
3. Разрешите loopback трафик:
<code>
<pre>sudo iptables -A INPUT -i lo -j ACCEPT</pre>
sudo iptables -A INPUT -i lo -j ACCEPT
<pre>sudo iptables -A OUTPUT -o lo -j ACCEPT</pre>
sudo iptables -A OUTPUT -o lo -j ACCEPT
</code>


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


1. Разрешите установленные соединения:
1. Разрешите установленные соединения:
<code>
<pre>sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT</pre>
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
</code>


2. Разрешите SSH (ВАЖНО!):
2. Разрешите SSH (ВАЖНО!):
<code>
<pre>sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
</code>


3. Разрешите HTTP и HTTPS:
3. Разрешите HTTP и HTTPS:
<code>
<pre>sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
<pre>sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
</code>


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


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


1. Ограничьте количество соединений:
1. Ограничьте количество соединений:
<code>
<pre>sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP</pre>
sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP
</code>


2. Заблокируйте подозрительный трафик:
2. Заблокируйте подозрительный трафик:
<code>
<pre>sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP</pre>
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
<pre>sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP</pre>
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
</code>


3. Заблокируйте конкретный IP:
3. Заблокируйте конкретный IP:
<code>
<pre>sudo iptables -A INPUT -s 192.168.1.100 -j DROP</pre>
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>
<pre>sudo apt install iptables-persistent</pre>
sudo apt install iptables-persistent
</code>


2. Сохраните текущие правила:
2. Сохраните текущие правила:
<code>
<pre>sudo netfilter-persistent save</pre>
sudo netfilter-persistent save
</code>


3. Включите автозапуск:
3. Включите автозапуск:
<code>
<pre>sudo systemctl enable netfilter-persistent</pre>
sudo systemctl enable netfilter-persistent
</code>


=== Для CentOS/RHEL ===
=== Для CentOS/RHEL ===


1. Сохраните правила:
1. Сохраните правила:
<code>
<pre>sudo iptables-save > /etc/sysconfig/iptables</pre>
sudo iptables-save > /etc/sysconfig/iptables
</code>


2. Включите автозапуск:
2. Включите автозапуск:
<code>
<pre>sudo systemctl enable iptables</pre>
sudo systemctl enable iptables
</code>


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


1. Сохраните правила в файл:
1. Сохраните правила в файл:
<code>
<pre>sudo iptables-save > /etc/iptables/rules.v4</pre>
sudo iptables-save > /etc/iptables/rules.v4
</code>


2. Создайте скрипт для загрузки:
2. Создайте скрипт для загрузки:
<code>
<pre>sudo nano /etc/rc.local</pre>
sudo nano /etc/rc.local
</code>


3. Добавьте строку:
3. Добавьте строку:
<code>
<pre>iptables-restore < /etc/iptables/rules.v4</pre>
iptables-restore < /etc/iptables/rules.v4
</code>


== 5. Настройка fail2ban ==
== 5. Настройка fail2ban ==
Строка 219: Строка 151:


1. Установите fail2ban:
1. Установите fail2ban:
<code>
<pre>sudo apt install fail2ban</pre>
sudo apt install fail2ban
</code>


2. Создайте локальную конфигурацию:
2. Создайте локальную конфигурацию:
<code>
<pre>sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local</pre>
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
</code>


=== Настройка fail2ban ===
=== Настройка fail2ban ===


1. Отредактируйте конфигурацию:
1. Отредактируйте конфигурацию:
<code>
<pre>sudo nano /etc/fail2ban/jail.local</pre>
sudo nano /etc/fail2ban/jail.local
</code>


2. Настройте основные параметры:
2. Настройте основные параметры:
<code>
<pre>[DEFAULT]</pre>
[DEFAULT]
<pre>bantime = 3600</pre>
bantime = 3600
<pre>findtime = 600</pre>
findtime = 600
<pre>maxretry = 3</pre>
maxretry = 3
<pre>ignoreip = 127.0.0.1/8 ::1</pre>
ignoreip = 127.0.0.1/8 ::1
<pre>[sshd]</pre>
 
<pre>enabled = true</pre>
[sshd]
<pre>port = ssh</pre>
enabled = true
<pre>logpath = /var/log/auth.log</pre>
port = ssh
<pre>maxretry = 3</pre>
logpath = /var/log/auth.log
maxretry = 3
</code>


3. Запустите fail2ban:
3. Запустите fail2ban:
<code>
<pre>sudo systemctl start fail2ban</pre>
sudo systemctl start fail2ban
<pre>sudo systemctl enable fail2ban</pre>
sudo systemctl enable fail2ban
</code>


=== Мониторинг fail2ban ===
=== Мониторинг fail2ban ===


1. Проверьте статус:
1. Проверьте статус:
<code>
<pre>sudo fail2ban-client status</pre>
sudo fail2ban-client status
</code>


2. Проверьте конкретную тюрьму:
2. Проверьте конкретную тюрьму:
<code>
<pre>sudo fail2ban-client status sshd</pre>
sudo fail2ban-client status sshd
</code>


3. Разблокируйте IP:
3. Разблокируйте IP:
<code>
<pre>sudo fail2ban-client set sshd unbanip 192.168.1.100</pre>
sudo fail2ban-client set sshd unbanip 192.168.1.100
</code>


== 6. Настройка для конкретных сервисов ==
== 6. Настройка для конкретных сервисов ==
Строка 278: Строка 193:


1. Разрешите трафик на порты веб-сервера:
1. Разрешите трафик на порты веб-сервера:
<code>
<pre>sudo ufw allow 80/tcp</pre>
# Apache
<pre>sudo ufw allow 443/tcp</pre>
sudo ufw allow 80/tcp
<pre>sudo ufw allow 80/tcp</pre>
sudo ufw allow 443/tcp
<pre>sudo ufw allow 443/tcp</pre>
 
# Nginx
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
</code>


2. Настройте iptables для веб-сервера:
2. Настройте iptables для веб-сервера:
<code>
<pre>sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
<pre>sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
</code>


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


1. Разрешите подключения к MySQL только с локальных адресов:
1. Разрешите подключения к MySQL только с локальных адресов:
<code>
<pre>sudo ufw allow from 192.168.1.0/24 to any port 3306</pre>
sudo ufw allow from 192.168.1.0/24 to any port 3306
</code>


2. Настройте iptables:
2. Настройте iptables:
<code>
<pre>sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT</pre>
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
</code>


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


1. Разрешите FTP трафик:
1. Разрешите FTP трафик:
<code>
<pre>sudo ufw allow 21/tcp</pre>
sudo ufw allow 21/tcp
<pre>sudo ufw allow 20/tcp</pre>
sudo ufw allow 20/tcp
<pre>sudo ufw allow 1024:65535/tcp</pre>
sudo ufw allow 1024:65535/tcp
</code>


2. Настройте iptables для пассивного FTP:
2. Настройте iptables для пассивного FTP:
<code>
<pre>sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
<pre>sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
<pre>sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
</code>


== 7. Мониторинг и логирование ==
== 7. Мониторинг и логирование ==
Строка 327: Строка 227:


1. Просмотрите логи UFW:
1. Просмотрите логи UFW:
<code>
<pre>sudo tail -f /var/log/ufw.log</pre>
sudo tail -f /var/log/ufw.log
</code>


2. Просмотрите логи iptables:
2. Просмотрите логи iptables:
<code>
<pre>sudo dmesg | grep iptables</pre>
sudo dmesg | grep iptables
</code>


3. Просмотрите логи fail2ban:
3. Просмотрите логи fail2ban:
<code>
<pre>sudo tail -f /var/log/fail2ban.log</pre>
sudo tail -f /var/log/fail2ban.log
</code>


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


1. Просмотрите активные соединения:
1. Просмотрите активные соединения:
<code>
<pre>sudo netstat -tulpn</pre>
sudo netstat -tulpn
</code>


2. Просмотрите соединения по протоколам:
2. Просмотрите соединения по протоколам:
<code>
<pre>sudo ss -tulpn</pre>
sudo ss -tulpn
</code>


3. Просмотрите статистику трафика:
3. Просмотрите статистику трафика:
<code>
<pre>sudo iptables -L -n -v</pre>
sudo iptables -L -n -v
</code>


== 8. Устранение неполадок ==
== 8. Устранение неполадок ==
Строка 364: Строка 252:
1. '''Заблокирован доступ к серверу''':
1. '''Заблокирован доступ к серверу''':
* Подключитесь через консоль
* Подключитесь через консоль
* Отключите файрвол: <code>sudo ufw disable</code>
* Отключите файрвол: <pre>sudo ufw disable</pre>
* Или сбросьте iptables: <code>sudo iptables -F</code>
* Или сбросьте iptables: <pre>sudo iptables -F</pre>


2. '''SSH не работает''':
2. '''SSH не работает''':
* Проверьте правила: <code>sudo ufw status</code>
* Проверьте правила: <pre>sudo ufw status</pre>
* Разрешите SSH: <code>sudo ufw allow ssh</code>
* Разрешите SSH: <pre>sudo ufw allow ssh</pre>


3. '''Веб-сайт недоступен''':
3. '''Веб-сайт недоступен''':
Строка 378: Строка 266:


1. Проверьте статус файрвола:
1. Проверьте статус файрвола:
<code>
<pre>sudo ufw status verbose</pre>
sudo ufw status verbose
<pre>sudo iptables -L -n -v</pre>
sudo iptables -L -n -v
</code>


2. Проверьте открытые порты:
2. Проверьте открытые порты:
<code>
<pre>sudo nmap -sT -O localhost</pre>
sudo nmap -sT -O localhost
</code>


3. Проверьте сетевые интерфейсы:
3. Проверьте сетевые интерфейсы:
<code>
<pre>ip addr show</pre>
ip addr show
</code>


== 9. Дополнительные настройки безопасности ==
== 9. Дополнительные настройки безопасности ==
Строка 398: Строка 280:


1. Создайте скрипт для временного открытия порта:
1. Создайте скрипт для временного открытия порта:
<code>
<pre>sudo nano /usr/local/bin/temp-open-port.sh</pre>
sudo nano /usr/local/bin/temp-open-port.sh
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<pre>PORT=$1</pre>
#!/bin/bash
<pre>DURATION=$2</pre>
PORT=$1
<pre>sudo ufw allow $PORT/tcp</pre>
DURATION=$2
<pre>echo "sudo ufw delete allow $PORT/tcp" | at now + $DURATION minutes</pre>
 
<pre>echo "Порт $PORT будет открыт в течение $DURATION минут"</pre>
# Открыть порт
sudo ufw allow $PORT/tcp
 
# Запланировать закрытие
echo "sudo ufw delete allow $PORT/tcp" | at now + $DURATION minutes
 
echo "Порт $PORT будет открыт в течение $DURATION минут"
</code>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>
<pre>sudo chmod +x /usr/local/bin/temp-open-port.sh</pre>
sudo chmod +x /usr/local/bin/temp-open-port.sh
</code>


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


1. Установите geoip модуль:
1. Установите geoip модуль:
<code>
<pre>sudo apt install xtables-addons-common</pre>
sudo apt install xtables-addons-common
</code>


2. Заблокируйте трафик из определенных стран:
2. Заблокируйте трафик из определенных стран:
<code>
<pre>sudo iptables -A INPUT -m geoip --src-cc CN,KR -j DROP</pre>
sudo iptables -A INPUT -m geoip --src-cc CN,KR -j DROP
</code>


== 10. Автоматизация и скрипты ==
== 10. Автоматизация и скрипты ==
Строка 439: Строка 305:


1. Создайте скрипт настройки:
1. Создайте скрипт настройки:
<code>
<pre>sudo nano /usr/local/bin/firewall-setup.sh</pre>
sudo nano /usr/local/bin/firewall-setup.sh
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<pre>sudo ufw --force reset</pre>
#!/bin/bash
<pre>sudo ufw default deny incoming</pre>
 
<pre>sudo ufw default allow outgoing</pre>
# Очистка правил
<pre>sudo ufw allow ssh</pre>
sudo ufw --force reset
<pre>sudo ufw allow 80/tcp</pre>
 
<pre>sudo ufw allow 443/tcp</pre>
# Базовые правила
<pre>sudo ufw enable</pre>
sudo ufw default deny incoming
<pre>echo "Файрвол настроен и включен"</pre>
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>
<pre>sudo chmod +x /usr/local/bin/firewall-setup.sh</pre>
sudo chmod +x /usr/local/bin/firewall-setup.sh
</code>


== Заключение ==
== Заключение ==

Текущая версия от 10:39, 15 октября 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):

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