Суббота, 20.04.2024, 01:55
# FreeBSD ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [167]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Каталог статей 
Главная » Статьи » Мои статьи

Брандмауэр LINUX
Ядро linux содержит подсистему (модуль) Netfilter, которая используется для управления пакетами приходящими на или проходящими через ваш сервер. Все современные брандмауэры используют эту систему для фильтрации tcp пакетов. Эта система без интерфейса управления ей мала полезна для администратора. Для управления используется iptables. При получении пакетом вашим сервером, он передается Netfilter для принятия им решения: принять, обработать, или отбросить его на основе правил заданных с помощью iptables. Таким образом, iptables это все, что нужно для управления брандмауэром, если вы знакомы с ним, но существует множество программ для упрощения управления iptables.
8.3.2.ufw — простой в использовании брандмауэр 

В Ubuntu для управления брандмауэром по умолчанию используется ufw. Он разработан для упрощения управления iptables, ufw предоставляет простой механизм для создания правил фильтрации пакетов IPv4 или Ipv6. 

ufw после установки отключен. Выдержка из ufw «man page»: 

« ufw is not intended to provide complete firewall functionality via its command interface, but instead provides an easy way to add or remove simple rules. It is currently mainly used for host-based firewalls.

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

Ниже приведены примеры использования ufw: 

Вопервых, необходимо включить ufw. Наберите в командной строке: sudo ufw enable

Открыть порт (для примера ssh ): sudo ufw allow 22 

Аналогично, чтобы закрыть доступ к порту: sudo ufw deny 22 

Для удаления правила, используйте правило delete: sudo ufw delete deny 22 

Возможно разрешить доступ для определенных хостов или сетей. Следующий пример показывает как разрешить доступ хосту с ip адресом 192.168.0.2 на хост с любым ip по протоколу ssh: sudo ufw allow proto tcp from 192.168.0.2 to any port 22. Если заменить 192.168.0.2 на 192.168.0.0/24 то мы разрешим протокол ssh для любого хоста этой локальной сети. 

При указании опции the --dry-run будет выводить результат применения правила, но применяться они не будут. Например, при вводе команды : sudo ufw --dry-run allow http будет показана цепочка применяемых правил для открытия порта HTTP.

ufw можно отключить: sudo ufw disable 

Для просмотра состояния брандмауэра, наберите: sudo ufw status 

Для вывода дополнительной информации о состоянии используйте: sudo ufw status verbose 

Если порт который вы хотите открыть или закрыть определен в файле /etc/services, вы можете указывать текстовое имя порта вместо его номера. Например, в приведенных выше примерах, замените 22 на ssh. 

Здесь мы привели поверхностное описание использования ufw. Обратитесь к man ufw чтобы получить более подробную информацию. 
8.3.2.1. ufw Application Integration

Порты которые необходимо открыть для работы с некоторыми приложениями могут храниться в профилях ufw , в которых перечислены порты необходимые для функционирования программы.. Профили хранятся /etc/ufw/applications.d, их можно изменить если порты по умолчания были изменены. 

Чтобы посмотреть профили для каких приложений установлены, наберите в командной строке: sudo ufw app list

Использование правил с профилями аналогично использованию правил открытия портов: sudo ufw allow Samba

Также доступен расширенный синтаксис: ufw allow from 192.168.0.0/24 to any app Samba Замените Samba и 192.168.0.0/24 профилем нужного вам приложения и адресом вашей сети. Нет необходимости указывать протокол для приложения, так как эта информация содержится в профиле ufw, имя приложения(имя профиля) заменяет номер порта при вводе правил.

Для просмотра детальной информации о портах, протоколах и т.п. - которые описаны в профиле, наберите: sudo ufw info Samba Не все программы которые требуют для своей работы открытия портов поставляются с профилями ufw, но если у вас есть собственные профили для ваших программ и вы хотите включить их официальные пакеты, то пожалуйста отпишитесь в соответствующий проект на Launchpad.

8.3.3.1. ufw Masquerading 

