Вопрос или проблема
Вот моя конфигурация Iptables:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:port-scan – [0:0]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-А INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m multiport –sports 80,443 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
-А INPUT -p icmp -m icmp –icmp-type 8 -j REJECT –reject-with icmp-port-unreachable
-A INPUT -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,SYN FIN,SYN -j DROP
-A INPUT -p tcp -m tcp –tcp-flags SYN,RST SYN,RST -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,RST FIN,RST -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,ACK FIN -j DROP
-A INPUT -p tcp -m tcp –tcp-flags ACK,URG URG -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,ACK FIN -j DROP
-A INPUT -p tcp -m tcp –tcp-flags PSH,ACK PSH -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j DROP
-A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP
-A INPUT -p tcp -m tcp ! –tcp-flags FIN,SYN,RST,ACK SYN -m state –state NEW -j DROP
-A INPUT -j LOG
-A FORWARD -j DROP
-A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m multiport –dports 80,443 -m conntrack –ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m udp –dport 53 -j ACCEPT
-A OUTPUT -p icmp -m icmp –icmp-type 8 -j DROP
-A OUTPUT -j DROP
-A port-scan -m limit –limit 1/sec –limit-burst 4 -j RETURN
Есть ли какие-либо предложения по улучшению или удалению бесполезных правил?
Что касается VPN, я использую Surfshark, я нашел эту настройку, но мне кажется, что tun+ нужно заменить на мою сеть VPN? enp5s0 – это мой сетевой интерфейс.
ip addr
surfshark_ipv6: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether a6:eb:a0:95:94:6e brd ff:ff:ff:ff:ff:ff
11: surfshark_2: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 82:05:ff:a1:cb:cd brd ff:ff:ff:ff:ff:ff
inet 127.0.0.1/32 scope host noprefixroute surfshark_2
valid_lft forever preferred_lft forever
12: surfshark_tun: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.7.7.14/24 brd 10.7.7.255 scope global noprefixroute surfshark_tun
valid_lft forever preferred_lft forever
iptables -A INPUT -i enp5s0 -m state –state NEW -p udp –dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o enp5s0 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp5s0 -o tun+ -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.7.7.3/24 -o enp5s0 -j MASQUERADE
iptables -A OUTPUT -o tun+ -j ACCEPT
p.s. На данный момент, без каких-либо правил VPN, я могу подключаться только к меньшему количеству мест. :/
p.s.2 Я не знаю, как перечислить… пост немного трудно читать.
Вот файл с правилами FW: https://easyupload.io/fbkd3p (Истечет через 7 дней).
Ответ или решение
Чтобы оптимизировать вашу конфигурацию iptables для работы с VPN (в данном случае Surfshark) на системе Debian, важно тщательно рассмотреть существующие правила, выявить ненужные элементы и добавить необходимый функционал для корректной работы VPN. Ниже приведены основные рекомендации и улучшения.
1. Оптимизация правил iptables
Ваши текущие правила iptables довольно строгие, что обеспечивает высокий уровень безопасности, но есть возможности для упрощения и повышения эффективности:
-
Удаление дублирующих и неэффективных правил: Некоторые правила, касающиеся TCP-флагов, могут быть излишними. Убедитесь, что все указанные правила действительно нужны. Рассмотрите возможность оставления только самых критически важных из них.
-
Логгирование: У вас уже есть правило для логгирования (
-A INPUT -j LOG
), однако, рекомендуется более детально настраивать логирование, чтобы вам было проще отлаживать файрвол. Например:-A INPUT -j LOG --log-prefix "[IPTables INPUT] " --log-level 4
-
Проверка состояния соединений: Включение проверки состояния соединений является хорошей практикой. Убедитесь, что вы принимаете только установленные и предшествующие соединения:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-
Изменение правил для ICMP: Вместо
DROP
, разумнее использоватьREJECT
с соответствующим сообщением. Например:-A INPUT -p icmp -j REJECT --reject-with icmp-host-unreachable
2. Конфигурация для работы с Surfshark VPN
При настройке правил для вашего VPN необходимо учитывать, что ваш интерфейс VPN, как правило, имеет префикс tun
. Ваша конфигурация должна выглядеть примерно так:
# Разрешить входящие соединения на VPN
iptables -A INPUT -i tun+ -j ACCEPT
# Разрешить пересылку трафика через VPN
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp5s0 -o tun+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# Маскарадинг для tрафика, идущего через VPN
iptables -t nat -A POSTROUTING -s 10.7.7.0/24 -o enp5s0 -j MASQUERADE
# Запретить и отфильтровывать весь выходящий трафик, кроме VPN
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A OUTPUT -o enp5s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
3. Общие рекомендации
-
Настройка DNS: Обязательно убедитесь, что DNS-запросы также проходят через VPN. Рассмотрите возможность использования DNS-серверов, предоставляемых вашим VPN-провайдером, чтобы избежать утечек DNS.
-
Тестирование конфигурации: После настройки правил iptables обязательно тестируйте их, проверяя доступ к интернету через VPN, а также работоспособность локальных служб. Используйте инструменты вроде
curl
, чтобы проверить IP-адрес. -
Мониторинг и логирование: Настройте систему мониторинга для отслеживания событий безопасности и логирования, чтобы иметь возможность быстро реагировать на возможные угрозы.
Заключение
Следуя вышеперечисленным рекомендациям, вы сможете оптимизировать конфигурацию iptables для работы с Surfshark VPN, гарантируя высокий уровень безопасности и функциональности. Помните, что регулярный аудит конфигурации iptables поможет поддерживать вашу систему в актуальном состоянии.