Главная > BSD\Linux, Программное обеспечение BSD\Linux > Запрещаем NAT пользователям посещать не желательные сайты с помощью iptables в CentOS 5.6

Запрещаем 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% [?]




Похожие записи:

coded by nessus
  • Alexander Neverov

    Unknown Unknown

    Подскажите пожалуйста, если я хочу не запретить избранные сайты (а все остальное разрешить), а разрешить избранные сайты (а все остальное запретить) — для отдельного хоста в сети (для всех остальных — так как у вас), что и в каком месте нужно дописать в вашем скрипте? 

Plugin from the creators of Brindes :: More at Plulz Wordpress Plugins