Как заблокировать сайт штатными средствами ubuntu?
Всем здравствуйте.
На работе поступила задача заблокировать несколько сайтов vk, fb, youtube, итд. и если честно, я думал что с этими задачами вполне может справиться iptables но так как я работаю немного в другой области с сетевым администрированием я сталкиваюсь очень мало...
Что есть на данный момент
Ubuntu server 12.04
eth0 - внешний интерфейс
inet addr: 94.159.48.42
eth1 - внутренний интерфейс
inet addr: 192.168.0.250
На серевере настроен проброс интеа и еще пары портов + небольшой фаервол.
Что я пробовал:
Блок
#iptables -A FORWARD -m string --string "vk.com" --algo kmp --to 65535 -j DROP
Разблокировка для mac
#iptables -A FORWARD -m mac --mac-source b8:8d:12:0f:32:90 -m string --string "vk.com" --algo kmp --to 65535 -j ACCEPT
Тут все неплохохо, но! Если открыть сайт на котором тусует виджет контакта - он будет тупить а может и не откроется.
Если обойти DNS и стучаться по кешу DNS то доступ есть...
Для решения проблемы блочим пул ip vk
#iptables -A FORWARD -s 95.142.200.0/21 -j DROP
...
так это разблокируем для mac
#iptables -A FORWARD -m mac --mac-source b8:8d:12:0f:32:90 -s 95.142.200.0/21 -j ACCEPT
...
Если проделать те же фокусы с youtube то он ведет себя вообще очень странно :)
Самым главным минусом такого подхода является факт того что сторонние сайты с виджетами блокируемых сайтов тупят...
Я уже третий день перелопачиваю свои правила iptables но никак не могу добиться нужного:
- Заблокировать несколько сайтов (желательно по домену) для болшей массы машин в сети.
- Организовать доступ к этим сайтам для некоторых машин по mac.
- Не нарушить работу сторонних сайтов.
Отчаявшись уже посматриваю в сорону squid, но вычитал что там тоже не все так гладко...
Если честно, мне кажется что это можно решить пробросом, аля все запросы по доменам завернуть на мой же сервер, а там отдать либо 404 либо пустой лист, но с этой частью iptables я вообще мало знаком - так что не смог правильно стоставить правило.
Прошу от сообщества помощи! Всех благодарю за внимание и ваши ответы!
Вы можете только делать скрины раб столов или поставить всем расширение на браузер (кстати совсем не сложно делается) которое будет просто при обнаружении верстки запрещенного сайта его ломать. Против анонимайзеров поможет.
1) поменять правила ACCEPT и DROP местами
2) используй ipset, адреса в который можно добавлять резолвингом по крону или узнаешь с какого-нибудь bgp-резолвера.
А виджеты на сайтах висят скорее всего из-за не всех фильтруемых IP-шников. Узнай все его адреса и отфильтруй их.
Но все же прокси для этого подходит лучше.
Вы пытаетесь решать вопрос не тем инструментом.
Для ваших целей таки нужно использовать Squid в режиме прозрачного проксирования и его acl. Вы сможете и запретить нужные сайты, и разрешить нужным IPшникам ходить на них.
iptables не предназначен для решения ваших задач.
dhcp с привязкой по макам и сквид в виде трансперент-прокси — ваши инструменты.
Если нужно подробней, задавайте вопросы.
Эргил, могли бы вы помочь, подсказать или написать инструкцию, как настроить в школе компьютеры, чтобы: 1. Ученики, если побаловались с настройками, чтобы они обнулялись. 2. Чтобы ученики не могли открыть посторонние сайты, кроме тех, которые я явно одобрил. 3. Единый источник загрузки ПО.
Антон Михайлов: 1. Используйте guest, он в Ubuntu есть, но по умолчанию выключен. По окончании сессии настройки сбрасываются. 2. Squid в прозрачном режиме на гейте и белые листы на нем. 3. Собственно ubuntu и ставить все только из официальных репозиториев.
Эргил Осин А почему средствами iptables не получается заблокировать пул-ip адресов вконтакте? в чем именно причина? я понимаю,что блокировать сайты нужно через squid