
Граница на замке
Антон Карпов, toxa@cterra.ru
Спецвыпуск: Хакер, номер #051, стр. 051-030-1
Поднимаем безопасный и функциональный шлюз для локальной сети
В Москве вовсю свирепствует "Стрим" - ночной кошмар домашних локальных сетей. Однако в других городах нашей необъятной Родины картина не такая радужная: даже в моем родном Питере полно районов, куда не ступала нога "домашнего" провайдера. А значит, самопальные локальные сети все еще живут и здравствуют. Как правило, строители таких сетей считают, что грамотно проложенные кабели и свитчи - это единственная основа надежной работы сети, а все остальное можно переложить на плечи Wingate. Разумеется, это мнение неверно, и ты еще можешь спасти свою сеть, если отделишь ее от интернета надежным шлюзом.
Суровый быт домашних локальных сетей
Основное отличие домашней локальной сети от маленькой корпоративной сети в особенностях поведения пользователей. Пользователи корпоративной сети обязаны соглашаться со всем, что прописано в документе под названием "Корпоративная политика", и терпеть ограничения на доступ к внешним почтовым серверам, авторизацию на прокси-сервере и т.д. В "дикой" локальной сети людям нужен интернет без лишних заморочек, к тому же, как правило, здесь обязательно обитают доморощенные "хакеры", которых хлебом не корми дай украсть чужого трафика. Кроме того, народ, который платит за скачанные мегабайты, вполне законно хочет регулярно отслеживать свою статистику. Наконец, пользователи вряд ли согласятся платить за дорогие свитчи с фильтрацией по портам, VLAN'ами и за мощное железо. Разумеется, провайдер, который протянет "последнюю милю", вряд ли будет всем этим озадачивать себя. Итак, на тебя смотрит видавший виды компьютер, готовящийся стать неприступным шлюзом. Первым делом водружаем на него OpenBSD и обновляем до актуальной -stable версии (на момент написания статьи таковой была 3.6-stable) предварительно распаковав в /usr/src исходники ядра и системы (пакеты src.tar.gz и sys.tar.gz с ftp://ftp.openbsd.org/pub/OpenBSD/3.6):
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
# cd /usr/src
# cvs -qz9 up -rOPENBSD_3_6 -Pd
Если в ядре начиная еще времен его релиза обнаруживали критические уязвимости, сначала пересобери его. В противном случае делать это настоятельно не рекомендуется, да и при пересборке крайне нежелательно менять конфигурацию ядра оставив дистрибутивный GENERIC:
# cd /usr/src/sys/arch/i386/conf
# config GENERIC
# cd ../compile/GENERIC
# make depend %26%26 make
# mv /bsd /bsd.old %26%26 cp bsd /bsd
# reboot
Теперь пересоберем userland:
# cd /usr/src
# make -k cleandir %26%26 make obj %26%26 make build
# reboot
Если машина слишком слабая, можно ограничиться наложением патчей с www.openbsd.org/errata.html. Это, в общем, и есть рекомендованный способ обновления OpenBSD. А кто нам мешает поразвлечься с пересборкой системы? ;)
Если ты чувствуешь себя настоящим мачо и вопреки всем предупреждениям решился пересобрать ядро со своим конфигурационным файлом, будь внимателен. Во-первых, четко следуй инструкциям www.openbsd.org/faq/faq5.html. Во-вторых, будь готов ко всему ;) Так, например, реализация непременно возникающего желания выкинуть поддержку IPv6 приведет к неработоспособности pf. А все из-за этих строчек в /etc/rc, осуществляющих первоначальное конфигурирование пакетного фильтра:
RULES="$RULES\npass out inet6 proto icmp6 all icmp6-type routersol"
RULES="$RULES\npass in inet6 proto icmp6 all icmp6-type routeradv"
Очевидно, pf ругается на отсутствие поддержки inet6 и падает лапками кверху. Закомментируй эти строчки или просто откажись от сборки своего ядра - на это вряд ли есть веские причины.
Сконфигурировать OpenBSD не сложнее, чем установить его. Классическое решение - шлюз, отделяющий локальную сеть с внутренней адресацией (сети 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 согласно RFC1918) от интернета. В этом случае нужно сконфигурировать оба интерфейса, включить маршрутизацию между интерфейсами (форвардинг) и настроить Network Address Translation (NAT). В OpenBSD сетевые карты настраиваются путем занесения в файл /etc/hostname.%26lt;имя_интерфейса%26gt; необходимой информации.
Внешний адрес:
# cat /etc/hostname.vr0
inet 62.89.2XX.XX 255.255.255.192 NONE
Внутренний адрес:
# cat /etc/hostname.vr1
inet 192.168.0.1 255.255.255.0 NONE
В /etc/sysctl.conf раскомментируй строчку:
net.inet.ip.forwarding=1
Информация о шлюзе провайдера (default gateway) заносится в файл /etc/mygate:
# cat /etc/mygate
62.89.2XX.1
Для пользователей локальной сети шлюзом по умолчанию станет внутренний интерфейс машины - 192.168.0.1. Наконец, если провайдер внес в свою зону имен A-запись для твоего шлюза (или если ты собираешься поднять свой dns-сервер, что вряд ли потребуется для домашней сети), то внеси имя машины в файл /etc/myname:
# cat /etc/myname
puffy.toxahost.ru
Если имя не обслуживается ни одним dns-сервером, то внеси то же имя в /etc/hosts:
62.89.2XX.XX puffy.toxahost.ru
Некоторые провайдеры предоставляют клиентам только внешние IP-адреса. В таком случае на твою локальную сеть будет выделена подсеть из диапазона адресов, принадлежащих провайдеру, а шлюз будет выполнять роль моста (bridge), прозрачного для сети. Поднять мост на OpenBSD просто как пять копеек:
# cat /etc/bridgename.bridge0
add vr0
add vr1
blocknonip vr0
blocknonip vr1
up
где vr0 и vr1 - интерфейсы, которые мы будем "бриджить". Хоть мост работает на втором уровне модели TCP и имеет дело исключительно с MAC-адресами, ему, тем не менее, можно присвоить IP-адрес для удаленного доступа. Строго говоря, "прозрачный мост" (transparent bridge) и мост с присвоенными адресами - разные вещи, так как ведут себя по-разному в некоторых случаях. В нашем случае требуется удаленный доступ к машине, но нет нужны присваивать адреса обоим интерфейсам, поэтому /etc/hostname.vr0 оставим как есть, а в /etc/hostname.vr1 пропишем просто поднятие интерфейса:
# echo up %26gt; /etc/hostname.vr1
Шлюзом по умолчанию для клиентов в таком случае будет роутер провайдера.
Функциональность прежде всего
Определимся с тем, что будет крутиться на шлюзе, кроме стандартного sshd для удаленного администрирования. Для получения почты с отчетами о работе системы мы запустим pop3-сервер pop’a3d (входит в штатную поставку), для подсчета трафика соорудим систему trafd/mysql. Экономить на трафике путем кеширования web-страниц будем с помощью прокси-сервера squid. Наконец, чтобы обеспечить контроль над пользователями, в качестве метода "на коленке" для защиты сети от любителей менять IP-адрес на адрес соседа поставим arpwatch, который будет вести таблицу записей "IP-MAC" и сигнализировать об аномалиях. Разумеется, для "хакера", охочего до чужого трафика, не составит труда поменять и MAC-адрес. Но по большому счету, более-менее адекватную защиту может обеспечить разве что фильтрация MAC на порту свитча (а такие приборы стоят денег) или организация VPN. Но хочешь ли ты ходить из квартиры в квартиру и показывать недалеким пользователям, где у них в Windows настраиваются политики IPSec?
В нашей дикой локальной сети можно лишь сделать попытку борьбы с вопиющим беспорядком. Заключительным аккордом станет поднятие web-сервера для обеспечения пользователям web-доступа к статистике по трафику и пакетного фильтра для спокойной работы сети. В качестве pop3-сервера будем использовать безопасный и надежный popa3d (являющийся частью OpenBSD). Так как все системные отчеты и вывод cron'а складываются в почту root'у, а мы работаем из-под непривилегированного пользователя, внесем изменения в /etc/mail/aliases и пересоберем /etc/mail/aliases.db:
# echo root: toxa %26gt;%26gt; /etc/mail/aliases %26%26 newaliases
Теперь вся root’овая почта будет сыпаться пользователю toxa. Допиши в конец файла /etc/rc.local запуск popa3d в standalone-режиме:
if [ -x /usr/sbin/popa3d ]; then
echo -n ' popa3d'; /usr/sbin/popa3d -4D
fi
Теперь ставим arpwatch. Все необходимые программы будем ставить из прекомпилированных пакетов, так что если у тебя нет диска с содержимым ftp.openbsd.org/pub/OpenBSD/3.6/packages/i386/, то пропиши переменную окружения PKG_PATH соответствующим образом:
# export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/3.6/packages/i386/
Затем добавляй нужные пакеты
# pkg_add arpwatch-2.1a13.tgz
Запуск arpwatch на внутреннем интерфейсе также пропишем в /etc/rc.conf.local:
if [ -x /usr/local/sbin/arpwatch ]; then
echo -n ' arpwatch'; /usr/local/sbin/arpwatch -i vr0
fi
Arpwatch после запуска начнет коллекционировать информацию в файл /var/arpwatch/arp.dat. Поначалу твой почтовый ящик будет заполнен сообщениями о том, что в сети появились новая станция:
From: Arpwatch %26lt;arpwatch@puffy.toxahost.ru%26gt;
To: root@puffy.toxahost.ru
Subject: new station
hostname: %26lt;unknown%26gt;
ip address: 62.89.2XX.XX
ethernet address: 0:0:39:84:21:e3
ethernet vendor: TOSHIBA CORPORATION
timestamp: Thursday, November 18, 2004 13:49:39 +0300
Если она определит несоответствие ip-mac уже существующей записи в таблице, будет выслано предупреждение "changed ethernet address". Конечно, предупреждение не заблокирует сессию хацкера, однако по факту легко будет установить хулигана. Будем считать, что нам этого достаточно. Теперь ставим прокси-сервер. К сожалению, та версия squid, которая находится в портах, уже попахивает тухлятиной, и нам придется собирать squid руками. Так как в релизах squid часто находят уязвимости (к счастью, несерьезные), то к последнему релизу, как правило, прилагается ворох патчей. Но мы сделаем проще, а именно скачаем ежедневно генерируемый релиз и поставим:
# wget www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE7-20041219.tar.gz
# tar xzf squid-2.5.STABLE7-20041219.tar.gz
# cd squid-2.5.STABLE7-20041219
# ./configure --prefix=/usr/local/squid --sysconfdir=/etc/squid --enable-storeio="ufs diskd" --enable-poll --enable-pf-transparent --disable-ident-lookups --enable-removal-policies="lru heap" --disable-wccp --enable-err-language=Russian-koi8-r
# make %26%26 make install
# groupadd -g 515 _squid
# useradd -d /nonexistent -s /sbin/nologin -u 515 -g 515 -c "Squid Account" _squid
# chown _squid:_squid /usr/local/squid/var/cache
# chown _squid:_squid /usr/local/squid/var/logs
# chgrp _squid /dev/pf %26%26 chmod g+rw /dev/pf
Ключевой момент этих шаманств - поддержка pf transparent, прозрачного проксирования трафика, который мы будем заворачивать на squid с помощью pf. Именно для этого мы даем возможность squid’у читать и писать в /dev/pf (последние строчки). В результате пользователи даже не узнают о том, что их трафик экономит наш кеширующий прокси-сервер. После установки открываем /etc/squid/squid.conf и вносим туда следующие изменения:
http_port 127.0.0.1:3128
icp_port 0
http_access deny to_localhost
acl our_networks src 192.168.0.0/24
http_access allow our_networks
httpd_accel_host virtual
httpd_accel_port 0
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
cache_effective_user _squid
cache_effective_group _squid
Прописываем автозапуск squid в /etc/rc.local:
if [ -x /usr/local/squid/bin/squid ]; then
echo -n ' squid'; /usr/local/squid/bin/squid -D
fi
Первый раз нужно запустить squid с параметром -z для создания кеша:
# /usr/local/squid/sbin/squid -z
Теперь пришла очередь кеширующего DNS. Вопреки популярной практике мы не будем настраивать dns-сервер BIND, а воспользуемся более безопасным и шустрым dnscache из пакета djbdns. Подробнее о djbdns и установке его составных частей читай в этом номере, а здесь я отмечу лишь одну особенность: укажем dnscache работать в качестве форвардера, пересылая все запросы к dns-серверу провайдера и кешируя результат:
# echo prov.dns.serv.ip %26gt; /etc/dnscache/root/servers/@
# echo 1 %26gt; /etc/dnscache/env/FORWARDONLY
Из-за недостатков ftp-протокола у пользователей могут возникнуть проблемы при доступе к ftp-серверам, которые решает запускаемая из inetd ftp-proxy, на которую мы будем заворачивать ftp-соединения с помощью pf:
# grep ftp-proxy /etc/inetd.conf
127.0.0.1:8021 stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
Счет, пожалуйста
Пользователи будут в восторге, если ты их порадуешь индивидуальной статистикой потребления трафика. Apache + trafd + mysql могут подарить им такую радость. Ставим trafd и mysql:
# pkg_add trafd-3.0.1.tgz
# mkdir -p /var/trafd/traffic_plain
# mkdir -p /var/trafd/traffic
# pkg_add mysql-server-4.0.20.tgz
# /usr/local/bin/mysql_install_db
Прописываем их в автозапуск, /etc/rc.local:
if [ -x /usr/local/sbin/trafd ]; then
echo -n ' trafd'; /usr/local/sbin/trafd -i vr0
fi
if [ -x /usr/local/bin/mysqld_safe ]; then
echo -n ' mysqld'; /usr/local/bin/mysqld_safe --user=_mysql --datadir=/var/mysql %26
fi
Поставим необходимые модули для работы perl c mysql:
# pkg_add p5-Net-MySQL-0.08.tgz
Подправим конфигурационный файл mysql, чтобы база данных слушала только локальный socket и не принимала соединения из сети, а также изменим местоположения pid-файла, чтобы его мог найти httpd, который будет записан в /var/www:
# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf
[client]
port = 3306
socket = /var/www/var/run/mysql/mysql.sock
[mysqld]
port = 3306
socket = /var/www/var/run/mysql/mysql.sock
skip-networking
Зададим пароль root'у на доступ к mysql (по умолчанию он пуст), создадим отдельную базу для статистики и укажем использование непривилегированным пользователем ipacct:
# mysqladmin -u root -p password 'securepass'
# mysql -u root -p
Enter password: %26lt;securepass%26gt;
mysql%26gt; create database traffic;
mysql%26gt; use traffic;
mysql%26gt; create table yesterday (src_ip char(16), src_port int, dst_ip char(16), dst_port int, proto int, bytes bigint);
mysql%26gt; create table traffic_tmp (ip char(16), sent bigint default 0, recv bigint default 0);
mysql%26gt; create table traffic (dt date, ip char(16), sent bigint default 0, recv bigint default 0);
mysql%26gt; grant delete,insert,select,update on traffic.* to 'ipacct'@'localhost' identified by 'ipacctpassword';
mysql%26gt; flush privileges;
mysql%26gt; quit
Для обработки статистики, накопленной trafd, существуют специальные скрипты. Авторство их, по всей видимости, принадлежит написавшему статью www.tmeter.ru/misc/trafd. Ищи на нашем диске эти скрипты, модифицированные специально под OpenBSD. Распакуй их в /root/scripts/trafd/, замени имя интерфейса vr0 на свое и пропиши их запуск в crontab:
# crontab -e
################# TRAFFIC #################
# dump to tempfile in case to recovery from it
*/15 * * * * /usr/local/sbin/trafdump vr0
# dump to binary file to be rotated each day
55 23 * * * /usr/local/sbin/trafsave vr0
# rotate binary files each day
56 23 * * * /root/scripts/trafd/trafrotate.sh
# convert from binary to plain text log file
57 23 * * * /root/scripts/trafd/traflog.sh
# put all this shit into database
58 23 * * * /root/scripts/trafd/db_update.sh
##########################################
Итогом всей этой работы станет ежедневное любезное складирование статистики за весь день в файл /var/trafd/traffic_plain/{дата}.{имя_интерфейса} в текстовом удобочитаемом виде. Этот файл будет обрабатываться скриптом, а информация - записываться в базу данных. Теперь нужно обеспечить пользователей удобным web-интерфейсом. И тут на сцену выходит apache и php-скрипты из вышеупомянутого набора.
# pkg_add php4-core-4.3.10.tar.gz
# pkg_add php4-mysql-4.3.10.tar.gz
# /usr/local/sbin/phpxs -s
Apache - то немногое, что мне нравится в OpenBSD. И хоть формально это httpd версии 1.3.29, на самом деле Apache в базовой поставке OpenBSD сильно отличается от такового с httpd.apache.org. В нем исправлено множество ошибок, и в целях безопасности он по умолчанию запускается в chroot(). Однако это и создает дополнительные проблемы. Например, после установки php нужно проделать следующее:
# cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
Затем поправим php.ini:
# vi /var/www/conf/php.ini
safe_mode_exec_dir = /var/www/
expose_php = Off
include_path = ".:/pear/lib:/var/www/pear/lib"
extension_dir = "/var/www/lib/php/modules"
safe_mode_gid = Off
allow_url_fopen = Off
Поправим /var/www/conf/httpd.conf:
LoadModule php4_module /usr/lib/apache/modules/libphp4.so
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
Потом скопируем скрипты index.php oper.php procs.inc в /var/www/htdocs.
Apache - часть системы, по умолчанию он отключен. А чтобы не портить /etc/rc.conf, создавай /etc/rc.conf.local следующего содержания:
#!/bin/sh -
ntpd_flags=""
httpd_flags=""
Заодно был включен демон точного времени OpenNTPD, который будет синхронизировать системные часы с внешних time-серверов. Знание точного времени никогда не повредит. Запускаем apache:
# apachectl start
Теперь пользователи могут любоваться статистикой не покидая браузер ;).
Строим огненную стену
Наконец, настроим пакетный фильтр pf, который по умолчанию отключен.
echo pf=YES %26gt;%26gt; /etc/rc.conf.local
Займемся pf и его конфигурационным файлом /etc/pf.conf. Политика будет простая: пропускать все наружу, блокировать все попытки соединения с машинами локальной сети извне. Кроме того, мы откроем доступ к шлюзу отовсюду по ssh, чтобы в случае чего залогиниться на него из любой точки земного шара и разрулить проблемы, а также с определенной машины откроем доступ по pop3, чтобы получать отчеты о работе системы. Не забудем и про заворачивание на squid и ftp-proxy пакетов, идущих на www- и ftp-серверы соответственно. На десерт мы прикрутим ALTQ - систему Quality Of Service, которая упорядочивает пакеты по приоритетам согласно указанным правилам.
# vi /etc/pf.conf
# $OpenBSD: pf.conf,v 1.28 2004/04/29 21:03:09 frantzen Exp $
# See pf.conf(5) and /usr/share/pf for syntax and examples.
# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
# in /etc/sysctl.conf if packets are to be forwarded between interfaces.
# Rules must be in order:
# options, normalization, queueing, translation, filtering
# 1. MACROSES AND TABLES (options) -------------------------
# Описываем наши интерфейсы, подсеть, и свою машину в локалке
ext_if="vr0"
int_if="vr1"
loop_if="lo0"
adminbox="192.168.0.10"
subnet="192.168.0.0/24"
# Порты IM-служб (icq, jabber, aol)
im_ports = "{ 1863, 5190, 5222, 6667 }"
# Не маршрутизируемые в интернет адреса
table %26lt;priv_nets%26gt; { 127/8, 192.168/16, 172.16/12, 10/8 }
# 2. PF SETTINGS (normalisation) ---------------------------
# Общие настройки pf.
set optimization normal
set block-policy drop
set loginterface $ext_if
scrub on $ext_if all reassemble tcp
# 3. QOS RULES (queueing) ----------------------------------
# Допустим, наш канал имеет пропускную способность 1 мегабит. Определим две очереди, первой отдадим 40% канала, второй - 60%, причем первая - приоритетнее. Директива borrow определяет возможность "одалживать" канал у соседней очереди, если та свободна. В первую очередь засунем именно себя :), во вторую - оставшихся пользователей.
altq on $ext_if cbq bandwidth 1024Kb queue { toxa, users }
queue toxa bandwidth 40% priority 2 cbq(borrow)
queue users bandwidth 60% priority 1 { deflt_users, lan_users, im_users, http_users, mail_users }
# Очередь для пользователей делится на четыре канала, которые отличаются приоритетом и шириной оставшегося канала. Очевидно, что пакеты от icq- или jabber-мессенджеров желательно доставлять в первую очередь.
queue deflt_users bandwidth 30% priority 2 cbq(default borrow ecn)
queue im_users bandwidth 20% priority 4 cbq(borrow ecn)
queue http_users bandwidth 30% priority 3 cbq(borrow ecn)
queue mail_users bandwidth 20% priority 2 cbq(borrow ecn)
# Далее разделим пакеты по очередям с помощью правил фильтрации.
# 4. NAT/REDIRECTING RULES (translation) -------------------
# NAT'им пользователей
nat on $ext_if from $subnet to any -%26gt; $ext_if
# Перебрасываем все www- и ftp-соединения пользователей на squid и ftp-proxy
rdr pass on $int_if proto tcp from $subnet to ! $subnet port { 80,8080} -%26gt; 127.0.0.1 port 3128
rdr on $int_if proto tcp from $subnet to any port 21 -%26gt; 127.0.0.1 port 8021
# 5. PASS/BLOCK RULES (filtering) --------------------------
pass quick on $loop_if all
# Политика по умолчанию "все запрещено"
block quick log from any os NMAP
block all
# Прием против спуфинга
block in quick on $ext_if from %26lt;priv_nets%26gt; to any
block out quick on $ext_if from any to %26lt;priv_nets%26gt;
antispoof for $ext_if
pass in on $ext_if proto tcp from any to ($ext_if) port { 22,80 } modulate state
pass in on $ext_if proto tcp from any to ($ext_if) port %26gt; 49151 user proxy keep state
pass in on $ext_if proto icmp from any to ($ext_if) modulate state
pass out on $ext_if from ($ext_if) to any modulate state
pass in quick on $int_if proto tcp from $adminbox to $int_if flags S/SA modulate state
pass out quick on $int_if proto tcp from $adminbox to any flags S/SA modulate state queue toxa
pass out quick on $int_if proto { udp, icmp } from $adminbox to any modulate state queue toxa
# Разруливаем пакеты по очередям
block quick on $int_if proto tcp from $subnet to any port { 135, 139, 445 }
pass out on $int_if proto tcp from $subnet to any flags S/SA modulate state queue deflt_users
pass out on $int_if proto tcp from $subnet to any port $im_ports flags S/SA modulate state queue im_users
pass out on $int_if proto tcp from $subnet to any port 80 flags S/SA modulate state queue http_users
pass out on $int_if proto tcp from $subnet to any port { 25,110 } flags S/SA modulate state queue mail_users
pass out on $int_if proto { udp, icmp } from $subnet to any modulate state queue deflt_users
Учти, что фильтрация пакетов на мосту отличается от таковой на обычном шлюзе. Так, в случае бриджа не будут работать rdr и nat правила, за исключением такой ситуации, в которой каждому интерфейсу моста присвоен IP-адрес. Так что transparent bridge и transparent proxy несовместимы. Кроме того, так как мост соединяет одну и ту же сеть, есть смысл фильтровать пакеты только на одном (внешнем по отношению к локальной сети) интерфейсе, пропуская все на внутреннем.
Вот и все. Одна бессонная ночь - и непробиваемый шлюз для твоей домашней сети готов.
Мнение эксперта
Андрей Матвеев, редактор рубрики "Юниксоид" журнала "Хакер" (andrushock@real.xakep.ru)
Трансляция сетевых адресов, перенаправление пакетов между сетевыми интерфейсами, фильтрация входящих и исходящих запросов... Можно еще очень долго перечислять функции, которые возложены на систему, обеспечивающую взаимодействие домашней/корпоративной локальной сети с интернетом. Не стоит также забывать, что сейчас затмевают собой все другие проблемы и становятся все острее вопросы защиты клиентских компьютеров от несанкционированного доступа. При поднятии шлюза важно выбрать операционную систему именно со следующими достоинствами: обладание грамотной реализацией стека TCP/IP и мощным файрволом с гибким синтаксисом правил; наличие в составе ОС подавляющего большинства сетевых служб, запускаемых от имени непривилегированного пользователя и/или в измененном корневом каталоге (chroot), что позволило бы максимально снизить ущерб при возможном взломе.
Содержание
|