LINUX.ORG.RU
ФорумAdmin

iptables заблокировать ipv6

 ,


0

1

В сети используется только ipv4, хочу заблочить любые пакет ipv6 достаточно ли для этого

#Запрет любого трафика по ipv6
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP

 
файл с правилами полностью
#!/bin/bash                                                                                                                                                                                                                                                                    
export IPT="iptables"
#Внешний интерфейс Интернет
export WAN=enp0s3
#Интерфейс к которому подключена локальная сеть
export LAN=enp0s8
#Очистка всех цепочек                                                                                                                                                                                                                                                               
$IPT -F INPUT                                                                                                                                                                                                                                                              
$IPT -F FORWARD                                                                                                                                                                                                                                                            
$IPT -F OUTPUT                                                                                                                                                                                                                                                             
$IPT -t nat -F PREROUTING                                                                                                                                                                                                                                                  
$IPT -t nat -F POSTROUTING                                                                                                                                                                                                                                                 
$IPT -t mangle -F
#Запрет любого трафика кроме кроме идущего через цепочку output
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP

#Запрет любого трафика по ipv6
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP

#разрешаем все входящие пакеты на интрефейс замыкания на себя иначе ничего не работает 
$IPT -A INPUT -i lo -j ACCEPT
#РАЗРЕШЕНЫ ТОЛЬКО ВХОДЯЩИЕ СОЗДАННЫЕ НАШИМИ ИСХОДЯЩИМИ
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Правила повышающие безопасность

#Блочим входящие tcp соединения не syn пакетом (либо ошибка либо атака)
$IPT -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j REJECT
$IPT -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT

# разрешаем пинги на обе сетевухи
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
#$IPT -A INPUT -m state --state INVALID -j REJECT
#$IPT -A FORWARD -m state --state INVALID -j REJECT

#разрешаем ssh на внешнем интерфейсе 

$IPT -A INPUT -i enp0s3 -p tcp --dport 22  -j ACCEPT
#разрешаем доступ из локальной сети на порты 22(ssh),3128 прокси squid,80 - apache веб морды
$IPT -A INPUT -i enp0s8 -p tcp -m multiport --dport 22,80,53,3128 -j ACCEPT
#Разрешаем запросы на сервер времени из локалки 
$IPT -A INPUT -i enp0s8 -p udp --dport 123 -j ACCEPT
#подстройка mtu без этого правила компы ходящие мимо прокси не открывают некоторые сайты
$IPT -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu 
#Разрешаем хождение через цепочку форвард пакетов идущих в ответ на пакеты с локльной сети enp0s8 и
#из интернета это необходимо для проброса компов из сети наружу минуя прокси и для проброса портов в локалку
$IPT -A FORWARD -i enp0s3 -o enp0s8 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i enp0s8 -o enp0s3 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Пробрасуем комп из сети в нет

#$IPT -A FORWARD -s 192.168.4.19 -o enp0s3 -j ACCEPT

#Пробрасываем порт 3389 подключение к серверу терминалов на сервер терминалов в локальной сети 
$IPT -A FORWARD -i enp0s3 -o enp0s8 -p tcp --syn --dport 3389 -m conntrack --ctstate NEW -j ACCEPT
$IPT -t nat -A PREROUTING -i enp0s3 -p tcp --dport 3389 -j DNAT --to-destination 192.168.4.53:3389
$IPT -t nat -A POSTROUTING -o enp0s8 -p tcp --dport 3389 -d 192.168.4.53 -j SNAT --to-source 192.168.4.17

#Маскарадим то что прошло через цепочку forward
$IPT -t nat -I POSTROUTING -s 192.168.4.0/24 -o enp0s3 -j MASQUERADE

Полностью чем достаточно. Тут так же как с v4, разницы никакой. Я лично правила для интерфейса lo добавляю по аналогии с V4. В целом если совсем не нужен можно и выпилить целиком что бы не мешал. Но я так не делаю по причине, а что а вдруг понадобиться?

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от drac753

Нюанс в том что могу и попользовать, может завтра, а может послезавтра, мне оно надо систему в ребут оправлять? И второй момент обновитесь например и там уже параметры отключения станут другими или вообще не отключаемыми. Так что вы совершенно верно поступаете.

anc ★★★★★ ()
Ответ на: комментарий от drac753

По умолчанию ipv6 приоритетней, так что увеличится задержка при обращении по имени, если у него есть ipv6 адрес. Нужно поправить /etc/gai.conf, вроде.

boowai ★★★★ ()
Ответ на: комментарий от boowai

Нужно поправить /etc/gai.conf, вроде.

Только в случае наличия внешнего и это только для локальных процессов работает.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Не понял про внешние. Знаю, что есть исключения - тонели, может еще что. Внутри LAN тоже приоритетней, вроде, да и по здравому смыслу так и должно быть.

Gai.conf, да, определяет только для локальных getaddrinfo. На роутере, разве что, AAAA записи dns ответов резать.

boowai ★★★★ ()
Последнее исправление: boowai (всего исправлений: 1)
Ответ на: комментарий от drac753

Тогда нет проблем. Если себе в ногу не выстрелишь, раздавая ipv6, то ipv6 может вылезти при каком-нибудь zeroconf, разве что. Но от него и с ipv4 проблемы.

boowai ★★★★ ()
Последнее исправление: boowai (всего исправлений: 1)

Зачем так много правил ? IMHO достаточно в raw их дропать (в PREROUTING и OUTPUT).

Чем не устраивает отключение ipv6 на интерфейсах ?

sysctl net.ipv6.conf.default.disable_ipv6=1
sysctl net.ipv6.conf.all.disable_ipv6=1
sysctl net.ipv6.conf.lo.disable_ipv6=0

Все больше и больше софта хочет ipv6, хотя бы на localhost...

vel ★★★★★ ()
Ответ на: комментарий от vel

Ну в нашем городишке ipv4 за глаза, провайдеру ipv6 и даром не нужен, они ipv4 адресов, по их словам на 10 лет закупили.

drac753 ★★ ()

Я бы вместо DROP поставил бы REJECT. DROP может вызывать временные подвисания программ. Т.к. программы не будут знать что их трафик заблокировали.

sekreti-gollivuda ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.