Настройка ядра linux

Перечисление правил в виде таблицы

Перечисление правил Iptables в виде таблицы может быть полезным при сопоставлении разных правил друг с другом.

Чтобы вывести все действующие правила Iptables в виде таблицы, запустите команду с опцией :

Эта команда будет выводить все действующие правила, отсортированные по цепочкам.

Если вы хотите ограничить вывод конкретной цепочкой (, , и т. д.), вы можете указать название цепочки сразу после опции .

Давайте рассмотрим пример цепочки INPUT:

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

  • : если пакет отвечает правилу, заголовок target указывает, что с ним нужно сделать. Например, пакет можно принять, отклонить, записать или отправить другой цепочке для сопоставления с другими правилами.
  • : протокол, например , , или
  • : данный параметр используется редко и отображает опции IP
  • : исходный IP-адрес или подсеть трафика, либо (отовсюду)
  • : IP-адрес назначения или подсеть трафика, либо (везде)

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

Отображение счетчиков пакетов и общего размера

При выводе списка правил Iptables также можно отобразить количество пакетов и общий размер пакетов (в байтах), которые отвечают каждому конкретному правилу. Это часто может быть полезно, когда вы пытаетесь получить приблизительное представление о том, какие правила используются для различных пакетов. Чтобы сделать это, воспользуйтесь опциями и в одной команде.

Например, давайте снова рассмотрим цепочку с опцией :

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

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

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

Отобразить список правил с номерами строк.

Примерный вывод:

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID
3    TCPMSS     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
5    wanin      all  --  0.0.0.0/0            0.0.0.0/0
6    wanout     all  --  0.0.0.0/0            0.0.0.0/0
7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
Chain wanin (1 references)
num  target     prot opt source               destination
Chain wanout (1 references)
num  target     prot opt source               destination

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

Установка iptables

На самом деле фаервол у нас на сервере уже стоит и работает, просто нет никаких правил, все открыто. Установить нам нужно будет дополнительные утилиты управления, без которых конфигурировать iptables невозможно. Например, нельзя будет перезапустить фаервол:

# systemctl restart iptables.service
Failed to issue method call: Unit iptables.service failed to load: No such file or directory.

Или добавить в автозапуск не получится:

# systemctl enable iptables.service
Failed to issue method call: No such file or directory

Чтобы подобных ошибок не было, установим необходимый пакет с утилитами:

# yum -y install iptables-services

Теперь можно добавить iptables в автозагрузку и запустить:

# systemctl enable iptables.service
# systemctl start iptables.service

Настройка NAT (MASQUERADE)

Большинство организаций получает от своих интернет-провайдеров ограниченное количество публично доступных IP-адресов, поэтому администратору требуется разделять доступ к Интернету, не выдавая каждому узлу сети публичный IP-адрес. Для доступа к внутренним и внешним сетевым службам узлы локальной сети используют внутренний (частный) IP-адрес. Граничные маршрутизаторы (межсетевые экраны) могут получать входящие соединения из Интернета и передавать их нужным узлам локальной сети и наоборот, направлять исходящие соединения узлов удаленным интернет-службам. Такое перенаправление сетевого трафика может быть опасным, особенно учитывая доступность современных средств взлома, осуществляющих подмену внутренних IP-адресов и таким образом маскирующих машину злоумышленника под узел вашей локальной сети. Чтобы этого не случилось, в Iptables существуют политики маршрутизации и перенаправления, которые можно применять для исключения злонамеренного использования сетевых ресурсов. Политика FORWARD позволяет администратору контролировать маршрутизацию пакетов в локальной сети. Например, чтобы разрешить перенаправление всей локальной сети, можно установить следующие правила (в примере предполагается, что внутренний IP-адрес брандмауэра/шлюза назначен на интерфейсе eth1):

sudo iptables -A FORWARD -i eth1 -j ACCEPT
sudo iptables -A FORWARD -o eth1 -j ACCEPT

Эти правила предоставляют системам за шлюзом доступ к внутренней сети. Шлюз направляет пакеты от узла локальной сети к узлу назначения и наоборот (опции -o и -i), передавая их через устройство eth1.

net.ipv4.ip_forward = 1

