Friday, November 17th, 2017

Интернет шлюз на FreeBSD

Published on Март 30, 2009 by   ·   Комментариев нет

Построение шлюза в глобальную сеть на FreeBSD — это один из самых частых

read more

случаев использования этой системы. New Balance 446 homme Основные плюсы данного решения это: стабильность, масштабируемость, устойчивость к высоким нагрузкам и естественно бесплатность всего используемого ПО. В этой заметке я опишу свой опыт развертывания Интернет-шлюза на FreeBSD 7.0 RELEASE amd64 с использованием межсетевого экрана IPFW, демона трансляции сетевых адресов natd и прокси-сервер squid. Начнем с установки IPFW. arcteryx womens underwear Для этого нужно пересобрать ядро с поддержкой нескольких функций. Kris Jenkins Villanova Wildcats Jersey Заходим в директорию соответствующую архитектуре нашего процессора и делаем копию дефолтного ядра в 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" firewall_type="open" firewall_logging="YES" natd_enable="YES" natd_interface="rl0";

Перезагружаемся. ADIDAS Yeezy 350 Boost

Если все нормально, то в итоге у нас должен получиться открытый фаервол с NAT. Пока оставим как есть. Drew Brees Purdue Boilermakers Jersey Следущим этапом у нас будет установка прокси-сервера.

 # cd /usr/ports/www/squid # make install clean # rehash

Дальше редактируем конфигурационный файл сквида. buy mu legend zen У меня сейчас небольшая офисная сеть без домена, поэтому с авторизацией не занимался — все ограничения идут по ip: /usr/local/etc/squid/squid.conf

 # порт который слушаем http_port 3128 # порт прозрачного прокси http_port 3129 transparent # список слов, которые будучи обнаруженными в URL # вызывают обработку без кэширования hierarchy_stoplist cgi-bin ? # список ACL которые вызывают несовпадение с кэшем, # и, запрос с ответом кэшироваться не будут acl QUERY urlpath_regex cgi-bin \? # собственно - правило что не кэшируем no_cache deny QUERY # сколько отдаём ему памяти cache_mem 256 MB # Директория для кэша, числа - размер кэша в Mb, # число директорий первого уровня, число директорий второго # уровня в каждой директории первого. cache_dir ufs /usr/local/squid/cache 50000 64 512 # лог доступа - первый параметр путь, второй - формат # форматы описаны в дефолтовом файле.  <a href="http://www.fidelity-group.it/adidas-shop.html">adidas shop</a> <a href="http://www.epc2014.co.uk/air-jordan-15.html">air jordan 15</a> access_log /var/log/squid/access.log # лог активности менеджера хранилища. <a href="http://www.casaled.es/nike-roshe-two.html">NIKE ROSHE TWO</a> Показывает, какие # объекты были сохранениы/удалены из кэша и как долго. <a href="http://www.coat-couvertures.fr/jordan-basket.html">jordan basket</a> # мне он не нужен, а места занимает прилично. <a href="http://www.amisdukmzero.fr/nike-homme/nike-air-max-1-homme.html">Nike Air Max 1 Homme</a> cache_store_log none # файл hosts, проверяемый при запуске. <a href="http://www.canottebasket.it/acquista-per-squadra/philadelphia-76ers.html">Philadelphia 76ers</a> Из него берётся # доменное имя и добавляется к неполным адресам (которые # не содержат ни одной точки в имени) hosts_file /etc/hosts # директория где хранятся HTML c текстами ошибок error_directory /usr/local/etc/squid/errors/Russian-1251 cache_log /var/log/squid/cache.log #debug_options ALL,5 pid_filename /var/log/squid/squid.pid # порты на которе можно ходить пользователям acl safe_ports port 80 # http acl safe_ports port 21 # ftp acl safe_ports port 443 # ssl acl icq_ports port 5190 # ICQ # пользователи у которых просто интернет - с ограничениями acl inet_users src "/usr/local/etc/squid/inet_users" # пользователи с полными парвами на доступ в инет acl inet_full src "/usr/local/etc/squid/inet_full" # Описываем все сети все IP acl all src 0.0.0.0/0.0.0.0 # описываем локалхост acl localhost src 127.0.0.1/255.255.255.255 # запрещённые в URL выражения (для всего УРЛа) acl deny_url url_regex "/usr/local/etc/squid/deny_url" # запрещённые доменные имена acl deny_domains dstdomain "/usr/local/etc/squid/deny_domains" # пользователи с ограниченным доступом в интернет, только # определённый набор ресурсов и всё. <a href="http://www.freernflyknitfemme.fr/nike-roshe-run-porte-femme.html">Nike Roshe Run Porté Femme</a> acl inet_restrict src "/usr/local/etc/squid/inet_restrict" # список сайтов для тех у кого их определённый набор acl domains_for_restrict dstdomain "/usr/local/etc/squid/domains_for_restrict" # пользователи ICQ acl inet_icq src "/usr/local/etc/squid/inet_icq" # Разрешаем доступ ко всему группе inet_full http_access allow inet_full # Зарубаем запрещённые куски url, рубим рекламу если надо #http_access deny deny_url # Разрешаем асечный порт тем у кого есть аська http_access allow inet_icq icq_ports # зарубаем запрещённые домены http_access deny deny_domains # зарубаем все порты проме safe_ports http_access deny !safe_ports # разрешаем инет обычным пользователям http_access allow inet_users # разрешаем инет ограниченным пользователям на разрешённые сайты http_access allow inet_restrict domains_for_restrict # блокируем всё лишнее http_access deny all

