Настройка linux-файрвола iptables: руководство для начинающих

Преимущества firewalld

Основное преимущество — вы немного абстрагируетесь от цепочек iptables.Для включения перенаправления портов не придется думать про PREROUTING или POSTROUTING в дополнение к FORWARD. Вам дается «API от iptables от производителя», что-то в этом роде

Если вы включили nat, то неважно, где конкретно (под каким порядковым номером текущих правил) размещено правило. Вы просто указываете — включи nat на eth0

И без глупостей ;) Это может быть удобно, если надо организовать web интерфейс управления брандмауэром.

Есть возможность проверить статус (например, включен nat или нет!). И также использовать это в своих скриптах, в логике вашего приложения, например. Я не знаю, как в iptables создать именно запрос статуса (вкл/выкл). Можно, конечно, что-то в роде iptables -L -t nat | grep ‘…’, но согласитесь, это немного не то же самое, что выполнить ‘firewall-cmd —zone=external —query-masquerade’. Есть, к примеру, сотни VM с CentOS, в которых могут немного отличаться названия wan интерфейсов или еще что-то в этом роде. А так вы имеете универсальный командлет, который даст ожидаемый результат на разных машинах.

Запретить или разрешить трафик между интерфейсами

Предположим, у нас есть два внутренних сетевых интерфейса ens35 и ens36. Мы хотим контролировать трафик между ними.

Запретить

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

Вводим следующие команды:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j DROP

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j DROP

Разрешить

Применяется в случаях, когда интерфейсы находятся в зонах, где по умолчанию, трафик блокируется.

Для разрешения команды, практически, аналогичные:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j ACCEPT

Разрешить трафик в одном направлении

В предыдущих примерах мы разрешали трафик в обоих направлениях. Если необходимо сделать так, чтобы только сеть ens35 видела сеть ens36, вводим одну команду:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

Открытие порта или сервиса

С помощью FirewallD вы можете разрешить трафик для определенных портов на основе предопределенных правил, называемых службами.

Чтобы получить список всех доступных по умолчанию услуг, введите:

Вы можете найти дополнительную информацию о каждой службе, открыв связанный файл .xml в каталоге . Например, служба HTTP определяется так:

/usr/lib/firewalld/services/http.xml

Чтобы разрешить входящий HTTP-трафик (порт 80) для интерфейсов в публичной зоне, только для текущего сеанса (конфигурация времени выполнения), введите:

Если вы зону по умолчанию, вы можете не параметр .

Чтобы убедиться, что служба была успешно добавлена, используйте параметр :

Если вы хотите оставить порт 80 открытым после перезагрузки, вам нужно будет ввести ту же команду еще раз, но на этот раз с параметром :

Используйте вместе с параметром чтобы проверить свои изменения:

Синтаксис удаления службы такой же, как и при добавлении службы. Просто используйте вместо параметра :

Приведенная выше команда удаляет службу http из постоянной конфигурации публичной зоны.

Что делать, если вы запускаете такое приложение, как Plex Media Server, для которого нет подходящей службы?

В подобных ситуациях у вас есть два варианта. Вы можете либо открыть соответствующие порты, либо определить новую службу FirewallD.

Например, Plex Server прослушивает порт 32400 и использует TCP, чтобы открыть порт в публичной зоне для текущего сеанса, используйте параметр :

Протоколы могут быть или .

Чтобы убедиться, что порт был добавлен успешно, используйте параметр :

Чтобы порт открытым после перезагрузки, добавьте правило к постоянным настройкам, выполнив ту же команду с параметром .

Синтаксис удаления порта такой же, как и при добавлении порта. Просто используйте вместо .

Создание новой службы FirewallD

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

Например, чтобы создать определение службы для Plex Media Server, мы можем использовать служебный файл SSH:

Откройте только что созданный файл и измените краткое имя и описание службы в тегах и . Самый важный тег, который вам нужно изменить, — это тег , который определяет номер порта и протокол, который вы хотите открыть.

В следующем примере мы открываем порты UDP и TCP.

/etc/firewalld/services/plexmediaserver.xml

Сохраните файл и перезагрузите сервис FirewallD:

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

Rich rules в firewalld