Разрешение перенаправления пакетов внутренним интерфейсом брандмауэра позволяет узлам локальной сети связываться друг с другом, но у них не будет доступа в Интернет. Чтобы обеспечить узлам локальной сети с частными IP-адресами возможность связи с внешними публичными сетями, нужно настроить на брандмауэре трансляцию сетевых адресов (NAT). Создадим правило:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

В этом правиле используется таблица NAT, поэтому она указывается в явном виде (-t nat) и указана встроенная цепочка этой таблицы POSTROUTING для внешнего сетевого интерфейса eth0 (-o eth0). POSTROUTING позволяет изменять пакеты, когда они выходят из внешнего интерфейса шлюза. Целевое действие -j MASQUERADE заменяет (маскирует) частный IP-адрес узла внешним IP-адресом шлюза. Это называется IP-маскарадингом.

Действия с соединениями

Есть три типа действий, выполняемых с соединениями:

Accept — разрешить соединение.

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

Reject — отказать в соединении, сообщив источнику запроса об отказе. По умолчанию отправляется ответный пакет «icmp-port-unreachable», но также возможна дополнительная настройка сообщения (например, «icmp-host-unreachable», «icmp-net-prohibited», «icmp-host-prohibited» и др.). 

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!

Сохранение правил (permanent)

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

Способ 1. iptables-save (универсальный)

Сохраняем правила в файл:

iptables-save > /etc/iptables.rules

Открываем настройки сети:

vi /etc/network/interfaces

и добавляем строку:

pre-up iptables-restore < /etc/iptables.rules

Способ 2. iptables-persistent (Debian/Ubuntu)

Ставим пакет iptables-persistent:

apt-get install iptables-persistent

Для сохранения правил вводим команду:

netfilter-persistent save

Способ 3. service iptables (CentOS)

Работает в старых версиях Linux и CentOS. Необходима установка пакета:

yum install iptables-services

apt-get install iptables-services

* первая команда для CentOS, вторая — для Ubuntu.

Сохраняем правила командой:

service iptables save

* правила будут сохранены в файл /etc/sysconfig/iptables.

Чтобы правила восстанавливались автоматически при старте компьютера, разрешаем автозапуск сервиса.

а) в более новых версиях Linux:

systemctl enable iptables

б) в версиях постарше:

chkconfig iptables on

update-rc.d iptables defaults

* первая команда для CentOS, вторая для Ubuntu.

Настройка UFW Ubuntu

1. Как включить UFW

Сначала нужно отметить, что в серверной версии Ubuntu UFW по умолчанию включён, а в версии для рабочего стола он отключён. Поэтому сначала смотрим состояние фаервола:

Если он не включён, то его необходимо включить:

Затем вы можете снова посмотреть состояние:

Обратите внимание, что если вы работаете по SSH, то перед тем, как включать брандмауэр, нужно добавить правило, разрешающее работу по SSH, иначе у вас не будет доступа к серверу. Подождите с включением до пункта 3

2. Политика по умолчанию

Перед тем, как мы перейдём к добавлению правил, необходимо указать политику по умолчанию. Какие действия будут применяться к пакетам, если они не подпадают под созданные правила ufw. Все входящие пакеты будем отклонять:

А все исходящие разрешим:

3. Добавление правил UFW

Чтобы создать разрешающее правило, используется команда allow. Вместо allow могут использоваться и запрещающие правила ufw — deny и reject. Они отличаются тем, что для deny компьютер отсылает отправителю пакет с уведомлением об ошибке, а для reject просто отбрасывает пакет и ничего не отсылает. Для добавления правил можно использовать простой синтаксис:

$ ufw allow имя_службы$ ufw allow порт$ ufw allow порт/протокол

Например, чтобы открыть порт ufw для SSH, можно добавить одно из этих правил:

Первое и второе правила разрешают входящие и исходящие подключения к порту 22 для любого протокола, третье правило разрешает входящие и исходящие подключения для порта 22 только по протоколу tcp.

Посмотреть доступные имена приложений можно с помощью команды:

Можно также указать направление следования трафика с помощью слов out для исходящего и in для входящего.

$ ufw allow направление порт

Например, разрешим только исходящий трафик на порт 80, а входящий запретим:

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

$ ufw allow proto протокол from ip_источника to ip_назначения port порт_назначения

В качестве ip_источника может использоваться также и адрес подсети. Например, разрешим доступ со всех IP-адресов для интерфейса eth0 по протоколу tcp к нашему IP-адресу и порту 3318:

4. Правила limit ufw

С помощью правил limit можно ограничить количество подключений к определённому порту с одного IP-адреса, это может быть полезно для защиты от атак перебора паролей. По умолчанию подключения блокируются, если пользователь пытается создать шесть и больше подключений за 30 секунд:

К сожалению, настроить время и количество запросов можно только через iptables.

5. Просмотр состояния UFW

Посмотреть состояние и действующие на данный момент правила можно командой status:

Чтобы получить более подробную информацию, используйте параметр verbose:

С помощью команды show можно посмотреть разные отчеты:

  • raw — все активные правила в формате iptables;
  • builtins — правила, добавленные по умолчанию;
  • before-rules — правила, которые выполняются перед принятием пакета;
  • user-rules — правила, добавленные пользователем;
  • after-rules — правила, которые выполняются после принятия пакета;
  • logging-rules — правила логгирования пакетов;
  • listening — отображает все прослушиваемые порты и правила для них;
  • added — недавно добавленные правила;

Например, посмотрим список всех правил iptables:

Посмотрим все прослушиваемые порты:

Или недавно добавленные правила:

Чтобы удалить правило ufw, используется команда delete. Например, удалим ранее созданные правила для порта 80:

7. Логгирование в ufw

Чтобы отлаживать работу ufw, могут понадобится журналы работы брандмауэра. Для включения журналирования используется команда logging:

Также этой командой можно изменить уровень логгирования:

  • low — минимальный, только заблокированные пакеты;
  • medium — средний, заблокированные и разрешённые пакеты;
  • high — высокий.

Лог сохраняется в папке /var/log/ufw. Каждая строчка лога имеет такой синтаксис:

В качестве действия приводится то, что UFW сделал с пакетом, например ALLOW, BLOCK или AUDIT. Благодаря анализу лога настройка UFW Ubuntu станет гораздо проще.

8. Отключение UFW

Если вы хотите полностью отключить UFW, для этого достаточно использовать команду disable:

Также, если вы что-то испортили в настройках и не знаете как исправить, можно использовать команду reset для сброса настроек до состояния по умолчанию:

Настройка правил iptables

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

# netstat -tulpn

Все правила iptables применяются сразу после выполнения команды по добавлению правила в firewall. Чтобы это проверить, можно сразу запретить доступ к 80 порту, если конечно на нем настроен web-сервер, для относительно безопасного наблюдения за действиями блокировки:

# iptables -A INPUT -p tcp -m tcp —dport 80 -j DROP

Теперь можно убедиться, что сайт, для доступа к которому используется 80 порт, стал недоступен. Флаг -A добавляет правило в самый конец выбранной цепочки. Поскольку в команде не указано имя таблицы правил (-t tablename), используется таблица по умолчанию: filter. Снять блокировку можно, как было описано ранее, путем запуска команды iptables -F, но что делать, если нужно удалить только одно правило, а все остальные оставить без изменений?

Удалить все правила из цепочки INPUT с параметром DROP:
# iptables -D INPUT -j DROP
Удалить только правило, заданное с помощью INPUT -p tcp -m tcp —dport 81 -j DROP
# iptables -D INPUT -p tcp -m tcp —dport 80 -j DROP

Ключ -D обозначает: удалить одно или более правил согласно следующему за ним условию.

Также, удалить правило, можно зная его номер. Просмотреть все правила с номерами строк, можно при помощи ключа —line-numbers, номер правила будет указан в колонке num:

# iptables -L -n -v —line-numbers

Флаги -L, -n и -v:

  • -L: посмотреть список правил.
  • -n: отображать IP адрес и порт числами, без этой опции IP-адреса будут по возможности переведены в имена доменов, что замедлит процесс отображения.
  • -v: просмотр дополнительной информации, такой как: название интерфейса, суффиксы ‘K’, ‘M’ or ‘G’, опции и TOS маски.

Теперь удалить одно правило, зная его номер, можно так:

# iptables -D INPUT 1

Добавить правило на определенное место, например на первую строчку, можно, используя такой синтаксис:

# iptables -I INPUT 1 -s 4.4.4.4 -j ACCEPT

Все правила, записанные ранее, включая то, что было в строке 1, будут сдвинуты на строчку ниже.

