Операционная система 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