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

spamhaus, ненависть и проброс портов на localhost.

 , ,


0

1

Собственно сабж. Данный вопрос возник благодаря дейятельности спамхауса. Итак:

Имеется сервак, обеспечивающий выход кучи машин в инет и внутренний MTA. С недавних пор спамхаус стал добавлять те хосты, которые флудят на 80-й порт. Если 25-й порт был порублен - ибо нехрен (есть внутренняя почта, а кому надо - есть веб-морды), то тут порубить уже не получится, полетят щепки. У NAT/MTA есть белый адрес, назовем его 250.

Быстро смекнув, основную сетевку (eth0) переводим на другой айпишник, назовем его 251-й, а почтовик вешаем на алиас eth0:1 - 250, как и работало ранее.

Только вот эта зараза иногда с какого-то хрена пытается отправится с 251-го айпишника (с соответствующим fail, ибо спамхаус не дремлет), когда например указан локалхост для listen сервиса (exim, dovecot), т.е. «listen x.y.z.250, 127.0.0.1».

Расковыривать все конфиги и заменять локалхост на 250-й айпишник сложно и есть возможность что-то сломать, поэтому решил сделать ход конем - вешаем все сервисы на локалхост, и делаем проброс портов с eth0:1 - железнее некуда. Только вот эта зараза не работает!

iptables -I INPUT 1 -i lo -j ACCEPT
iptables -I INPUT 1 -i eth0 -j ACCEPT
iptables -I INPUT 1 -i eth0:1 -j ACCEPT
...
iptables -A FORWARD -i lo -s 127.0.0.0/255.0.0.0 -j ACCEPT
iptables -A FORWARD -i eth0:1 -d 127.0.0.0/255.0.0.0 -j ACCEPT
...
iptables -t nat -A PREROUTING -i eth0:1 -p tcp --dport 25 -j DNAT --to-destination 127.0.0.1:25
iptables -t nat -A PREROUTING -i eth0:1 -p tcp --dport 465 -j DNAT --to-destination 127.0.0.1:465
iptables -t nat -A PREROUTING -i eth0:1 -p tcp --dport 993 -j DNAT --to-destination 127.0.0.1:993
iptables -A FORWARD -i eth0:1 -o lo -d 127.0.0.1 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0:1 -o lo -d 127.0.0.1 -p tcp --dport 465 -j ACCEPT
iptables -A FORWARD -i eth0:1 -o lo -d 127.0.0.1 -p tcp --dport 993 -j ACCEPT
# iptables -L -n -v | grep 127
    0     0 ACCEPT     all  --  lo     *       127.0.0.0/8          0.0.0.0/0           
    0     0 ACCEPT     all  --  eth0:1 *       0.0.0.0/0            127.0.0.0/8         
    0     0 ACCEPT     tcp  --  eth0:1 lo      0.0.0.0/0            127.0.0.1            tcp dpt:25
    0     0 ACCEPT     tcp  --  eth0:1 lo      0.0.0.0/0            127.0.0.1            tcp dpt:465
    0     0 ACCEPT     tcp  --  eth0:1 lo      0.0.0.0/0            127.0.0.1            tcp dpt:993

Не работает, печалька.

Решение:

/etc/exim4/exim.conf:
...
remote_smtp:
    driver = smtp
    interface = x.y.z.250
...

Штришок в iptables

★★★★★

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

Проброс с loopback не работает и не должен.
Я так поннял, у тебя два белых айпишника есть? Тогда нать с альяса, а почтарь пусть шлет с реального айпишника.

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

Печалька. Думаешь, получется обмануть, если natить с алиаса?

у тебя два белых айпишника есть?

У меня почти пустая (~15-20 хостов) /24 подсетка есть))

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

Что-то я не понял. Тебе же нужно чтобы просто почта отправлялась с одного адреса, а сетка натилась на другой. Зачем этот гемор с пробросом портов снаружи?

Слушай на всех сервисах 0.0.0.0, лишнее режь файрволлом, а исходящий айпишник указывай в директивах почтаря типа smtp_bind_address в postfix. Всё.

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

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

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

Хм, щас допер - а в чем проблема поднять влан с одним айпишником и слать туда? т.е. поднимаем только на нем и локалхосте. по идее должно работать.

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

Это не совсем спамхаус, это cbl.abuseat.org, но попасть туда это все равно что попасть в спамхаус.

IP Address x.y.z.251 is listed in the CBL. It appears to be infected with a spam sending trojan, proxy or some other form of botnet.

It was last detected at 2013-10-19 20:00 GMT (+/- 30 minutes), approximately 1 days, 22 hours ago.

This IP is infected with, or is NATting for a machine infected with Neconyd (Microsoft).

The infection was detected by observing this IP address attempting to make contact to a Neconyd Command and Control server (C&C), a central server used by the criminals to control with Neconyd infected computers (bots).

More information about Neconyd can be found here (Microsoft).

This was detected by a TCP/IP connection from x.y.z.251 on port 1325 going to IP address 87.255.51.229 (the sinkhole) on port 80.

The botnet command and control domain for this connection was «kosiasudytfert.biz».

Behind a NAT, you should be able to find the infected machine by looking for attempted connections to IP address 87.255.51.229 or host name kosiasudytfert.biz on any port with a network sniffer such as wireshark. Equivalently, you can examine your DNS server or proxy server logs to references to 87.255.51.229 or kosiasudytfert.biz. See Advanced Techniques for more detail on how to use wireshark - ignore the references to port 25/SMTP traffic - the identifying activity is NOT on port 25.

This detection corresponds to a connection at 2013-10-19 20:20:30 (GMT - this timestamp is believed accurate to within one second).

These infections are rated as a «severe threat» by Microsoft. It is a trojan downloader, and can download and execute ANY software on the infected computer.

You will need to find and eradicate the infection before delisting the IP address.

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

исходящий айпишник указывай в директивах почтаря типа smtp_bind_address в postfix

Было бы идеально. Ушел гуглить:-) (exim)

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

Ну, провернуть то что я хотел с локалхостом на каком-нибудь влане с маской /32 с айпишником 192.168.254.254 например.

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

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

exim

[code]remote_smtp:

#Interface for outgoing SMTP connections
driver = smtp
interface = xxx.xxx.xxx.xxx
[/code]

ЛОР ЛОМАЕТ КАМЕНТЫ, править не буду, пусть висит на память.

По поводу блокировки спама - любопытно, как именно чуваки узнали, что твоя сеть ходила на сервера, управляющие вирусом.

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

А ты еще не пробовал даже?

Вообще-то я пробовал, и получил с десяток отлупов. с настройками на 250-й и локалхост, да

remote_smtp - это походу то, что нужно, спасибо!

Я видимо недоглядел - я менял листен только.

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

На серваке скорее всего стоит какой-нибудь детект треша с автоматическим заносом куда надо.

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

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

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

Исправил в remote_smtp - поглядим-с. Пока нормально ходит, айпишники на алиасе не менял.

leg0las ★★★★★
() автор топика

-i eth0:1

На дворе ночь конечно же... Но я не уверен на сто процентов, что iptables умеет работать с алиасом как с реальным интерфейсом. Вроде -i это должен быть интерфейс в ярде, а алиас это по-сути просто ещё один адрес на текущем интерфейсе.

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

Скорее всего это просто видимость. Потому что алиасы это устаревшее понятние ifconfig-а. Корректный (современный) метод назначения дополнительных ip-адресов интерфейсам это ip addr add x.x.x.x/xx dev ethx, а он никаких дополнительных интерфейсов не создает:

# ip addr
...
19: int1.24@int1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP 
    link/ether 00:25:90:77:b8:8a brd ff:ff:ff:ff:ff:ff
    inet 10.1.24.10/24 brd 10.1.24.255 scope global int1.24
    inet 10.1.24.20/24 brd 10.1.24.255 scope global secondary int1.24

blind_oracle ★★★★★
()

