Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Исследование уровня безопасности операционной системы Linux

тей помимо перечисленных сервисов должны иметь возможность получать  почту
с  локального  сервера  посредством   протокола   POP3.   Также   необходимо
обеспечить  обмен  информацией  между  компьютерами  двух  локальных  сетей,
обеспечить  выход  компьютеров  сети  192.168.0.0  в  Интернет,  а  из  сети
192.168.1.0 – только компьютерам с IP адресами 192.168.1.30 и 192.168.1.45.
    Реализация.
    Чтобы маршрутизатор функционировал в качестве шлюза, в ядре  необходимо
поменять  значение  переменной  ip_forward.  Это  можно   сделать   командой
приведенной далее, а чтобы эта переменная устанавливалась в 1 при  загрузке,
необходимо в файле /etc/sysctl.conf  найти  и  раскомментировать,  если  она
закомментирована, строку вида “net.ipv4.ip_forward = 0” и изменить  значение
0 в этой строке на 1. Если же такой  строки  нет,  ее  необходимо  добавить.
Таким образом, маршрутизатор получает указание работать  в  качестве  шлюза,
то есть обрабатывать пакеты, пришедшие из сети и не  адресованные  локальным
процессам,  в  соответствии  с  заранее  заданной  таблицей   маршрутизации.
Включение этой функции необходимо для обеспечения доступа  в  сеть  Интернет
из двух локальных сетей.
[root@app /]# echo 1 > /proc/sys/net/ipv4/ip_forward

    Далее  приводится  последовательность  действий,   которые   необходимо
выполнить, чтобы построить требуемую конфигурацию брандмауэра.
[root@app /]# /sbin/iptables –t filter -P INPUT DROP
[root@app /]# /sbin/iptables –t filter -P OUTPUT DROP
[root@app /]# /sbin/iptables –t filter -P FORWARD DROP

    Параметр командной строки –Р позволяет установить политику действия  по
умолчанию для всех пакетов,  которые  не  попали  ни  под  один  критерий  в
правилах INPUT, OUTPUT и FORWARD. Действие DROP означает, что  пакет  должен
быть уничтожен, если ни одно правило цепочки ему не соответствует.  Параметр
–t указывает, над какой таблицей производится действие. Если  этот  параметр
не  указан,  используется  таблица  filter,  поэтому   использование   этого
параметра в данном случае не обязательно.
    Для распределения нагрузки и простоты  в  управлении  можно  создать  в
таблице filter дополнительные цепочки с разным функциональным назначением.
[root@app /]# /sbin/iptables -N bad_tcp_packets
[root@app /]# /sbin/iptables -N allowed
[root@app /]# /sbin/iptables -N tcp_packets
[root@app /]# /sbin/iptables -N udp_packets
[root@app /]# /sbin/iptables -N icmp_packets

    Цепочка bad_tcp_packets предназначена для  отфильтровывания  пакетов  с
"неправильными" заголовками. Здесь  отфильтровываются  все  пакеты,  которые
распознаются как NEW, то есть пакеты, открывающие новое  соединение,  но  не
являются  SYN   пакетами,   то   есть   часть   пакета,   ответственная   за
синхронизацию, отсутствует, а так же обрабатываются SYN/ACK-пакеты,  имеющие
статус NEW. Эта цепочка может быть использована для защиты  от  вторжения  и
сканирования портов.
[root@app /]# /sbin/iptables -A bad_tcp_packets -p tcp  --tcp-flags  SYN,ACK
SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
[root@app /]# /sbin/iptables -A bad_tcp_packets -p tcp ! --syn -m  state  --
state NEW -j LOG --log-prefix "New not syn:"
[root@app /]# /sbin/iptables -A bad_tcp_packets -p tcp ! --syn -m  state  --
state NEW -j DROP

    Цепочка tcp_packets является фильтром сетевых сервисов. Именно  в  этой
цепочке  будет  осуществляться   фильтрация   tcp-соединений   по   критерию
запрашиваемого сервиса. В качестве такого  критерия  используется  порт,  на
который  приходят  запросы  на  обслуживание.   Для   того,   чтобы   только
пользователи  локальной  сети  смогли  получать  почту,  в  последних   двух
правилах  в  качестве  дополнительного  критерия   фильтрации   используются
символические  имена  сетевых  интерфейсов  локальных  сетей.   В   качестве
действия пакет посылается в цепочку allowed для последующей  проверки  более
низкого уровня.
[root@app /]# /sbin/iptables -A tcp_packets -p TCP --dport 22 -j allowed
[root@app /]# /sbin/iptables -A tcp_packets -p TCP --dport 25 -j allowed
[root@app /]# /sbin/iptables -A tcp_packets -p TCP --dport 80 -j allowed
[root@app /]# /sbin/iptables -A tcp_packets -p TCP –i eth0  --dport  110  -j
allowed
[root@app /]# /sbin/iptables -A tcp_packets -p TCP  –i  eth1--dport  110  -j
allowed

    Цепочка allowed используется для дополнительной фильтрации tcp пакетов,
прошедших   цепочку  tcp_packets  и  разрешенных  в  ней.   Первое   правило
проверяет, установлен ли в заголовке пакета бит SYN, то  есть,  является  ли
пакет  первым  пакетом  установления  соединения.  Такие  пакеты   считаются
разрешенными и пропускаются. Второе правило проверяет  состояние  пакета,  и
если  оно  либо  ESTABLISHED,  либо  RELATED,  то  пакет  разрешается.   Эти
состояния присваиваются пакетам, когда соединение уже установлено и  ведется
обмен данными. Последнее правило просто сбрасывает все остальные пакеты,  не
попавшие под первые два правила.
[root@app /]# /sbin/iptables -A allowed -p TCP --syn -j ACCEPT
[root@app  /]#  /sbin/iptables  -A  allowed  -p   TCP   -m   state   --state
ESTABLISHED,RELATED -j ACCEPT
[root@app /]# /sbin/iptables -A allowed -p TCP -j DROP

    Цепочка udp_packets имеет ту же функцию, что и цепочка  tcp_packets,  с
