Jump to content

Recommended Posts

Posted

Стоит СТГ. Стоит себе, никого не трогает. И все бы ничего, но в последнее время левый (читай: ворованый) траффик вырос до небес. После некоторого расследования выяснил, что в момент, когда начинается закачка, можно смело выключать(выгружать) 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. Как собственно закрыть саму дыру? Где именно ошибка?

 

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

  • 1 month later...
Posted

1. По вопросу "упростить":

===============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 -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");

 

ибо правила просто бесполезно повторялись.

 

2. Чтоб закачивание обрывалось при отключении ИнетАксес, нужно в файле "дефолтных" настроек iptables /etc/sysconfig/iptables указать, например в цепочке FORWARD, чтоб все пакеты в инет дропились, а в OnConnect обратно разрешать для $ip и, соответственно, в OnDisconnect добавить обратное действие

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.