Sunday, July 23rd, 2017

Настройка Linux роутера на базе дистрибутива Debian GNU/Linux 4.0 r3

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

Задача.

read more

1.Доступ в интернет(квотирование трафика) для офиса
(~до 300 человек возможно больше, зависит от железа)

2.ВПН канал для обеспечения доступа к ресурсам
локальной сети с удаленного компьютера, подключенного
к сети интернет

3.APlusServer — сервер для обмена информацией 1С бухгалтерии
с удалеными КПК, подключенными к интернет, установленным
на комьютере под управлением MS WINDOWS.

1. Доступ в интернет

Для выполнения задач было выбрано: iptables,прокси сервер
SQUID,SAMS(SQUID Account Management System, http://sams.perm.ru) v1.0.1.
Все кроме SAMS входит в дистрибутив, причем для установки
потребуются пакеты со всех 3-х DVD дистрибутива.(в 4.0 r3)

Далее настройка, все с нуля:

Настоятельно рекомендую перед установкой хорошенько разобраться с Линукс,
а так же погонять на виртуальных машинах будущую конфигурацию.
Скорее всего на реальном железе глюков из-за незнания мат.части будет
очень много. Копипаст сводит к нулю возможности администрирования системы
в нештатных ситуациях.

УСТАНОВКА СИСТЕМЫ:

Celeron 2.4, 256 MB, IDE 20GB HDD, 2 сетевых интерфейса (один для инета — ADSL,
другой смотрит в локалку)

Разбиение диска:

Можно выбрать один из вариантов, который предлагает система, т.е.
создать разделы для «всех» каталогов(без LVM, далее самый последний вариант),

Потом немного поправить размеры разделов, а именно:
т.к. у нас роутер с билингом, то нам потребуются большие разделы
для логов(/var) и для устанавливаемого ПО(/usr), для раздела /home
не нужно много места, т.к. не будет пользователей, использующих
роутер как свалку для своих файлов, все остальное оставляем как рекомендует
программа установки. Например, изменяем на

        /usr 8 Gb
        /home 1 Gb
        /Var  10 Gb

При установке системы очень удобно, если в первую очередь будет сконфигурирован
интерфейс, подключенный к интернету(IP адрес, ДНС сервера провайдера и шлюз), т.к.
сразу же будут установлены и настроены обновления безопастности системы.

Сетевые интерфейсы называются ethX, где X — номер интерфейса, у нас 2 карточки,
значит будет два интерфрйса eth0 и eth1.

— устанавливаем только базовую систему, все звездочки вырубаем.
— никакого интернет сервера, баз данных и тем более рабочего стола,
— нужна девственно не грязная система

После инсталляции установим пакет mc (Midnight Commander), можно конечно
использовать ТОЛЬКО командную строку, но это не только не удобно, это также
не эффективно, т.к. повышает время настройки сервера, особенно для тех, кто
никогда не видел линукс, но «жызнь» заставила.

Сначала добавляем все 3 DVD дистрибутива «в базу» системы установки apt,
для того чтобы «она» знала, какое ПО доступно, и где оно находится.

Добавление DVD дистрибутива в базу(набираем в командной строке, ессно
нужно войти в систему под суперпользователем т.е. root):

    apt-cdrom add

После вставляем наш DVD в DVD-дисковод и нажимаем ввод.
Повторяем для всех 3-х DVD.

Установка пакета mc:

  apt-get install mc

Далее для удобства копипаста готовых конфигурационных файлов, файрвола,
и для будущего удаленного администрирования устанавливаем пакет ssh.

   apt-get install ssh

Пакет ssh сводит к минимуму необходимость работать за консолью сервера
и позволяет удаленно логиниться на роутер. Для того чтобы подконектиться
к нашему серверу из MS Windows необходима программа putty.

В putty: пишем адрес сервера(небходимо сконфигурировать 2й сетевой интерфейс,
который смотрит в локалку, об этом ниже), а так же меняем кодировку(Window-Trancelation)
на UTF-8, иначе/если наш миднайт командир будет очень «красивым».

Конфигурируем 2-ю сетевую карточку, для этого нужно отредактровать следующий конфиг:
/etc/network/interfaces, примерно так:

        # This file describes the network interfaces available on your system
        # and how to activate them. For more information, see interfaces(5).

        # The loopback network interface
        auto lo
        iface lo inet loopback

        # The primary network interface
        allow-hotplug eth1
        iface eth1 inet static
                address IP адресс провайдера
                netmask 255.255.255.X
                    network Х.Х.Х.0
                broadcast Х.Х.Х.255
              gateway Х.Х.Х.Х  
              dns-nameservers Х.Х.Х.X Х.Х.Х.Х
        auto eth1
       
        iface eth0 inet static
              address 192.168.Х.Х
              netmask 255.255.255.0
        auto eth0

После необходимо перезапустить «сеть», чтобы ОС установила новые IP адреса.
Для упрощения будущей жизни конфигурирование сетевых интерфейсов лучше проводить
ДО установки ПО, чтобы потом не искать в конфигах, например, апача, где же он берет
старый IP адрес:

     /etc/init.d/networking restart

Вводим команду ifconfig и проверяем установленную конфигурацию
сетевых интерфейсов. И команду route -N, в маршрутах должен быть адрес шлюза
провайдера, который указан в файле /etc/network/interfaces.

Адреса ДНС серверов находятся в файле /etc/resolf.conf:

        nameserver X.X.X.X
        nameserver X.X.X.X

Теперь необходимо проверить, как работает «сеть», пробуем пингануть
локалку и шлюз провайдера…

Сначала пишем скрипт, чтобы «запустить» НАТ.

С помощью, например, MC назовем скрип goinet и установим права на запуск (должна
появиться звездочка перед именем файла), запускаем:

        #!/bin/sh
        INET="eth1"
        INETIP="X.X.X.X"

        iptables -F INPUT
        iptables -F FORWARD
        iptables -F OUTPUT

        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD ACCEPT

        iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP
        echo "1" > /proc/sys/net/ipv4/ip_forward

Файрвол с комментариями будет ниже — просто даем интернет. После запуска этого
скрипта на одной из рабочих станций под управлением MS Windows(вся офисная сеть
построена на базе домена Windows 2003 Server и рабочих станций на базе ОС MS Windows
XP SP2) устанавливаем адрес шлюза = адресу нашего Линукс роутера в локальной сети,
так же адреса ДНС серверов провайдера и пробуем пингануть шлюз провайдера и зайти в
интернет.

Если все работает, значит можно приступать к установке системы «раздачи» интернета.
Настройку файрвола нужно проводить после установки и конфигурирования системы учета трафика
и ВПН, т.к. помимо глюков с инетом и ВПН возникнут глюки с файрволом и разобраться,
какой глюк где, будет очень сложно.

В случае дублирования IP адреса в локальной сети нашего интернет сервера
с одной из рабочих станций, будут очень жесткие и непредсказуемые ошибки во
всей сети. Интернет будет то работать, то нет, пинг то проходит, то нет.
Если при пинговании одного из IP адресов локальной сети с роутера возникают
потери пакетов, то одна из возможных ошибок — это дублирование IP адреса.

Установка и настройка SQUID+SAMS.

Сначала необходимо установить все пакеты, необходимые для работы этой связки.
Пишем скрипт, например go-SAMS-DEB:

        #!/bin/sh
        aptitude install apache2 apache2-mpm-prefork
        aptitude install libapache2-mod-php5 php5-cgi php5-common php5-mysql
        aptitude install mysql-server mysql-client libmysqlclient15off
        aptitude install squid
        aptitude install libpcre3
        apt-get install php5-gd
        apt-get install libpcre3-dev
        apt-get install libmysqlclient15-dev
        apt-get install gcc
        apt-get install make

Собираем и устанавливаем SAMS из исходников, работает корректней, чем из deb пакетов,
которые были доступны на момент написания этой статьи. Для более подробной информации
читаем документацию для SAMS.

Будем использовать класическую авторизацию на прокси сервере SQUID, то есть
NCSA авторизацию.

Изменяем один из конфигов апача /etc/httpd.conf, сейчас он пустой, пишем в конфиг следующее:

        AddType application/x-httpd-php .php .phtml
        Options ExecCGI

Если у вас возникли проблемы с кодировкой веб интерфейса,
надо в конфиге апача(/etc/apache2/apache2.conf) задать параметр

    AddDefaultCharset Off

В конфиге SAMSa /etc/sams.conf в поле MYSQLPASSWORD= указываем пароль, он
и будет использоваться при создании базы в Web интрефейсе. Так же проверяем путь
SAMSPATH=/usr/local, в каталоге /usr/local/bin должны находиться бинарники SAMSa.

В конфиг SQUIDa /etc/squid/squid.conf в поле тега TAG: auth_param (после комментариев)
добаляем параметры ncsa авторизации(не в конец файла!):

        auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ncsa.sams
        auth_param basic children 5
        auth_param basic realm Squid proxy-caching web server
        auth_param basic credentialsttl 2 hours

На всякий случай нада проверить наличие файла /usr/lib/squid/ncsa_auth

Конфигурирование файла /etc/php5/apache2/php.ini:

раскомментируйте вызов библиотеки поддержки mysql:

     extensions=mysql.so

C версии 1.0 SAMS работает в safe_mode php
Настриваем php для работы в режиме safe mode
включаем режим safe mode. Для этого выставляем параметр safe_mode:

     safe_mode = On

SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo.
В режиме safe_mode php блокирует доступ к системным командам. Php позволяет выполнять
системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir.
Изменяем этот параметр:

  safe_mode_exec_dir = "/usr/local/share/sams/bin"

Далее разрешаем исполнение системных скриптов из кода php. Ищем в файле конфигурации параметр

 disable_functions = "chdir,dl,ini_get_all,phpinfo,system,shell_exec,popen,proc_open,exec,passthru,pcntl_exec"

и если он не пустой, убираем из него запрет вызова функций phpinfo system shell_exec exec

Также убираем запрет вызова функций phpinfo system shell_exec exec в параметре

  hphp.executor.func.blacklist = chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec

Копируем скрипт samsd.debian (находится в исходных текстах /sams-1.0.1/etc/) в /etc/init.d/
переименовываем его в samsd и выполняем команду добавления запуска демона при автозагрузке ОС:

 update-rc.d samsd defaults

Меняем владельца каталога /usr/local/share/sams на наш интернет сервер apache2
(Можно использовать миднайт командер):

  chown -R www-data:www-data /usr/local/share/sams

Так же меняем владельца конфигурационного файла /etc/sams.conf:

   chown www-data:www-data /etc/sams.conf

Изменяем права на /usr/local/share/sams и на все, что в нем есть:

  chmod 700 -R /usr/local/share/sams

Устанавливаем полный доступ на файлы в каталоге /usr/local/share/sams/data:

  chmod 777 /usr/local/share/sams/data -R

Создаем символическую ссылку из корневой директории сервера APACHE2 на директорию, в которой
находятся файлы SAMS:

    ln -s /usr/local/share/sams /var/www

Переименовываем файл(если нужно) /usr/local/share/sams/lang/lang.en в lang.EN,
также, если нужно переименовываем каталоги /usr/local/share/sams/doc/en и ru в EN и RU.

Перезагружаем веб сервер и прокси сервер:

        /etc/init.d/apache2 restart
        /etc/init.d/squid restart

Права на каталоги SAMSa(/usr/local/share/sams, и на линк /var/www/sams), в случае
если SAMS не захочет работать, можно выставить позже, сначала поставить 777 на все,
а уже при шлифовке конфигурации выставить как положено.

Веб интерфейс SAMS готов к работе. В браузере заходим на /X.X.X.X/sams, где
Х.Х.Х.Х IP адрес нашего роутера в локальной сети.

Жмем кнопку создать базы. Вводим пароль для юзера sams, который указан в конфиге
/etc/sams.conf. Создаем базы. Запускаем Web интерфейс SAMS. Для добавления пользователей
логинимся под юзером admin пароль по умолчанию qwerty. Для юзера auditor, пароль по умолчанию
audit.

Необходимо выставить авторизацию NCSA в администрировании SAMS и в шаблонах,
а так же выставить чтение логов SQUID через равные промежутки времени. При непрерывном
способе падает лог SQUIDa access.log. В случае, если это произошло необходимо
удалить этот файл и создать новый с правами как у старого, предварительно
изменив непрерывный способ чтения логов на дискретный, например раз в 1 минуту.
Позже можно установить параметры чтения логов раз в 10 минут например, и
и проверять наличие команды на реконфигурирование squid каждые 5 секунд,
вообщем как можно реже, без ущерба для контроля за трафиком. Это необходимо,
чтобы оптимально использовать ресурсы интеренет сервера.

если в файле /var/log/squid/caсhe.log:

        2004/11/01 10:34:19| Rebuilding storage in /usr/local/squid/cache (DIRTY)
        2004/11/01 10:34:20| Store rebuilding is  2.8% complete
        2004/11/01 10:34:21| WARNING: newer swaplog entry for dirno 0, fileno 00002098
        2004/11/01 10:34:34| WARNING: Disk space over limit: 1251072 KB > 1048576 KB

Места еще навалом, df показывает что свободно еще больше 50%

возможно запортился файл swap.state из-за сбоев системы или пропадания электроэнергии,
попробуй сделать так:
1 — останови сквид
2 — убей файл swap.state (обычно в каталоге /usr/local/squid/cache )
3 — запусти сквид, он пересоздаст swap.state, правда это займет некоторое время.
А размер кэша для диска в конфиге сквида случаем не менял ? если менял, возможно
придется пересоздать дисковый кэш.

при сохранении и загрузке конфигурации SAMSa через вэб интерфейс
падают пароли пользователей, т.е. прописываются в файл ncsa.sams
в незашифрованном виде

После добавления пользователя при его будущем редактировании(когда пароль уже
был введен, нужно, например, изменить ФИО пользователя) возможны глюки с паролем.
Если при сохранении параметров поле пароля осталось пустым,
то возможно пароль для этого юзера будет падать и станет невозможным залогиниться на прокси сервер.
Лечиться так:

Проблема в файле src/userbuttom_1_prob.php
Когда редактировал юзера, на форме в поле пароль было пусто. Не знаю почему, видимо
так и должно быть — типа если пароль меняешь, то введешь новый, а если не меняешь то и
нечего его вообще показывать, но вот в описанном файле было сравнение старого пароля
с тем что передан в форме, но проверки на его «пустоту» не было. Вставил проверку,
если пароль пустой то и не менять его.

                  if($auth=="ncsa"||$auth=="ip")
                   {
                     if(isset($_GET["passwd"])) $passwd=$_GET["passwd"];
                     else $passwd="";
                    $passwd=trim($passwd);
                  ........

                     if ($passwd!="")
                     {
                          if($password!=$defpassw)  $passwd=$password;
                     }
                     else
                     {
                      $passwd=$defpassw;
                      }

Вместо:

                  if($auth=="ncsa"||$auth=="ip")
                   {
                     if(isset($_GET["passwd"])) $passwd=$_GET["passwd"];
                  ........
                     if($password!=$defpassw)  $passwd=$password;

PS ncsa.sams менялся всегда, когда редактировал пользователя, даже если пароль не трогал.

Установка и настройка VPN.

Для VPN будем использовать PoPToP. Он есть в дистрибутиве Debian.
Устанавливаем командой:

   apt-get install pptpd

Далее «идем в конфиг» /etc/pptpd.conf и правим в нем например так:

        #IP адрес, который будет дан роутеру "на" VPN соединении
        localip 192.168.1.1
        #диапазон IP адресов, который будет дан клиенту
        remoteip 192.168.1.234-238

Перезагружаем сервис(демона) pptpd, чтобы изменения вступили в силу:

      /etc/init.d/pptpd restart

Добавляем пользователя нашего VPN сервера в файле /etc/ppp/chap-secrets
(<логин> pptpd <пароль> <адрес, который получит клиент на своей стороне впн интерфейса>):

  vpnuser pptpd 123 *

Пробуем подключиться через создание ВПН соединения к роутеру из MS Windows.

В каталоге /etc/ppp/ip-up.d создаем файл, например, go_vpn_log с правами 755,
и пишем в него следуюшие:

        #!/bin/sh
        echo "------------------------------------------------" >> /var/log/vpn.log
        date >> /var/log/vpn.log
        echo "from IP $6 with speed $3">> /var/log/vpn.log
        echo "------------------------------------------------" >> /var/log/vpn.log

Теперь при подключении VPN-клиента информация о подключении
будет записываться в наш лог файл /var/log/vpn.log

Файрвол iptables.

Теперь наша задача разрешить доступ к интернету из локальной сети только так,
как нужно, и запретить все из вне, кроме того, что нам нужно, используя iptables.

И так первое правило: все, что окружает наш роутер — это зло. Для обеспечения
безопастности не будем делать разницы между компьютерами в локальной сети
и компьютерами во внешней сети(интернет), и в файрволе явно пропишем правила для каждого
обращения через/на наш интернет сервер.

Немнога теории: когда пакет попадает на наш роутер, сначала он попадает в таблицу
mangle цепочка PREROUTING, далее он идет в таблицу nat-PREROUTING, далее, в зависимости
от того куда направлен пакет, он идет либо:

   1.mangle-INPUT..filter-INPUT..local_routing..mangle-OUTPUT..nat-OUTPUT..filter-OUTPUT..выход

либо:

   2.mangle-FORWARD..filter-FORWARD..выход

потом на выход: mangle-POSTROUTING..nat-POSTROUTING.

Вывод можно сделать такой: нас интересуют только 2 цепочки таблицы filter:
это INPUT — то есть все то, что ломится непосредственно на наш сервер и
цепочка FORWARD, то есть все то, что идет через роутер как в локальную сеть
так и из нее.

Политика такая, все вообщем изначально бан, и далее:

INPUT:

Запрещаем все, что непосредственно долбится на наш cервер, кроме:
VPN из вне и SSH+SQUID из локалки, то есть: можно подключиться к нашему
серверу(зная пароль) ТОЛЬКО по VPN из интернета(порт 1723), все остальное запрещено
(нет фильтрации по IP адресу, тк заранее не известен диапозон IP адресов, с которых
будет подключение, т.е. например, ноутбук из любой точки России).

И на прокси сервер(порт 3128) + SSH(порт 22), опять же зная пароли доступа,
из локальной сети.

Разрешаем выходить любым пакетам из нашего роутера(OUTPUT), т.к. в этом случае
инициатором подключения является наш сервер(SQUID, обновления безопастности, например).
Так же разрешаем уже установленные входящие подключения, инициированные интернет сервером.

FOWRWARD:

Пользователям локальной сети(помимо SQUID) разрешаем DNS запросы(почта, чтоб
не «мусорить» циферками серверов в настройках TheBat). Аська убрана, и будет
подключаться через SQUID(HTTPS), в файрволе просто закомментирована.
А так же разрешаем установленные соединения из локальной сети, которые были разрешены.

Для коннекта аськи через SQUID необходимо просто в ее настройках указать,
что подключение будет HTTPS, указать адрес и порт 3128 нашего прокси сервера
и задать логин и пароль доступа на прокси сервер.

И так еще раз обрисуем более подробно, чтоже нам нужно обеспечить:

1. Доступ в интернет пользователям локальной сети через прокси сервер SQUID.

2. Доступ на БЕСПЛАТНЫЕ и «БУХГАЛТЕРСКИЕ»(эл. отчетность) почтовые сервера,
минуя прокси сервер, напрямую (если упадет SQUID, то по крайней мере основная
артерия документооборота организации будет работать).

3. Доступ из вне по VPN, а так же! используя VPN подключение, доступ
на сервер терминалов организации (например, удаленное администрирование 1С бухгалтерии)

4. Доступ к APlusServer(порт 5555), который установлен на сервере терминалов, для обмена
данными 1С с КПК сотрудников организации, подключенными(КПК :) ) к интеренет.

Для написания файрвола принципиально важно понимать как идет пакет, который
мы хотим обработать. Без знания теории максимум, что может получиться — это хороший
копипаст. Оставляю чтение документации и изучения синтаксиса iptables на совести
администратора, хотя в подробном разборе файрвола будет все описано достаточно точно.

И так, файрвол(/etc/fw):

                #!/bin/sh
                #Закоментированно, все что касается аськи, кто хочет может пустить ее напрямую из локалки,
                #но не рекомендую, накачают трафика юзеры.
                #Описываем переменные. Так файрвол будет более компактный, читаемый
                #и масштабируемый:
                SERVER1C="192.168.х.х"
                INET="eth1"
                NET="eth0"
                NET_NET="192.168.х.х/24"
                INETIP="х.х.х.х"
                LANIP="192.168.х.х"
                ELCOM_SMTP="х.х.х.х"
                ELCOM_POP="х.х.х.х"
                IRIDAN="х.х.х.х"
                UNPRIVPORTS="1024:65535"
                DNS_SERVER1="х.х.х.х"
                DNS_SERVER2="х.х.х.х"
                #ICQ_SERVER1="64.12.0.0/16"
                #ICQ_SERVER2="205.188.0.0/16"
                SYSADMIN="192.168.х.х"

                #Сбрасываем все правила.
                #Таблицы nat и mangle засоряются
                #при отладке файрвола, когда его нужно запускать
                #несколько раз для тестирования, например сервера APlusServer
                #и в случае, если это не учесть, будут сильные глюки
                #при обмене КПК с сервером.
                iptables -F INPUT
                iptables -F FORWARD
                iptables -F OUTPUT
                iptables -t nat -F PREROUTING
                iptables -t nat -F POSTROUTING
                iptables -t mangle -F

                #Политика по умолчанию, запретить все нах
                iptables -P FORWARD DROP
                iptables -P INPUT DROP
                iptables -P OUTPUT DROP

                #Прямо дропаем пакеты NEW, но без флага --syn(запрос на установку соединения)
                iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP

                #Явный бан всех запросов на соединение из инета,
                #кроме тех, которые нужны, а нам нужен только VPN(порт 1723)
                iptables -A INPUT -d $INETIP -p TCP --syn --dport ! 1723 -j DROP

                #ДАем VPN для PoPToPа
                #разрешаем порт 1723 и протокол 47(используется при авторизации)
                iptables -A INPUT -p TCP -d $INETIP --dport 1723 -j ACCEPT
                iptables -A INPUT -p 47 -j ACCEPT

                #Даем сервер терминалов для VPN подключений порт 3389
                iptables -A FORWARD -p TCP -s $NET_NET -d $SERVER1C --dport 3389 \
                -j ACCEPT

                #Порт форвардинг, перенапрявляем запросы на наш APlusServer,
                #который установлен на сервере терминалов.
                #После разрешаем в цепочке FORWARD ходить туда клиентам
                iptables -t nat -A PREROUTING -d $INETIP -p TCP --dport 5555 \
                -j DNAT --to-destination $SERVER1C:5555
                iptables -A FORWARD -p TCP -d $SERVER1C --dport 5555 -j ACCEPT

                #Открываем TCP порты каторые слушать только из локалки
                #SQUID+SSH
                iptables -A INPUT -s $NET_NET -p TCP -d $LANIP -m multiport \
                --dport 22,3128 -j ACCEPT

                #Даем инет юзерам, ессно через SQUID
                #То есть разрешаем уже установленные входящие подключения
                #на незарезервированные порты(смотрим матчасть, как устанавливается
                *соединение, например, при запросе клиента на www.ya.ru)
                iptables -A INPUT -d $INETIP -p TCP --dport $UNPRIVPORTS \
                -m state --state ESTABLISHED,RELATED -j ACCEPT

                #Разрешить DNS для сквида и для локалки(почта, аська).
                #Чтобы злой умышленник не смог подменить свой IP адрес и закосить
                #под наш ДНС сервер, разрешаем ТОЛЬКО ответы на нашы ДНС запросы
                #В протокле UDP, если пакет не первый, то он получает статус ESTABLISHED
                #Так же обрабатываем протокол TCP. Очень редко, когда это может понадобиться,
                #т.к. в основном он используется при обмене данными ДНС серверов, но все же...
                iptables -A INPUT -p UDP -s $DNS_SERVER1 -m state --state ESTABLISHED \
                --sport 53 -j ACCEPT
                iptables -A INPUT -p TCP -s $DNS_SERVER1 --sport 53 --dport $UNPRIVPORTS \
                -m state --state ESTABLISHED -j ACCEPT
                iptables -A INPUT -p UDP -s $DNS_SERVER2 -m state --state ESTABLISHED \
                --sport 53 -j ACCEPT
                iptables -A INPUT -p TCP -s $DNS_SERVER2 --sport 53 --dport $UNPRIVPORTS \
                -m state --state ESTABLISHED -j ACCEPT

                iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT
                iptables -A FORWARD -p UDP -s $DNS_SERVER1 -d $NET_NET --sport 53 \
                -m state --state ESTABLISHED -j ACCEPT
                iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT

                iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT
                iptables -A FORWARD -p UDP -s $DNS_SERVER2 -d $NET_NET --sport 53 \
                -m state --state ESTABLISHED -j ACCEPT
                iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT

                #Почта только провайдерная и электронная отчетность,
                #остальная бан, ибо нех
                iptables -A FORWARD -s $NET_NET -d $ELCOM_POP -p TCP --dport 110 -j ACCEPT
                iptables -A FORWARD -s $NET_NET -d $ELCOM_SMTP -p TCP --dport 25 -j ACCEPT

                iptables -A FORWARD -s $NET_NET -d $IRIDAN -p TCP --dport 110 -j ACCEPT
                iptables -A FORWARD -s $NET_NET -d $IRIDAN -p TCP --dport 25 -j ACCEPT

                #ICQ, разрешаем авторизацию аське, кому нада раскомментируйте
                #iptables -A FORWARD -p TCP -s $NET_NET -d $ICQ_SERVER1 --dport 5190 -j ACCEPT
                #iptables -A FORWARD -p TCP -s $ICQ_SERVER1 -d $NET_NET --sport 5190 \
                #-m state --state ESTABLISHED -j ACCEPT

                #Разрешаем ICQ отправлять сообщения и все что с этим связано
                #нет нормальной спецификации на ICQ, все со снифера
                #iptables -A FORWARD -p TCP -s $NET_NET -d $ICQ_SERVER2 --dport 5190 -j ACCEPT
                #iptables -A FORWARD -p TCP -s $ICQ_SERVER2 -d $NET_NET --sport 5190 \
                #-m state --state ESTABLISHED -j ACCEPT

                #Разрешаем уже установленные соединения, выше было разрешено
                #только обращаться во вне из локальной сети, но надо же чтобы и ответы
                #на запросы доходили, то есть даем в локалку
                #кпк сервер, днс, почту и терминал, все остальное либо через сквид
                #либо никаГ
                iptables -A FORWARD -p TCP -m state --state ESTABLISHED,RELATED \
                -m multiport --sport 5555,53,110,25,3389 -j ACCEPT

                #Внутри дИмакратия, то есть разрешаем нашему серверу устанавливать соединения,
                #а так же чтоб "внутри все ходило"
                iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
                iptables -A INPUT -p ALL -s $LANIP -i lo -j ACCEPT
                iptables -A INPUT -p ALL -s $INETIP -i lo -j ACCEPT
                iptables -A OUTPUT -p ALL -d 127.0.0.1 -o lo -j ACCEPT
                iptables -A OUTPUT -p ALL -s $INETIP -j ACCEPT
                iptables -A OUTPUT -p ALL -s $LANIP -j ACCEPT
                iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT

                #Дырочка для сисадмина :)
                #ну это святое, малоли взгрустнется, и нада будет развеять скуку,
                #поубивав зомби и в очередной раз спасти все человечество от злой гнили
                #накрайняк скачать новый фильмец с трекера, и под пиво его посмотреть
                iptables -A FORWARD -p TCP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT
                iptables -A FORWARD -p TCP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT

                iptables -A FORWARD -p UDP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT
                iptables -A FORWARD -p UDP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT

                #копипаст, пусть будет, мат.часть не помешает:
                #Есть некоторые провайдеры, которые очень не любят, когда одним
                #подключением пользуется несколько компьютеров, если мы начинаем
                #устанавливать на все пакеты одно и то же значение TTL, то тем
                #самым мы лишаем провайдера одного из критериев определения того,
                #что подключение к Интернету разделяется несколькими компьютерами.
                #Для примера можно привести число TTL = 64, которое является стандартным
                #для ядра Linux.
                iptables -t mangle -A PREROUTING -i $INET -j TTL --ttl-set 64

                #Включаем НАТ
                iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP
                echo "1" > /proc/sys/net/ipv4/ip_forward

Добавляем после отладки наш файрвол в автозагрузку, есть скрипт, который
запускается последним при загрузке системы /etc/rc.local, вот туда и пишем
команду /etc/fw(/полный путь/fw) и не забываем установить права на fw:
chmod 711 /etc/fw (полный доступ ТОЛЬКО! для владельца и запуск для всех остальных).

zp8497586rq











































































































































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

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 – часть ... [+]