Вкратце по конфигу: слушаем как на стандартном порту, так и прикрутили прозрачный прокси; принимаем запросы http, https ftp, icq; распределение доступа производится на основе правил и файлов, в которых прописываются ip нужных компьютеров. Дальше создаем и заполняем содержимым все файлы, указанные в этом конфиге, делаем пользователя squid владельцем папки с кэшем, после чего создаем кэш и запускаем сквид:

 # chown -R squid:wheel /usr/local/squid # squid -z # /usr/local/etc/rc.d/squid start # ps -waux | grep squid squid 965 0,0 0,1 7688 2076 ?? Is 21:37 0:00,00 /usr/local/sbin/squid -D squid 967 0,0 1,0 28168 20008 ?? S 21:37 0:06,00 (squid) -D (squid) squid 1008 0,0 0,0 2532 844 ?? Is 21:37 0:00,00 (unlinkd) (unlinkd) root 7943 0,0 0,1 6928 1428 p0 S+ 16:02 0:00,00 grep squid

Теперь опять вернемся к фаерволу. Он у нас есть, открытый — но толку-то от такого фаервола ? =) Создаем свой скрипт с правилами. UGG Casuals У меня он выглядит так: [cc lang=»bash» tab_size=»2″ lines=»-1″] #!/bin/sh # при работе по SSH, чтобы перечитать конфиг набирать nohup sh /etc/rules # Прежде, чем мы начнем, сбросим список ipfw -q -f flush # Установим префикс команды для набора правил cmd=»ipfw -q add» skip=»skipto 400″ wanip=»111.111.111.111″ # внешний IP lannet=»192.168.0.0/24″ # внутренняя сеть eif=»rl0″ # внешний интерфейс # Нет запретов внутри интерфейса смотрящего в локальную сеть $cmd 010 allow all from any to any via re0 # Нет ограничений на Loopback интерфейсе $cmd 020 allow all from any to any via lo0 # Рубим попытки lo0 куда-то лезть и откуда-то лезть на lo0 $cmd 030 deny ip from any to 127.0.0.0/8 $cmd 040 deny ip from 127.0.0.0/8 to any # отправляем всех на прозрачный squid $cmd 050 fwd 127.0.0.1,3129 tcp from $lannet to any 21,80,443,5190 out via $eif # Входящий NAT $cmd 060 divert natd ip from any to any in via $eif # Позволяем пакету проходить, если предыдущий был добавлен в # «динамическую» таблицу правил с разрешением состояния keep-state $cmd 070 check-state ############## Outgoing ################ # Исходящий PING $cmd 100 $skip icmp from any to any keep-state # Исходящий NTP $cmd 105 $skip udp from any to any 123 out via $eif keep-state # Разрешаем DNS $cmd 110 $skip udp from any to any 53 out via $eif keep-state $cmd 111 $skip tcp from any to any 53 out via $eif setup keep-state # Выпускаем пользователей в обход сквида $cmd 140 $skip all from $lannet to any 4899 out via $eif setup keep-state $cmd 150 $skip all from $lannet to any 3389 out via $eif setup keep-state $cmd 160 $skip all from $lannet to any 25 out via $eif setup keep-state $cmd 170 $skip all from $lannet to any 110 out via $eif setup keep-state # Разрешаем полный выход с сервака $cmd 190 $skip all from $wanip to any out via $eif setup keep-state ############# Incoming ################ # Запрещаем весь входящий трафик из зарезервированных адресных пространств $cmd 200 deny all from 192.168.0.0/16 to any in via $eif #RFC 1918 private IP $cmd 201 deny all from 172.16.0.0/12 to any in via $eif #RFC 1918 private IP $cmd 202 deny all from 10.0.0.0/8 to any in via $eif #RFC 1918 private IP $cmd 203 deny all from 127.0.0.0/8 to any in via $eif #loopback $cmd 204 deny all from 0.0.0.0/8 to any in via $eif #loopback $cmd 205 deny all from 169.254.0.0/16 to any in via $eif #DHCP auto-config $cmd 206 deny all from 192.0.2.0/24 to any in via $eif #reserved for docs $cmd 207 deny all from 204.152.64.0/23 to any in via $eif #Sun cluster $cmd 208 deny all from 224.0.0.0/3 to any in via $eif #Class D & E multicast # Запрещаем ident $cmd 215 deny tcp from any to any 113 in via $eif # Запрещаем весь сервис Netbios.


Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]