Rich rules предоставляют гораздо больший уровень контроля, благодаря более тонким настройкам. Также их можно использовать для настройки ведения лога, маскарадинга, проброс портов и ограничения трафика.

Синтаксис и примеры rich rules подробно описаны в соответствующей странице руководства.

man 5 firewalld.richlanguage

При наличии нескольких rich rules они обрабатываются в определенном порядке. Сначала применяются правила перенаправления портов и маскарадинга. Далее идут правила ведения логов. Потом разрешающие правила, а в самом конце — запрещающие. Для пакета используется первое правило из указанного порядка, которое ему подойдет. если он не соответствует ни одному правилу, то к нему будет применено отклонение по умолчанию.

Рассмотрим наиболее важные опции для работы с rich rules.

—add-rich-rule=’ПРАВИЛО’ — добавить правило, в данном примере мы разрешаем трафик с диапазона 10.0.0.0/24 только в диапазон 192.168.0.10/32 через TCP-порты c 8080 по 8090.

$ firewall-cmd --permanent --zone=testing --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 destination address=192.168.0.10/32 port port=8080-8090 protocol=tcp accept' 
success

—list-rich-rules — вывод всех rich rules для указанной зоны. Мы видим только что созданное нами правило.

$ firewall-cmd --permanent --zone=testing --list-rich-rules

—remove-rich-rule — удалить rich rule, синтаксис такой же как у —add-rich-rule.

$ firewall-cmd --permanent --zone=testing --remove-rich-rule='rule family=ipv4 source address=10.0.0.0/24 destination address=192.168.0.10/32 port port=8080-8090 protocol=tcp accept'
success

Создадим rich rule, отклоняющее любой трафик с диапазона 192.168.0.10/24.

$ firewall-cmd --permanent --zone=testing --add-rich-rule='rule family=ipv4 source address=192.168.0.10/24 reject'
success

Reject выдает ICMP-пакет об отклонении, тогда как drop просто отклоняет трафик без дополнительных действий. Поэтому drop может быть предпочтительнее в плане безопасности, так как ответ об отклонении раскрывает существование системы.

При использовании в rich rules адресов источника или получателя нужно указывать семейство rule family ipv4 или ipv6 в зависимости от используемой адресации.

Rich rules могут использоваться для ограничения трафика. Например, так можно ограничить количество входящих SSH-соединений десятью в минуту:

$ firewall-cmd --permanent --add-rich-rule='rule service name=ssh limit value=10/m accept' 
success

Также можно применять rich rules для записи сообщений в файл лога. Которое также может быть ограничено. Здесь мы ведем лог SSH-соединений с диапазона адресов 192.168.0.0/24, но количество записей ограничено 50 в минуту. Записываются только сообщения уровня ‘info’ или более важные.

$ firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" limit value="50/m" accept'
success

Iptables для новичка

Опубликовано admin в Чт, 17/03/2011 — 13:51

Начнем с того — что такое iptables?iptables — утилита(служба) для контроля сетевого трафика или попросту некий фаерволл с огромными возможностями.Важно: запускать iptables необходимо с правами root’a. Синтаксис iptables следующий:

Синтаксис iptables следующий:

iptables -t ТАБЛИЦА -A ЦЕПОЧКА ПАРАМЕТРЫ -j ДЕЙСТВИЕ

Ключи для работы с цепочками:-A — добавить новое правило.-D — удалить правило.-F — удалить все правила.-R — замена правила.-L — вывод списка всех правил.

В таблице filter(по умолчанию) существую следующие цепочки:INPUT — входящий трафик.OUTPUT — исходящий трафик.FORWARD — пересылаемый(транзитный) трафик.

Параметры:-p — протокол, можно использовать all,icmp,tcp,udp.-s — ip адрес/хост источника.-d — ip адрес/хост назначения.-i — интерфейс на который пришел пакет.-o — интерфейс с которого уйдет пакет .(просмотреть все интерфейсы можно с помощью команды.ifconfig, обычно это eth0)–sport — порт источника.–dport — порт назначения.

Действия:ACCEPT — разрешить пакеты.REJECT — блокировать пакеты с сообщением об отказе.DROP — блокировать пакеты(более приоритетный вариант, нежели REJECT, т.к для блокируемого ip адреса(или диапазонов) будет аналогичный эффект тому, когда сервер находится в дауне).

