Руководство по iptables: как это работает (понятное объяснение с примерами)

Разрешить или запретить ICMP Ping запросы.

Чтобы запретить:
# iptables -A INPUT -p icmp —icmp-type echo-request -j DROP
# iptables -A INPUT -i eth1 -p icmp —icmp-type echo-request -j DROP

Разрешить для определенных сетей / хостов:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp —icmp-type echo-request -j ACCEPT

Разрешить только часть ICMP запросов:
### ** предполагается, что политики по умолчанию для входящих установлены в DROP ** ###
# iptables -A INPUT -p icmp —icmp-type echo-reply -j ACCEPT
# iptables -A INPUT -p icmp —icmp-type destination-unreachable -j ACCEPT
# iptables -A INPUT -p icmp —icmp-type time-exceeded -j ACCEPT
## ** разрешим отвечать на запрос ** ##
# iptables -A INPUT -p icmp —icmp-type echo-request -j ACCEPT

Перечисление правил по спецификации

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

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

Перечисление списка правил конкретной цепочки

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

Теперь давайте рассмотрим альтернативный способ просмотра действующих правил Iptables в форме таблицы правил.

Настройка и запуск nftables в Debian 10

Чтобы запустить nftables в Debian 10, просто установите интерфейс, все остальное уже установлено (и используется, даже если мы поместим iptables).

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

По умолчанию используется файл /etc/nftables.conf, который уже содержит простую таблицу межсетевого экрана для ipv4 / ipv6, называемую «внутренним фильтром».

Утилита nftables пользовательского пространства, nft, выполняет большинство оценок набора правил перед их передачей ядру операционной системы. Следовательно, если мы хотим выполнить команду с помощью nftables, нам нужно будет поставить «nft», чтобы иметь возможность выполнить ее, синтаксис очень прост для понимания, намного проще, чем iptables, который мы уже видели раньше.

В случае с nftables правила хранятся в цепочках, которые, в свою очередь, хранятся в таблицах. Чтобы изменения остались, нам нужно сохранить правила прямо в файл /etc/nftables.conf . Команда, которую мы можем использовать для постоянного сохранения этих правил и их запуска при перезапуске системы, выглядит следующим образом:

Затем, если мы добавили новые правила вручную, нам нужно перезапустить nftables, чтобы изменения вступили в силу:

Все команды должны выполняться от имени администратора, либо с помощью «sudo», либо напрямую с пользователем «root».

Базовые понятия в FirewallD

Прежде, чем перейти к использованию firewall-cmd для управления настройками брандмауэра, следует познакомиться с несколькими базовыми понятиями, которые предоставляются утилитой.

Зоны

Демон FirewallD управляет группами правил, используя объекты под названием «зоны». Зоны представляют собой набор правил, которые диктуют, какой трафик должен быть разрешен в зависимости от уровня доверия в сетях, к которым подключен компьютер. Сетевым интерфейсам назначается зона, определяющая поведение, которое должен разрешать брандмауэр.

Для компьютеров, которые могут часто перемещаться между сетями (например, ноутбуки), такой уровень гибкости дает возможность изменять правила в зависимости от среды. Можно применять более строгие правила, запрещающие большую часть трафика при работе в общедоступной сети Wi-Fi, и более мягкие ограничения при подключении к домашней сети. Для сервера эти зоны не так важны, поскольку сетевое окружение редко, если вообще меняется.

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

  • drop: Самый низкий уровень доверия сети. Весь входящий трафик сбрасывается без уведомления, поддерживаются только исходящие соединения.
  • block: Эта зона похожа на предыдущую, но при этом все входящие запросы сбрасываются с сообщением для IPv4 или для IPv6.
  • public: Эта зона представляет недоверенную публичную сеть, однако поддерживает предопределенные входящие соединения.
  • external: Зона для использования на граничных серверах со связью с внешними сетями. Поддерживается маскировка NAT, благодаря чему внутренняя сеть остается закрытой, но возможны выбранные входящие соединения.
  • internal: Противоположна зоне external, используется во внутренних сетях. Компьютерам в этой зоне можно доверять. Доступны дополнительные сервисы.
  • dmz: Используется для компьютеров, расположенных в демилитаризованной зоне (для изолированных компьютеров с ограниченным доступом к остальной части сети). Поддерживаются только некоторые входящие соединения.
  • work: Зона рабочей сети. Большинству машин в сети можно доверять. Доступны дополнительные сервисы.
  • home: Зона домашней сети. Окружению можно доверять, но поддерживаются только определенные пользователем входящие соединения.
  • trusted: Всем машинам в сети можно доверять. Самая открытая из доступных опций, поэтому требует разумного использования.

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

