Операционная система FreeBSD
FreeBSD имеет следующие возможности:
· Многозадачность с регулированием приоритетов;
· Многопользовательская поддержка;
· Мощный TCP/IP-стек с поддержкой стандартов, таких как SLIP, PPP, NFS, DHCP и NIS;
· Стандарт X Window System (X11R6) предоставляет графический интерфейс пользователя (GUI);
· Двоичная совместимость с ПО для Linux, SCO, SVR4, BSDI и NetBSD;
· Доступность исходных текстов всей системы;
· Обширная online-документация.
FreeBSD основана на 4.4BSD-Lite от Computer Systems Research Group (CSRG) Калифорнийского Университета, Беркли.
Несколько примеров того, как используется FreeBSD:
· Интернет-службы: мощный TCP/IP стек делает FreeBSD удобной платформой для Интернет-приложений;
· FTP-серверы;
· Серверы World Wide Web;
· Межсетевые экраны и шлюзы NAT (IP-маскарадинг);
· Серверы электронной почты.
FreeBSD используется в качестве платформы на крупнейших сайтах в интернет, включая Yahoo!, Apache, Sony Japan, Netcraft, Weathernews.
Интернет шлюз на FreeBSD
Построение шлюза в глобальную сеть на FreeBSD - один из самых частых случаев использования этой системы. Основные плюсы данного решения: стабильность, масштабируемость, устойчивость к высоким нагрузкам и бесплатность всего используемого ПО.
Начнем с установки IPFW. Для этого нужно пересобрать ядро с поддержкой нескольких функций. Заходим в директорию соответствующую архитектуре нашего процессора и делаем копию дефолтного ядра в ROUTER:
# cd /usr/src/sys/amd64/conf
# cp GENERIC ROUTER
Редактируем наше новое ядро и добавляем новые функции:
cpu HAMMER
ident ROUTER
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
options IPFIREWALL # собственно файрволл
options IPFIREWALL_VERBOSE # логгинг пакетов, если в правиле написано log
options IPFIREWALL_VERBOSE_LIMIT=100 # ограничение логов options IPFIREWALL_DEFAULT_TO_ACCEPT # дефолтное правило - разрешающее
options IPDIVERT # необходимо для NAT
options IPFIREWALL_FORWARD # перенаправление пакетов
options DUMMYNET # ограничение скорости
Собираем и устанавливаем ядро:
# cd /usr/src
# make buildkernel KERNCONF=ROUTER
# make installkernel KERNCONF=ROUTER
Добавляем в файл rc.conf строки:
firewall_enable="YES"
natd_enable="YES"
natd_interface="vr0"
firewall_type="open"
firewall_logging="YES"
После перезагрузки имеем открытый фаервол с NAT.
/sbin/ifconfig vr0 195.213.21.67 netmask 255.255.255.224
/sbin/ifconfig vr1 192.168.4.1 netmask 255.255.255.0
/sbin/route add default 195.213.21.65
Просмотр сетевых настроек фаервола:
>ifconfig
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 195.213.21.67 netmask 0xffffffe0 broadcast 195.213.21.95
inet6 fe80::219:5bff:fe83:d87e%vr0 prefixlen 64 scopeid 0x2
ether 00:19:5b:83:d8:7e
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vr1: flags=8943<UP, BROADCAST, RUNNING, PROMISC, SIMPLEX, MULTICAST> mtu 1500
inet 192.168.4.1 netmask 0xffffff00 broadcast 192.168.4.255
inet6 fe80::219:5bff:fe84:6bfa%vr1 prefixlen 64 scopeid 0x3
ether 00:19:5b:84:6b:fa
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
Пример настройки таблицы фильтрации сетевых пакетов
#!/bin/sh
ipfw='/sbin/ipfw'
${ipfw} -f -q flush
${ipfw} add 100 permit ip from any to any via lo0
${ipfw} add 101 deny tcp from 124.121.0.0/16 to 195.213.21.67 25
#Rules for VPN
${ipfw} add 801 permit ip from 192.168.10.0/24 to 192.168.4.0/24
${ipfw} add 803 deny ip from 192.168.10.0/24 to any
${ipfw} add 900 divert natd ip from any to any via vr0
#Разрешение протокола icmp
${ipfw} add 1500 permit icmp from any to any
#Перенаправление web, icq на прокси SQUID
${ipfw} add 1501 forward 192.168.4.1:3128 tcp from 192.168.4.0/24 to any 80
${ipfw} add 1502 forward 192.168.4.1:3128 tcp from 192.168.4.0/24 to any 8080
#Разрешение протокола для доступа к серверу DNS
${ipfw} add 1600 permit udp from any 53 to any
${ipfw} add 1700 permit udp from any to any 53
# Разрешение протокола HTTP
${ipfw} add 2000 permit tcp from any 80 to 192.168.4.0/24 established
${ipfw} add 2100 permit tcp from 192.168.4.0/24 to any 80
# Разрешение протокола POP3
${ipfw} add 2600 permit tcp from any 110 to 192.168.4.0/24 established
${ipfw} add 2700 permit tcp from 192.168.4.0/24 to any 110
# Разрешение протокола SMTP
${ipfw} add 2800 permit tcp from 192.168.4.1 25 to 192.168.4.0/24 established
${ipfw} add 2900 permit tcp from 192.168.4.0/24 to 192.168.4.1 25
Прокси-сервер SQUID
SQUID – это программа, которая получает http/ftp запросы клиентов и по ним обращается к ресурсам Интернет. Применение прокси-сервера (squid) дает возможность использовать фиктивные IP-адреса во внутренней сети, увеличивает скорость обработки запроса при повторном обращении (кэширование), обеспечивает дополнительную безопасность. Прокси-сервер стоит применять лишь в том случае, если в сети три-четыре компьютера, которым нужен выход в Интернет. В этом случае запрос от браузера к прокси-серверу обрабатывается быстрее, чем от прокси к ресурсам Интернет, и таким образом увеличивается производительность.
SQUID может быть установлен из исходных текстов или в виде RPM-пакета. Установка RPM пакета SQUID обеспечивается вводом команды
rpm -ih squid-2.3.STABLE2-3mdk.i586.rpm
Свежая версия доступна в виде исходных кодов по адресу ftp://ftp.squid.org. Для распаковки исходных кодов, необходимо выполнить следующие команды:
cd /usr/src/
gunzip squid-2.3.STABLE2-3-src.tar.gz
tar xvf squid-2.3.STABLE2-3-src.tar.gz
cd squid
Установка:
./configure --prefix=/usr/local/squid
make all
make install
Squid установливается в каталог, заданный ключом prefix – /usr/local/squid.
Squid использует файл конфигурации squid.conf. Обычно он располагается в каталоге /usr/local/squid/etc.
Команда запуска SQUID:
/usr/local/squid/bin/squid
Формат файла squid.conf
http_port 3128 - порт для запросов клиентов
cache_swap_high число - уровень заполнения кэша (в процентном соотношении), при котором начинается ускоренный процесс удаления старых объектов.
ACL – определение списка доступа:
acl имя тип строка
http_access allow|deny aclname - разрешать доступ к прокси по http