LINUX.ORG.RU
решено ФорумAdmin

iptables + alias interfaces


0

0

ubuntu 10.10 x64 ноут

написал правила для wlan0 в iptables. Но иногда ноут подключается и через eth0 и через ppp0. Ip динамический понятное дело. Как можно не копировать все правила для каждого из интерфейсов. Что-то типа alias для интерфейсов или через переменную?



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

Но иногда ноут подключается и через eth0 и через ppp0. Ip динамический понятное дело.

Чего?

В общем копируй правила, так и надо.

o
()

Именно так не бывает, но если ты знаешь что делаешь,

iptables -N mychain
iptables -A mychain <правило без указания интерфейса>

в скриптах поднятия интерфейса, либо заранее для всех интерфейсов:

iptables -A INPUT -i <интерфейс> -j mychain

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

когда я дома - я подключаюсь через eth0, когда в универе - через wlan0. Когда нет ни того ни другого, ну нужен инет - через ppp0.

Jelum
() автор топика
Ответ на: комментарий от router

Если я правильно понял -
iptables -A INPUT -i <интерфейс> -j mychain - это правило говорит, что если пакет пришёл (INPUT) по этому интерфейсу (<интерфейс>), то это (mychain) цепочка, которая будет его обрабатывать.

А теперь о самой проблеме. Ты предлагаешь такое решение -

iptables -A INPUT -i wlan0 -j mychain
iptables -A INPUT -i eth0 -j mychain
iptables -N mychain
iptables -A mychain <правило без указания интерфейса>

потому что правила на самом деле одинаковы, меняется только название интерфейса.

Jelum
() автор топика
Ответ на: комментарий от Jelum

>Если я правильно понял -

iptables -A INPUT -i <интерфейс> -j mychain - это правило говорит, что если пакет пришёл (INPUT) по этому интерфейсу (<интерфейс>), то это (mychain) цепочка, которая будет его обрабатывать.


Да. Для OUTPUT и FORWARD аналогично

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

Или, если эти интерфейсы единственные, не создавать никаких цепочек и просто добавлять правила без указания интерфейса

router ★★★★★
()
Ответ на: комментарий от o
#! /bin/sh

# Переменная, задающая путь к файлу запуска iptables.
IPT=/sbin/iptables

# Сетевой интерфейс.
INET_IFACE="wlan0"

# Номера непривилегированных портов 
UNPRIPORTS="1024:65535"

# Прописываем порты, которые открытые в системе, но которые не должны быть открыты на сетевых интерфейсах:
CLOSEPORTS="630,640,783,3310,5353,10000"

    # Включить перенаправление пакетов через ядро.
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Загружаем некторое модули.
    /sbin/modprobe ip_nat_ftp
    /sbin/modprobe ip_conntrack_ftp
	
#Others
    # Удаление правил
    $IPT -F
    $IPT -t nat -F
    $IPT -t mangle -F

    # Очищаем нестандартные правила
    $IPT -X
    $IPT -t nat -X
    $IPT -t mangle -X
	
    # Политики по умолчанию.
    $IPT -P INPUT DROP
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT DROP

#Log
    $IPT -A INPUT -j LOG --log-prefix "INPUT DROP: "

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

    # Пакеты со статусом NEW и со сброшенным битом SYN.
    $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

    # Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
    $IPT -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
     
    # SYN наводнение (syn storm)
    $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
    $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
    
    # udp наводнение (udp wave storm)
    $IPT -A INPUT -p udp -s 0/0 --destination-port 138 -j DROP 
    $IPT -A INPUT -p udp -s 0/0 --destination-port 113 -j REJECT 
    $IPT -A INPUT -p udp -s 0/0 --source-port 67 --destination-port 68 -j ACCEPT  
    $IPT -A INPUT -p udp -j RETURN 
    $IPT -A OUTPUT -p udp -s 0/0 -j ACCEPT 
    
    # ICMP - перенаправление (icmp reway)
    $IPT -A INPUT --fragment -p ICMP -j DROP 
    $IPT -A OUTPUT --fragment -p ICMP -j DROP 
	
	# "Предсказание номера tcp-последовательности".
    $IPT -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
    
#ICMP
	# Разрешаем  ICMP соединение.
    $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type source-quench -j ACCEPT
    $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type source-quench -j ACCEPT
    
    # Разрешаем себе ping наружу, ставим ограничение на ping своей машины.
    $IPT -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 2 -j ACCEPT
    $IPT -A INPUT -p icmp --icmp-type echo-request -j DROP
    $IPT -A INPUT -p icmp -j ACCEPT
    
    # Разрешаем передачу пакета - некорректный параметр
    $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type parameter-problem -j ACCEPT
    $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type parameter-problem -j ACCEPT
	
#Services
	# Разрешаем AUTH-запросы на удаленные сервера, на свой же компьютер - запрещаем.
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 113 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 113 -j ACCEPT ! --syn
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 113 -j DROP
	
    # Разрешаем прохождение DHCP запросов через iptables.
    $IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 67 --sport 68 -j ACCEPT
    $IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport 68 --sport 67 -j ACCEPT

    # DNS сервер имен разрешаем.
    $IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport $UNPRIPORTS --sport 53 -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 53 -j ACCEPT

# IN ACCEPT
	$IPT -A INPUT -p tcp -i $INET_IFACE --dport 13308 -j ACCEPT				# skype
	$IPT -A INPUT -p tcp -i $INET_IFACE -d 64.12.0.0/16 --sport 5190 -j ACCEPT		# icq
	$IPT -A INPUT -p tcp -i $INET_IFACE -d 205.188.0.0/16 --sport 5190 -j ACCEPT		# icq
	$IPT -A INPUT -p tcp -i $INET_IFACE -d 195.139.0.0/16 --sport 5190 -j ACCEPT		# icq
	$IPT -A INPUT -p udp -i $INET_IFACE --dport 631 -j ACCEPT				# net print
# OUT ACCEPT
    $IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 13308 -j ACCEPT				# skype
    $IPT -A OUTPUT -p udp -o $INET_IFACE --sport 13308 -j ACCEPT				# skype
	$IPT -A OUTPUT -p tcp -o $INET_IFACE -s 64.12.0.0/16 --dport 5190 -j ACCEPT		# icq
	$IPT -A OUTPUT -p tcp -o $INET_IFACE -s 205.188.0.0/16 --dport 5190 -j ACCEPT		# icq
	$IPT -A OUTPUT -p tcp -o $INET_IFACE -s 195.139.0.0/16 --dport 5190 -j ACCEPT		# icq
	#$IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 993 -j ACCEPT				# imap over ssl
	$IPT -A OUTPUT -p udp -o $INET_IFACE --sport 631 -j ACCEPT				# net print
	$IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 443 -j ACCEPT				# https + icq
	$IPT -A OUTPUT -p udp -o $INET_IFACE --dport 123 -j ACCEPT				# ntpdate (time)
	#$IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 143 -j ACCEPT				# imap
	#$IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 110 -j ACCEPT				# pop
	$IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 80 -j ACCEPT				# http
	#$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 79 --sport $UNPRIPORTS -j ACCEPT	# finger
	#$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 43 --sport $UNPRIPORTS -j ACCEPT	# whois
	#$IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 25 -j ACCEPT				# smtp
	$IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 21 -j ACCEPT				# ftp
	$IPT -A OUTPUT -p tcp -o $INET_IFACE --dport 20 -j ACCEPT				# ftp
	#$IPT -A OUTPUT -p TCP -o $INET_IFACE --dport 5222 -j ACCEPT				# google talks
# IN DROP
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 6000:6063 -j DROP --syn			# input connection to X-server
	$IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE --dports $CLOSEPORTS -j DROP 
# OUT DROP
	$IPT -A OUTPUT -p udp -o $INET_IFACE --dport 5353 -j DROP				# avahi-daemon

# loop begin
    # Разрешаем прохождение любого трафика по lo
    $IPT -A INPUT -i lo -j ACCEPT
    $IPT -A OUTPUT -o lo -j ACCEPT

    # DROP не родной lo
    $IPT -A INPUT -m state ! -i lo --state NEW -j DROP
    $IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP
# loop end
Jelum
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.