Включить маскарадинг можно используя правила ufw. Это возможно благодаря тому что iptables является back-end для ufw, конфигурационные правила которого расположены в файлах /etc/ufw/*.rules. Эти файлы содержат настройки для правил iptables, и могут содержать правила для настройки сетевых шлюзов и мостов. 

Файлы разделяются на два вида, правила которые выполняются до и после выполнения команд ufw. 

Во первых , необходимо включить пересылку пакетов. Для этого убедитесь, что в файле /etc/default/ufw параметру DEFAULT_FORWARD_POLICY присвоено значение "ACCEPT”:

DEFAULT_FORWARD_POLICY="ACCEPT"

В файле /etc/ufw/sysctl.conf уберите комментарий из строчки:

net.ipv4.ip_forward=1

net.ipv6.conf.default.forwarding=1

Далее необходимо в начало файла (после начальных коментариев) /etc/ufw/before.rules добавить правила:

#nat Table rules 

*nat 

:POSTROUTING ACCEPT [0:0] 

#Forwardtraffic from eth1 through eth0. 

-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE 

#don't delete the 'COMMIT' line or these nat table rules won't be processed 

COMMIT

Учтите, что после изменений правил в фалах /etc/ufw, вы должны добавлять команду commit 

# don't delete the 'COMMIT' line or these rules won't be processed

COMMIT

После изменений перезапустим ufw:

sudo ufw disable && sudo ufw enable

 
Маскарадинг должен включиться. Вы также можете добавлять любые дополнительные FORWARD правила в /etc/ufw/before.rules. It is recommended that these additional rules be added to the ufw-before-forward chain.
8.3.3.2. iptables Masquerading

Стандартный для linux метод, включения masquerading через iptables

Как и для ufw, первый шаг включение пакетной пересылки. В файле /etc/sysctl.conf расскомментируйте строки: 

net.ipv4.ip_forward=1

net.ipv6.conf.default.forwarding=1

затем , выполните команду sysctl для принятия изменений:

sudo sysctl -p

sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/16 -o eht0 -j MASQUERADE

sudo iptables -A FORWARD -s 192.168.1.0/16 -o eth0 -j ACCEPT

sudo iptables -A FORWARD -d 192.168.1.0/16 -m state --state ESTABLISHED,RELATED -i eth0 -j ACCEPT

Чтобы все это работало после перезагрузки необходимо добавить эти команды в файл /etc/rc.local. Настройки хорошо описаны в различных источниках о linux, поэтому не буду их комментировать.
8.3.4.Logs 

Журналы брандмауэра имеют важное значение для обнаружения признаков «взлома», ошибок в написании правил и обнаружении необычного поведения вашей сети.. Вам необходимо создать правила, чтобы эти события попадали в журнал, так же рекомендуется отслеживать в логах поведение создаваемых новых правил, а также рекомендуется протоколировать любые правила которые решают судьбу пакета (такие как ACCEPT, DROP, или REJECT). 

Если вы используете ufw, вы должны включить протоколирование командой: 

sudo ufw logging on 

Для выключения протоколирования, просто замените on на off в этой команде. 

При использовании iptables: 

sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: " 

При получении пакета через порт 80 (HTTP) от локальной машины, будет создана запись в журнале событий, похожая на эту: 

[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0

Данная запись появится в журналах /var/log/messages, /var/log/syslog, и /var/log/kern.log. Это поведение можно изменить отредактировав файл настроек /etc/syslog.conf или установив и настроить демон ulogd и использовать ULOG вместо обычных журналов LOG. Демон ulogd является сервером пользовательского уровня, который «слушает» сообщения протоколирования событий получаемых от ядра, и может сохранять их в любой файл, или в базы данных PostgreSQL или MySQL . Для более легкого анализа содержимого журналов используйте инструмменты анализа, такие как fwanalog, fwlogwatch, или lire. 
8.3.5. Другие инструменты 

Есть множество инструментов помогающие вам в настройке брандмауэра без знания iptables. C GUI интерфейсом:

Довольно популярный и простой в использовании Firestarter

Очень мощный fwbuilder, будет напоминать системы администраторам работающих с другими комерческими системами , например как Checkpoint FireWall-1.

Если вы предпочитаете инструменты командной строки с текстовыми конфигурационными файлами:

Shorewall очень мощное решение, чтобы помочь вам настроить брандмауэр для любой сети. 

ipkungfu работающий брандмауэр "из коробки", также позволяющий вам с легкостью создать сложные правила, отредактировав простой, хорошо документированные конфигурационные файлы.

Fireflier предназначен для desktop применения . Он состоит из сервера (fireflier-сервер), и выбранного вами клиента GUI (GTK или QT), и напоминает другие популярные брандмауэры для Windows

2. Настройка iptables (firewall & nat)

Начнем пожалуй с настройки NAT и фаервола, так же включим форвардинг и исправим некоторые параметры SYSCTL, для выделения нужного количества ресурсов, если у вас к примеру более 5000 компьютеров в локальной сети.

Реализовать все это можно с помощью одного скрипта, который приведен ниже, все парамтры с комментариями.

Код:

#!/bin/bash

OUT="eth0" # Имя исходящего интерфейса, смотрящего в интернет.
OUTADDR="1.1.1.1" # Адрес исходящего интерфейса
IN="eth1" # Имя входящего интерфейса, смотрящего в локальную сеть
INADDR="2.2.2.2" # Адрес входящего интерфейса
NETWORK="10.0.0.0/8" # Адресация вашей локальной сети
ANYWHERE="0.0.0.0/0" # Назначение, любое.
PORTS="1024:65535" # Порты, которые считаются локальными
MULTICAST="224.0.0.0/4" # Мультикаст пакеты, если у вас не используется оставьте как есть,
# если используется IP TV тогда надо удалить этот пункт

ADMINS="2.2.2.3 2.2.2.4" # IP адреса администраторов, имеют полный доступ на сервер, без каких либо ограничений.

##############################################################################################
# Здесь прописаны параметры запуска\остановки\статуса скрипта. лучше не трогайте =)
# Остановка скрипта
case "$1" in
stop)
echo "Shutting down firewall..."

iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table filter --flush
iptables --table nat --delete-chain
iptables --table filter --delete-chain

iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT

echo "...done"
;;
status)
echo $"Table: filter"
iptables --list
echo $"Table: nat"
iptables -t nat --list
;;
restart|reload)
$0 stop
$0 start
;;

##############################################################################################
# Запуск скрипта
start)
echo "Starting Firewall..."
echo ""

# Очистка таблиц и цепочек
iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table filter --flush
iptables --table nat --delete-chain
iptables --table filter --delete-chain

# Назначение глобальных политик фаервола
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

# Загружаем модули, для корректной работы VPN, Active ftp, DCC in IRC которые будут идти через нат.
modprobe ip_nat_ftp
modprobe ip_nat_pptp
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

# Изменение параметров SYSCTL
# Включение форвардинга
echo 1 > /proc/sys/net/ipv4/ip_forward
# Включение форвардинга для VPN
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
# Увеличение размера очередей
echo 32000000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
# Время ожидания до закрытия соединения
echo 14400 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
# Время ожидания до посылки FIN пакета
echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait
# Время ожидания до посылки FIN пакета
echo 10 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent
# Для защиты от syn флуда
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# Увеличиваем размер backlog очереди
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
# Число начальных SYN и SYNACK пересылок для TCP соединения
echo 4 > /proc/sys/net/ipv4/tcp_synack_retries
echo 4 > /proc/sys/net/ipv4/tcp_syn_retries
#Какие порты использовать в качестве локальных TCP и UDP портов
echo "16384 61000" > /proc/sys/net/ipv4/ip_local_port_range
Сколько секунд ожидать приема FIN до полного закрытия сокета
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# Как часто посылать сообщение о поддержании keep alive соединения
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
# Сколько пакетов проверки keepalive посылать, прежде чем соединение будет закрыто.
echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes
# Зaпрещаем TCP window scaling
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
# Запрещаем selective acknowledgements, RFC2018
echo 0 > /proc/sys/net/ipv4/tcp_sack
# Запрещаем TCP timestamps, RFC1323
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
# Уличиваем размер буфера для приема и отправки данных через сокеты.
echo 1048576 > /proc/sys/net/core/rmem_max
echo 1048576 > /proc/sys/net/core/rmem_default
echo 1048576 > /proc/sys/net/core/wmem_max
echo 1048576 > /proc/sys/net/core/wmem_default
# Через какое время убивать соединеие закрытое на нашей стороне
echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries

# Temporary eth0 completely disabled
#iptables -A INPUT -i $OUT -j DROP

# Admins - full control (even dagerous)
for admin_ips in $ADMINS; do

iptables -A INPUT -s $admin_ips -m state --state NEW -j ACCEPT
done

##############################################################################################

# Silently Drop Stealth Scans
# All of the bits are cleared
iptables -A INPUT -p icmp --icmp-type timestamp-request -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# SYN and FIN are both set
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# SYN and RST are both set
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# FIN and RST are both set
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
# FIN is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
# PSH is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
# URG is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP

##############################################################################################

# Multicast - ignore
iptables -A INPUT -s $MULTICAST -j DROP
iptables -A INPUT -d $MULTICAST -j DROP

# any established or related conns are welcome
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Loopback
iptables -A INPUT -i lo -j ACCEPT

# Statistics and auths for customers, ping tests
for net_ips in $NETWORK; do

iptables -A INPUT -p icmp -i $IN --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -i $OUT --icmp-type echo-request -j ACCEPT

done

############ Открываем нужные нам порты.
# FTP
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
# PASSIVE FTP
iptables -t filter -A INPUT -p tcp -m tcp --dport 50000:50500 -m state --state NEW -j ACCEPT
iptables -t filter -A INPUT -p udp -m udp --dport 50000:50500 -m state --state NEW -j ACCEPT
# APACHE
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

########### OUTPUT

iptables -A OUTPUT -p icmp --icmp-type timestamp-reply -j DROP

########### NAT Вписываем сюда IP своих компьютеров в локальной сети.

iptables -t nat -A POSTROUTING -s 2.2.2.10 -o $OUT -j MASQUERADE
iptables -t nat -A POSTROUTING -s 2.2.2.11 -o $OUT -j MASQUERADE
iptables -t nat -A POSTROUTING -s 2.2.2.12 -o $OUT -j MASQUERADE
iptables -t nat -A POSTROUTING -s 2.2.2.13 -o $OUT -j MASQUERADE
iptables -t nat -A POSTROUTING -s 2.2.2.14 -o $OUT -j MASQUERADE

############ PORT FORWARD Сюда вписываем проброс портов локальную сеть.

iptables -t nat -A PREROUTING -p tcp -d $OUTADDR --dport 8230 -j DNAT --to-destination 2.2.2.10:8230
iptables -t filter -A FORWARD -i $OUT -d 2.2.2.10 -p tcp --dport 8230 -j ACCEPT

echo "...done"

echo "--> IPTABLES firewall loaded/activated <--"

##--------------------------------End Firewall---------------------------------##

;;
*)
echo "Usage: firewall (start|stop|restart|status) EXTIF INTIF"
exit 1
esac

exit 0

После настройки этого скрипта под себя у вас выйдет фаервол с политикой DROP, и NAT.

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

Скачайте с сайта разработчика дистрибутив программы Master Shaper .
В архиве вы найдете подробное описание продукта, а так инструкции по использованию и установки.
Программа имеет WEB интерфейс для работы и настройки, а так же серверную часть.
Master Shaper позволяет создавать тарифы, возможна настройка приоритезации трафика, очень гибкая и функциональная система.
Настройка и установка займет у вас совсем не много времени.

Категория: Мои статьи | Добавил: Admin (21.10.2011)
Просмотров: 3646 | Комментарии: 6 | Рейтинг: 0.0/0
Всего комментариев: 3
3 Anthonyskype  
0
Поисковая операция в районе падения самолета Ту-154 около Сочи идет дщо сих порhttp://tvto.ru/ - . Во вторник в ней задействовано 45 кораблей и судов, 15 глубоководных аппаратов, 192 водолаза, 12 самолетов и пять вертолетов. Хочется узнать какая же на самом деле причина падения???

2 424611 google  
0
http://www.google.com/

1 StootteBype  
0
спасибо за интересный блог

Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024Сделать бесплатный сайт с uCoz