Несколько примеров:1) Блокируем все входящие пакеты с ip адреса 111.111.111.111

iptables -A INPUT -s 111.111.111.111 -j DROP

А с помощью знака «!«(отрицание) можно сделать блокировку всех адресов(хостов), кроме заданного.
Например, с помощью нижеприведенной команды, пакеты будут блокироваться со всех адресов, кроме 111.111.111.111

iptables -A INPUT ! -s 111.111.111.111 -j DROP

2) Снимаем бан с IP 111.111.111.111

iptables -D INPUT -s 111.111.111.111 -j DROP

3) Просмотр списка с правилами

iptables -L INPUT --line-numbers

Таким образом мы сможем увидить все пронумерованные правила, которые также можно удалить с помощью ключа -D.
Нижеприведенная команда удаляет правила под номером 5.

iptables -D INPUT 5

4) Поностью очищаем список со всеми правилами

iptables -F

5) Блокируем входящие пакеты для диапазона ip адресов c 192.168.0.8 по 192.168.0.25

iptables -I INPUT -m iprange --src-range 192.168.0.8-192.168.0.25 -j DROP

6) Блокируем весь входящий трафик на 80 порт(http).

iptables -A INPUT -p tcp --sport 80 -j DROP

7) Блокируем домен

iptables -A INPUT -s vk.com -j DROP # блокируем входящие пакеты от домена vk.com iptables -A OUTPUT -d vk.com -j DROP # блокируем исходящие пакеты к домену vk.com

Другие домены вконтакта: vk.com, vkontakte.ru, incontact.ru , durov.ru

Также можно прописать алиасы в файл .bashrc(или в .bash_aliases) для удобства использования первого и второго примера:

alias ban='iptables -I INPUT -j DROP -s' alias unban='iptables -D INPUT -j DROP -s'

После чего можно гораздо быстрее банить ip адрес командой

ban 111.111.111.111

и снимать бан командой

unban 111.111.111.111
  • < Назад
  • Вперёд >

Зоны и службы Firewalld

Прежде всего важно понять концепцию зон. Зоны используются для определения уровня доверия к сетевым соединениям за счет разделения входящего трафика по его уникальным характеристикам

Таким образом, к различным зонам можно применять различные правила. Для зоны указываются активные опции брандмауэра в виде предварительно определенных служб, портов и протоколов, маскарадинга/перенаправления портов и rich rules.

Firewalld фильтрует входящий трафик по различным зонам в зависимости от конкретных правил, применяемых к каждой зоне. При определении зоны для входящего соединения будет применяться следующая логика. Если IP-адрес отправителя соответствует определенным для зоны значениям, то пакет будет направляться через эту зону. Если этот адрес не соответствует ни одной зоне, то проверяется соответствие входящего интерфейса пакета фильтру зоны, и в случае такого соответствия используется эта зона. Во всех остальных случаях используется зона по умолчанию, изначально заданная как public. Для нее предполагается, что вы не доверяете другим компьютерам в сети и разрешаете работу только ограниченного числа служб.

В firewalld есть ряд зон с предварительно настроенными разрешениями для различных служб. Вы можете изменять эти настройки или создавать собственные зоны. В порядке от наименее доверенных к наиболее доверенным эти зоны следующие:

drop — минимальный уровень доверия. Все входящие соединения блокируются без ответа, допускаются только исходящие соединения.

block — аналогично предыдущему, но при отклонении входящих запросов отправляется сообщение icmp-host-prohibited или icmp6-adm-prohibited.

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

external — внешние сети при использовании брандмауэра в качестве шлюза. Она настроена для маскирования NAT, поэтому ваша внутренняя сеть остается частной, но доступной.

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

dmz — используется для компьютеров, расположенных в DMZ («демилитаризованная зона», изолированные компьютеры без доступа к остальной сети). Разрешены только определенные входящие соединения.

work — используется для рабочих машин. Доверять большинству компьютеров в сети. Может быть разрешено еще несколько служб.

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

trusted — доверять всем машинам в сети

Наиболее открытая из всех доступных опций, должна использоваться с осторожностью