Сохранение правил

FirewallD использует два набора правил — постоянные и временные. Временные правила представляет собой фактическую рабочую конфигурацию и при перезагрузке не сохраняются. Если правило добавляется или изменяется, поведение запущенного брандмауэра сразу изменяется. Но при перезагрузке все изменения утрачиваются, если они не были сохранены.

По умолчанию при внесении изменений в конфигурацию FirewallD с использованием утилиты firewall-cmd изменения применяются к временному набору правил. Большинство команд firewall-cmd может использовать флаг , он позволяет cоздать постоянный набор правил, которые будут применяться сразу после выполнения команды перезагрузки.

Синтаксис и опции firewall-cmd

Управлять настройками Firewalld можно как с помощью консольной утилиты firewall-cmd, так и в графическом интерфейсе. CentOS чаще всего используется на серверах, поэтому вам придётся работать в терминале. Давайте рассмотрим синтаксис утилиты:

firewall-cmd опции

Для управления зонами используется такой синтаксис:

firewall-cmd —конфигурация —zone=зона опции

В качестве конфигурации нужно указать опцию —permanent, чтобы сохранить изменения после перезагрузки или ничего не указывать, тогда изменения будут действительны только до перезагрузки. В качестве зоны используйте имя нужной зоны. Давайте рассмотрим опции утилиты:

  • —state — вывести состояние брандмауэра;
  • —reload — перезагрузить правила из постоянной конфигурации;
  • —complete-reload — жёсткая перезагрузка правил с разрывом всех соединений;
  • —runtime-to-permanent — перенести настройки конфигурации runtime в постоянную конфигурацию;
  • —permanent — использовать постоянную конфигурацию;
  • —get-default-zone — отобразить зону, используемую по умолчанию;
  • —set-default-zone — установить зону по умолчанию;
  • —get-active-zones — отобразить активные зоны;
  • —get-zones — отобразить все доступные зоны;
  • —get-services — вывести предопределенные сервисы;
  • —list-all-zones — вывести конфигурацию всех зон;
  • —new-zone — создать новую зону;
  • —delete-zone — удалить зону;
  • —list-all — вывести всё, что добавлено, из выбранной зоны;
  • —list-services — вывести все сервисы, добавленные к зоне;
  • —add-service — добавить сервис к зоне;
  • —remove-service — удалить сервис из зоны;
  • —list-ports — отобразить порты, добавленные к зоне;
  • —add-port — добавить порт к зоне;
  • —remove-port — удалить порт из зоны;
  • —query-port — показать, добавлен ли порт к зоне;
  • —list-protocols — вывести протоколы, добавленные к зоне;
  • —add-protocol — добавить протокол к зоне;
  • —remove-protocol — удалить протокол из зоны;
  • —list-source-ports — вывести порты источника, добавленные к зоне;
  • —add-source-port — добавить порт-источник к зоне;
  • —remove-source-port — удалить порт-источник из зоны;
  • —list-icmp-blocks — вывести список блокировок icmp;
  • —add-icmp-block — добавить блокировку icmp;
  • —add-icmp-block — удалить блокировку icmp;
  • —add-forward-port — добавить порт для перенаправления в NAT;
  • —remove-forward-port — удалить порт для перенаправления в NAT;
  • —add-masquerade — включить NAT;
  • —remove-masquerade — удалить NAT.

Это далеко не все опции утилиты, но для этой статьи нам будет их достаточно.

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

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

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

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

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

Putting It All Together

Now we’ve seen the basics, we can start combining these rules.

A popular UNIX/Linux service is the secure shell (SSH) service allowing remote logins. By default SSH uses port 22 and again uses the tcp protocol. So if we want to allow remote logins, we would need to allow tcp connections on port 22:

# Accept tcp packets on destination port 22 (SSH)
 iptables -A INPUT -p tcp --dport 22 -j ACCEPT

This will open up port 22 (SSH) to all incoming tcp connections which poses a potential security threat as hackers could try brute force cracking on accounts with weak passwords. However, if we know the IP addresses of trusted remote machines that will be used to log on using SSH, we can limit access to only these source IP addresses. For example, if we just wanted to open up SSH access on our private lan (192.168.0.x), we can limit access to just this source IP address range:

# Accept tcp packets on destination port 22 (SSH) from private LAN
 iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT

Using source IP filtering allows us to securely open up SSH access on port 22 to only trusted IP addresses. For example, we could use this method to allow remote logins between work and home machines. To all other IP addresses, the port (and service) would appear closed as if the service were disabled so hackers using port scanning methods are likely to pass us by.

Начальная настройка CentOS 7

Итак, у нас имеется:
# uname -a 
Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Первым делом обновим базовую систему:

# yum update

Для удобства администрирования, я всегда устанавливаю Midnight Commander, или просто mc:

# yum install mc

И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntaxсинтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса.

# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

Дальше нам пригодятся сетевые утилиты. В минимальной настройке вы будете удивлены, когда наберете команду:

# ifconfig

И увидите ответ:

-bash: ifconfig: command not found

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

Вместо ifconfig в CentOS 7 теперь утилита ip. Я не понимаю, зачем пилить отдельные программы для управления сетевыми настройками, если ifconfig и так отлично справляется с задачей. К тому же мне всегда нравилось, что в различных дистрибутивах линукс все примерно одинаковое. С помощью ifconfig можно настроить сеть не только в linux, но и в freebsd. Это удобно. А когда в каждом дистрибутиве свой инструмент это неудобно. Так что предлагаю установить привычный ifconfig.

Сделаем это:

# yum install net-tools

Теперь, чтобы у нас работали команды nslookup или, к примеру, host необходимо установить пакет bind-utils. Если этого не сделать, то на команду:

# nslookup

Будет вывод:

-bash: nslookup: command not found

Так что устанавливаем bind-utils:

# yum install bind-utils

Отключаем SELinux. Его использование и настройка отдельный разговор. Сейчас я не буду этим заниматься. Так что отключаем:

# mcedit /etc/sysconfig/selinux

меняем значение SELINUX=disabled Чтобы изменения вступили в силу, перезагружаемся:

# reboot

Можно без перезагрузки применить отключение SElinux:

# setenforce 

3. Редактируем конфиг ProFTPd

Настройки производятся в файле конфигурации ProFTPd – /etc/proftpd.conf

  • Если анонимный доступ не требуется, то комментируем все строки внутри:

    Shell

    <IfDefine ANONYMOUS_FTP>

    </IfDefine>

    1
    2
    3

    <IfDefine ANONYMOUS_FTP>

    <IfDefine>

  • Правим секцию отвечающую за TLS:

    Shell

    TLSEngine on
    #TLSRequired off
    TLSRSACertificateFile /etc/pki/tls/certs/proftpd.crt.pem
    TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.key.pem
    TLSCipherSuite ALL:!ADH:!DES
    TLSOptions NoCertRequest
    TLSVerifyClient off
    #TLSRenegotiate ctrl 3600 data 512000 required off timeout 300
    TLSLog /var/log/proftpd/tls.log

    TLSSessionCache shm:/file=/var/run/proftpd/sesscache

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    TLSEngine                     on

    #TLSRequired                  off

    TLSRSACertificateFileetcpkitlscertsproftpd.crt.pem

    TLSRSACertificateKeyFileetcpkitlscertsproftpd.key.pem

    TLSCipherSuite                ALL!ADH!DES

    TLSOptions                    NoCertRequest

    TLSVerifyClient               off

    #TLSRenegotiate               ctrl 3600 data 512000 required off timeout 300

    TLSLogvarlogproftpdtls.log

    TLSSessionCache             shmfile=varrunproftpdsesscache

    • TLSRequired — комментируем, иначе будет работать только FTPS, не будет выбора.
    • TLSRSACertificateFile и TTLSRSACertificateKeyFile — генерируем:

      Shell

      openssl req -x509 -days 3650 -nodes -newkey rsa:1024 -keyout /etc/pki/tls/certs/proftpd.key.pem -out /etc/pki/tls/certs/proftpd.crt.pem && chmod 600 /etc/pki/tls/certs/proftpd.key.pem

      1 openssl req-x509-days3650-nodes-newkey rsa1024-keyoutetcpkitlscertsproftpd.key.pem-outetcpkitlscertsproftpd.crt.pem&&chmod600etcpkitlscertsproftpd.key.pem
  • Добавляем в конфиг диапазон пассивных портов:

    Shell

    sed -i ‘1a\PassivePorts 49152 65534’ /etc/proftpd.conf

    1 sed-i’1a\PassivePorts 49152 65534’etcproftpd.conf

Вступление

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

IPTables — простой фаервол, установленный на большинстве дистрибутивов Linux. Руководство Linux говорит, что IPTables — это инструмент управления пакетными фильтрами IPv4 и NAT, то есть, это инструмент фильтрации и блокировки интернет-трафика. IPTables включен в CentOS по умолчанию.

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

Как запустить / остановить и включить / отключить службу IPtables