Опция -Z сбрасывает в ноль счетчики пакетов и байт.

DROP или REJECT

DROP и REJECT отклоняют соединение, но REJECT еще дополнительно отправляет инициатору ICMP пакет, с сообщением, что попытка соединения отклонена. DROP — просто отбрасывает пришедший пакет, не отправляя никакого сообщения в ответ. В случае DoS-атаки, REJECT будет создавать избыточный трафик своими ответами, так что в случае отклонения соединения лучше всего использовать DROP.

В советуют использовать REJECT, для защиты от сканирования портов, поскольку DROP может оставлять открытые неиспользуемые сокеты на сервере.

Сброс правил: опция -F или -X

Во многих примерах для полной очистки правил используется сразу флаг -F и флаг -X:

# iptables -F
# iptables -X

И это правильно! Так как -F удаляет все пользовательские правила созданные в стандартных и пользовательских цепочках, а вот флаг -X удаляет пользовательские названия цепочек, созданные при помощи флага -N. Менять местами -F и -X не стоит, так как для удаления пользовательской цепочки, необходимо предварительно очистить её от правил, иначе цепочка удалена не будет и отобразиться сообщение об ошибке.

Предварительные требования

Это учебное руководство предполагает использование сервера Linux с установленной командой и наличие у пользователя привилегий .

Если вам нужна помощь с данной начальной настройкой, воспользуйтесь нашим руководством по начальной настройке сервера Ubuntu 20.04. Вы также можете воспользоваться руководствами для Debian и CentOS

Давайте сначала рассмотрим, как просмотреть существующий список правил. Существует два различных способа просмотра действующих правил Iptables: в форме таблицы или списка спецификаций правил. Оба метода предоставляют приблизительно одну и ту же информацию в разных форматах.

Сброс всех правил, удаление всех цепочек и разрешение любого трафика

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

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

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

Затем выполните сброс таблиц и , сбросьте все цепочки () и удалите все цепочки, не используемые по умолчанию ():

Теперь ваш брандмауэр будет принимать любой сетевой трафик. Если вы сейчас попробуете вывести список ваших правил, то увидите, что он пуст, и остались только три используемые по умолчанию цепочки (, и ).

Применение и восстановление правил iptables

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

iptables-save > /path to file/filename

Если правило добавлено сразу в файл, то оно не применяется в фаерволе и его надо применить.

iptables-restore < /path to file/filename

Для восстановления правил после перезагрузки или включения системы необходимо применять iptables-restore. Чтобы не проделывать процедуру восстановления правил каждый раз, правила можно добавить в автозагрузку.

CentOS

В CentOS добавить правила в автозагрузку можно посредством правки файла rc.local.

# Редактируем файл:
nano /etc/rc.d/rc.local

# Добавляем в конец файла:
/sbin/iptables-restore < /root/iptables_rules

# Сохраняем и выходим.

# Делаем файл исполняемым:
chmod +x /etc/rc.d/rc.local

Теперь правила будут применяться в фаерволе при запуске системы. Для того чтобы запретить загрузку через rc.local, уберите добавленную строку или закомментируйте ее.

#/sbin/iptables-restore < /root/iptables_rules

Debian & Ubuntu

В Debian & Ubuntu все работает также, только rc.local расположен в каталоге /etc, загрузку можно прописать здесь. Можно сделать иначе, в Debian & Ubuntu запуск правил удобнее прописать в конф. файле сетевых интерфейсов /etc/network/interfaces.

# Редактируем файл:
nano /etc/network/interfaces

# Добавляем строку в конец раздела eth0:
pre-up iptables-restore < /root/iptables_rules

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

ifdown eth0 && ifup eth0

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

# Редактируем файл:
nano /etc/network/interfaces

# Добавляем строку в конец раздела eth0:
post-down iptables-save > /root/iptables_rules

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

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

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.7
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.255

# Сохранение правил iptables
post-down iptables-save > /root/iptables_rules

# Старт правил iptables
pre-up iptables-restore < /root/iptables_rules

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

Утилита Iptables

Подсистема iptables и netfilter встроены в ядро, но вот набор утилит для управления всем этим не всегда поставляется вместе с системой. Для установки утилиты в Ubuntu наберите:

А в дистрибутивах, основанных на Fedora, установка iptables выполняется немного по-другому:

Когда установка iptables будет завершена, можно переходить к настройке, но давайте сначала рассмотрим синтаксис утилиты. Обычно команда имеет такой общий вид:

$ iptables -t таблица действие цепочка дополнительные_параметры

Теперь давайте рассмотрим параметры iptables, таблица указывает таблицу, с которой нужно работать, этот параметр можно упустить, действие — нужное действие, например, создать или удалить правило, а дополнительные параметры описывают действие и правило, которое нужно выполнить.

Осталось рассмотреть основные действия, которые позволяет выполнить iptables:

  • -A — добавить правило в цепочку;
  • -С — проверить все правила;
  • -D — удалить правило;
  • -I — вставить правило с нужным номером;
  • -L — вывести все правила в текущей цепочке;
  • -S — вывести все правила;
  • -F — очистить все правила;
  • -N — создать цепочку;
  • -X — удалить цепочку;
  • -P — установить действие по умолчанию.

Дополнительные опции для правил:

  • -p — указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp,
    mh;
  • -s — указать ip адрес устройства-отправителя пакета;
  • -d — указать ip адрес получателя;
  • -i — входной сетевой интерфейс;
  • -o — исходящий сетевой интерфейс;
  • -j — выбрать действие, если правило подошло.

Теперь вы можем перейти рассмотрению примеров того как выполняется настройка iptables.

Markdown, Asciidoc, Sphinx

Понятно, что такое положение дел никого не устраивало и Джонатан вместе с коллегами искали выход из ситуации. Рассмотрев и перепробовав несколько вариантов, в конце остановились на связке и .

Вначале были сформулированы принципы. Новая система документации должна удовлетворять требованиям.

  • Ликвидировать беспорядок.
  • Улучшить форматирование и читабельность.
  • Plaintext.
  • Рационально организованный инструментарий.

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

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

Тогда Джонатан сообразил, что выход из ситуации надо искать, двигаясь в обратном направлении. Вместо того, чтобы усложнять цепочку форматирования и взаимных преобразований, следует взять и выкинуть оттуда что-то лишнее. Этим лишним оказался DocBook и все, что вокруг него. Что, если все перенести в и из него напрямую создавать необходимые html, pdf и man страницы, минуя инфраструктуру DocBook?

Легко сказать, трудно реализовать. тянул за собой зависимости Ruby, плохо контачил с и все равно, скорее дополнял DocBook, нежели заменял его, а линковка документов все еще не срасталась. Тем не менее, было решено двигаться вперед вместо того, чтобы ждать непонятно чего. В последний момент Джонатан взял небольшой тайм-аут, еще раз взвесил все за и против и предложил взять на вооружение питоновскую систему документации Sphinx, основанную на легковесной разметке .

Почему Sphinx?

  • Создан для документирования ПО. Например знает, что такое функция.
  • Хорошо подходит для больших документов рассыпанных по множеству файлов.
  • Часто используется и имеет хорошую поддержку.
  • Документы наконец-то связаны между собой.
  • Тулчейн упростился, быстрее сборка.

Для того, чтобы убедить коллег Джонатан на коленке написал кривоватый Proof of Concept, а затем Jani Nikula отполировал его и довел до ума. Довольно быстро среди документалистов возник консенсус по данному вопросу и все завертелось. Кстати, трюк с PoC, всегда срабатывает по словам Andrew Morton-а, мейнтейнера ветки ядра. Так появился Linux, и так довольно часто решаются спорные моменты, когда надо заменить ужасное решение не идеальным.

Настройка Rsyslog на узле monitor

Мы ограничимся минимальной настройкой, решающей задачу. В случае, если журналирование используется для многих серверов, рекомендуется настроить организацию журналов по имени сервера. Для того, чтобы сервис Rsyslog мог принимать сообщения от удаленных серверов, в файле /etc/rsyslog.conf необходимо раскомментировать строки, отвечающие за активацию модуля, обрабатывающего внешние события, приходящие по протоколу UDP:

module(load="imudp")
input(type="imudp" port="514")

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

$ sudo service rsyslog restart

убедимся, что rsyslog слушает порт 514 по протоколу UDP:

$ sudo netstat -nlp | grep 514
udp   0      0 0.0.0.0:10514           0.0.0.0:*         4446/rsyslogd
udp6  0      0 :::10514                     :::*         4446/rsyslogd   

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

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

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