Firewalld — это отличная альтернатива iptables. Её используют сейчас в большинстве дистрибутивов Linux: RHEL, CentOS, Fedora. Firewalld предоставляет простой, удобный и значительно более гибкий способ управления правилами файрволла, нежели привычный многим iptables, который уже значительно устарел. Да, для простейших случаев настройка iptables — дело вроде бы несложное. Но вот если брать более сложные сети и большое количеством правил, то тут уже может серьёзно поплохеть. Иногда, чтобы изучить все настройки и понять, как это работает, нужно потратить значительно количество время. Давайте посмотрим в чем firewalld отличается iptables и как его настроить.
Плюсы firewalld
Минусы firewalld
Примеры настройки firewalld
1⃣ Открываем порт. Открываем порт 80 для HTTP:
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload
2⃣ Закрываем порт. Закрываем порт 22 (SSH):
sudo firewall-cmd --permanent --remove-port=22/tcp sudo firewall-cmd --reload
3⃣ Добавляем сервис. Firewalld поддерживает предопределённые сервисы. Например, открываем SSH:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
Посмотреть список доступных сервисов можно так:
firewall-cmd --get-services
4⃣ Используем зоны безопасности. Firewalld использует зоны для управления трафиком. Например, перемещаем интерфейс eth0 в зону «public»:
sudo firewall-cmd --permanent --zone=public --change-interface=eth0 sudo firewall-cmd --reload
Посмотреть текущую зону интерфейса:
firewall-cmd —get-active-zones
5⃣ Создаём кастомное правило. Блокируем весь трафик с IP 192.168.1.100:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop' sudo firewall-cmd --reload
6⃣ Временные правила. Можно временно открыть порт (например, на 5 минут):
sudo firewall-cmd --add-port=8080/tcp --timeout=300
После истечения времени правило удалится автоматически.
Конвертация iptables в firewalld. Если у вас уже настроен iptables, можно конвертировать его правила в формат firewalld:
iptables-save > rules.v4 iptables-restore < rules.v4
Затем вручную перенести правила в firewalld, используя firewall-cmd.
The post Используем firewalld вместо iptables — реальный пример настройки first appeared on Как настроить?.]]>Руткиты — rootkits — это специализированные вредоносные программы, которые маскируют своё присутствие в системе с целью выполнения в дальнейшем каких-либо скрытых действий. Они могут скрывать файлы, процессы и даже сетевые соединения, а так же подменять команды пользователя. Многие их них способны обходить антивирусные проверки. Я хочу поделиться с Вами своим опытом борьбы с руткитами. Возможно что-то из этого Вы возьмёте себе на вооружение.
1. Подмена системных вызовов (syscalls). Rootkits перехватывают вызовы типа getdents(), readdir(), ps, top и т.п., скрывая нужные процессы.
2. Изменение ядра (Kernel Mode Rootkits). В этом случае руткиты загружаются как модули ядра (.ko-файлы) и модифицируют функции ядра, скрывая свою активность.
3. Хук системы /proc. Rootkits подменяют содержимое /proc/[PID], маскируя процесс от стандартных утилит.
4. Использование LD_PRELOAD. Библиотеки динамической загрузки подменяют поведение системных команд даже без изменения ядра.
1️⃣ Проверка /proc вручную:
ls -al /proc | grep -vE "^[d-]r--r--r--"
Если процесс не виден стандартными командами типа ps aux или top, но есть его директория в /proc — это уже должно Вас насторожить.
2️⃣ Сравнение выводов разных утилит:
ps aux | wc -l && ls /proc | grep -E '^[0-9]+$' | wc -l
Числа при сравнении должны совпадать. Если в /proc будет больше процессов, чем показывает вывод команды ps, то вполне возможно, что система заражена.
3️⃣ Использование утилиты chkrootkit:
chkrootkit | grep INFECTED
Простая проверка на наиболее распространённые и известные rootkits.
4️⃣ Использование rkhunter:
rkhunter --check
Утилита проверяет системные файлы на различные несанкционированные изменения.
5️⃣ Анализ ядра и загруженных модулей:
lsmod | grep -i rootkit
Некоторые руткиты могут маскироваться, но подозрительные модули можно выявить через lsmod.
В некоторых случаях требуется установить срок действия учетной записи пользователя в ОС Linux для того, чтобы она автоматически отключалась после определенного времени действия. Это крайне необходимо для временных учетных записей или обеспечения безопасности. Сейчас я подробно расскажу как можно установить срок действия учетной записи с помощью командной консоли Линукс.
Команды useradd, usermod и chage в консоли Linux позволяют гибко настраивать учетные записи , обеспечивая необходимый уровень контроля и защиты.
При создании нового пользователя командой useradd, Вы можете сразу установить срок действия учетной записи.
1️⃣ Создание пользователя с ограниченным сроком действия:
sudo useradd -e <YYYY-MM-DD> <имя_пользователя>
Например:
sudo useradd -e 2025-02-01 tempuser
2️⃣ Когда учётка уже создана, изменить срок действия пользователя можно командой usermod:
sudo usermod -e <YYYY-MM-DD> <имя_пользователя>
Команда chage позволяет управлять сроком действия пароля и учетной записи пользователя.
1️⃣ Просмотр текущих настроек учетной записи:
Чтобы узнать текущие параметры учетной записи, используйте следующую команду:
chage -l <имя_пользователя>
Эта команда выведет информацию о дате последнего изменения пароля, сроке действия и других параметрах.
2️⃣ Установка срока действия учетной записи:
Чтобы установить дату, после которой учетная запись будет отключена, используйте команду:
sudo chage -E <YYYY-MM-DD> <имя_пользователя>
Например, чтобы отключить учетную запись пользователя testuser 1 февраля 2025 года, выполните:
sudo chage -E 2025-02-01 testuser
3️⃣ Удаление срока действия учетной записи:
Если необходимо снять ограничение по сроку действия учетной записи, используйте:
sudo chage -E -1 <имя_пользователя>
Это отключит автоматическое отключение учетной записи.
The post Как установить срок действия учетной записи в Linux first appeared on Как настроить?.]]>Любой, кто часто работает в терминале любой операционной системы семейства Linux или на MacOS, знает, что частенько вызываемые команды, а чаще результаты их выполнения, могут полностью “засорить” весь экран и дальнейшая работа в консоли ОС становится полностью некомфортной. Я хочу показать шесть наиболее популярных и удобных способов быстрой очистки терминала в Linux.
1. Наиболее простой, быстрый и известный многим способ очистки терминала — это одна из следующих комбинаций клавиш ctrl+L или Ctrl+Shift+K (control+L для MacOS).
2. Те, кто не любит комбинации (или не умеет ими пользоваться ;)) могут юзать не менее популярный метод очистки консоли — команду clear.
3. Третий по популярности у линуксоидов способ очистки терминала — это использование команды reset.
4. А теперь пошли менее известные и реже используемые команды. Начнём с вот такой команды:
printf "\033c"
Понятно, что набивать её каждый раз не очень удобно, потому лучше сделать алиас. Вот так:
alias cls='printf "\033c"'
Теперь пользоваться ей будет быстро и удобно — просто набери «cls» и терминал будет очищен.
5. В дистрибутивах с графической оболочкой KDE есть вот такая команда:
clear && echo -en "\e[3J"
Опять же, делаем под неё алиас:
alias cls='clear && echo -en "\e[3J"'
6. В дистрибутивах с графической оболочкой GNOME есть возможность самостоятельно назначить комбинацию клавиш. В том числе и отвечающую за очистку терминала. Например можно сделать такую комбинацию: Shift + ctrl + alt + c
The post Как очистить окно терминала Linux first appeared on Как настроить?.]]>По умолчанию весь DNS-трафик операционная система передаёт серверу через сеть в открытом виде. То есть, фактически любой, у кого есть возможность как-то Ваш трафик перехватить, сможет увидеть какие сайты вы посещаете. Чтобы решить эту проблему в ОС Windows, компания Microsoft внедрила поддержку протокола DNS over HTTPS (сокращённо DoH) в Windows 11 и Windows Server 2022. И сейчас я хочу показать как этим пользоваться.
В этой инструкции я покажу как настроить DNS-over-HTTPS через интерфейс операционной системы и с помощью командной оболочки PowerShell. Использовать мы будем сервер Яндекс.DNS 77.88.8.8.
Самый простой способ включить шифрование DNS-запросов, с которым справится каждый, предоставляет нам интерфейс операционной системы.
Вам надо открыть параметры системы и открыть настройки сетевого интерфейса.
Ethernet-подключение:
Параметры => Сеть и Интернет => Ethernet => Назначение DNS-сервера => Изменить => Вручную
Беспроводная сеть Wi-Fi:
Параметры => Сеть и Интернет => Wi-Fi => Свойства => Назначение DNS-сервера => Изменить => Вручную
В моём примере я буду включать DoH на Wi-Fi подключении.
После нажатия на кнопку «Изменить» появится окно «Изменение параметров DNS для сети». Здесь обычно стоит значение «Автоматически (DHCP)», а мы меняем его на «Вручную» и включаем протокол IPv4. Если Вы активно используете уже IPv6, то включайте и настаивайте его.
Далее находим параметр «DNS по протоколу HTTPS», и включаем его. Тут есть два варианта. Первый — «Включено (автоматический шаблон)». Он используется для официально поддерживаемых DNS-серверов: Google, Cloudflare и Quad9. Как посмотреть весь этот список я покажу ниже. Мы же с Вами будем использовать второй вариант — «Включено (ручной шаблон)» и пропишем DNS-сервер от Яндекса: 77.88.8.8. Его шаблон протоколу HTTPS такой: https://common.dot.dns.yandex.net/dns-query. Нажимаем кнопку «Сохранить» для применения настроек.
В Windows уже есть встроенный список публичных DNS-серверов с поддержкой DoH, например:
Quad9 - 9.9.9.9 Google — 8.8.8.8 Cloudflare — 1.1.1.1 и т.д.
Вывести этот список в командной оболочке PowerShell Вам поможет команда Get-DNSClientDohServerAddress.
Вы можете использовать любой DNS из предложенного системой списка или добавить в него DNS-сервер от Яндекса — 77.88.8.8. Кроме его IP адреса, нам нужно указать и его URL-адрес — «https://common.dot.dns.yandex.net/dns-query«. Добавляем сервер в список
$DNSServer="77.88.8.8" Add-DnsClientDohServerAddress -ServerAddress $DNSServer -DohTemplate "https://dns.yandex.ru/dns-query" -AllowFallbackToUdp $False -AutoUpgrade $True
Задаём IP Яндекс.DNS как предпочтительный для адаптера Ethernet0:
Set-DnsClientServerAddress Ethernet0 -ServerAddresses ($DNSServer)
Если у Вас имя адаптера отличается от указанного в примере, то в командах надо будет внести соответствующие исправления.
Включаем DoH для интерфейса Ethernet0:
$i = Get-NetAdapter -Physical -Name Ethernet0 $s1 = "HKLM:System\CurrentControlSet\Services\Dnscache\InterfaceSpecificParameters\" + $i.InterfaceGuid + "\DohInterfaceSettings\Doh\$DNSServer" New-Item -Path $s1 -Force | New-ItemProperty -Name "DohFlags" -Value 1 -PropertyType QWORD Clear-DnsClientCache
Теперь можно проверять шифруются ли наши DNS-запросы или нет.
Проверить работу DNS-over-HTTPS можно несколькими способами. Первый — это разнообразные сервисы в Интернете. Например, DNS leak best. Заходим на сайт, нажимаем кнопку «Extended test» и ждём пока пройдёт тестирование.
В результатах Вы должны будете увидеть указанные DNS в столбце ISP. В моём примере всё верно. Если бы DoH не работала, то вместо Яндекса там «светились» бы серверы провайдера.
Второй способ проверить работу DoH — это использование встроенного в Windows анализатора сетевого трафика Packetmon. Нам нужны всего три команды:
1. Сброс всех фильтров пакетов сетевого трафика:
pktmon filter remove
2. Добавление своего фильтра:
pktmon filter add -p 53
Packetmon будет ловить все пакеты на 53-ем TCP порту
3. Запуск анализа трафика:
pktmon start --etw -m real-time
Теперь надо в браузере открыть несколько разных сайтов, а потом посмотреть в вывод Packetmon’а:
А здесь, как мы видим, ничего нет. Запросы через обычный DNS не бегают. Чего мы и добивались! Теперь все DNS-запросы ходят только через зашифрованное HTTPS-соединение и отследить их практически невозможно!
The post Шифрование DNS-запросов в Windows 11 с помощью DNS-over-HTTPS first appeared on Как настроить?.]]>