В зонах могут быть установлены разрешения для пользовательских или предварительно заданных служб. Конфигурация предварительно заданных служб находится в директории /usr/lib/firewalld/services. Например, вот содержимое файла /usr/lib/firewalld/services/kerberos.

$ cat kerberos.xml

Можно создавать свои службы для использования в firewalld, создавая файл аналогичного формата в директории /usr/lib/firewalld/services, имя файла также должно заканчиваться на .xml. После создания пользовательских файлов в этой директории нужно запустить команду restorecon для применения подходящих контекстов SELinux.

Установка

Пакет присутствует в хранилище пакетов debian.
Для установки пакета

  • в командной строке: следует выполнить команду # apt-get install arno-iptables-firewall
  • в графическом режиме: воспользоваться специализированной программой управления пакетами

Для использования пакета требуется осуществить его .
Для специфической настройки таблиц маршрутизации используется .

Некоторые часто используемые команды

  # dpkg-reconfigure arno-iptables-firewall               - переконфигурация arno-iptables-firewall
  # /etc/init.d/arno-iptables-firewall restart            - "перезапуск демона" 
  # /etc/init.d/arno-iptables-firewall force-reload       - перезагрузка правил маршрутизации и сетевого экрана

Разрешение и блокировка указанных соединений Iptables

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

Воспользуемся командой –А. Она позволит добавить новое правило к уже имеющейся цепочке. Межсетевой экран начинает проверку с самого верха, проходя по каждому из правил до тех пор, пока не обнаружит совпадения или не закончит список.

В случае, когда необходимо разместить правила в определенное место (перед каким-то определенным), следует воспользоваться командой:

iptables -I

Пример настройки VPN соединений

Особенностью настройки Arno-iptables-firewall для VPN соединений является использование динамического IP и открытие PPP-канала.
VPN соединения, как правило, используются при выходе в интернет через ADSL-модемы или при организации виртуальной сети через SSH.

Для настройки таблицы маршрутизации ppp+ соединений с помощью arno-iptables-firewall

поднимается vpn-соединение

  # pon <my provider> &
  # route add -net <my network> netmask 255.255.255.0 gw <my gatewey> dev eth1   - (возможно) добавление маршрутизации до шлюза

запускается конфигурирование arno-iptables-firewall

  # dpkg-reconfigure arno-iptables-firewall
     Do you want to manage the firewall setup with debconf?            - да
     External network interfaces:                                      - eth1 ppp0
          (или указывается ppp+ если номер канала неизвестен или не определен)
     Is DHCP used on external interfaces?                              - нет
     Open external TCP-ports:                                          - ---
          (или указываются порты TCP к которым необходимо предоставить доступ извне)
     Open external UDP-ports:                                          - ---
          (или указываются порты UDP к которым необходимо предоставить доступ извне)
     Should the machine be pingable from the outside world?            - да
     Internal network interfaces:                                      - eth0
     Internal subnets:                                                 - 192.168.0.0/24
          (указание внутренних сетей имеющих право выхода в интернет)
     Do you want to enable NAT?                                        - да
     Internal networks with access to external networks:               - 192.168.0.0/24
          (указание подсетей имеющих право доступа в интернет)
     Should the firewall be (re)started now?                           - да
          (подтверждение перезагрузки таблиц маршрутизации)

Configuration on Startup for NetworkManager

NetworkManager includes the ability to run scripts when it activates or deactivates an interface. To save iptables rules on shutdown, and to restore them on startup, we are going to create such a script. To begin, press Alt+F2 and enter this command:

For Ubuntu:

gksudo gedit /etc/NetworkManager/dispatcher.d/01firewall

For Kubuntu:

kdesu kate /etc/NetworkManager/dispatcher.d/01firewall

Then, paste this script into your editor, save, and exit the editor.

if [ -x /usr/bin/logger ]; then
        LOGGER="/usr/bin/logger -s -p daemon.info -t FirewallHandler"
else
        LOGGER=echo
fi

