Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Статьи об операционной системе Linux

Сайдбар

Самостоятельно настроить брандмауэр с помощью iptables в Linux

03 окт. 2014

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


Сценарий Init-V



При запуске либо остановке работы брандмауэра и, разумеется, на этапе проведения испытаний, вам пригодится сценарий Init-V myfirewall. Он сохраняет путь, идущий из iptables и sysctl, в переменных IPT hSYS, а затем проверяет, существуют ли три необходимых конфигурационных файла.

Затем сценарий считывает файл /etc/default/myfirewall. Только если брандмауэр активизирован, сценарий продолжает работу. Команды для запуска и остановки работы брандмауэра находятся в файле /etc/myfirewall/*.conf. Обратите внимание, что правила остановки выполняются и при запуске! Они как бы «сбрасывают показатели» системы сетевого фильтра, благодаря чему гарантируется, что при выполнении правил запуска не возникнет никаких конфликтов с правилами, которые могли быть определены ранее.

#!/bin/sh -e

# собственный сценарий Init-V /etc/init.d/myfirewal! ### BEGIN INIT INFO

# Provides: firewall

# Required-Start: networking

# Required-Stop:

# Default-Start: S

# Краткое описание: запуск брандмауэра и маскарадинга ### END INIT INFO

# Основные функции

. /lib/lsb/init-functions IPT=$(which iptables) SYS=$(which sysctl)

# Конфигурационные файлы

# (Выполняется проверка для /etc/myfirewall/myfirewall-start.conf

# и /etc/myfirewall/myfirewall-stop.conf ...) if [! -e /etc/default/myfirewall ]; then

echo "/etc/default/myfirewall is missing"

exit 0

fi

. /etc/default/myfirewall if [ $MFW_ACTIVE != «yes» ]; then echo «Firewall disabled in /etc/default/myfirewall»

exit 0

fi

# Функции для start, stop и restart case "$1" in

start|restart) log_begin_msg «Starting firewall and masquerading ...». /etc/myfirewall/myfirewall-stop.conf. /etc/myfirewall/myfirewall-start.conf

log_end_msg О stop)

log_begin_msg «Stopping firewall and masquerading ...». /etc/myfirewall/myfirewall-stop.conf

log_end_msg 0 *)"

log_success_msg «Usage: xxx {start|stop|restart}» exit 1

esac exit 0

Для того чтобы этот сценарий автоматически выполнялся при запуске системы, создайте следующую ссылку:

<code>root# cd /etc/rcS.d

root# ln -s ../init.d/myfirewall S41myfirewall
</code>

Конфигурация.

При работе сценарий обращается к трем конфигурационным файлам:

/etc/myfirewall/myfirewall-start.conf — запуск брандмауэра;
/etc/myfirewall/myfirewall-stop.conf — остановка брандмауэра;
/etc/default/myfirewall — базовые настройки.

В /etc/default/myfirewall содержится множество базовых настроек, регулирующих работу брандмауэра. Параметр MFW ACTIVE определяет, должен ли брандмауэр активизироваться при запуске системы; MFW_MASQ указывает, следует ли активизировать функцию маскарадинга:

# Файл /etc/default/myfirewall

# Запуск брандмауэра yes/no MFW_ACTIVE=yes

# Запуск маскарадинга: yes/no MFW_MASQ=yes

# Локальная сеть MFW_LAN=ethl

MFW_LAN_IP=192.168.0.0/24

# Интернет MFW_INET=ethO

Остановка работы брандмауэра



После завершения работы по администрированию подробнее рассмотрим те правила, по которым работает брандмауэр. Сценарий, останавливающий работу брандмауэра, выглядит так:

# Файл /etc/myfirewall/myfirewall-stop.conf

# Сбросить iptables $IPT -Р INPUT ACCEPT $IPT -Р OUTPUT ACCEPT $IPT -P FORWARD ACCEPT

$1РТ -Р POSTROUTING ACCEPT -t nat $IPT -P PREROUTING ACCEPT -t nat $IPT -P OUTPUT ACCEPT -t nat $IPT -F

$IPT -F -t nat $IPT -X

# Остановить маскарадинг

$SYS -q -w net.ipv4.ip_forward=0

Здесь мы видим исходное состояние iptables: команда iptables -P устанавливает по умолчанию для всех фильтров действие Accept; iptables -F удаляет все имеющиеся правила, причем для таблицы трансляции сетевых адресов требуется отдельная KOMaHfla;iptables -X удаляет все заданные пользователем цепочки правил. Теперь в сетевом фильтре разрешен любой сетевой трафик.

Запуск брандмауэра



Разумеется, сценарий myfirewall-start.conf гораздо интереснее. Он начинается с правила, разрешающего доступ к SSH-серверу и к Интернету. Это правило имеет смысл лишь в том случае, когда компьютер напрямую соединен с Интернетом (а не через ADSL-роутер или другой компьютер) и администрирование должно осуществляться извне. Если на компьютере предлагается не только SSH, но и другие общедоступные службы, то вы должны специально разрешить и использование этих служб.

Порядок, в котором следуют команды iptables, имеет определяющее значение, так как интерпретация правил прекращается сразу же после того, как то или иное правило будет выполнено! Существует две возможные стратегии формулирования правил для брандмауэра: сначала вы можете выборочно разрешить использование отдельных пакетов, а потом заблокировать все остальные пакеты с помощью заключительного правила. Можно также сразу запретить некоторые наиболее опасные пакеты, а в последнем правиле указать, что использование всех остальных пакетов допускается. Именно по второму варианту строится заданный по умолчанию алгоритм работы команды iptables, принимающей пакеты при условии, что отсутствуют правила, которые бы прямо это запрещали.

Закрытие портов



Цикл for полностью блокирует некоторые порты от всей информации, приходящей из Интернета. При необходимости вы можете сами дополнить этот список портов.

# Файл /etc/myfirewall/myfirewall-start.conf

# Разрешить доступ из Интернета к SSH-серверу (порт 22) $IPT -A INPUT -i $MFW_INET -р tcp --dport 22 -j ACCEPT

# полностью закрыть определенные порты

# 23 (telnet)

# 69 (tftp)

# 135 (Microsoft DCOM RPC)

# 139 (NetBIOS/Samba/т.д.)

# 445 (Файловая система CIFS для Samba/SMB)

# 631 (ipp/CUPS)

# 1433 (Microsoft SQL Server)

# 2049 (NFS)

# 3306 (MySQL)

# 5999-6003 (X-Displays)

for PORT in 23 69 135 139 445 631 1433 2049 3306 \ 5999 6000 6001 6002 6003; do $IPT -A INPUT -i $MFW_INET -p tcp --dport SPORT -j DROP $IPT -A OUTPUT -o $MFW_INET -p tcp --dport SPORT -j DROP $IPT -A INPUT -i $MFW_INET -p udp --dport SPORT -j DROP $IPT -A OUTPUT -o $MFW_INET -p udp --dport SPORT -j DROP done

Цепочка правил wall



В следующем примере задается новая цепочка правил под названием wall. Эта цепочка — одновременно очень изящная и эффективная защита от новых соединений, устанавливаемых извне. Первое правило wall гласит, что должны приниматься все пакеты, которые относятся к уже существующему соединению.

Второе правило позволяет принимать пакеты, инициирующие новое соединение, если это соединение устанавливается не через интернет-интерфейс. Благодаря этому правилу мы, например, можем установить из локальной сети SSH-соединение с компьютером.

Третье правило указывает, что все пакеты, не соответствующие предыдущим правилам, должны отклоняться. Иначе говоря, это правило можно сформулировать как «Все, что не разрешено, — запрещено!». Тогда потенциальному агрессору, которых хочет прорваться на ваш компьютер из Интернета, не удастся даже запустить SSH-соединение (разумеется, то же касается и любых других сетевых служб — HTTP, FTP, Telnet и т. д.).

Две заключительные команды сценария указывают, что все пакеты, проходящие через фильтры входа и переадресации, проверяются на основании правил wall:

# Файл /etc/myfirewall/myfirewall-start.conf (продолжение)

# Эта цепочка правил блокирует все попытки соединений,

# инициируемые извне (из Интернета) $IPT -N wall

$IPT -A wall -m state --state ESTABLISHED.RELATED -j ACCEPT $IPT -A wall -m state --state NEW -i! $MFW_INET -j ACCEPT $IPT -A wall -j DROP

# Эта цепочка правил применяется для INPUT и FORWARD $IPT -A INPUT -j wall

$IPT -A FORWARD -j wall

Маскарадинг


Наконец, активизируем маскарадинг:

# Файл /etc/myfirewall/myfirewall-start.conf (продолжение)

# Активизация маскарадинга

if [ $MFW_MASQ = 'yes' ]; then $IPT -A POSTROUTING -t nat -o $MFW_INET -s $MFW_LAN_IP -j MASQUERADE $SYS -q -w net.ipv4.ip_forward=l

fi
Читайте так же:
Настройка vpn linux

Подпишитесь на рассылку! Никакого спама, только обновления!!!

Комментарии (0)


    Услуги по MODX Revolution

    Посмотреть все услуги

    Техническая оптимизация сайта

    Подробнее & Заказать

    Создание сайта на MODX Revolution

    Подробнее & Заказать

    Перенос сайта на MODX Revolution

    Подробнее & Заказать

    Продвижение сайта на MODX

    Подробнее & Заказать