- Uncomplicated Firewall
- Contents
- Installation
- Basic configuration
- Forward policy
- Adding other applications
- Deleting applications
- Black listing IP addresses
- Rate limiting with ufw
- User rules
- Tips and tricks
- Disable remote ping
- Disable UFW logging
- GUI frontends
- Firewalld
- Contents
- Installation
- Usage
- Configuration
- Zones
- Zone information
- Changing zone of an interface
- Default zones
- Services
- Adding or removing services from a zone
- Ports
- NAT masquerade
- Port forwarding
- Tips and tricks
- Port or service timeout
- Converting runtime configuration to permanent
- Check services details
- High Performance Firewall
- Contents
- VLAN support
- The round robin NAT
- The High Performance
- The iproute2
- iptables (Русский)
- Contents
- Установка
- Фронтенды
- Консольные
- Графические
- Основные понятия
- Таблицы
- Цепочки
- Правила
- Прохождение по цепочке
- Модули
- Настройка и использование
- Из командной строки
- Вывод текущих правил
- Сброс правил
- Редактирование правил
- Руководства
- Журналирование
- Ограничение скорости логирования
- Просмотр логированных пакетов
- syslog-ng
- ulogd
Uncomplicated Firewall
From the project home page:
Ufw stands for Uncomplicated Firewall, and is a program for managing a netfilter firewall. It provides a command line interface and aims to be uncomplicated and easy to use.
Contents
Installation
Start and enable ufw.service to make it available at boot. Note that this will not work if iptables.service is also enabled (and same for its ipv6 counterpart).
Basic configuration
A very simplistic configuration which will deny all by default, allow any protocol from inside a 192.168.0.1-192.168.0.255 LAN, and allow incoming Deluge and rate limited SSH traffic from anywhere:
The next line is only needed once the first time you install the package:
Finally, query the rules being applied via the status command:
Extra information, including the default policies, can be seen with
but this is still limited to user-specified rules. In order to see all rules setup
may be used, as well as further reports listed in the manpage. Since these reports also summarize traffic, they may be somewhat difficult to read. Another way to check for accepted traffic:
While this works just fine for reporting, keep in mind not to enable the iptables service as long as you use ufw for managing it.
Forward policy
Users needing to run a VPN such as OpenVPN or WireGuard will need to adjust the DEFAULT_FORWARD_POLICY variable in /etc/default/ufw from a value of «DROP» to «ACCEPT» for proper VPN operation.
Adding other applications
The PKG comes with some defaults based on the default ports of many common daemons and programs. Inspect the options by looking in the /etc/ufw/applications.d directory or by listing them in the program itself:
If users are running any of the applications on a non-standard port, it is recommended to simply make /etc/ufw/applications.d/custom containing the needed data using the defaults as a guide.
Example, deluge with custom tcp ports that range from 20202-20205:
Should you require to define both tcp and udp ports for the same application, simply separate them with a pipe as shown: this app opens tcp ports 10000-10002 and udp port 10003:
One can also use a comma to define ports if a range is not desired. This example opens tcp ports 10000-10002 (inclusive) and udp ports 10003 and 10009
Deleting applications
Drawing on the Deluge/Deluge-my example above, the following will remove the standard Deluge rules and replace them with the Deluge-my rules from the above example:
Query the result via the status command:
Black listing IP addresses
It might be desirable to add ip addresses to a blacklist which is easily achieved simply by editing /etc/ufw/before.rules and inserting an iptables DROP line at the bottom of the file right above the «COMMIT» word.
Rate limiting with ufw
ufw has the ability to deny connections from an IP address that has attempted to initiate 6 or more connections in the last 30 seconds. Users should consider using this option for services such as SSH.
Using the above basic configuration, to enable rate limiting we would simply replace the allow parameter with the limit parameter. The new rule will then replace the previous.
User rules
All user rules are stored in etc/ufw/user.rules and etc/ufw/user6.rules for IPv4 and IPv6 respectively.
Tips and tricks
Disable remote ping
Change ACCEPT to DROP in the following lines:
If you use IPv6, related rules are in /etc/ufw/before6.rules .
Disable UFW logging
Disabling logging may be useful to stop UFW filling up the kernel (dmesg) and message logs:
GUI frontends
gufw is a GTK front-end for Ufw that aims to make managing a Linux firewall as accessible and easy as possible. It features pre-sets for common ports and p2p applications. It requires python , ufw , and GTK support.
Источник
Firewalld
firewalld is a firewall daemon developed by Red Hat. It uses nftables by default. From project home page:
Firewalld provides a dynamically managed firewall with support for network/firewall zones that define the trust level of network connections or interfaces. It has support for IPv4, IPv6 firewall settings, ethernet bridges and IP sets. There is a separation of runtime and permanent configuration options. It also provides an interface for services or applications to add firewall rules directly.
Contents
Installation
Usage
You can control the firewall rules with the firewall-cmd console utility.
firewall-offline-cmd utility can be used to configure when firewalld is not running. It features similar syntax to firewall-cmd .
GUI is available as firewall-config which comes with firewalld package.
Configuration
Configuration at run time can be changed using firewall-cmd .
Zones
Zone is a collection of rules that can be applied to a specific interface.
To have an overview of the current zones and interfaces they are applied to:
Some commands (such as adding/removing ports/services) require a zone to specified.
Zone can be specified by name by passing —zone=zone_name parameter.
If no zone is specified default zone is assumed.
Zone information
You can list all the zones with entirety their configuration:
or just a specific zone
Changing zone of an interface
There zone is a new zone that you want to assign interface to.
Using NetworkManager to manage zones
NetworkManager can assign different connection profiles to different zones. This allows for example, adding a home WiFi connection to the «home» zone, a work WiFi connection to the «work» zone, and all other WiFi connections to the default «public» zone.
List connection profiles:
Assign the «myssid» profile to the «home» zone:
Default zones
When a new interface is connected the default zone will be applied. You can query the name of the default zone using:
The default zone can be changed using following command.
Services
Services are pre-made rules corresponding to a specific daemon. For example, ssh service corresponds to SSH and opens ports 22 when assigned to a zone.
To get a list of available services enter following command:
You can query information about particular service:
Adding or removing services from a zone
To add a service to a zone:
Ports
Ports can be directly opened on a specific zone.
There protocol is either tcp or udp .
To close the port use —remove-port option with same port number and protocol.
NAT masquerade
This command has the same effect as iptables -t nat -A POSTROUTING -j MASQUERADE :
Port forwarding
If you have firewalld configured on a router, and you have enabled NAT masquerading as above, it is simple to set up port forwarding through firewalld:
This will forward port 12345/tcp on the firewall’s public interface to port 22 (standard SSH) on the internal system at IP address 10.20.30.40. To remove this forwarded port:
Unfortunately you have to type the entire forward declaration in order to remove it, specifying only the port and the protocol is not enough.
Tips and tricks
Port or service timeout
Service or port can be added for a limited amount of time using —timeout=value option passed during addition command. Value is either number of seconds, minutes if postfixed with m or hours h . For example, adding SSH service for 3 hours:
Converting runtime configuration to permanent
You can make the runtime (current temporary) configuration permanent (meaning it persists through restarts)
Check services details
The configuration files for the default supported services are located at /usr/lib/firewalld/services/ and user-created service files would be in /etc/firewalld/services/ .
Источник
High Performance Firewall
This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.
This article or section is a candidate for merging with Router.
Imagine this, you have more than two networks separated by Virtual Lans protocols (IEEE 802.1q) or VLANs, carried to you by an intelligent/manageable switch on one troncal line 10/100/1000 MB HD/FD (naturally the best is 1000 MB FD).
This page introduce how to create High Performance Firewall / Nat with iptables and VLANs and iproute2. Then you can share internet to a really BIG numbers of hosts, and maintain a good performance.
Contents
VLAN support
First, create sub-network as in page VLAN.
The round robin NAT
Let us suppose we have a one ip: 200.aaa.bbb.6 and our gateway is 200.aaa.bbb.1. we can safely put these parameters by default in our configuration. It will not get participation at all in our firewall.
I say I have 3 groups of 10 IPs each to play. we will define the NEXT in our firewall script:
And the next important line is:
You can repeat the groups for access, subdivide the networks ETC, iptables make a round robin over the Gr1, Gr2 and Gr3 by default, no modification is needed.
It is not necessary to create a virtual card (alias) to every IP in the group.
It is important that every real router knows every group and publishes its via BGP (or similar) to the neighbours.
To accelerate some ports you can put this in the top of FORWARD chain
- the packets incoming will pass only 1 rule if it is an establish connection
- the packet incoming will pass 2 rules if is a ping or similar
- the packet will pass 3 rules if is http, mail or similar
- and the DNS request will pass 3 o 4 rules until go out
The outgoing virus will KILL our machine, and we not need to share «windows» conversations so, kill them.
If you can, before they reach our machine.
The High Performance
We get to the real important part of this howto.
In our run to get a really big number of hosts running through our machine we miss some things
- We forget that is just one NICs to potentially more than 8000 Mac Addresses. The card shared memory is not prepare for this.
- By default iptables is not prepared to make this number of connections simultaneously .
To the first issue. I get some error messages in the logs relative to this, I’m really sorry, I lost these logs and do not remember what they said. But the answer is this, increase the threshold memory to the neighbours. Type this and read:
Next you can put this in the /etc/sysctrl.conf
and make sysctl -p to increase to the double. (no reboot needed) with this I get no errors.
The next part will need some comprehension about buckets and conntracks and hashsize (the way how iptables manage the nat connections). There is a very good document about this at here. Read it. Some thing are change since IPtables is know as Netfiler.
In resume. Put this in your modules section:
The last ones is just to avoid some problems that we have with ftp connections (I thing this is not necessary anymore). The ‘nf_conntrack hashsize=1048576′ increase the numbers of the hashsize (increase the kernel memory designated to NAT connections) (need reboot or reload module 🙂 see by running dmesg | grep conntrack as root)
And the next is put some similar to the /etc/sysctl.d/99-sysctl.conf : file
And do the sysctl —system command
In my case is the same number, that means that I have 1 connection for bucket. I do not need more. by default NetFilter put rate of 1:8. I.E. 8 conections per bucket!! (I think, not remember well)..
In our case we get about 600.000 simultaneous connections in 2 1Giga NICs cards, You can see this with the next command
And put this in a snmpd agent to get and graph it in a MRTG/cacti server . uuuuuuu homework
The iproute2
We have 3 big access to Internet. This is because we manage 3 class C groups of IPs (some restrictions of BGP) in this firewall. So, we have 3 incoming traffics that we can manage, but only one outgoing. Our default gateway. This can easily fill our outgoing quote, so we have to spare it.
First we have to put some new tables to /etc/iproute2/rt_tables file
Can be more, can be less, depends on traffic
Second we have to give a default gateway to this tables
It is recommended but not necessary put the local interfaces to each table. If you do not put the next few lines you will get not answer of ping in the local network, but you will be able to pass trough.
The last thing is to give the order to the incoming packages
Again, you can play with the PRO_X and even you can play with the mask and submask For example we want to give only a one class C to outgoing to PRO_3
Источник
iptables (Русский)
iptables — утилита командной строки для настройки встроенного в ядро Linux межсетевого экрана, разработанного в рамках проекта Netfilter. Термином iptables также часто называют сам межсетевой экран в ядре. Настройка экрана выполняется либо напрямую с помощью iptables, либо через один из фронтендов, консольных или графических. iptables работает с протоколом IPv4, для IPv6 разработана утилита ip6tables. В основном их синтаксис совпадает, но некоторые специфичные для протоколов опции различаются.
Contents
Установка
Стандартное ядро Arch Linux скомпилировано с поддержкой iptables. Необходимо лишь установить набор пользовательских утилит, которые собраны в пакет iptables . Поскольку данный пакет является косвенной зависимостью мета-пакета base , то он по умолчанию должен быть установлен в системе.
Фронтенды
Консольные
- Arno’s firewall — безопасный межсетевой экран как для одиночной машины, так и для разрозненной сети. Лёгок в настройке, удобен в использовании, хорошо кастомизируется. Поддерживает: NAT и SNAT, проброс портов, ADSL ethernet-модемы со статическими и динамическими IP-адресами, фильтрацию MAC-адресов, обнаружение скрытого сканирования портов, DMZ и DMZ-2-LAN пересылку, защиту от SYN/ICMP флуда, обширное логирование с временными ограничениями для предотвращения засорения логов, все IP-протоколы и технологии VPN вроде IPsec, плагины для расширения функциональности.
http://rocky.eld.leidenuniv.nl/ || arno-iptables-firewallAUR
- ferm — инструмент для обслуживания комплексных межсетевых экранов, помогающий избежать необходимости переписывать сложные правила снова и снова. Позволяет сохранить целый набор правил в одном файле и загрузить его всего одной командой. Настройка экрана производится посредством специального языка, наподобие языка программирования, с помощью уровней и списков.
http://ferm.foo-projects.org/ || fermAUR
- FireHOL — не только программа для создания межсетевого экрана, но и специальный язык для задания его настроек. Делает даже тонкую настройку экрана лёгкой — как вам бы и хотелось.
http://firehol.sourceforge.net/ || fireholAUR
- Firetable — инструмент для межсетевого экрана iptables. Каждый сетевой интерфейс настраивается отдельно в соответствии с собственным файлом настроек, синтаксис которого понятен и удобен.
https://gitlab.com/hsleisink/firetable || firetableAUR
- firewalld (firewall-cmd) — демон и консольный интерфейс для настройки сети, зональной политики и правил межсетевого экрана.
https://firewalld.org/ || firewalld
- Shorewall — высокоуровневый инструмент для настройки Netfilter. Требования к экрану/шлюзу описываются посредством записей в наборе файлов настроек.
http://www.shorewall.net/ || shorewall
- Uncomplicated Firewall — простой интерфейс для iptables.
https://launchpad.net/ufw || ufw
- PeerGuardian (pglcmd) — ориентированное на приватность firewall-приложение. Занимается блокировкой входящих и исходящих подключений на основе огромного чёрного списка (тысячи или даже миллионы IP-диапазонов).
https://sourceforge.net/projects/peerguardian/ || pglAUR
- Vuurmuur — мощный менеджер сетевого экрана. Лёгкая в освоении настройка, которая позволяет создавать как простые, так и сложные конфигурации межсетевого экрана. Для настройки есть графический интерфейс на основе ncurses , который позволяет осуществлять безопасное удалённое администрирование через SSH или консоль. Vuurmuur поддерживает ограничение трафика, имеет мощную систему мониторинга, которая позволяет администратору следить за логами, подключениями и использованием пропускной способности в режиме реального времени.
https://www.vuurmuur.org/ || vuurmuurAUR
- Servicewall — простой адаптивный фронтенд для iptables; позволяет определять список служб, поторым разрешено устанавливать соединение с определённым доменом, а также автоматичеки переключать профили при необходимости. Использует определения служб, предоставляемые jhansonxi и используемые в том числе в ufw. При ведении логов journald со списком заблокированных пакетов полагается на ulogd; содержит фреймворк анализа пакетов с упором на ограничение доступа к логам.
https://github.com/lafleurdeboum/servicewall || servicewall-gitAUR
Графические
- Firewall Builder — графический интерфейс для настройки и управления межсетевыми экранами, работает с iptables (netfilter), ipfilter, pf, ipfw, Cisco PIX (FWSM, ASA), а также с маршрутизаторами Cisco с поддержкой Extended ACL. Запускается на Linux, FreeBSD, OpenBSD, Windows и macOS, может управлять как локальными, так и удалёнными межсетевыми экранами.
http://fwbuilder.sourceforge.net/ || fwbuilder
- firewalld (firewall-config) — демон и графический интерфейс для настройки сети, зональной политики и правил межсетевого экрана.
https://firewalld.org/ || firewalld
- Gufw — графический GTK-интерфейс для ufw , который, в свою очередь, является интерфейсом командной строки для iptables (gufw–>ufw–>iptables), лёгкий и простой в использовании.
https://gufw.org/ || gufw
- PeerGuardian GUI (pglgui) — ориентированное на приватность firewall-приложение. Занимается блокировкой входящих и исходящих подключений на основе огромного чёрного списка (тысячи или даже миллионы IP-диапазонов).
https://sourceforge.net/projects/peerguardian/ || pglAUR
Основные понятия
iptables используется для проверки, модификации, перенаправления и отбрасывания пакетов. Код для фильтрации пакетов IPv4 уже встроен в ядро и организован в виде набора таблиц, каждая из которых предназначена для конкретной цели. Таблица состоит из группы предопределённых цепочек, а те, в свою очередь, содержат правила, которые проверяются по очереди. Каждое правило состоит из критерия (набора условий) и действия (т.н. цели); действие применяется к пакету, подпадающему под критерий (т. е. если все условия выполнены). Если пакет достигает конца встроенной цепочки, в том числе пустой, то он отправляется дальше в соответствии с политикой цепочки. iptables — пользовательская утилита для работы с цепочками и правилами. Большинство пользователей находят IP-маршрутизацию Linux сложной и запутанной, однако на практике наиболее распространенные варианты использования (NAT и/или базовый межсетевой экран для интернета) являются значительно менее сложными.
Ключ к пониманию принципа работы iptables находится в этой блок-схеме. Слова в нижнем регистре в верхней части каждого блока являются именами таблиц, а слова в верхнем регистре – цепочками. Каждый IP-пакет, принятый на любом сетевом интерфейсе, проходит через эту блок-схему сверху вниз. Существует заблуждение, что пакеты, приходящие на внутренний интерфейс, обрабатываются как-то иначе нежели те, что приходят на интерфейс, подключённый к интернету. Пакеты на всех интерфейсах обрабатываются одинаково; это ваша задача написать правила, которые будут обрабатывать их по-разному. Некоторые пакеты предназначены для локальных процессов; они проходят по схеме от верхнего блока до блока (локальный процесс). В то же время локальный процесс сам может генерировать пакеты, и они начинают путешествие по схеме с блока и далее вниз. Подробное описание работы этой блок-схемы можно найти здесь.
В подавляющем большинстве случаев таблицы raw, mangle и security вам не понадобятся. На схеме ниже приведён упрощённый вариант прохождения пакета через iptables:
Таблицы
iptables содержит пять таблиц:
- raw — используется только для настройки пакетов, поэтому они освобождаются от отслеживания.
- filter — таблица по умолчанию; в ней сосредоточены все действия, типичные для межсетевых экранов.
- nat — используется для преобразования сетевых адресов (например, проброс портов).
- mangle — используется для специальных преобразований пакетов.
- security — используется в сетевых правилах для Мандатного управления доступом (например, в SELinux – подробнее см. эту статью).
Скорее всего, вам потребуются только две из них: filter и nat. Остальные таблицы используются в сложных конфигурациях с несколькими маршрутизаторами и выходят за рамки данной статьи.
Цепочки
Таблицы состоят из цепочек, которые представляют собой набор правил, следующих друг за другом в определённом порядке. Таблица по умолчанию, filter, содержит три встроенные цепочки: INPUT , OUTPUT и FORWARD , которые, как видно из диаграммы, активируются в определённые моменты процесса фильтрации пакетов. Таблица nat включает стандартные цепочки PREROUTING , POSTROUTING и OUTPUT .
Описание стандартных цепочек других таблиц можно найти в руководстве iptables(8) .
По умолчанию все цепочки пусты и не содержат каких-либо правил. Вы должны добавить правила в те цепочки, которые собираетесь использовать. У цепочек также задана политика по умолчанию — обычно ACCEPT , но её можно изменить на DROP , если вы хотите убедиться, что ни один пакет не проскочит мимо вашего набора правил. Тем не менее, политика по умолчанию применяется к пакету только после того, как он пройдёт через все существующие правила.
Вы можете добавить собственные цепочки для большей эффективности или удобства. Пример создания таких цепочек можно найти в статье Настройка межсетевого экрана.
Правила
Фильтрация пакетов основана на правилах. Каждое правило состоит из нескольких условий и действия-цели. Если пакет соответствует всем условиям, то к нему применяется указанное действие. Распространённые условия для проверки — на какой интерфейс пришёл пакет (например, eth0 или eth1), какого он типа (ICMP, TCP или UDP) или на какой порт направляется.
Цели указываются опцией -j / —jump . Цель может быть встроеной (built-in), целью-расширением (extension) или переходом на пользовательскую цепочку. Встроенные цели — ACCEPT , DROP , QUEUE и RETURN ; цели-расширения, к примеру — REJECT и LOG . Если применяется встроенная цель, то участь пакета решается незамедлительно и обработка пакета в таблице прекращается. Если в качестве цели выбран переход на пользовательскую цепочку, то пакет проходит через неё, возвращается в исходную цепочку и продолжает со следующего после перехода правила. Цели-расширения могут быть завершающими (как встроенные) или незавершающими (как пользовательские цепочки). Подробнее см. iptables-extensions(8) .
Прохождение по цепочке
Принятый на сетевом интерфейсе пакет проходит по цепочкам таблиц в порядке, изображённом на диаграмме. В первой точке маршрутизации (routing decision) принимается решение, направляется ли пакет на локальную машину (в таком случае пакет проходит через цепочку INPUT ) или куда-то в другое место (в этом случае пакет проходит через цепочку FORWARD ). Последующие точки маршрутизации определяют, на какой сетевой интерфейс направить исходящий пакет. В каждой цепочке по пути следования пакета последовательно проверяются все правила, и если пакет удовлетворяет условиям правила, то выполняется соответствующее действие-цель. Три наиболее частых цели – ACCEPT , DROP и переход на пользовательскую цепочку. В противоположность встроенным цепочкам, которые имеют цели по умолчанию, цепочки пользователя такой цели не имеют. Если не удовлетворены условия ни одного из правил пользовательской цепочки, пакет возвращается обратно в вызвавшую её цепочку, как показано здесь. Если в какое-то момент выполнились все условия цепочки с действием DROP , пакет немедленно отбрасывается и над ним более не производится никаких действий. Обратите, однако, внимание, что если пакет принят действием ACCEPT , он принимается только в текущей цепочке и в вышележащих цепочках в текущем стеке вызовов. Он не обрабатывается более той стандартной цепочкой, которая инициировала последовательность переходов, но продолжает проходить по цепочкам в других таблицах обычным образом.
Модули
Существует ряд модулей для расширения возможностей iptables, среди которых connlimit, conntrack, limit и recent. Эти модули добавляют новую функциональность в iptables, что позволяет создавать более сложные правила фильтрации.
Настройка и использование
iptables — служба systemd и запускается соответственно. Пакет iptables при установке добавляет пустой комплект правил /etc/iptables/iptables.rules , который будет загружен при первом запуске службы iptables.service . Как и прочие службы, службу iptables для добавления в автозапуск необходимо включить.
Правила iptables для IPv6 по умолчанию хранятся в файле /etc/iptables/ip6tables.rules , который используется службой ip6tables.service . Эту службу можно запустить так же, как и iptables.service .
После добавления правил посредством командной строки файл настроек не изменится автоматически — изменения необходимо сохранять командой:
Если вы изменяли файл настроек вручную, то либо перезагрузите службу iptables, либо загрузите настройки вручную командой:
Из командной строки
Вывод текущих правил
Основная команда для вывода текущих правил — —list-rules / -S ; её вывод похож на вывод утилиты iptables-save. Разница между ними в том, что по умолчанию последняя выводит правила из всех таблиц, в то время как iptables — только из таблицы filter .
Команда —list / -L принимает больше модификаторов и выводит более подробную информацию. Например, следующая команда позволяет проверить текущий набор правил и количество срабатываний каждого из них:
Представленный выше вывод свидетельствует о том, что в таблице по умолчанию ( filter ) никакие правила не заданы и все пакеты пропускаются. Выбрать другую таблицу можно опцией -t .
Чтобы вывести номера строк при просмотре правил, запустите команду с опцией —line-numbers . Это бывает удобно для последующего редактирования правил в командной строке.
Сброс правил
Сбросить правила iptables можно следующими командами:
Команда -F без аргументов просто очищает все цепочки в текущей таблице. Аналогично, команда -X удаляет все пустые пользовательские цепочки в таблице.
Отдельные цепочки могут быть очищены от правил или удалены указанием имени цепочки после команд -F и -X соответственно.
Редактирование правил
Редактирование правил подразумевает одно из следующих действий: добавление правила в конец цепочки ( -A ), вставка правила в конкретную позицию в цепочке ( -I ), замена ( -R ) и удаление ( -D ) существующего правила.
Примеры ниже приведены исходя из соображения, что компьютер не является маршрутизатором. Поэтому первым делом меняем политику цепочки FORWARD с ACCEPT на DROP :
Синхронизация по локальной сети в Dropbox производится с помощью отправки широковещательных пакетов каждые 30 секунд всем доступным компьютерам сети. Если вы находитесь в локальной сети с клиентами Dropbox и не желаете использовать эту возможность, то следует отклонять такие пакеты:
Теперь предположим, что вы поменяли своё мнение касательно Dropbox и решили установить его на компьютере. Также вы режили использовать синхронизацию, но с одним конкретным IP-адресом (например, 10.0.0.85 ). Команда -R позволяет заменить существующее правило:
Новое правило позволяет хосту 10.0.0.85 отправить данные на порт 17500 вашего компьютера. Но вдруг вы понимаете, что этот подход не масштабируется. Если дружественный пользователь Dropbox пытается получить доступ к порту 17500 , то мы хотим предоставлять ему доступ немедленно, не проверяя его последующими правилами!
Поэтому мы пишем новое правило для предоставления доверенному пользователю немедленного доступа и добавляем его командой -I , чтобы вставить его перед предыдущим:
Второе правило теперь можно переписать так, чтобы оно отбрасывало все пакеты на порт 17500 с других хостов:
Итоговый список правил теперь выглядит следующим образом:
Руководства
Журналирование
Цель LOG позволяет при срабатывании правила добавлять информацию о пакете в журнал. В отличие от прочих целей, вроде ACCEPT или DROP , при срабатывании цели LOG пакет продолжает продвижение по цепочке. Поэтому, например, чтобы включить журналирование всех отброшенных пакетов, необходимо перед каждым DROP -правилом добавить аналогичное LOG -правило. Правда, это не очень выгодно с точки зрения эффективности и удобства, и вместо этого лучше создать отдельную цепочку logdrop :
Добавьте в неё следующие правила:
Опции limit и limit-burst объяснены следующем разделе.
Теперь для отбрасывания пакета с добавлением соответствующей записи в журнал необходимо просто выполнить переход на цепочку logdrop :
Ограничение скорости логирования
Цепочка logdrop из предыдущего раздела использует модуль limit , который помогает предотвратить разрастание журнала и избежать ненужных операций записи на диск. Если этого не сделать, то неправильно настроенная служба, которая пытается установить соединение, или просто злоумышленник, могут привести к исчерпанию свободного места на диске (как минимум в разделе /var ) из-за добавления чрезмерного количества записей в журнал.
Модуль limit подключается опцией -m limit . Опцией —limit задаётся средняя скорость журналирования, а опцией —limit-burst — начальная. В примере цепочки logdrop выше команда
добавляет правило, которое логирует все проходящие через него пакеты. Первые 10 пакетов будут добавлены в журнал, но затем скорость логирования не будет превышать 5 пакетов в минуту. Если значение limit какое-то время не нарушается, то limit-burst снова «разблокируется», т.е. журналирование автоматически вернётся к нормальному режиму.
Просмотр логированных пакетов
В журнале systemd логированные пакеты отображаются как сообщения ядра.
Следующая команда выведет список пакетов, добавленных журнал с момента последней загрузки системы:
syslog-ng
Если вы используете syslog-ng, то в файле syslog-ng.conf можно настроить место хранения логов iptables. Замените:
После этого вывод iptables больше не будет отправляться в /var/log/everything.log .
Если необходимо задать произвольный файл для хранения журнала iptables (вместо /var/log/iptables.log ), то измените значение пути в параметре d_iptables (в том же файле ( syslog-ng.conf ):
ulogd
ulogd — работающий в пространстве пользователя специализированный демон журналирования пакетов для netfilter, который может заменить стандартную цель LOG . Пакет ulogd доступен в репозитории [community] .
Источник