единственным  отличием  –  в  этой  цепочке  производится  фильтрация   udp-
соединений.  Сервис  DNS  использует  как  раз  протокол  UDP   для   обмена
информацией,  поэтому  правило,  которое   будет   разрешать   пакеты   DNS,
необходимо добавить именно в эту цепочку.
[root@app /]# /sbin/iptables -A udp_packets -p UDP --dport 53 -j ACCEPT

    Цепочка icmp_packets предназначена  для  фильтрации  icmp-пакетов.  Для
нормального функционирования сервера  Linux  в  сети  достаточно  разрешение
только двух типов сообщений: ICMP Echo Request и Time Exceeded.
[root@app /]# /sbin/iptables  -A  icmp_packets  -p  ICMP  --icmp-type  8  -j
ACCEPT
[root@app /]# /sbin/iptables -A  icmp_packets  -p  ICMP  --icmp-type  11  -j
ACCEPT

    Еще раз хочу заметить, что по умолчанию без использования параметра  –t
все действия производятся в таблице filter.
    Теперь перейдем  к  заполнению  основных  системных  таблиц.  Начнем  с
входящей цепочки INPUT таблицы filter.
[root@app /]# /sbin/iptables -A INPUT -p tcp -j bad_tcp_packets
[root@app /]# /sbin/iptables -A INPUT -i lo –s 127.0.0.0/8 -j ACCEPT
[root@app /]# /sbin/iptables -A INPUT -i lo -s 192.168.0.1 -j ACCEPT
[root@app /]# /sbin/iptables -A INPUT -i lo -s 192.168.1.1 -j ACCEPT
[root@app /]# /sbin/iptables -A INPUT -i lo -s 144.333.333.333 -j ACCEPT
[root@app /]# /sbin/iptables -A INPUT -m state  --state  ESTABLISHED,RELATED
-j ACCEPT
[root@app /]# /sbin/iptables -A INPUT –p TCP  -j tcp_packets
[root@app /]# /sbin/iptables -A INPUT -p UDP -j udp_packets
[root@app /]# /sbin/iptables -A INPUT -p ICMP -j icmp_packets
[root@app /]# /sbin/iptables -A INPUT -m  limit  --limit  3/minute  --limit-
burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "

    Сначала все пакеты  должны  пройти  через  цепочку  bad_tcp_packets  на
предмет  неправильного  заголовка.  Далее  необходимо  принять  все  пакеты,
пришедшие со всех адресов сетевых  карт  через  локальный  интерфейс.  Такие
пакеты  могут  посылать  только  локальные  приложения,   поэтому   для   их
нормального    функционирования    необходимо    пропускать    эти    пакеты
беспрепятственно. Затем следует правило определяющее состояние пакета.  Если
пакет находится в одном из двух состояний (RELATED или ESTABLISHED),  то  он
тоже беспрепятственно разрешается. Дело в  том,  что  настройка  брандмауэра
подразумевает 99-процентную достоверность  фильтрации  приходящих  запросов,
поэтому, если соединение  было  разрешено  на  этапе  установления,  то  при
последующем  обмене  информацией  критерии  сервиса  не   проверяются,   что
позволяет немного увеличить  скорость  обработки  и  уменьшить  нагрузку  на
сервер.
    Если пакет не удовлетворяет ни одному из перечисленных  условий,  далее
следуют правила, в которых  пакет  классифицируется  по  типу  используемого
протокола. Пакеты протоколов TCP, UDP и ICMP попадают в одноименные  цепочки
для их фильтрации по типу запрашиваемого сервиса. Если пакет  проходит  одну
из этих цепочек, и к нему не было применено действие ACCEPT, то  есть  пакет
не является запросом  к  разрешенному  сервису,  сначала  происходит  запись
параметров запроса в журнальный файл (действие  LOG),  а  затем  применяется
политика по умолчанию цепочки INPUT, то есть пакет просто уничтожается.
[root@app /]# /sbin/iptables -A FORWARD -p tcp -j bad_tcp_packets
[root@app /]# /sbin/iptables -A FORWARD -m state --state
ESTABLISHED,RELATED -j ACCEPT
[root@app /]# /sbin/iptables -A FORWARD -i eth0 –s 192.168.0.0/24 -j ACCEPT
[root@app /]# /sbin/iptables -A FORWARD -i eth1 –s 192.168.1.30 -j ACCEPT
[root@app /]# /sbin/iptables -A FORWARD -i eth1 –s 192.168.1.45 -j ACCEPT
[root@app /]# /sbin/iptables -A FORWARD -m limit --limit 3/minute --limit-
burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: "

    Аналогично  цепочке  INPUT,  пакеты,  проходящие   транзитом,   сначала
фильтруются  на  предмет   неправильного   заголовка   с   помощью   таблицы
bad_tcp_packets.  Пакеты  уже  установленного  соединения  разрешаются   без
дополнительных проверок. Далее все  пакеты,  пришедшие  с  интерфейса  eth0,
через который  к  серверу  подключена  сеть  192.168.0.0,  разрешаются,  что
позволяет всем пользователям сети 192.168.0.0 работать в  Интернет.  Однако,
перед этим необходимо настроить NAT, что и будет сделано дальше.
[root@app /]# /sbin/iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-
source 144.333.333.333

    Приведенная  команда  добавляет  в  ц
Пред.1617
скачать работу

Исследование уровня безопасности операционной системы Linux

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