case "$2" in
        up)
                if [ ! -r /etc/iptables.rules ]; then
                        ${LOGGER} "No iptables rules exist to restore."
                        return
                fi
                if [ ! -x /sbin/iptables-restore ]; then
                        ${LOGGER} "No program exists to restore iptables rules."
                        return
                fi
                ${LOGGER} "Restoring iptables rules"
                /sbin/iptables-restore -c < /etc/iptables.rules
                ;;
        down)
                if [ ! -x /sbin/iptables-save ]; then
                        ${LOGGER} "No program exists to save iptables rules."
                        return
                fi
                ${LOGGER} "Saving iptables rules."
                /sbin/iptables-save -c > /etc/iptables.rules
                ;;
        *)
                ;;
esac

Finally, we need to make sure NetworkManager can execute this script. In a terminal window, enter this command:

sudo chmod +x /etc/NetworkManager/dispatcher.d/01firewall

Настройка netfilter/iptables для подключения нескольких клиентов к одному соединению.

Давайте теперь рассмотрим наш Linux в качестве шлюза для локальной сети во внешнюю сеть Internet. Предположим, что интерфейс eth0 подключен к интернету и имеет IP 198.166.0.200, а интерфейс eth1 подключен к локальной сети и имеет IP 10.0.0.1. По умолчанию, в ядре Linux пересылка пакетов через цепочку FORWARD (пакетов, не предназначенных локальной системе) отключена. Чтобы включить данную функцию, необходимо задать значение 1 в файле /proc/sys/net/ipv4/ip_forward:

netfilter:~# echo 1 > /proc/sys/net/ipv4/ip_forward

Чтобы форвардинг пакетов сохранился после перезагрузки, необходимо в файле /etc/sysctl.conf раскомментировать (или просто добавить) строку net.ipv4.ip_forward=1.

Итак, у нас есть внешний адрес (198.166.0.200), в локальной сети имеется некоторое количество гипотетических клиентов, которые имеют адреса из диапазона локальной сети и посылают запросы во внешнюю сеть. Если эти клиенты будут отправлять во внешнюю сеть запросы через шлюз «как есть», без преобразования, то удаленный сервер не сможет на них ответить, т.к. обратным адресом будет получатель из «локальной сети». Для того, чтобы эта схема корректно работала, необходимо подменять адрес отправителя, на внешний адрес шлюза Linux. Это достигается за счет (маскарадинг) в , в .

netfilter:~# iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
netfilter:~# iptables -A FORWARD -m conntrack --ctstate NEW -i eth1 -s 10.0.0.1/24 -j ACCEPT
netfilter:~# iptables -P FORWARD DROP
netfilter:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Итак, по порядку сверху-вниз мы разрешаем уже установленные соединения в цепочке FORWARD, таблице filter, далее мы разрешаем устанавливать новые соединения в цепочке FORWARD, таблице filter, которые пришли с интерфейса eth1 и из сети 10.0.0.1/24. Все остальные пакеты, которые проходят через цепочку FORWARD — отбрасывать. Далее, выполняем маскирование (подмену адреса отправителя пакета в заголовках) всех пакетов, исходящих с интерфейса eth0.

Примечание. Есть некая общая рекомендация: использовать правило -j MASQUERADE для интерфейсов с динамически получаемым IP (например, по DHCP от провайдера). При статическом IP, -j MASQUERADE  можно заменить на аналогичное -j SNAT —to-source IP_интерфейса_eth0. Кроме того, SNAT умеет «помнить» об установленных соединениях при кратковременной недоступности интерфейса. Сравнение MASQUERADE  и SNAT в таблице:

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

netfilter:~# iptables -P INPUT DROP
netfilter:~# iptables -P OUTPUT DROP
netfilter:~# iptables -A INPUT -i lo -j ACCEPT 
netfilter:~# iptables -A OUTPUT -o lo -j ACCEPT
netfilter:~# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
netfilter:~# iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
netfilter:~# iptables -A OUTPUT -p icmp -j ACCEPT
netfilter:~# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
netfilter:~# iptables -A OUTPUT -p TCP --sport 32768:61000 -j ACCEPT
netfilter:~# iptables -A OUTPUT -p UDP --sport 32768:61000 -j ACCEPT
netfilter:~# iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
netfilter:~# iptables -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT

В результате, если один из хостов локальной сети, например 10.0.0.2, попытается связаться с одним из интернет-хостов, например, 93.158.134.3 (ya.ru), при , их исходный адрес будет подменяться на внешний адрес шлюза в цепочке POSTROUTING таблице nat, то есть исходящий IP  10.0.0.2 будет заменен на 198.166.0.200. С точки зрения удаленного хоста (ya.ru), это будет выглядеть, как будто с ним связывается непосредственно сам шлюз. Когда же удаленный хост начнет ответную передачу данных, он будет адресовать их именно шлюзу, то есть 198.166.0.200. Однако, на шлюзе адрес назначения этих пакетов будет подменяться на 10.0.0.2, после чего пакеты будут передаваться настоящему получателю в локальной сети. Для такого обратного преобразования никаких дополнительных правил указывать не нужно — это будет делать все та же операция MASQUERADE, которая помнит какой хост из локальной сети отправил запрос и какому хосту необходимо вернуть пришедший ответ.

Примечание: желательно негласно принято, перед всеми командами iptables очищать цепочки, в которые будут добавляться правила:

netfilter:~# iptables -F ИМЯ_ЦЕПОЧКИ

Editing iptables

The only problem with our setup so far is that even the loopback port is blocked. We could have written the drop rule for just eth0 by specifying -i eth0, but we could also add a rule for the loopback. If we append this rule, it will come too late — after all the traffic has been dropped. We need to insert this rule before that. Since this is a lot of traffic, we’ll insert it as the first rule so it’s processed first.

sudo iptables -I INPUT 1 -i lo -j ACCEPT
sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
DROP       all  --  anywhere             anywhere

The first and last lines look nearly the same, so we will list iptables in greater detail.

sudo iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:www
    0     0 DROP       all  --  any    any     anywhere             anywhere

You can now see a lot more information. This rule is actually very important, since many programs use the loopback interface to communicate with each other. If you don’t allow them to talk, you could break those programs!

Настройка доступа в Samba

С помощью самой же Samba так же можно ограничить доступ. Но это скорее как вспомогательная опция к брэндмауэру.

interfaces -это глобальная опция в файле конфигурации smb.conf, которая может ограничить возможность установления соединений с Samba на одном или нескольких сетевых интерфейсах. В системах с одним сетевым интерфейсом эта опция может быть полезна только для того, чтобы Samba могла работать с интерфейсом loopback или создаваться программным обеспечением вроде VMware. Вот типичный пример использования этой опции:

Теперь порты слушаются только на loopback интерфейсе и интерфейсе с адресом 192.168.100.1

И еще два параметра hosts deny и hosts allow. С их помощью запрещаем или разрешаем доступ от источника:

Вот так.

Проверка правила iptables.

Проверяем открытость / закрытость портов:

Проверяем открытость / закрытость определенного порта:

Проверим, что iptables разрешает соединение с 80 портом:

В противном случае откроем его для всех:

Проверяем с помощью telnet

Можно использовать nmap для проверки:

Автор статьи Platon Puhlechev aka iFalkorr разрешает печатать данный текст.

Iptables отличный инструмент в руках администратора. Если нужно легко и просто защититься в десктопной Ubuntu, то стоит знать, что есть удобная консольная надстройка над iptables под названием UFW, а к ней есть графическая программа GUFW. Сделать свою Ubuntu ещё более защищённой поможет видеоматериал.

Дополнительные материалы:Графический GUI для файрвола iptables — Gufw.Запрещаем приложению доступ в сеть.Безопасный сёрфинг в Интернете.

Дата последней правки: 2015-12-01 09:22:48

Ubuntu и CentOS

В современных операционных системах Ubuntu и CentOS по умолчанию нет iptables. Необходимо его установить или пользоваться более новыми утилитами.

В CentOS

В качестве штатной программы управления брандмауэром используется firewall-cmd. Подробнее читайте инструкцию Как настроить firewalld в CentOS.

Если необходимо пользоваться iptables, устанавливаем пакет с утилитой:

yum install iptables-services

Отключаем firewalld:

systemctl stop firewalld

systemctl disable firewalld 

Разрешаем и запускаем iptables:

systemctl enable iptables

systemctl start iptables

В Ubuntu

Для управления брандмауэром теперь используется ufw.

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

apt-get install iptables-persistent

Отключаем ufw:

ufw disable

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: