LINUX.ORG.RU
ФорумAdmin

iptables: правильнее указание интерфейса или адреса?


0

0

Например, у нас есть внутренний интерфейс eth0 с адресом 192.168.1.1. За ним сетка 192.168.1.0/24. Вопрос, насколько правильно при добавлении правил iptables в таблицу INPUT на этом компе указывать "-i eth0" вместо "-s 192.168.1.0/24"?

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


Ну вы в принципе, правильно ответили на вопрос, только "неустойчив к атакам изнутри" звучит как-то заумно.

Возможно, есть отличие в скорости, т.к. проверка адреса ip-пакета производится быстрее, чем проверка интерфейса. То есть я хотел сказать, что отличие в скорости будет, но будет ли оно заметно...

Можете для закрепления параноии указывать и -i, и -s, и еще включить rp_filter на интерфейс eth0.

mky ★★★★★
()

-i eth0 -s 192.168.1.0/24

я бы так сделал

deimos
()
Ответ на: комментарий от mky

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

> Можете для закрепления параноии указывать и -i, и -s, и еще включить rp_filter на интерфейс eth0.

:)) Мне не столько паранойю успокоить, сколько для себя интересно :)

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

Относительно скорости проще всего глянуть исходники ядра. В случае IP v4 и 32 разрядной архитектуры (сейчас я точно не скажу т.к. нету доступа), но вроде бы, проверка адреса это 2 логические операции, а сравнение имени интерфейса (длина имени 16 байт) это 8 (или больше?) логических операций ( имя интерфейса и маска имени интерфейса представляется как 4 unsigned int).

Тут я напомно, что интерфейс может быть задан как "-i ppp*" == "все пакеты пришедшие с ppp" --- удобно на ppp-сервере, к которому подключаются несколько клиентов.

В принципе разница во времени проверки правил не существенна, так как, ИМХО, большинство пакетов должно проходить через "-m state --state RELATED,ESTABLISED", и только первые пакеты соединения должны ходит по длинной сложной цепочки типа:

iptables -i eth0 -s 192.168.0.0/24 -j ACCEPT

iptables -i eth0 -j LOGDROP # отдельная цепочка логит и дропает пакет

iptables -s 192.168.0.0/24 -j LOGDROP

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

Спасибо за такие подробные разъяснения! :)

the_one

anonymous
()

ну, вообще-то, *в общем* случае, это проверка разных классов свойств, и тогда вопрос про "правильнее" не имеет смысла. если какие-то пакеты гарантированно приходят с определённого интерфейса, либо, наоборот, нужно гарантировать определённые свойства для конкретных интерфейсов -- то тогда используем "-i"/"-o". если же интерфейс для пакетов заранее не известен/не гарантируется, то тогда придётся использовать адрес.

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