См. также мой перевод man UFW.
Ядро 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.
The purpose of IP Masquerading is to allow machines with private,
non-routable IP addresses on your network to access the Internet
through the machine doing the masquerading. Traffic from your private
network destined for the Internet must be manipulated for replies to
be routable back to the machine that made the request. To do this,
the kernel must modify the source IP address of each packet so that
replies will be routed back to it, rather than to the private IP
address that made the request, which is impossible over the Internet.
Linux uses Connection Tracking (conntrack) to keep track of which
connections belong to which machines and reroute each return packet
accordingly. Traffic leaving your private network is thus
"masqueraded" as having originated from your Ubuntu gateway
machine. This process is referred to in Microsoft documentation as
Internet Connection Sharing.
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
8.3.6.Ссылки
Источник: http://mirspo.narod.ru/firewall.html |