LINUX-BG Адрес : http://www.linux-bg.org |
Инсталиране и настройка на “прозрачна защитна стена” |
От: Uvigii Публикувана на: 14-04-2004 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=360620215 |
Инсталиране и настройка на “прозрачна защитна стена” (transparent firewall) Заб.:Авторът е напълно наясно, че (може да) съществуват неточности и грешки. Показаното тук е само с учебна цел! Преди да направите каквото и да е архивирайте важните си данни (а защо не всичко?) ! Превода на английските термини може да не е съвсем точен. За контакти: uvigii@mail.bg , най актуалната версия на: http://uvigii.jeckyll.net/pub/doc/tf/TF.html Съдържание: 2.1. Подготовка 2.2. Ядро: кърпеж, конфигуриране, компилиране, инсталация. 2.3. Brctl: конфигуриране, компилиране, инсталация. 2.4. Squid: конфигуриране, компилиране, инсталация. 3.1. Настройка на бриджа. 3.2. Настройка на IP филтър с iptables. 3.3. Настройка на Squid.
1. Идея за използване Представете си следната ситуация (фиг.1): В нашите права/задължения влиза администрирането само на LAN, разполагаме с ограничен бюджет но трябва да реализираме по някакъв начин филтриране на трафика от и към интернет. Един от възможните варианти е да направим 'интелигентен' комутатор (switch) използвайки Линукс (фиг2). В нашия случай той ще има само два порта и ще служи да отдели локалната мрежа от рутера на ISP, който би трябвало да се явява шлюз по подразбиране (default gateway) за потребителите в LAN. По този начин IP пакетите ще се преглеждат съгласно правила зададени от нас, при което ще преминат само тези които ние искаме. Чрез настройката на прокси сървър бихме могли да отидем по-далече и да филтрираме определено съдържание на някои сайтове, например всички mp3 файлове от free.xxx.bg. Можем също да определим и скоростта с която ще се свалят определени файлове т.е. можем да определим скорост от 1 кб/с за mp3 файловете на free.xxx.bg и 10 кб/с за html документите от същия сайт. Забележете, че не се налага да се преконфигурират машиниите в LAN, нито рутера на ISP. Възможно е машината която ще ползваме да работи без да е конфигурирана с IP адрес. В този случай линукс-суича, ще има конфигуриран IP адрес за да се администрира отдалечено. При по-параноична конфигурация е възможно това да не се прави. 2. Инсталация 2.1. Подготовка Следващите стъпки са реализирани под Slackware с ядро 2.4.24 необходими са ни: Инсталирана система; компилатор; работещи мрежови контролери (NIC) eth0, eth1 ;-) 2.2. Ядро: кърпене, конфигуриране, компилиране, инсталация. За да може iptables да 'вижда' IP пакетите (3-ти слой от OSI модела) който 'преминават' опаковани като фреймове през бриджа (2-ри слой от OSI модела) за ядра от серията 2.4 е необходимо да се пачне ядрото на Линукс. За целта декомпресирайте ebtables в /usr/src/linux , след което: root@fw:/usr/src/linux# patch -p1 -i ebtables-brnf-5_vs_2.4.24.diff root@fw:/usr/src/linux# make menuconfig В networking options Избираме Network packet filtering (replaces ipchains) и 802.1d Ethernet Bridging компилираме root@fw:/usr/src/linux# make clean && make dep && make bzImage && make modules Инсталираме новото ядро и модулите към него, преглеждаме /etc/lilo.conf изпълняваме: root@fw:/usr/src/linux# /sbin/lilo Рестартираме системата. 2.3. Brctl: конфигуриране, компилиране, инсталация. root@fw:/tmp# tar -xzvf bridge-utils-0.9.6.tar.gz root@fw:/tmp# cd bridge-utils root@fw:/tmp/bridge-utils# ./configure root@fw:/tmp/bridge-utils# make all root@fw:/tmp/bridge-utils# make install 2.4. Squid: конфигуриране, компилиране, инсталация. Squid е кеширащ http прокси сървър с богат набор от функции. Следващите стъпки не са задължителни ако не желаете да инсталирате Squid . root@fw:/tmp# tar -xzvf squid-2.5.STABLE5.tar.gz root@fw:/tmp# cd squid-2.5.STABLE5 root@fw:/tmp/squid-2.5.STABLE5# ./configure --prefix=/usr/local/squid --enable-delay-pools –enable-linux-netfilter root@fw:/tmp/squid-2.5.STABLE5# make all root@fw:/tmp/squid-2.5.STABLE5# mkdir /usr/local/squid root@fw:/tmp/squid-2.5.STABLE5# chown nobody /usr/local/squid root@fw:/tmp/squid-2.5.STABLE5# su nobody nobody@fw:/tmp/squid-2.5.STABLE5$ make install nobody@fw:/$ exit Настройки 3.1. Настройка на бриджа. Създаваме скрипта /etc/rc.d/rc.bridge #!/bin/sh # # /etc/rc.d/rc.bridge. BRVER="0.0.1" # BRCTL="/usr/local/sbin/brctl" IFCONFIG="/sbin/ifconfig" ROUTE="/sbin/route" # BR="br_fw" INTIF0="eth0" EXTIF0="eth1" BRIP="10.4.9.5" BRNET="10.4.9.0" BRMASK="255.255.255.0" BRBRC="10.4.9.255" BRGW="10.4.9.1" # echo "Starting brige $BRVER ... " # $IFCONFIG $INTIF0 0.0.0.0 $IFCONFIG $EXTIF0 0.0.0.0 # $BRCTL addbr $BR $BRCTL addif $BR $INTIF0 $BRCTL addif $BR $EXTIF0 # $IFCONFIG $BR up $IFCONFIG $BR $BRIP netmask $BRMASK broadcast $BRBRC $ROUTE add default gw $BRGW $IFCONFIG $ROUTE $BRCTL show # След което го стартираме: root@fw:/etc/rc.d# ./rc.bridge Може да добавим следното в /etc/rc.d/rc.inet1 /etc/rc.d/rc.brige с цел автоматично изпълнение на скрипта при старт на машината. Разбира се добре е да съобразите кога ще стартирате /etc/rc.d/rc.firewall ! Може да направите start i stop функции и т.н. В случая няма значение. Вече би трябвало да имаме работещ бридж с два физически интерфейса eth0 – към локалната мрежа и eth1 – към ISP рутера, един логически административен адрес 10.4.9.5 3.2. Настройка на IP филтър с iptables. Тук вече всичко е в ръцете Ви. Пример А Този пример изисква работещ Squid! root@fw:/etc/rc.d# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 root@fw:/etc/rc.d# iptables -A FORWARD -i eth1 -p tcp --dport 80 -j DROP С горните два реда ще пренасочим IP пакетите идващи от локалната мрежа и отиващи към 80-и порт(http) на машини извън LAN към 8080-и порт на бридж машината и ще забраним всички пакети пристигащи от вън и отиващи към 80-и порт в LAN . Резултатът може да проверите чрез смяна на кабелите на двете мрежови карти. Пример Б root@fw:/etc/rc.d# iptables -P INPUT DROP root@fw:/etc/rc.d# iptables -A INPUT -i eth1 -p tcp -s 10.4.10.2 --dport 22 -j ACCEPT root@fw:/etc/rc.d# iptables -A INPUT -i eth0 -p tcp -s 10.4.9.2--dport 22 -j ACCEPT С този пример забраняваме на всички освен на машини с мрежови адреси 10.4.10.2 и 10.4.9.2 да се свързват на 22-и порт на бридж машината (SSH). Забележете, че по подразбиране всички пакети които не са изрично приети, ще бъдат отшвърлени т.е. в този случай връзки към други портове няма да са възможни.
3.3. Настройка на Squid Използването на Squid в този случай е по скоро показателно отколкото наложително. Целта му е да допълни функционалността на iptables, това се постига чрез доста удобния (поне за мен) начин за филтриране на url, delay_pools и т.н. Той е гъвкъв и може да се настрои да работи само като url филтър без да кешира каквото и да е ! Друг вариант е да се ползва отделна машина за прокси сървър. За да работи като transparent proxy не трябва да се забрави httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_host virtual httpd_accel_uses_host_header on в /usr/local/squid/etc/squid.conf. Пример А # acl Webs05 dstdomain .microsoft.com .msn.com .msn.net acl Webs50 dst 0.0.0.0/0.0.0.0 # acl Hosts50 src 10.42.9.0/255.255.255.0 acl Hosts90 src 10.42.9.2/255.255.255.255 # acl Conn50 maxconn 6 # http_access deny Hosts50 Webs05 http_access allow Hosts90 Webs50 http_access allow Hosts50 Webs50 !Conn50 http_access deny all По този начин ще направим следното: 1. Ще забраним достъпа до microsoft.com и производни, 2 Ще разрешим на всички в локалната мрежа достъп до всички сайтове с максимум 6 връзки едновременно (за 1 IP) (Освен Hosts90). Забележете, че msn.com, msn.net и microsoft.com няма да са достъпни! Пример Б acl Hosts90 src 10.42.9.2/255.255.255.255 # acl
Words50 url_regex -i ftp .exe .mp3 .wav .avi .mov .mpeg .iso .rar
.zip .ace delay_pools 1 По този начин ще ограничим всички потребители освен 10.42.9.2 да теглят mp3 и подобни със скорост 1000 байта/с. 4. Заключение При направените тестове с 2 правила в iptables на AMD K6II – 300 Mhz 128 MB RAM 2x RTL8139D бяха измерени Total rates:1648.7 kbytes/sec, 1529.8 packets/sec. При CPU states: 9.0% user 88.2% system 0.0% nice 0.0% iowait 2.6% idle . Iptraf натоварваше с около 20% системата, т.е. е възможно да се постигнат по-добри резултати при неговото изключване.
<< Мултимедийна станция с Linux | PPPoE и споделяне на интернет достъп >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|