Запрещаем NAT пользователям посещать не желательные сайты с помощью iptables в CentOS 5.6
Собственно данная статья является своего рода продолжением статьи и про натройку NAT сервера на базе CentOS 5. Напомню, ввиду того что возиться со SQUID не было ни настроения и ни желания, всех корпоративных пользователей стал выпускать в сеть просто через NAT, благо канал позволяет. Но, в свою очередь мне пришлось столкнулся с проблемой ограничения пользователей на доступ к социальным сетям и развлекательному контенту. Вообще, единственное верное решение в моем случае — правила, разрешающие, или в свою очередь запрещающие доступ к ресурсам. Но в силу некоторых особенностей iptables каждое правило для каждого домена придется дописывать ручками, что согласитесь не так уж и удобно! И вот. по гуглив решение пришло, толи с одного русскоязычного, толи с одного англоязычного блога, не суть. Да, неизвестны мне блоггер, если ты прочитаешь эту статью и увидишь соответсвие своему посту отпишись в комментариях. копирайт будет незамедлительно выставлен.
Ну хватит слов, приступим к реализации!
Для начала определимся, who is who!
В моем случае имеется настроенный NAT, 2 сетевых интерфейса eth0 — локальная сеть и eth1 — внешняя сеть с белым IP и широким каналом. На основе этих данных готовим скрипт fw_block.sh следующего содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/bash set +x lan="192.168.0.0/24" inet="eth1" BLACKLIST="/root/blacklist.url" if [ -z "`iptables -n -L | grep -i "chain check_ip"`" ]; then iptables -N check_ip; fi if [ -f $BLACKLIST ]; then iptables -F check_ip; iptables -I FORWARD 1 -s $lan -o $inet -j check_ip iptables -A check_ip -s 192.168.0.254 -o eth1 -j ACCEPT iptables -A check_ip -s 192.168.0.103 -o eth1 -j ACCEPT cat $BLACKLIST | while read line do echo -e "${line}" iptables -A check_ip -d "${line}" -j DROP done iptables -A check_ip -j RETURN fi |
После создаем файлик blacklist.url со следующим содержанием:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | odnoklassniki.ru www.odnoklassniki.ru vk.com www.vk.com facebook.com www.facebook.com www.fb.com fb.com vk.cc www.vk.cc vkontakte.ru www.vkontakte.ru my.mail.ru www.my.mail.ru rutube.ru youtube.com www.youtube.com www.rutube.com |
Запускаем скрипт, правила добавляются в iptables, пользователи социальных сетей не видят! Админ счастлив!
Ну и конечно же вы заметили в скрипте строки:
1 2 | iptables -A check_ip -s 192.168.0.254 -o eth1 -j ACCEPT iptables -A check_ip -s 192.168.0.103 -o eth1 -j ACCEPT |
Это своего рода исключения. На указанные ip адреса правила ограничений не действуют.
Вот собственно и все. Если же у вас в копилке есть более изящный метод — поделитесь в комментариях, посмотрим, заценим, затестим, откомментим!
Popularity: 10% [?]
Похожие записи:
- Немного про NAT в CentOS
- Настраиваем корпоративный PROXY сервер на базе CentOS5+Squid + SAMS + NCSA Auth
- Настройка Proftpd + MySQL + Fedora (CentOS, RHEL, etc)
- Nginx rewrite конфиги под популярные CMS, список будет пополняться
- Nginx + PHP-FPM или полный отказ от Apache2