На RHEL / CentOS 6/5/4 и Fedora 12-18 брандмауэр iptables поставляется как предварительно, а позже сервис iptables может быть установлен через:

# yum установить iptables-services

Затем служба может быть запущена, остановлена ​​или перезапущена с помощью следующих команд:

Запустите сервис Iptables

# systemctl start iptables ИЛИ # служба iptables start

Остановить службу Iptables

# systemctl stop iptables ИЛИ # служба iptables stop

Отключить службу Iptables

# systemctl отключить iptables Или # служба iptables save # служба iptables stop

Включить службу Iptables

# systemctl включить iptables или # запустить сервис iptables

Проверьте статус службы Iptables

# systemctl status iptables ИЛИ # сервис iptables status

Однако в Ubuntu и некоторых других дистрибутивах Linux команда ufw используется для управления службой брандмауэра iptables. Ufw предоставляет пользователю простой интерфейс для работы со службой межсетевого экрана iptables.

Включить Ufw Iptables Firewall

$ sudo ufw enable

Отключить брандмауэр Ufw Iptables

$ sudo ufw отключить

Проверьте состояние Ufw Iptables Firewall

# sudo ufw status

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

# iptables -L -n -v

Сохранение правил (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.

Включение логов

Во время настройки полезно включить логи, чтобы мониторить заблокированные пакеты и выяснять, почему отсутствует доступ к необходимым сервисам, которые мы вроде бы уже открыли. Я отправляю все заблокированные пакеты в отдельные цепочки (block_in, block_out, block_fw), соответствующие направлению трафика и маркирую в логах каждое направление. Так удобнее делать разбор полетов. Добавляем следующие правила в самый конец скрипта, перед сохранением настроек:

Все заблокированные пакеты вы сможете отследить в файле /var/log/messages.

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

Listing current rules

On CentOS and other Red Hat variants, iptables often comes with some pre-configured rules, check the current iptable rules using the following command.

sudo iptables -L

This will print out a list of three chains, input, forward and output, like the empty rules table example output below.

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

The chain names indicate which traffic the rules in each list will be applied to, input is for any connections coming to your cloud server, output is any leaving traffic and forward for any pass through. Each chain also has its policy setting which determines how the traffic is handled if it doesn’t match any specific rules, by default it’s set to accept.

Принцип настройки

Общий синтаксис использования iptables:

iptables -t <таблица> <команда> <цепочка> <условие> <действие>

<таблица>

Правила netfilter распределены по 4-м таблицам, каждая из которых имеет свое назначение (подробнее ниже). Она указывается ключом -t, но если данный параметр не указан, действие будет выполняться для таблицы по умолчанию — filter.

<команда>

Команды указывают, какое именно действие мы совершаем над netfilter, например, создаем или удаляем правило.

<цепочка>

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

Некоторые команды требуют указания номера правила, например, на удаление или редактирование.

<условие>

Условие описывает критерии отработки того или иного правила.

<действие>

Ну и, собственно, что делаем с пакетом, если он подходит под критерии условия.

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

Настраиваем время

Узнать, какое время на сервере можно с помощью команды date:

# date

Чтобы сменить часовой пояс, необходимо выбрать подходящий файл часовой зоны в /usr/share/zoneinfo. В случае, если у вас часовой пояс Москвы, выполните следующее:

# mv /etc/localtime /etc/localtime.bak
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Либо можете воспользоваться специальной утилитой, которая входит в комплект CentOS 7. Делает она ровно то же самое:

# timedatectl set-timezone Europe/Moscow

В CentOS 7 есть утилита для синхронизации времени chrony. В стандартной установке она должна быть установлена в системе, в минимальной ее нет. Если у вас она не стоит, то устанавливайте вручную:

# yum install chrony

Запускаем chrony и добавляем в автозагрузку:

# systemctl start chronyd
# systemctl enable chronyd

Проверяем, нормально ли запустился:

# systemctl status chronyd
● chronyd.service - NTP client/server
 Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
 Active: active (running) since Fri 2016-08-05 00:33:09 MSK; 52min left
 Main PID: 667 (chronyd)
 CGroup: /system.slice/chronyd.service
 └─667 /usr/sbin/chronyd

Aug 05 00:33:09 centos.local systemd: Starting NTP client/server...
Aug 05 00:33:09 centos.local chronyd: chronyd version 2.1.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +DEBUG +ASYNCDNS +IPV6 +SECHASH)
Aug 05 00:33:09 centos.local chronyd: Generated key 1
Aug 05 00:33:09 centos.local systemd: Started NTP client/server.
Aug 05 00:33:26 centos.local chronyd: Selected source 85.21.78.91
Aug 05 00:33:26 centos.local chronyd: System clock wrong by -3595.761368 seconds, adjustment started
Aug 04 23:33:30 centos.local chronyd: System clock was stepped by -3595.761368 seconds

