LINUX.ORG.RU

Вопрос для знатоков iptables

 


0

2

Добрый день.

Нужно запретить исходящие соединения на 25 порт всем, кроме локальной машины и системного пользователя Postfix.

Делаю так:

-A OUTPUT -p tcp -o eth0 ! -s 184.52.167.144 --dport 25 -j DROP
-A OUTPUT -p tcp -o eth0 -m owner ! --uid-owner 89 --dport 25 -j DROP
где:
184.52.167.144 - внешний IP-сервера на сетевом интерфейсе eth0
89 - id пользователя postfix

Вроде работает.

Далее попытался сделать так:

-A OUTPUT -p tcp -o eth0 ! -s 184.52.167.144 -m owner ! --uid-owner 89 --dport 25 -j DROP
Обломс, первая опция:
! -s 184.52.167.144
перекрывает вторую:
! --uid-owner 89
и соединения идут от всех пользователей в 184.52.167.144

Скажите пожалуйста, правильно ли я вообще делаю и как лучше составить такое правило?

Спасибо.



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

Правила для транзитного трафика пишутся в FORWARD, а не в OUTPUT

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

Локальные соединения ходят через lo.

т.е. вот так:

-A OUTPUT -p tcp -i lo --dport 25 -j DROP
-A OUTPUT -p tcp -i lo -m owner ! --uid-owner 89 --dport 25 -j DROP
должно быть?

Правила для транзитного трафика пишутся в FORWARD, а не в OUTPUT

можете показать, как должно выглядеть такое правило?

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

Например, чтобы дропнуть пакеты, идущие на 25 порт из сети 192.168.0.0/24:

iptables -A FORWARD -p tcp --dport 25 -s 192.168.0.0/24 -j DROP
или вообще все транзитные на 25 порт:
iptables -A FORWARD -p tcp --dport 25 -j DROP

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

Например, чтобы дропнуть пакеты, идущие на 25 порт из сети 192.168.0.0/24

А если мне нужно на локальной машине дропнуть все пакеты, которые идут наружу на 25 порт, кроме только определенного пользователя, а именно posftix. Другими словами говоря, нужно оградить дрянь, которую залили на сайт, которая отправляет сообщения на другие почтовики на прямую, не через postfix с локальной машины. Дрянь, которая это делает найти не удается.

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

А, ну тогда в OUTPUT. Значит, я не так понял.

-A OUTPUT -p tcp -i lo --dport 25 -j DROP
-A OUTPUT -p tcp -i lo -m owner ! --uid-owner 89 --dport 25 -j DROP

вот такие правила будут правильными, или можно что-то лучше придумать?

Nezhnayka28
() автор топика

А зачем указывать IP адрес сервера?

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

вот такие правила будут правильными, или можно что-то лучше придумать?

Нет, в OUTPUT нельзя использовать опцию -i

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

А зачем указывать IP адрес сервера?
Нет, в OUTPUT нельзя использовать опцию -i

Т.е. в одно правильно можно уложиться, вот так:

-A OUTPUT -p tcp -o eth0 -m owner ! --uid-owner 89 --dport 25 -j DROP
или даже так:
-A OUTPUT -p tcp -m owner ! --uid-owner 89 --dport 25 -j 
или что-то лучшее можно придумать?

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

Я не совсем понимаю, что нужно сделать. Надо разрешить подключения наружу только постфиксу? Тогда так:

iptables -A OUTPUT -p tcp ! -o lo -m owner ! --uid-owner 89 --dport 25 -j DROP

Black_Shadow ★★★★★
()

Запутали вы меня своим сообщением. Необходимо разрешить исходящий smtp трафик в мир только от одного пользователя? Если так, то:

iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m owner --uid-owner 89 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -j REJECT

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

-A OUTPUT -p tcp -m owner ! --uid-owner 89 --dport 25 -j

Это правило дропнет локальные пакеты до постфикса

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

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

Да, именно для этого, чтобы только постфикс мог отправлять пакеты наружу на 25 порт. Большое спасибо, работает это правило. Спасибо за ответы.

Nezhnayka28
() автор топика

Общие рекомендации

Чтобы не ломать мозг ни себе, ни парсеру конфигов, есть два простых правила:
1) Минимизировать использование отрицаний
2) Заворачивать трафик в цепочки (chains).

Готовые правила писать лень.

thesis ★★★★★
()

Здравствуйте!

Теперь небольшое лирическое отступление на тему «Как настроить iptables». Для целей защиты при работе в интернет добрые программисты «запилили» в Линукс фаейрвол iptables. Он быстр, надежен и бесплатен, однако, мало кто им пользуется по причине сложной и запутанной настройки. Интернет-издание Либератум первым в мире предлагает простой конфиг. «Скопипастил», запустил, забыл.

Далее читайте, пожалуйста, тут: http://liberatum.ru/blog/iptables-linux-secure

Замечание от меня: я запускаю этот скрипт из bash.

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