![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программный запрет доступа к Internet [D6, NT4]
iav © (2003-02-28 19:19:00)Необходимо написать программу, реализующую запрет на доступ к инету одним из способов:
1) блокирование порта 3128;
2) запрет отрпавки/приема пакетов на/от прокси;
3) банальный запрет запуска приложений, работающих с инетом.
Почитал тут FAQ и сообщения в форуме и обнаружил кучу вопросов, но ни одного толкового ответа. Поэтому хочу добавить следующее:
1) установка Firewall"а (Outpost, ZoneAlarm, Agnitum и иже с ними) меня не устраивает; не спрашивайте, почему;
2) настройка прокси и шлюза тоже не устраивает; можете спросить, почему, отвечу заранее - не имею права этого делать, сисадмин не позволяет.
alexteam (2003-03-11 13:20:00) [1]Удалено модератором
Примечание: Задай СВОЙ вопрос в отдельной своей ветке
Прохожий (2003-03-10 00:54:00) [2]Как вариант пакетный фильтр типа http://www.ntkernel.com/products/winpkfilter.shtml
Evil (2003-03-07 08:10:00) [3]можно просто повесить на порт 3128 свою прогру (занять сервис)
wman! (2003-03-05 05:12:00) [4]2iav, если решение не сверх секретное выложи pls.
мне тоже требуется отрубать попытки достучаться до
прокси настроенном на порту 3128.
iav (2003-03-04 11:02:00) [5]Может путь и неправильный, но я сумел получить то, чего и добивался, т.е. не изменяя настроек сети и прокси своей программой отрубать связь по нужным портам и IP.
Засим откланиваюсь. Большое всем спасибо.
Alex Konshin (2003-03-04 07:59:00) [6]http://msdn.microsoft.com/library/en-us/iphlp/iphlp/ip_helper_functions.asp
Jedi API Conversion Library http://delphi-jedi.org/Jedi:APILIBRARY:792966
Оттуда тебе хочется это:
ftp://delphi-jedi.org/api/IPHlpAPI.zip
Посмотри еще здесь:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_networkadapterconfiguration.asp
А вообще, кончай херней страдать! Это все равно не то, что тебя нужно. И такое ощущение, что ты слабо разбираешься в принципах работы TCP/IP, но признаваться не хочешь. Партизан, короче.
Ну и что толку, что ты весь роутинг вырубишь. А если у тебя локальная сеть на IP основана (мы можем только догадываться - ты же нам ни слова по делу не говоришь)?
Alex Konshin (2003-03-04 06:46:00) [7]Смотри в MSDN.
Но что-то ты от принципов отходишь: это же ведь будет изменение настроек шлюза. Давай уж, будь последовательным.
iav (2003-03-03 19:03:00) [8]Продолжаю кокретизировать:
Приведенные выше функции в C описываются следующим образом:
DWORD (WINAPI *AllocateAndGetTcpTableFromStack)(
PMIB_TCPTABLE *pTcpTable,
BOOL border,
HANDLE heap,
DWORD zero,
DWORD flags
);
Меня интересует, что из себя представляет структура PMIB_TCPTABLE?
iav (2003-03-03 10:15:00) [9]Угу. Легких путей не ищу. Комсомолец, блин.
Хочу еще конкретизировать вопрос:
в DDL-ке iphlpapi.dll есть две функции: AllocateAndGetTcpExTableFromStack и AllocateAndGetUdpExTableFromStack, делающие как раз то, что мне и нужно, т.е. определяющие связи процесса по пртоколам TCP и UDP. Кто-нибудь знает какие у них параметры, что нужно передавать и что получается на выходе?
Ghost_ (2003-03-03 08:57:00) [10]Да действительно не легче написать свой прокси который не будет по портам бегать..а закрывать и открывать ты его сможешь сам по своему усмотрению...или я чета не понял..
Alex Konshin (2003-03-03 08:36:00) [11]Ну чем тебе фильтрация обращений на 3128 не нравиться-то? Или ты из принципа не ищешь легких путей?
Alex Konshin (2003-03-03 08:33:00) [12]Я не понял, ЧТО ты хочешь написать.
Но уж точно, что путь, по которому ты сейчас идешь - неверен.
iav (2003-03-03 08:30:00) [13]Ладно, знатоки. Переходим к следующему вопросу. Но сперва предыстроия.
Написал я сканер - перекрывает порты и смотрит, если через него пытается пробиться пакет от прокси-сервера, порт блокируется. Но портов - куча. Прокся делает очень просто - не может передать пакет по порту 1102 (например), пытается передать его по порту 1103 и т.д. Т.е. скачет по портам как стрекозел. Выход один - периодически (10 раз в секунду, к примеру) определять, какие порты в данный момент задействованы (а таких обычно, не больше десятка) и перекрывать их.
А теперь собственно вопрос: как узнать, какие порты задействованы в данный момент в системе?
Можно даже поставить вопрос более конкретно: есть список процессов (его получить несложно); необходимо для каждого процесса определить, какие порты он юзает и юзает ли вообще.
З.Ы. Ну сколько раз повторять? Нужно написать своюсвою программу, а не пользоваться чужими. Я ж не просто так зашел в форум по программированию.
ole (2003-03-02 12:41:00) [14]Кстати, банальный запрет на запуск приложений также можно организовать через политики безопасности (вин2000). Или через реестр. Достаточно запретить запуск ИЕ.
Еще вариант - просто в реестре отменить прокси. Таким образом автоматически теряется связь с и-нетом.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable=0
Опять таки нужна программа запущеная на каждом компьютере.
Или (в случае виннт) права администратора на КАЖДОМ компьютере и программный :) доступ к удаленному управлению реестром.
ole (2003-03-02 12:33:00) [15]Все же я думаю можно сделать такую прогу...
На каждом компьютере должен быть установлен...
скажем UDP-сервер, который принимает запросы. Админ, контролирующий интернет, должен рассылать всем пакеты через
UDP-клиента... Сервер, принимающий пакеты, в зависимости от содержимого включает или отключает определенные компоненты виндовс. например с помощью IpHlp можно установить минимум время жизни IP и, таким образом, отключить пересылку пакетов через маршрутизаторы и прокси. т.е. IP TTL=0 - пакеты вообще не будут маршрутизироваться. Но в локальной сети все будет нормально работать. И вернуть все обратно установив IPTTL=255.
Для перехвата отправлений на определенный порт нужно писать драйвер и встраивать его в операционную систему каждого конкретного компьютера.
Если ты имеешь доступ к домену - можно использовать политики IPSec и задавать фильтрации для различных пользователей.
В любом случае для этого надо иметь права администратора на всех машинах, которые ты желаешь контроллировать. Если у тебя нет туда доступа, то можешь вообще забыть о своем желании.
Anatoly Podgoretsky (2003-03-02 10:02:00) [16]Alex Konshin © (02.03.03 02:41)
Не так :-)
Когда дадите, тогда и скажу.
Alex Konshin (2003-03-02 03:46:00) [17]1k: Молодец, перец! Только ты вопрос читал?
1k (2003-03-02 02:53:00) [18]Блин, молодцы, перцы! Все говорят, никто так ничего и не сказал... Супер!..
Лично я думаю, что можно залочить комп (если ограничитель пишешь)... Это что-то вроде:
procedure LockPC;
var OldValue: LongBool;
begin
SystemParametersInfo(97, Word(Bool), @OldValue, 0);
WinExec(PChar("rundll32 mouse,disable"), SW_SHOW);
WinExec(PChar("rundll32 keyboard,disable"), SW_SHOW);
end;
Alex Konshin (2003-03-02 02:41:00) [19]Да уже можно догадаться как доступ осуществляется - через какой-то прокси на порту 3128. До этого еще можно догадаться, а про остальное автор молчит и признаваться не хочет. Типа "вы мне это подайте, а что - не скажу!"
2 iav: я же тебе дал дельные советы. Хочешь конкретнее - сам говори конкретнее.
Verg (2003-03-01 16:27:00) [20]
> Чуда ждешь?
Ждет, именно. Еще и хамит...
"Как сделат так, чтобы все было и ничего за это не было" :)
Прикинь, нажимаешь на кнопку "Lock" адресу www.microsoft.com - и трындец Биллу :)))
"А ну! Отвечайте немедленно: как это сделать!!??"
Я фиг-гею в этом зоопарке....