Behind a NAT, you should be able to find the infected machine by looking for attempted connections to IP address 87.255.51.229 or host name kosiasudytfert.biz on any port with a network sniffer such as wireshark. Equivalently, you can examine your DNS server or proxy server logs to references to 87.255.51.229 or kosiasudytfert.biz. See Advanced Techniques for more detail on how to use wireshark - ignore the references to port 25/SMTP traffic - the identifying activity is NOT on port 25.

А трояна не пробовал бороть?

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

Не совсем корректное сравнение. Завирусованые тазики у нас - норма, несмотря на касперского даже. И народ не шибко образованый по части технической

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

При interface = 250? Это хреново и странно, и заслуживает багрепорта, кмк.
Ну тогда можешь попробовать workaround, который я в первом каменте описал.

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

да, сравнение натянутое. Предлагаю ограничить доступ тазиков к интернету вместо плясок вокруг шлюза, с которым в следующий раз опять придётся плясать из-за похожих проблем

anonymous
()
Ответ на: комментарий от Komintern

У меня даже INPUT/OUTPUT на 251-м (не говоря уже о форвардинге) зарезан для 25-го порта:

# iptables -L -v -n | grep x.y.z.251
    0     0 DROP       tcp  --  *      *       0.0.0.0/0      x.y.z.251            tcp dpt:25
   24   960 DROP       tcp  --  *      *       x.y.z.251      0.0.0.0/0            tcp dpt:25
leg0las ★★★★★
() автор топика

Пришла мысль - у меня ж управляшка, поэтому режем 25-й порт на раздаче NAT, а все запросы с 251:25 перенаправляем на 250:25 - трафик то уже идет «чистый», без флуда по 25-му порту. Хотя все равно непонятно, почему даже при фильтрации с 251-го что-то улетает.

leg0las ★★★★★
() автор топика

Не люби гусей в извращенной форме, делай нужные NAT'ы на исходящем интерфейсе, типа так:

iptables -A POSTROUTING -t nat -o eth1 -p tcp --dport 25 -j SNAT --to-source a.b.c.251

iptables -A POSTROUTING -t nat -o eth1 -p tcp ! --dport 25 -j SNAT --to-source a.b.c.250

Всё, проблема решена

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

Не совсем понял, что это дает. И при чем eth1, которая кстати не имеет определенного IP, через нее просто куча вланов ходит.

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

Ну не eth1, а eth0 - я тебе принцип подсказываю.

А дает это то что ты хочешь - при отправке на 25-й порт будет подставляться 251-й адрес, а при отправке на остальные - 250-й.

Ну и чисто для информации - алиасы в iptables не канают. eth0 - возьмет, eth0:1 - не возьмет. Точнее, взять то возьмет, но условие будет всегда false.

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

Т.е. нужно сначала порезать флуд на 25-м порту на коммутаторе, потом завернуть оным образом? П.ч. через 250-й тогда пойдет весь флуд... по идее.

leg0las ★★★★★
() автор топика
Ответ на: комментарий от no-dashi

Только по-моему должно выглядеть иначе:

iptables -A POSTROUTING -t nat -o eth0 -p tcp ! --dport 25 -j SNAT --to-source x.y.z.251
iptables -A POSTROUTING -t nat -o eth0 -p tcp --dport 25 -j SNAT --to-source x.y.z.250

т.е. с 251-го мы не пускаем ничего. Все идет через 250-й, а флуд должен резаться на этапе FORWARD. Я все правильно понял?

leg0las ★★★★★
() автор топика
iptables -t nat -A POSTROUTING -s ip_of_mta -p tcp --dport 25 -o eth0 -j SNAT --to-source ip_for_mta
nerve ★★
()
Ответ на: комментарий от leg0las

т.е. с 251-го мы не пускаем ничего. Все идет через 250-й, а флуд должен резаться на этапе FORWARD. Я все правильно понял?

Именно. Тебе повезло, что у тебя два IP на одном интерфейсе, в результате можно обойтись без хитрожопой маршрутизации.

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

Значит, я все правильно сделал, и оно работает:-)

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