Данная статья возникла по причине экономии трафика. Количество
трафика у нас отграниченно и поэтому была поставлена задача запретить
скачивание и проссмотр порно сайтов.
И так решение довольно простое. Но для начала вам необходимо поднять Nating
Не забудьте установить SQUID
#apt-get install squid
Я буду использовать два сетевые карты на eth0 приходит UpLink, а через eth1 выход на свитч со своей подсеткой
Для начала создадим файлы которые будут содержать все необходимое (название файлов может быть произвольным).
Данный файл будет блокировать попытку сказать файлы с такими расширениями
#nano /etc/squid/files
И второй файл блокировка по меткам т.е отдельным словам который вводят в поисковик(порно, секс и т.д.)
#nano /etc/squid/words
И многое другое которое я думаю вы перечислите сами.
Создадим файл с запрещенными сайтами
#nano /etc/squid/site
Далее лезем в конфиг squid’a
#nano /etc/squid/squid.conf
найдем строчку и добавим после нее:
acl CONNECT method CONNECT
Сразу создадим группу которой разрешенно все
#admin access
acl boss src 192.168.1.250-192.168.5.254
http_access allow boss
И далее вставим это (блокировка по времени, в другое время доступ закрыт):
1 | acl home_network src 192.168.5.0/24 |
2 | acl TimeStamp time M T W H F 09:00-20:00 |
3 | acl block_download urlpath_regex -i "/etc/squid/files" |
4 | acl block_search url_regex "/etc/squid/words" |
5 | acl block_site url_regex "/etc/squid/site" |
7 | http_access deny deny_rash TimeStamp |
8 | http_access deny wordsblock TimeStamp |
9 | http_access deny sblock TimeStamp |
Далее есть второй вариант не использовать расписание доступа (свободный график)
1 | acl home_network src 192.168.1.0/24 |
2 | acl block_download urlpath_regex -i "/etc/squid/files" |
3 | acl block_search url_regex "/etc/squid/words" |
4 | acl block_site url_regex "/etc/squid/site" |
6 | http_access deny block_download |
7 | http_access deny block_search |
8 | http_access deny block_site |
Правило хорошего тона это: Сначала разрешаем, а лишь потом запрещаем.
Далее чуть ниже найдем пункт
# And finally deny all other access to this proxy
http_access deny all
и до строчки http_access deny all вставим группу которую загоним под фильтр(ведь сначала разрешаем, а потом запрещаем).
# And finally deny all other access to this proxy
#user group acl office src 192.168.1.10-192.168.1.20 http_access allow office
http_access deny all
И чтобы не ребутать сам squid запустим комманду
#squid -k reconfigure
Далее создаем iptables который будет заворачивать все запросы на 80 порт на порт сквида 3128
#nano /etc/init.d/iptables
добавим строчку
1 | iptables
-t nat -A PREROUTING -s 192.168.5.0/24 ! -d 192.168.5.175 -p tcp -m
multiport --dport 80,8080 -j REDIRECT --to-port 3128 |
либо можно не заморачиваться и добавить другую строчку по короче
1 | iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 |
И сделаем его испольняемым
#chmod +x /etc/init.d/iptables
И добавим в автозагрузку ибо по умолчанию в Debian, он не запуститься
#update-rc.d iptables defaults
Проверить запустился ли iptables можно так
#iptables -t nat -L
root@hserver:/etc# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp – 192.168.1.0/24 !192.168.1.1 multiport dports www,http-alt redir ports 54321
Если нет последней строчки значит он не запущен запустить можно так
#/etc/init.d/iptables iptables
Выложу также свой конфиг сквида, который содержит всего 76 строк
полезной информации, где были удаленны закомменченные строки и прочее
не нужная инфа. Скачать можете тут
|