Евгений Борисов
воскресенье, 27 февраля 2005 г.
Организовать шлюз в internet для небольшой сети.
Первое что необходимо сделать это выбрать программное обеспечение и аппаратуру. В качестве основного ПО будем использовать средства OS FreeBSD [ 1 ]. Из оборудования для шлюза, кроме собственно компьютера, понадобится: модем (лучше внешний) и сетевая карта.
Для подключения к internet через модем обычно используют одну из двух программ ppp или pppd .
Для работы pppd необходимо включить в конфигурацию ядра опцию pseudo-device ppp 1 .
Пример настроек:
Далее настроим фильтр сетевых пакетов (firewall).
Основной принцип [
2
] - ''сервера это двери''.
Посмотреть список ''открытых дверей'' можно с помощью :
netstat -na | grep LISTEN
Все что ''слушает'' сеть ( ftpd, inetd, sendmail etc.) должно быть, по возможности, отключено, локализовано или спрятано за firewall.
# отключить inetd inetd_enable="NO" # локализовать sendmail sendmail_enable="NO" # локализовать демон печати lpd lpd_flags="-4 -s"
:0 local /usr/X11R6/bin/X -nolisten tcp vt9
firewall это фильтр сетевых пакетов, который пропускает или отбрасывает пакеты согласно системе правил в файле конфигурации. Необходимо включить в ядро следующие параметры:
options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100
Чтобы включить межсетевой экран, в файл /etc/rc.conf добавим :
firewall_enable="YES" firewall_type="simple" firewall_quiet="YES"
Далее поместим правила фильтрации пакетов [
5
]
в
/etc/rc.firewall
интерфейсы: внешний (модем) -
tun0
, внутренний (сетевая карта) -
vx0
DNS провайдера: 195.5.27.244, 195.5.6.10
Чтобы проверить безопасность сети, вы можете просканировать её извне, например при помощи Sygate Online Services [ 6 ]. Попробуйте сканирование как со шлюзовой машины, так и с других машин вашей сети.
Описанных в настроек достаточно чтобы успешно соединятся с internet . Далее настроим собственно шлюз, рассмотрим механизм преобразования сетевых адресов (nat) и кеширующий прокси (squid).
Доступ в internet для других машин в сети можно организовать по разному, далее рассмотрим два варианта - nat и squid.
Первый вариант организации работы это шлюз сетевого уровня. Для этого необходимо включить маршрутизацию (gateway) и механизм преобразования сетевых адресов (nat), чтобы все узлы могли ходить в сеть используя один ip, выданный провайдером при соединении.
Этот вариант относительно прост и нетребователен к ресурсам машины, в такой конфигурации система может успешно работать даже на компьютере с 486 процессором.
Для успешного функционирования шлюза, ip-адреса в LAN должны иметь вид 192.168.x.x .
gateway_enable=''YES'' natd_enable=''YES'' natd_interface=''tun0'' natd_flags=''-dynamic''
nat enable yesа файл /etc/rc.conf НЕ содержит:
ppp_nat="YES"
$fwcmd add divert natd all from any to any via tun0
PPP ON node2> show ipcp
Второй вариант организации работы это шлюз уровня приложений. Для этого нам понадобится т.н. кеширующий прокси сервер - squid[ 7 ]. Использование этого варианта дает нам достаточно мощный и гибкий инструмент для управления доступом пользователей в internet . К примеру, можно делить пользователей на группы, предоставляя каждой группе доступ только к нужным ей ресурсам, отсекать рекламные банеры и доступ к нежелательным сайтам.
cd /usr/ports/www/squid && make all install clean
squid -z
изменить /etc/rc.conf :
gateway_enable="NO" natd_enable="NO"
из /etc/rc.firewall убрать строку:
$fwcmd add divert natd all from any to any via tun0
/usr/local/etc/rc.d/squid.sh start
squid_enable="YES"
cd /usr/ports/www/squidGuard && make all install clean
chown -R squid:squid /var/db/squidGuard chown squid:squid /var/log/squidGuard.log chown squid:squid /usr/local/squid/log/squidGuard.log
$ echo "http://www.sex.com - - GET"| squidGuard http://www.univ.kiev.ua -/- - GET
# использовать фильтр squidGuard redirect_program /usr/local/bin/squidGuard # сколько экземрляров squidGuard запускать redirect_children 2 # работать только через squidGuard redirector_bypass off
/usr/local/etc/rc.d/squid.sh stop /usr/local/etc/rc.d/squid.sh start
# распаковываем обновления cp blacklists.tar.gz /tmp && /tmp && tar -zxvf blacklists.tar.gz # будем обновлять базу porno cd /var/db/squidGuard/porno # обновляем список доменов cat /tmp/blacklists/porno/domains domains | sort | uniq > domains.1 mv domains.1 domains # обновляем список ссылок cat /tmp/blacklists/porno/urls urls | sort | uniq > urls.1 mv urls.1 urls # обновляем regexp'ы cat /tmp/blacklists/porno/expressions expressions | sort | uniq > expressions.1 mv expressions.1 expressions # устанавливаем доступ к файлам chmod 750 domains urls expressions # генерируем базы cd .. ; squidGuard -C all # устанавливаем права chown -R squid:squid *
после обновления баз надо перезапустить squid