Разрешить или запретить 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.logTLSSessionCache shm:/file=/var/run/proftpd/sesscache
1
2
3
4
5
6
7
8
9
10
11TLSEngine 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