Есть Linux 7.2 - шлюз в интернет для локальной сети, ходят через squid. Трафик интернета каждого пользователя считается. Проблема - если я заперещаю доступ к интернет в сквиде для конкретного IP, а у клиента в свойствах прописан DNS провайдера, то он все равно ходит в интернет (в логе сквида есть записи куда ходит этот IP). Подскажите, как запретить такому клиенту доступ к интернет?
|
ну это вряд ли из-за ДНС, это скорей всего как-то не так запрещаете, напишите как...
а чтобы запретить доступ к ДНС провайдера нужно подънять файрволл и закрыть доступ на 53 порт во внешней сети из внутренней сети... |
Guest 80 247 100
пока я еще никак не запрещаю клиентам доступ к DNS провайдера, ищу варианты - как это можно сделать. Файрволл - ipchains, но в правилах я не могу полностью разобраться, на два интерфейса eth0, eth1 их прописано примерно 200 - это нормально? а 53 порт я могу закрывать только файрволом? |
Ak74
Цитата:
Я имел ввиду покажите конфиг squid-а в том месте где вы пытаетесь запретить Цитата:
|
1. Можно установить внутренние днс сервера(лучше два)
Один на шлюзе для внешней и внутренней сети(если например есть свой домен аля 2-3 уровня), второй во внутренней сети и для нее предназначенный во сновном(secondary dns, подойдет любой старый комп ибо на нем будет только днс). Итого: а) на клиентах мы прописываем только наши днс - этим мы снимаем трафик к днс от клиентов во внешнюю сеть б) на первом сервере(шлюзе) мы указываем днс провайдера в resolv.conf и соответственно через опции для наймеда - forward в) на втором сервере мы указываем только днс к шлюзу...(он для этого и служит чтоб держать клиентов внутренней сети, заадно будет еще и кэшировать их запросы...) 2. Читаем книгу Брондмауэры в линукс и идем на сайт авторов там берем файло для настройки firewall-а для ipchains (Он очень подробный.... только немного подправить под себя...) 3. Нужно - еще желательно настороить нат... для заворота всех запросов от клиентов по 80 порту на 3128(аля прозрачное проксирование, и для всех остальных используемых портов -21 итд) _____________________ by sergleo |
Guest 80 247 100
В сквиде я никак не запрещаю доступ от клиента с прописанным ДНС провайдера - я не знал, что можно такое делать :-( Цитата:
|
Цитата:
|
Почитал ipchains-howto
Насколько я понял - надо клиентам внутренней сети закрыть порт 53 (eth0-внутренний интерфейс, eth1-наружный) ipchains -A input -p tcp 53 -i eth0 -s 10.0.0.0/255.255.255.0 -j DENY так? |
Ak74
Ну, примерно так. Только надо написать еще точно такое же правило, но для протокола UDP. И потом, если у тебя на eth0 висит только сеть 10.0.0.0/255.255.255.0, то либо условие "-s", либо условие "-i" являются избыточными. В принципе, наличие обоих условий одновременно не является ошибкой, но можно обойтись и более простым правилом. Хотя, как тут правильно указали, проблема не в том, как запретить доступ к DNS средствами ipchains, а в том, как правильно закрывать доступ squid'ом. Т.е. не надо пытаться удалить гланды через задний проход. |
ooptimum
Плиз, подскажите хать в каком направлении рыть в squid, чтобы закрыть клиентам DNS-запросы. В доках по squid я не встречал такой возможности, у меня стоит squid 2.3 |
2Ak74
Да не нужно им закрывать DNS-запросы, пойми ты наконец. Хрен с ними, пусть резолвят. Главное, чтобы коннекции наружу у них не удавались. Иначе следующий этап твоих вопросов будет - "а они теперь напрямую по IP-адресам ходить начали" :) Говорят тебе - конфиг squid'а покажи. Ну, забей то, что конфиденциально, буквами какими там... |
Мой squid.conf. Squid v. 2.3
http_port 10.0.0.1:3128 http_port xxxx.xxxxxxxx.net.ua:3128 acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY maximum_object_size 256 KB ipcache_size 1024 ipcache_low 90 ipcache_high 95 fqdncache_size 1024 cache_dir ufs /var/cache2 512 64 256 cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log none emulate_httpd_log on mime_table /etc/squid/mime.conf log_mime_hdrs off pid_filename /var/run/squid.pid debug_options ALL,1 log_fqdn off ftp_user Squid@motor.melitopol.net cache_dns_program /usr/lib/squid/dnsserver dns_children 5 pinger_program /usr/lib/squid/pinger refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 quick_abort_min 16 KB quick_abort_max 16 KB quick_abort_pct 95 negative_ttl 5 minutes positive_dns_ttl 6 hours negative_dns_ttl 5 minutes connect_timeout 120 seconds dead_peer_timeout 18000 seconds peer_connect_timeout 3000 seconds siteselect_timeout 4 seconds read_timeout 15 minutes request_timeout 30 seconds client_lifetime 1 day half_closed_clients on pconn_timeout 120 seconds ident_timeout 10 seconds shutdown_lifetime 30 seconds acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 21 443 563 70 210 1025-65535 acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl FTPs proto FTP acl PAGES urlpath_regex \.exe$ \.zip$ \.tar$ \.rar$ \.tgz$ \.mp3$ \.arj$ acl Mynet src "/etc/squid/ip-memz" acl Sqadmin src xxxxx.xxxxxxxxx.net acl myPeer src xxxxxx.xxxxxxxxx.net acl MyServers dstdomain xxxxx.xxxxxxxx.net.ua http_access allow manager localhost http_access allow manager Sqadmin http_access allow Mynet http_access deny manager all http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all icp_access allow all miss_access allow all acl ident_aware_hosts src 10.0.0.0/255.255.255.224 ident_lookup_access allow ident_aware_hosts ident_lookup_access deny all cache_mgr webmaster cache_effective_user squid cache_effective_group squid visible_hostname xxxxx.xxxxxxxx.net.ua httpd_accel_with_proxy off append_domain .xxxx.xxxxxxxx.net.ua log_icp_queries off cachemgr_passwd FG8tf all store_avg_object_size 13 KB store_objects_per_bucket 50 client_db off query_icmp off never_direct allow Mynet strip_query_terms on coredump_dir /var/log/squid/ always_direct allow all |
эээээ.... вот это я не понял.... %о)))
Цитата:
Цитата:
Добавлено: вообщем дело может быть и в этом... |
Ну, даже не знаю... Засада какая-то. На первый взгляд, конфиг нормальный - за исключением выше обруганых never_direct и always_direct, которые просто ни к селу, ни к городу. Имхо тут что-то еще. В store.log что на тех запросах, которые не должны пройти? Точно нормальные (2xx-3xx) коды? Просто у меня такое впечатление, что на самом деле NAT в сетке работает. Они убеждаются, что их squid не пускает (откуда и записи в логах), отключают его и прут напрямую, без squid'а.
Вот такая гипотеза. |
Открылась интересная деталь:
только клиенты WinXP с прописанным DNS провайдера могут ходить в интернет, когда им этот выход не разрешен. Более младшие версии Windows в таком случае (с такими же настройками как и в WiтXP) выхода в интернет не получают (проверил на двух разных Win200 WS)!!! Закоментировал never_direct allow Mynet always_direct allow all и перезапустил сквид - ничего не изменилось. |
если сеть внутренняя, шлюз с двумя карточками, внутренние адреса вроде 192.168.x.x то почему, как указывалось выше не поднять iptables (ipchains) и не перенапрвлять все запросы на 80 порт через Ваш прокси (3128), все запросы к DNS - к Вашему днс и т.д.
И запустить скрипт по крон, который при превышения лимита подымает дополнительные правила - все эти машины вместо 80 порта идут на Ваш какой-то там, на котором видят страничку, что их время истекло ;) (+ дополнительные правила пишутся в дополнительный файл, который читается в случае перезагрузки машины). Ну и скрипт с амнистией с начала месяца =) |
Возможно, я задаю глупую вопросы, администрированием Linux я начал недавно, еще не все понимаю. Прошу помощи знатоков.
Переустановил я squid. Ушли непонятные комбинации доступа в интернет. Теперь - если на на любом ПК прописать DNS провайдера ( и иногда, шлюз - адрес Linux), то получаем доступ в интернет при запрете в squid (при первой попытке доступа в его логе появляются записи с кодом 403). Означает ли это, что у меня работает NAT?, если да, то как узнать работает ли NAT? |
Узнать, работает ли nat легко
cat /proc/sys/net/ip_v4/ip_forward |
Professor
cat /proc/sys/net/ip_v4/ip_forward вернул 1. А что это значит? Если NAT включен, то как его отключить? |
Ak74
Цитата:
Посмотрите cat /proc/modules на присутствие там строк типа: iptable_nat ipt_MASQUERADE и аналогичных... Примичание для iptables... для ipchains к сожалению не подскажу... :( ______________________________ by sergleo |
Guest
/proc/modules ничего похожего нет. Закрыл Ipchains обращения по 53 порту для tcp, udp. С отключеныым прокси в браузере и прописанным ДНС на клиенте интернет не работает. Но стоит только к выше описанной комбинации прописать шлюз - адрес сервера - я получаю доступ к интернет. Пробовал закрыть ipchains и запросы на порты 80 и 8080 - не помогает. Посмотрел статистику, которая снимается с интерфейса - запросы от меня (мимо прокси) идут по самым разным портам: 1040, 3785 ... - вариантов много. Подскажите, по каким портам возможен запрос web-страницы мимо скида, т.е. какие закрыть? |
0 место 1 туда скинь и проверь ;)
|
ну это просто похоже на работу маскарадинга!
что скажет ээээээ..... скажем ipchains -ML ? |
Решил проблему так - написал новое правило для ipchains - закрыл на внутреннем интерфейсе обращение к порту 80. Только добавлять его пришлось с помощью опции -I первым номером в список, а не -A.
Но новое правило работает только до первого обрыва связи с провайдером. В howto ipchains написано: "Ваша текущая настройка firewall хранится в ядре, и таким образом будет потеряна на перезагрузке. Я рекомендую использовать скрипты `ipchains-save' и `ipchains-restore', чтобы ваши правила действовали постоянные" Единственное место, где у меня в файле есть строка ipchains-restore - это файл /etc/rc.d/init.d/ipchains. В нем данные восстанавливаются из файла-переменной $IPCHAINS-RESTORE. Как мне узнать значение этой переменной? |
Время: 21:05. |
Время: 21:05.
© OSzone.net 2001-