Все в порядке, сервис работает. После запуска он автоматически синхронизирует время.

Для синхронизации времени вы можете воспользоваться более привычно программой, которая присутствует практически во всех unix дистрибутивах — ntp. Устанавливаем утилиту синхронизации времени ntp в CentOS:

# yum install ntp

Разово синхронизируем время:

# /usr/sbin/ntpdate pool.ntp.org

Если ntpdate не работает, посмотрите материал, может это ваш случай. Запустим демон синхронизации и запишем его запуск в автозагрузку:

# systemctl start ntpd
# systemctl enable ntpd
ln -s '/usr/lib/systemd/system/ntpd.service' '/etc/systemd/system/multi-user.target.wants/ntpd.service'

Теперь наши часы будут автоматически синхронизироваться с сервером времени.

Не используйте одновременно оба демона синхронизации времени — chrony и ntp. Выберите какой-нибудь один. Лично я не вижу в них разницы, сам чаще всего ставлю привычный ntp.

Advanced rule setup

As per basic firewall behaviour, the rules are read in the order they are listed on each chain, which means you’ll need to put the rules in the correct order. Appending new rules adds them to the end of the list. You can add new rules to a specific position of the list by inserting them using iptables -I <index> -command, where the <index> is the order number you wish to insert the rule. To know which index number to enter, use the following command.

sudo iptables -L --line-numbers
Chain INPUT (policy DROP)
 num target prot opt source   destination
 1   ACCEPT all  --  anywhere anywhere ctstate RELATED,ESTABLISHED
 2   ACCEPT tcp  --  anywhere anywhere tcp dpt:ssh
 3   ACCEPT tcp  --  anywhere anywhere tcp dpt:http

The number at the beginning of each rule line indicates the position in the chain. To insert a new rule above a specific existing rule, simply use the index number of that existing rule. For example to insert a new rule to the top of the chain, use the following command with index number 1.

sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

If you wish to remove an existing rule from a certain chain, use the delete command with the parameter -D. The easiest way to select the rule for delete is to use the index numbers explained above. For example to delete the second rule on the input chain, use this command

sudo iptables -D INPUT 2

It’s also possible to flush all rules of a specific chain or even the whole iptables using the -F -parameter. This is useful if you suspect iptables is interfering with your attempted network traffic, or you simply wish to start configuring again from a clean table. Remember to save the rules to a file before flushing the table.

Warning: Make sure you set the default rule to ACCEPT before flushing any chain.

sudo iptables -P INPUT ACCEPT

Afterwards, you can go ahead with clearing other rules. Remember to save the rules to a file before flushing the table in case you want to restore the configuration later.

# Clear input chain
sudo iptables -F INPUT
# Flush the whole iptables
sudo iptables -F

With the iptable flushed, your server could be vulnerable to attacks. Make sure to secure your system with an alternative method while disabling iptables even temporarily.

Основные особенности nftables

Теперь nftables использует более компактный и интуитивно понятный синтаксис, вдохновленный инструментом tcpdump. Nftables обеспечивает уровень совместимости с iptables, используя тот же синтаксис, что и фреймворк nftables (который используется в Debian 10, если nft не установлен). В nftables таблицы и строки полностью настраиваются, нет предопределенных таблиц, которые всегда должны быть там, даже если мы их не используем (как в случае с iptables). Имена тоже могут быть произвольными.

Другой важной особенностью nftables является то, что «match» -m и «target» -j исчезают, в nftables есть выражения. Nftables позволяет выполнять несколько действий в одном правиле (несколько целей), что было нелегко сделать с помощью iptables

По умолчанию у нас нет встроенных счетчиков в правила и цепочки, теперь они необязательны и могут быть включены, если мы захотим. Наконец, nftables позволяет упростить управление наборами правил IPv4 и IPv6, отныне нам не придется «адаптировать» правила из iptables к ip6tables, как раньше.

Возможности для обобщения правил намного лучше, более того, очень важной особенностью iptables является функция «ipset», которая позволяет нам эффективно разрешать или блокировать миллионы IP-адресов или подсетей. Nftables унаследовал ту же функциональность, но это не «плагин», который мы должны установить, как в случае с ipset и iptables, но он напрямую интегрирован в nftables изначально, и его работа действительно проста и легка

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

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

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

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

iptables -I

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

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