Перейти до

Воровство траффика из-за неправильной настройки


Рекомендованные сообщения

Стоит СТГ. Стоит себе, никого не трогает. И все бы ничего, но в последнее время левый траффик вырос до небес. После некоторого расследования выяснил, что в момент, когда начинается закачка, можно смело выключать(выгружать) InetAccess. При этом закачка не прекращается, а траффик не считается. И выяснил также, что есть ошибка в правилах FW.

 

SOS, Help, что угодно, только раскажите мне, где эта ошибка?

 

Тексты скриптов прилагаются.

 

=============OnConnect========================

#!/usr/bin/perl

$ip=$ARGV[1];

$ip_prov=xxx.xxx.xxx.xxx

system("iptables -A FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -A FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -t nat -I PREROUTING 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80

-j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -I POSTROUTING 1 -s $ip -d ! 10.0.0.0/24 -j SNAT

--to-source $ip_prov");

 

 

 

===============OnDisconnect================

#!/usr/bin/perl

$ip=$ARGV[1];

$ip_prov=xxx.xxx.xxx.xxx;

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

 

 

Все сводится к двум вопросам:

1. Как эту всю писанину упростить? Я видел на сайте СТГ в доках, что там циклы используются. Но здесь скрипт написан на Perl, а как это все сделать на этом языке, я не знаю.

2. Как собственно закрыть саму дыру? Где именно ошибка?

 

Почему так написаны сами скрипты, не знаю. И не спрашивайте. Не я писал. Сам только расчехляю. Еще раз повторюсь, что все работает правильно, за исключением этой ситуации. Факт на лицо. Т.е. речь идет именно о заделывании дыры, а не о переделывании. Кто знает, как это все можно исправить, прошу помочь. Заранее спасибо.

Ссылка на сообщение
Поделиться на других сайтах

Хорошо. Спрошу по-другому.

 

Вот схема моего подключения:

 

Есть только одна сетевая. она смотрит в локалку. В этой же локалке есть сервер провайдера. Наша сетевая имеет два интерфейса и соответственно два IP адреса: eth0 и eth0:1 (10.0.0.1 и xxx.xxx.xxx.xxx). Итак, eth0 - внутренний интерфейс, а eth0:1 - виртуальный ин-с, который смотрит на прова. В наш же сервак воткнута dvb-карта. Запрос отправляется через интерфейс eth0:1 (наземный канал), а ответ приходит через dvb-карту (спутниковый канал).

 

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

Ссылка на сообщение
Поделиться на других сайтах
Стоит СТГ. Стоит себе, никого не трогает. И все бы ничего, но в последнее время левый траффик вырос до небес. После некоторого расследования выяснил, что в момент, когда начинается закачка, можно смело выключать(выгружать) InetAccess. При этом закачка не прекращается, а траффик не считается. И выяснил также, что есть ошибка в правилах FW.

 

SOS, Help, что угодно, только раскажите мне, где эта ошибка?

 

Тексты скриптов прилагаются.

 

=============OnConnect========================

#!/usr/bin/perl

$ip=$ARGV[1];

$ip_prov=xxx.xxx.xxx.xxx

system("iptables -A FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -A FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -t nat -I PREROUTING 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80

-j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -I POSTROUTING 1 -s $ip -d ! 10.0.0.0/24 -j SNAT

--to-source $ip_prov");

 

 

 

===============OnDisconnect================

#!/usr/bin/perl

$ip=$ARGV[1];

$ip_prov=xxx.xxx.xxx.xxx;

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128");

system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT");

system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT");

 

 

Все сводится к двум вопросам:

1. Как эту всю писанину упростить? Я видел на сайте СТГ в доках, что там циклы используются. Но здесь скрипт написан на Perl, а как это все сделать на этом языке, я не знаю.

2. Как собственно закрыть саму дыру? Где именно ошибка?

 

Почему так написаны сами скрипты, не знаю. И не спрашивайте. Не я писал. Сам только расчехляю. Еще раз повторюсь, что все работает правильно, за исключением этой ситуации. Факт на лицо. Т.е. речь идет именно о заделывании дыры, а не о переделывании. Кто знает, как это все можно исправить, прошу помочь. Заранее спасибо.

Я конечно не пойму зачем так много раз повторяется одно и тоже в правилайх ОнДисконект (это чтоб наверняка удалило).

попробуй сделать так

во первых

сделай файлик обзови его как нибоудь например firewall сделай на него права 755 и пропиши туда такое

 

iptables -F

iptables -t nat -F

iptables -t mangle -F

 

iptables -P FORWARD DROP

iptables -t mangle -A PREROUTING -d 10.0.0.1 -p tcp --dport 3128 -j DROP

/sbin/iptables -F; iptables -t nat -F; iptables -t mangle -F

/sbin/iptables -t filter -P FORWARD DROP

 

добавь его в автозагрузку и в он коннект вместо

system("iptables -t nat -I PREROUTING 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80

-j DNAT --to 10.0.0.1:3128");

напиши

system("iptables -t nat -I OUTPUT 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80

-j DNAT --to 10.0.0.1:3128");

 

А В ОН ДИСКОННЕКТ

system("iptables -t nat -I OUTPUT 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80

 

-j DNAT --to 10.0.0.1:3128");

и все должно быть ок

Ссылка на сообщение
Поделиться на других сайтах

Спасибо за помощь.

 

1. В файрволе все было за исключением этих строк:

/sbin/iptables -F; iptables -t nat -F; iptables -t mangle -F

/sbin/iptables -t filter -P FORWARD DROP

добавил.

2. Добавил также указанные строки в скрипты. Все заработало, но...

 

Возникли вопросы.

1. После выполнения укзанных инструкций такое ощущение, что полностью пересел на землю (наземка у меня 32К, а спутник 256К - разница видна невооруженным взглядом), хотя траф считается спутниковый.

2. Методом исключений вычислил, что такой эффект дают все-таки скрипты. Когда меняю их назад, как было, все становится как раньше (включая и дыру для воровства).

3. В чем все-таки разница между iptables и /sbin/iptables?

4. Как скрипт OnDisconnect собрать в циклы (как на bash сделать, знаю, а как на perl?)?

Ссылка на сообщение
Поделиться на других сайтах
Спасибо за помощь.

 

1. В файрволе все было за исключением этих строк:

/sbin/iptables -F; iptables -t nat -F; iptables -t mangle -F

/sbin/iptables -t filter -P FORWARD DROP

добавил.

2. Добавил также указанные строки в скрипты. Все заработало, но...

 

Возникли вопросы.

1. После выполнения укзанных инструкций такое ощущение, что полностью пересел на землю (наземка у меня 32К, а спутник 256К - разница видна невооруженным взглядом), хотя траф считается спутниковый.

2. Методом исключений вычислил, что такой эффект дают все-таки скрипты. Когда меняю их назад, как было, все становится как раньше (включая и дыру для воровства).

3. В чем все-таки разница между iptables и /sbin/iptables?

4. Как скрипт OnDisconnect собрать в циклы (как на bash сделать, знаю, а как на perl?)?

Открой на любой машине две SSH или telnet консоли

Для того чтобы определить на каком интерфейсе запусти команду tcpdump -i интерфейс спутника и tcpdump -i интерфейс модема посмотри идут ли пакеты по спутнику. Например tcpdump -i ppp0

и параллельно наблюда куда шлются пакеты на запрос и куда в ответ идут пакеты. регулировать это можно с помощью сквида (хотя нужно еще знать какие порты у тебя открыты в фаерволе) в данных конфигах весь http трафик направляется на сквид а все остально напряму натом.

Ссылка на сообщение
Поделиться на других сайтах
  • 1 year later...

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

Пинга в конфигураторе нету.

 

Все проблема снята. Все нормально считается даже при снятии авторизатора.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...