Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 80
Текст из файла (страница 80)
1.0/24 -i ethO -j netl-net2ipchains -A forward -s 192. 168. 1.0/24 -i pppo -j netl-inetipchains -A forward -s 192. 168. 2.0/24 -i pppo -j net2-inetipchains -A forward -s 192. 168. 2.0/24 -i ethl -j net2-netlipchains -A forward -i ethO -j inet-net2ipchains -A forward -i ethl -j int-netlipchains -A forwardDENY -134?БастионыipchainsipchainsipchainsipchainsТеперь определим правила для цепочки приема ICMP-сообщений:-A icmp -p icmp —icmp-type destination-unreachable -j ACCEPT-A icmp -p icmp —icmp-type source-quench-j ACCEPT-A icmp -p.
icmp —icmp-type time-exceeded-j ACCEPT-A icmp -p icmp —icmp-type parameter-problem -j ACCEPTМы будем принимать только ICMP-сообщения об ошибках, все остальныеприниматься не будут. Далее определим правила для цепочки netl-net2. Какуже было сказано выше, от нас требуется обеспечить доступ к сервисам WWW,FTP, ssh. Также нужно разрешить доступ к серверам SMTP, POPS, DNS,использование программ traceroute и ping (все отклоненные пакеты мы будемрегистрировать в журнале). С этой целью определим следующие правила:ipchains -A netl-net2 -p tcp -d 192.84.219.128 smtp-j ACCEPTipchains -A netl-net2 -p tcp -d 1 9 2 . 8 4 .
2 1 9 . 1 2 8 pop-3-j ACCEPTipchains -A netl-net2 -p udp -d 192.84.219.129 domain -j ACCEPTipchains -A netl-net2 -p tcp -d 1 9 2 . 8 4 . 2 1 9 . 1 2 9 domain -j ACCEPTipchains -A netl-net2 -p tcp -d 192.84.218.130 w w w-j-j ACCEPTipchains -A netl-net2 -p tcp -d 1 9 2 . 8 4 . 2 1 8 . 1 3 0 rsync -j ACCEPTipchains -A netl-net2 -p icmp -j icmpipchains -A netl-net2 -j DENY -1Эти правила также разрешают вызов rsync к серверу Web. Теперь определим правила для цепочки inet-net2. Так как в сети 192.168.2.0 находятсясерверы SMTP, DNS и Web, то определим ограничения для них. Почтовыйсервер должен отправлять почту во внешнюю сеть (Интернет), а также принимать почту из внешней сети.
На прием почты по протоколу РОРЗ имеютправо только пользователи внутренней сети. Сервер имен (DNS-сервер) должен посылать запросы во внешнюю сеть, а также принимать запросы извнешней сети через шлюз. Сервер Web должен принимать запросы от пользователей всех сетей. Доступ rsync разрешен только для пользователей внутренних сетей. Все это реализуется следующими правилами:ipchains -A inet-net2 -p tcp -d 1 9 2 . 1 6 8 . 2 . 9 8 smtp-j ACCEPTipchains -A inet-net2 -p udp -d 1 9 2 . 1 6 8 . 2 . 9 9 domain -j ACCEPTipchains -A inet-net2 -p tcp -d 1 9 2 . 1 6 8 .
2 . 9 9 domain -j ACCEPTipchains -A inet-net2 -p tcp -d 1 9 2 . 1 6 8 . 2 . 9 7 W W W-j ACCEPTipchains -A inet-net2 -p icmp -j icmpipchains -A inet-net2 -j DENYДалее задаем правила цепочки netl-inet. Пользователи внутренней сетимогут получать доступ к сервисам WWW, FTP внешней сети, использоватьtraceroute во внешнюю сеть. Нужно разрешить доступ к почтовому серверу,серверу имен, Web-серверу. Модуль masq обеспечит пассивный доступ ксерверу FTP. Возможные нарушения будут регистрироваться. Пользователивнутренней сети также смогут использовать программу ssh для доступа квнешним узлам, и программу ping.ipchains -A netl-inet -p tcp—dportwww-j MASQipchains -A netl-inet -p tcp—dportssh-j MASQipchains -A netl-inet -p udp-dport3 3 4 3 4 : 3 3 5 0 0 -j MASQipchains -A netl-inet -p tcp—dportftp-j MASQ342Бастионыipchains -A netl-inet -pipchains -A netl-inet -jicmp—icmp-typeREJECT -1ping-jMASQСейчас займемся определением правил для цепочки net2-netl.
Пользователи могут получать доступ к серверам Web, SMTP, DNS, POPS. Как и дляпредыдущего случая, мы будем использовать модуль masq для пассивногорежима работы FTP-сервера и будем регистрировать нарушения. Правиладля этой цепочки будут таковыми:i -y -s 192. 84 .219 .128 smtpipchains -A net2-netl -р tcp-j ACCEPTipchains -A net2-netl -р udpS 192. 84 .219 .129 domain-j ACCEPTi -y -s 192. 84 .219.129 domain -j ACCEPTipchains -A net2-netl -р tcpipchains -A net2-netl -р tcp i -y -s 192.
84 .218 .130 WWW-j ACCEPTi -y -s 192. 84 .218 .130 rsyncipchains -A net2-netl -р tcp-j ACCEPTipchains -A net2-netl -р icmp-j icmpipchains -A net2-inet -j DENY -1ipchainsipchainsipchainsipchainsipchainsipchainsПравила для цепочки net2-inet выглядят так:net2-inet -p tcp-s 192. 84,.219.128 smtpnet2-inet -p udp-s 192.84.219.129 domain -jnet2-inet -p tcp-s 192.84.219.129 domain -j-A-A-A-A-A-Anet2-inet -p tcpnet2-inet -p icmpnet2-inet -j DENY-y-s 192.84.218.130 www-j icmp-jACCEPTACCEPTACCEPTACCEPT_TЭти правила разрешают отправлять почту во внешнюю сеть, приниматьпочту из внешней и внутренней сети, получать почту только пользователямвнутренней сети. Сервер DNS имеет право посылать запросы во внешнююсеть, принимать запросы от внутренней и внешней сетей, а также от шлюза.Сервер WWW принимает запросы от пользователей внутренней и внешнейсетей. Доступ rsync разрешен пользователям внутренней сети.Следующая цепочка — это inet-netl.
В этом случае мы не разрешаемникакого доступа из внешней сети к машинам внутренней сети.ipchains -A inet-netl -jREJECTОсновные правила уже определены, осталось установить правила дляцепочки input шлюза. Создадим три цепочки input для каждого возможногоадресата:ipchains -N inet-ifipchains -N net2-ifi p c h a i n s -N n e t l - i fПо первой цепочке будут приходить пакеты от внешней сети, а повторой и третьей — от внутренних сетей. Правила для этих цепочек выглядят так:ipchains -A inputipchains -A inputipchains -A input-d-d-d192.84.219.1192.84.219.250192.168.1.250-j-j-jinet-ifnet2-ifnetl-ifНепосредственно для цепочки inet-if определим такие правила:ipchaiain-A inet-if -i!ipchains -A inet-if -p TCPPPpO-dport-j DENY -16 1 0 0 0 : 6 5 0 9 6 -j ACCEPT343Бастионыipchainsipchainsipchainsipchains-A-A-A-Ainet-ifinet-ifinet-ifinet-if-p UDP -dport-p I CMP —icmp-type-j icmp-j DENY61000:65096 -j ACCEPTpong-j ACCEPTДанные правила разрешают пропинговать любую сеть, использовать программу traceroute для любой сети, доступ к серверу имен, а также получатьICMP-сообщения об ошибках.Цепочку net2-if определим следующим образом:ethO -j DENYipchains -A net2-if -iipchains -A net2-if -p TCP! -y -s 192.168.2.99 53 -j ACCEPTipchains -A net2-if -p UDP-s 192.168.2.99 53 -j ACCEPTipchains -A net2-if -P ICMP -icmp-type pong -j ACCEPTipchains -A net2-if -j icmpipchains -A net2-if -j DENY -1Правила этой цепочки разрешают те же операции, что и для цепочкиinet-if, только в этом случае вместо интерфейса рррО используется ethO.Входящая цепочка netl-if определяется так:ipchains -A netl-if -i ! ethl -j DENYipchains -A netl-if -p ICMP —icmp-type ping -j ACCEPTipchains -A netl-if -p ICMP -icmp-type pong -j ACCEPTipchains -A netl-if -j icmpipchains -A netl-if -j DENY -1Разрешается доступ к серверам WWW, SMTP, POP3.
Можно использовать программы ping, tracer oute, ssh.Теперь осталось удалить правила блокировки:ipchains -D input Iipchains -D f o r w a r d 1ipchains -D output 1В начале этого пункта я обещал объяснить настройку ICQ. Предположим, что сервер SQUID у вас установлен на шлюзе, то есть на той машине,которая обеспечивает пакетную фильтрацию (о прокси-сервере SQUID читайте в следующей главе). В файле конфигурации SQUID разрешите порт5190. Именно этот порт используется новыми клиентами ICQ.acl SSL_ports port 443 563 5190Затем установите сервер socks. Можно, конечно, настроить ICQ, используя маскарадинг, но данный метод, как мне кажется, лучше.
В качествесервера socks я рекомендую использовать сервер dame-socks. В файле конфигурации /etc/socks . conf установите внутренний и внешний адреса шлюза:i n t e r n a l : 1 9 2 . 1 6 8 . 1 . 1 port = 1080e x t e r n a l : 111.1.1.1Затем определите узлы, которые могут использовать socks:client pass {f r o m : 1 9 2 . 1 6 8 . 0 . 0 / 1 6 to: 0 . 0 . 0 . 0 / 0344БастионыОсталось определить, кто может отвечать клиентам:pass {from: O.O.O.O/O to: 192.168.0.0/16command: bindreply udpreplylog: connect error14.5.
IPTablesПакетный фильтр IPChains использовался в ядрах Linux до версии 2.4. Вновых версиях ядра (начиная с 2.4) вместо IPChains используется пакетныйфильтр IPTables. Практически все основные опции остаются прежними. Только, естественно, в командной строке вместо ipchains следует писать iptables.В этом пункте будут рассмотрены некоторые новые опции ядра, связанные непосредственно с IPTables. Эти опции для большей наглядности япредставил в табл. 14.3. Если вы еще не знакомы с компилированием ядра,то эта информация вам пригодится после прочтения гл.
18.Опции ядраТаблица 14.3ОпцияCONFIG_PACKETCONFIG_NETFILTERCONFIG_IP_NF_CONNTRACKCONFIG_IP_NF_FTPCONFIG_IP_NF_IPTABLESCONFIG_IP_NF_MATCH_LIMITCONFIG_IP_NF_MATCH_MACОписаниеПозволяет использовать программы, которые работают непосредственнос сетевым устройством. Примером такой программы может послужитьtcpdumpВключите данную опцию, если вы собираетесь использовать вашкомпьютер в качестве шлюзаПозволяет отслеживать соединения. Данная опция необходима дляработы функций NAT или IP-маскарадинга.