В выпуск новой версии проекта Sound Open Firmware 2.2 (SOF), изначально созданная Intel для отказа от практики поставки закрытых прошивок для микросхем DSP, связанных с обработкой звука.
Впоследствии проект был передан под крыло Linux Foundation и сейчас развивается при участии сообщества и при участии AMD, Google и NXP.
Ознакомившись с базовыми понятиями об использовании iptables можно приступать к настройке защиты вашего web-сервера.
1. Просматриваем уже имеющиеся правила iptables
Изначально они не установлены и имеют режим ACCEPT, убеждаемся в этом командой:
sudo iptables -L -n -v
или
sudo iptables -vnL
В большинстве случаев вывод будет похож на нижеследующий:
Chain INPUT (policy ACCEPT 123K packets, 456M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 789K packets, 901G bytes)
pkts bytes target prot opt in out source destination
Если что-то не так, то изучаем правила и сохраняем их. После чего удаляем все имеющиеся правила, если они есть.
2. Очищаем имеющиеся правила
iptables -F
3. Защита ssh
3.0 Разрешаем доступ по ssh
Разрешить SSH доступ во избежание его блокировании и потери контроля над сервером. Любимым решением (по мнению авторов большинства подобных статей) для этого была бы команда:
eth0 нужно заменить на имя вашего рабочего интерфейса
Но разрешая доступ на SSH в самом начале, мы потом не сможем наложить на SSH правила по его защите от перебора паролей (Bruteforce). Почему? Потому, что правила в iptables применяются последовательно! И все другие ограничения которые бы мы наложили на 22 порт ниже текущего правила, уже не имели бы своей силы. Итак, сначала защита самого SSH потом его доступ, потом остальная конфигурация.
3.1 Разрешаем доступ по ssh
3. Сохранение, восстановление и автоматическое восстановление правил iptables после перезагрузки на UBUNTU 20.04 LTS / 21.04 LTS / 22.04 в 2023 году
Т.к. каждый раз, после перезагрузки вашего сервера правила iptables будут сбрасываться, то вам нужно настроить их автоматическое сохранение и восстановление при перезагрузке.
3.1 Сохранение правил iptables в файл
Сохранить правила iptables можно в любую доступную папку, но лучше, конечно, использовать для этого системную директорию, например, директорию для конфигурационных файлов /etc/ или под-папку в ней, например, /etc/iptables-config/.
Для сохранения правил межсетевого экрана Netfilter в linux можно использовать пакет iptables-save. Данный пакет записывает текущую конфигурацию в файл с указанным именем. Существуют две версии данного пакета:
iptables-save для протокола IPv4;
ip6tables-save для протокола IPv6.
Синтаксис команд одинаковый, поэтому мы рассмотрим вариант ipv4.
iptables-save [-m modprobe] [-c] [-t таблица] [-f имя файла]
Возможные опции:
-m modprobe: Указывает путь к программе modprobe. По умолчанию iptables-save проверяет /proc/sys/kernel/modprobe для определения пути к исполняемому файлу. modprobe — утилита управления модулями ядра. Существует несколько вариантов данной утилиты. Данный параметр можно проигнорировать;
-c: включает в поток вывода программы все счетчики количества переданных байтов и пакетов;
-t таблица: выводит в поток вывода только одну таблицу, которая была явно указана. При отсутствии флага выводит все таблицы настроек firewall;
-f имя файла: Указывает имя файла записи настроек. Если файл не указан, то вывод происходит в поток вывода на экран STDOUT.
Предварительно необходимо создать директорию /etc/iptables-conf/:
sudo mkdir /etc/iptables-conf/
В самом простом варианте команда будет выглядеть, например, следующим образом:
3.2 Восстановление ранее сохраненных правил iptables из файла
Для ручного восстановления настроек можно использовать вызов утилиты iptables-restore. Она восстанавливает настройки брандмауэра Netfilter с указанного файла или из потока ввода STDIN, если файл не задан явно. Рассмотрим синтаксис iptables-restore:
-c: восстанавливает значения всех счетчиков пакетов и байтов;
-n: позволяет не сбрасывать содержимое правил обновляемой таблицы правил iptables. Если не указан — все текущие правила обновляемой таблицы сбрасываются. Получается, что правила из файла дописываются в конец таблиц рабочей конфигурации, если указан этот параметр;
-t: происходит только сборка и тестирование набора правил из файла, без обновление рабочей таблицы правил iptables;
-v: выводит дополнительную отладочную информацию в течении восстановления набора правил;
-V: выводит номер версии программы;
-w секунды: дождаться монопольной блокировки фильтра пакетов ядра linux xtables. Применяется, чтобы предотвратить одновременное выполнение нескольких экземпляров утилиты. Опция заставляет ждать программу в течении некоторого времени возможности монопольной блокировки xtables;
-W миллисекунды: интервал ожидания для каждой попытки запуска пакета в монопольном режиме. Часто многие приложения системы критичны к времени запуска и выполнения, поэтому длительное ожидания для монопольной блокировки xtables часто является неприемлемым. Данный параметр в миллисекундах задает максимальное время такого ожидания. По умолчанию равно 1 секунде. Применяется только совместно с ключом -w;
-M modprobe: Указывает путь к программе modprobe. По умолчанию iptables-restore проверяет /proc/sys/kernel/modprobe для определения пути к исполняемому файлу. modprobe — утилита управления модулями ядра. Существует несколько вариантов данной утилиты. Данный параметр можно проигнорировать;
-T таблица: Восстанавливает только таблицу правил с указанным именем, даже если поток данных содержит другие таблицы;
/путь/имя_файла: путь до файла с восстанавливаемыми таблицами правил в файловой системе
3.3 Автоматическое восстановление ранее сохраненных правил iptables из файла
Сохраненные правила с помощью утилиты iptables-save можно восстанавливать с помощью скрипта, запускаемого при каждом запуске операционной системы. Для этого необходимо выполнить следующие действия:
Сохранить набор правил межсетевого экрана с помощью команды:
Для запуска набора правил при старте операционной системы перед включением сетевого интерфейса мы создаем новый файл с помощью команды:
sudo nano /etc/network/if-pre-up.d/iptables
Заметим — в сети есть много вариантов места размещения скрипта на локальной машине, но я считаю именно размещение в папке if-pre-up.d наиболее верным, так как при этом скрипт будет выполнятся перед включением сетевого интерфейса.
Устанавливаем необходимые права для созданного файла:
sudo chmod +x /etc/network/if-pre-up.d/iptables
Перезагружаем компьютер и проверяем результат для таблицы filter с помощью команды:
sudo iptables -vnL
Для обеспечения безопасности необходимо, чтобы конфигурация iptables применялась до запуска сетевых интерфейсов, сетевых служб и маршрутизации. Если данные условия не будут соблюдены — появляется окно-интервал уязвимости между загрузкой операционной системы и восстановлением правил защиты межсетевого экрана.
Образец базовых правил, которые подходят для большинства серверов на базе UBUNTU 20.04 LTS / 21.04 LTS / 22.04 в 2023 году
Не стоит забывать, что перед использованием нужно осознавать то, что они делают и то, чего они не делают, а вам нужно!
# разрешаем все соединения на петлевом интерфейсе lo
iptables -A INPUT -i lo -j ACCEPT
# разрешаем все установленные и связанные соединения:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#отбрасываем все соединения с значением "INVALID"
iptables -I INPUT -m state --state INVALID -j DROP
#разрешаем входящий ICMP трафик (ping)
iptables -A INPUT -p icmp -j ACCEPT
#разрешаем себе доступ к SSH на порту 22:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#разрешаем себе доступ к FTP на порту 21:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#открываем HTTP (80) порт tcp.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#открываем HTTPS (443) порт tcp.
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
### !!! действие по умолчанию !!! ###
#разрешаем OUTPUT любых пакетов сервером
iptables -P OUTPUT ACCEPT
### !!! действие по умолчанию !!! ###
#запрещаем FORWARD любых пакетов сервером
iptables -P FORWARD DROP
### !!! действие по умолчанию !!! ###
#запрещаем INPUT любых пакетов сервером
iptables -P INPUT DROP
Существует большое количество приложений для создания анимаций, от достаточно простых приложений до достаточно законченных приложений (как в случае с Blender). Но на этот раз мы сосредоточимся на отличный инструмент, предназначенный для создания 2D-анимации, который, на мой взгляд, очень хорошо организован визуально и довольно прост в использовании.
Инструмент, о котором мы сегодня поговорим, называется Карандаш2D, которое является бесплатным программным обеспечением и, прежде всего, с открытым исходным кодом, которое предназначен для создания 2D рисованной анимации.
Представлен OpenReplay недавно который привлек 4,7 миллиона долларов нового финансирования для расширения вашего сообщества, ускорения масштабируемого развертывания и улучшения взаимодействия с пользователем.
Для тех, кто не знает об OpenReplay, им следует знать, что это стартап, который предоставляет инструмент воспроизведения сеанса с открытым исходным кодом для разработчиков, который помогает им устранять неполадки, делая отладку визуальной, то есть, в основном, инструмент позволяет разработчикам воспроизводить ошибку, сохраняя журнал, чтобы они могли определить, где ошибка.
Во время саммита Data + AI Представлены блоки данных через рекламу, что освободит всю структуру хранилища Delta Lake с открытым исходным кодом под контролем Linux Foundation.
Стоит отметить, что Delta Lake является проектом Linux Foundation с октября 2019 года. и именно открытый уровень хранения обеспечивает надежность и производительность озер данных за счет «архитектуры озер», лучших хранилищ данных и озер данных под одной крышей.
За последние три года Lakehouses стал привлекательным решением для дата-инженеров, аналитиков и специалистов по данным, которым нужна гибкость для запуска различных рабочих нагрузок с одними и теми же данными с минимальной сложностью и без дублирования, от аналитики данных до разработки обучающихся машин. . Delta Lake — самый популярный формат для домов у озера в мире, и в настоящее время его загружают более 7 миллионов раз в месяц (и этот показатель продолжает расти).
Проблема ограничения доступа к сайтам, директориям и файлам, которые располагаются на вашем сервере не является редкой и может возникнуть в десятках, если не сотнях случаев: реконструкция или разработка сайта, доступ к которому нужно ограничить его командой до завершения процесса, региональные или локальные проекты, борьба со школохацкерами и т.п.
1. Как при помощи nginx заблокировать доступ с определенного ip к некоторой секции сайта?
Открываем конфигурационный файл вашего сайта:
nano /etc/nginx/sites-available/sitename.com
Находим или создаем локейшн, доступ к которому нужно закрыть с определенного ip, например «111.222.333.444»:
location /testdir {
deny 111.222.333.444;
}
После чего нужно не забыть проверить правильность конфигурации командой:
nginx -t
И в обязательном порядке перезагрузить nginx:
sudo servcie nginx restart
Или просто заставить его перечитать конфигурационные файлы:
sudo service nginx reload
Дополнительно вы можете вывести свою страницу ошибки или даже сделать переадресацию на другой сайт:
Ошибка 444 (No Response) — это пользовательский код состояния, используемый для указания nginx на закрытие соединения без отправки ответа клиенту, чаще всего используется для отклонения вредоносных или искаженных запросов.
Действие с IP по условию
В зависимости от определенного IP-адреса NGINX может выполнять различные действия, а не только запрет доступа. Например, перенаправление.
В данном примере мы перенаправляем всех посетителей по пути https://$host$request_uri, кроме запросов с IP-адреса 111.222.333.444.
2. Как при помощи nginx заблокировать доступ с нескольких ip адресов к некоторой секции сайта?
Аналогичным образом вы можете отправить шуточный код ошибки «HTTP 418» I’m a teapot (Я — чайник). Этот код был представлен в 1998 году как одна из традиционных первоапрельских шуток IETF в RFC 2324, Hyper Text Coffee Pot Control Protocol. Ожидается, что этот код не будет поддерживаться реальными серверами. Как бы то ни было, реализации существуют. Сервер HTTP Nginx в своей конфигурации использует этот код для имитации поведения goto-like.
1 апреля 1998 года Internet Engineering Task Force (IETF, «Целевая группа по инженерному обеспечению Интернета) представила «протокол для контроля, мониторинга и диагностики кофемашин». В документе среди прочего описывались и ошибки. Проблема за номером 418 описывалась так: если кто-то попытается сварить кофе в чайнике, последний вежливо, но твердо сообщит: «Я – чайник. Ошибка 418».
Шутка прижилась (по крайней мере, в узких кругах). Например, у Google даже сегодня есть соответствующая страница google.com/teapot
3. Как при помощи nginx заблокировать доступ с диапазона или нескольких диапазонов ip адресов к некоторой секции сайта?
В данной ситуации локейшн не представляет ничего особенного и составляется по следующему принципу.
Для запрета доступа с одного диапазона (111.222.111.1-111.222.111.254) ip:
location /testdir {
deny 111.222.111.0/24;
}
Для запрета доступа с нескольких диапазонов ip адресов:
4. Как при помощи nginx заблокировать доступ из списка ip адресов и списка диапазонов ip? расположенных в отдельном файле к некоторой секции сайта?
Вот мы и подошли к более интересному случаю, когда мы можем заблокировать на одном сайте, в нескольких сайтах или же на большом количестве сайтов множество ip адресов и диапазонов сетей, которые у нас расположены в некотором файле «testdir_ip_deny.txt«, расположенном в папке «/etc/nginx/«
location /testdir {
include /etc/nginx/testdir_ip_deny.txt
}
Содержимое файла «testdir_ip_deny.txt» может выглядеть следующим образом:
include добавлять никуда не нужно, т.к. все конфигурационные файлы (*.conf) из данной директории автоматически подключаются в основной конфиг в секцию HTTP, проверить это вы можете открыв соответствующий файл:
nano /etc/nginx/nginx.conf
И найдя следующий код:
http {
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Таким образом вы сможете заблокировать или разрешить доступ ко всем сайтам, учитывая содержимое файла /etc/nginx/conf.d/ip_deny_to_all.conf
Таким образом вы можете составить несколько списков, в том числе и списки по странам (вместо использования NGINX GeoIP Module), взяв их, например, на одном из следующих сайтов:
На деле это редко когда может быть актуальным, т.к. тратит ресурсы сервера: канал и процессорное время и правильнее использовать блокировку при помощи ipset или iptables!