Ранее рассказывал о том, как можно выпустить самоподписанный сертификат, установить его в веб сервер и настроить доверие. В комментариях были замечания, что это неудобно делать вручную для многих серверов. То решение было описано для одного сервера. Ниже рассмотрю вариант, как решить эту же задачу, только для всей внутренней инфраструктуры.
Речь пойдёт про open source центр сертификации от компании SmallStep - step-ca. Его можно развернуть у себя и использовать для различных задач. Я расскажу на примере получения HTTPS-сертификатов X.509 для локальных веб ресурсов с помощью протокола ACME и одноимённой утилиты. Помимо этого на базе step-ca можно организовать:
◽выдачу SSH-сертификатов для пользователей
◽выпуск токенов единого входа OAuth OIDC
◽выпуск клиентских сертификатов X.509 для TLS аутентификации
Всё это описано в документации и в рамках заметки не раскрыть.
Установка step-ca описана в документации. Выглядит она относительно просто, так как есть готовые пакеты. А относительно, потому что юнит systemd и рабочие каталоги придётся делать вручную.
Вот инструкция для установки на Debian/Ubuntu:
После установки делаем начальную настройку, но перед этим выполним ручную инициализацию. Покажу свои ответы на вопросы в тестовой среде, чтобы вам не гадать, что там отвечать. Хотя по смыслу понятно.
Теперь переносим настройки в
В файл
Содержимое не привожу, оно длинное, в заметку не уместится. Взял 1 в 1 из документации, он же в репозитории.
Служба должна запуститься на порту 443. Можно браузером зайти. Там будет страница с ошибкой, потому что никакого веб интерфейса нет, но тем не менее будет видно, что сервис работает.
Сразу отмечу важный нюанс. По умолчанию step-ca выпускает сертификаты на 24 часа. Для каких-то задач это, наверное, нормально, но для веб серверов не вижу смысла перевыпускать так часто, даже с учётом того, что это автоматизировано. Можете оставить так, а можете увеличить время. Тут об этом рассказано в доках.
Активируем ACME провизионер в step-ca:
Эта команда добавит некоторые настройки в ca.json. Перезапускаем службу:
Теперь можно брать acme.sh или любой другой клиент (certbot и т.д.) и настраивать выпуск сертификатов через свой CA. Для этого надо либо на клиентских системах добавить root_ca.crt в системные, либо при запуске клиента указывать явно:
Работаем с этим CA так же, как и с другими: добавляем серты в веб сервера, настраиваем автообновление. И не забываем в клиентские машины добавить CA в доверенные, чтобы в браузерах не было предупреждения.
#security #webserver
Речь пойдёт про open source центр сертификации от компании SmallStep - step-ca. Его можно развернуть у себя и использовать для различных задач. Я расскажу на примере получения HTTPS-сертификатов X.509 для локальных веб ресурсов с помощью протокола ACME и одноимённой утилиты. Помимо этого на базе step-ca можно организовать:
◽выдачу SSH-сертификатов для пользователей
◽выпуск токенов единого входа OAuth OIDC
◽выпуск клиентских сертификатов X.509 для TLS аутентификации
Всё это описано в документации и в рамках заметки не раскрыть.
Установка step-ca описана в документации. Выглядит она относительно просто, так как есть готовые пакеты. А относительно, потому что юнит systemd и рабочие каталоги придётся делать вручную.
Вот инструкция для установки на Debian/Ubuntu:
# wget https://dl.smallstep.com/cli/docs-ca-install/latest/step-cli_amd64.deb
# dpkg -i step-cli_amd64.deb
# wget https://dl.smallstep.com/certificates/docs-ca-install/latest/step-ca_amd64.deb
# dpkg -i step-ca_amd64.deb
После установки делаем начальную настройку, но перед этим выполним ручную инициализацию. Покажу свои ответы на вопросы в тестовой среде, чтобы вам не гадать, что там отвечать. Хотя по смыслу понятно.
# step-cli ca init
✔ Deployment Type: Standalone
✔ (e.g. Smallstep): PrivateCA (можно любое имя использовать)
✔ (e.g. :443 or 127.0.0.1:443): :443
✔ (e.g. you@smallstep.com): zeroxzed@gmail.com
✔ [leave empty and we'll generate one]:
✔ Password: E}b;-9DU9UyАВ8TU7$FINl-T8OM
Теперь переносим настройки в
/etc/step-ca
и запускаем как службу. # useradd --user-group --system --home /etc/step-ca --shell /bin/false step
# setcap CAP_NET_BIND_SERVICE=+eip $(which step-ca)
# mkdir /etc/step-ca
# mv $(step path)/* /etc/step-ca
# touch /etc/step-ca/password.txt
# chmod 600 /etc/step-ca/password.txt
# mcedit /etc/step-ca/password.txt
# chown -R step:step /etc/step-ca
В файл
password.txt
записываем пароль от CA, который был создан во время инициализации. В файлах /etc/step-ca/config/ca.json
и defaults.json
меняем все пути с /root/.step
на /etc/step-ca
. И создаём юнит для systemd:# mcedit /etc/systemd/system/step-ca.service
Содержимое не привожу, оно длинное, в заметку не уместится. Взял 1 в 1 из документации, он же в репозитории.
# systemctl daemon-reload
# systemctl enable --now step-ca
Служба должна запуститься на порту 443. Можно браузером зайти. Там будет страница с ошибкой, потому что никакого веб интерфейса нет, но тем не менее будет видно, что сервис работает.
Сразу отмечу важный нюанс. По умолчанию step-ca выпускает сертификаты на 24 часа. Для каких-то задач это, наверное, нормально, но для веб серверов не вижу смысла перевыпускать так часто, даже с учётом того, что это автоматизировано. Можете оставить так, а можете увеличить время. Тут об этом рассказано в доках.
Активируем ACME провизионер в step-ca:
# step ca provisioner add acme --type ACME
Эта команда добавит некоторые настройки в ca.json. Перезапускаем службу:
# systemctl restart step-ca
Теперь можно брать acme.sh или любой другой клиент (certbot и т.д.) и настраивать выпуск сертификатов через свой CA. Для этого надо либо на клиентских системах добавить root_ca.crt в системные, либо при запуске клиента указывать явно:
acme.sh --issue --standalone -d debian12-vm \
--server https://10.20.1.36/acme/acme/directory \
--ca-bundle ~/certs/root_ca.crt \
--fullchain-file debian12-vm.crt \
--key-file debian12-vm.key
Работаем с этим CA так же, как и с другими: добавляем серты в веб сервера, настраиваем автообновление. И не забываем в клиентские машины добавить CA в доверенные, чтобы в браузерах не было предупреждения.
#security #webserver
Существует отдельный класс файрволов - NGFW (Next Generation Firewall). Они либо работают в связке с IDPS (Intrusion Detection and Prevention System), либо включает её в себе. Если говорить простыми словами, то это файрвол, интегрированный с системой обнаружения и предотвращения вторжения.
Наиболее известный бесплатный представитель этого класса - Suricata. Она интегрирована в софтовые файрволы Pfsense, OPNsense, IPFire и некоторые российские продукты. Если не ошибаюсь, то в IDECO и ИКС тоже она. Но ниже речь пойдёт не о ней, а о Zenarmor. Это коммерческий продукт, у которого есть функциональная бесплатная версия.
Обратил на него внимание, потому что он интегрирован в OPNsense, легко и быстро устанавливается и настраивается. Я сделал это, проверил работу, всё получилось с первого раза. Сразу скажу, какие задачи умеет решать бесплатная версия Zenarmor:
▪️ Просмотр текущей сетевой активности в режиме реального времени. Видно, какой хост куда обращается. Во время просмотра можно настроить различные блокировки на уровне хоста, адреса или домена назначения, tcp портов.
▪️ Сбор сводной статистики по сетевой активности с возможностью экспорта.
▪️ Блокировка доступа по сформированным спискам сайтов или типам трафика. Можно заблокировать весь трафик voip или https. Можем заблокировать конкретный сайт vk.com или применить сразу готовый список с сайтами, относящимся к социальным сетям или другим категориям.
▪️ Zenarmor регулярно обновляет сигнатуры угроз со своих серверов и теоретически может их предотвращать. На практике я это не проверял, потому что не знаю как. По идее, он должен автоматически блокировать вредоносную активность вирусов.
Всю основную функциональность я проверил. Развернул по небольшому руководству из этого видео:
▶️ Установка Next Generation FireWall Zenarmor в OPNsense
Собственно, оно и было отправной точкой в этой теме. Установил OPNsense, далее плагин Zenarmor. Подключил тестовую машину с виндой к шлюзу и погонял трафик с неё. Настройка очень простая. В приведённом видео всё есть. Там же примеры возможностей, дашбордов, отчётов. Если вам нужны красивые картинки со статистикой для руководства, то это будет неплохим решением.
Все возможности бесплатной версии Zenarmor перечислены на странице со сравнением тарифных планов. Для использования у себя не нужны никакие регистрации. Просто ставим OPNsense и соответствующий плагин из интерфейса шлюза. На выходе получается более удобный и эффективный продукт, нежели существующая в pfsense связка на базе snort+suricata.
⇨ Сайт
#gateway #security
Наиболее известный бесплатный представитель этого класса - Suricata. Она интегрирована в софтовые файрволы Pfsense, OPNsense, IPFire и некоторые российские продукты. Если не ошибаюсь, то в IDECO и ИКС тоже она. Но ниже речь пойдёт не о ней, а о Zenarmor. Это коммерческий продукт, у которого есть функциональная бесплатная версия.
Обратил на него внимание, потому что он интегрирован в OPNsense, легко и быстро устанавливается и настраивается. Я сделал это, проверил работу, всё получилось с первого раза. Сразу скажу, какие задачи умеет решать бесплатная версия Zenarmor:
▪️ Просмотр текущей сетевой активности в режиме реального времени. Видно, какой хост куда обращается. Во время просмотра можно настроить различные блокировки на уровне хоста, адреса или домена назначения, tcp портов.
▪️ Сбор сводной статистики по сетевой активности с возможностью экспорта.
▪️ Блокировка доступа по сформированным спискам сайтов или типам трафика. Можно заблокировать весь трафик voip или https. Можем заблокировать конкретный сайт vk.com или применить сразу готовый список с сайтами, относящимся к социальным сетям или другим категориям.
▪️ Zenarmor регулярно обновляет сигнатуры угроз со своих серверов и теоретически может их предотвращать. На практике я это не проверял, потому что не знаю как. По идее, он должен автоматически блокировать вредоносную активность вирусов.
Всю основную функциональность я проверил. Развернул по небольшому руководству из этого видео:
▶️ Установка Next Generation FireWall Zenarmor в OPNsense
Собственно, оно и было отправной точкой в этой теме. Установил OPNsense, далее плагин Zenarmor. Подключил тестовую машину с виндой к шлюзу и погонял трафик с неё. Настройка очень простая. В приведённом видео всё есть. Там же примеры возможностей, дашбордов, отчётов. Если вам нужны красивые картинки со статистикой для руководства, то это будет неплохим решением.
Все возможности бесплатной версии Zenarmor перечислены на странице со сравнением тарифных планов. Для использования у себя не нужны никакие регистрации. Просто ставим OPNsense и соответствующий плагин из интерфейса шлюза. На выходе получается более удобный и эффективный продукт, нежели существующая в pfsense связка на базе snort+suricata.
⇨ Сайт
#gateway #security
Я в своё время, когда познакомился с CIS — Center for Internet Security, изучил некоторые их документы по настройке софта, с которым работаю. Вот список заметок:
▪️ Nginx
▪️ MySQL 5.7
▪️ Apache 2.4
▪️ Debian 11
▪️ Docker
▪️ Ubuntu 22.04 LTS
▪️ PostgreSQL 16
На основе документа CIS Docker Benchmark v1.6.0 (доступ только через VPN) создан open source продукт, который проверяет Docker контейнеры и настройки самой службы - Docker Bench for Security. Покажу, как им пользоваться.
Можно просто запустить скрипт на хосте и посмотреть его замечания и рекомендации:
Вот несколько замечаний, которые я получил на тестовом сервере. Это не всё, что там было, показываю просто для примера:
Вспоминаю разбор документа по докеру, там реально об этом идёт речь, что указано в замечаниях.
Похожую проверку можно запустить через Docker. Это тот же скрипт, но упакованный в контейнер, который тут же будет собран:
Проверки можно разделить и не делать сразу все. К примеру, запускаем только проверки образов и runtime:
Для проверки конкретного образа, достаточно его указать при запуске скрипта. Образ должен быть скачан. Будут выполнены все проверки, в том числе хоста. При проверке образа это скорее всего не нужно. Имеет смысл сразу указать, что нас интересует только 4-й раздел проверок, относящихся к образам:
Напомню, что есть похожий инструмент Dockle, писал про него. Он делает примерно то же самое, но только для образов. Саму систему и службу docker не проверяет. Конкретно для образов он удобнее и информативнее, чем Docker Bench for Security, потому что проверяет не только по CIS, но и некоторым другим рекомендациям. Увидеть разницу проверок можно на тестовом образе от Dockle:
У Dockle вывод более подробный с большим числом замечаний. Эти проверки имеет смысл использовать в тандеме. Docker Bench for Security для хоста и службы, Docker для образов.
#cis #docker #devops
▪️ Nginx
▪️ MySQL 5.7
▪️ Apache 2.4
▪️ Debian 11
▪️ Docker
▪️ Ubuntu 22.04 LTS
▪️ PostgreSQL 16
На основе документа CIS Docker Benchmark v1.6.0 (доступ только через VPN) создан open source продукт, который проверяет Docker контейнеры и настройки самой службы - Docker Bench for Security. Покажу, как им пользоваться.
Можно просто запустить скрипт на хосте и посмотреть его замечания и рекомендации:
# git clone https://github.com/docker/docker-bench-security.git
# cd docker-bench-security
# sh docker-bench-security.sh
Вот несколько замечаний, которые я получил на тестовом сервере. Это не всё, что там было, показываю просто для примера:
[WARN] 1.1.1 - Ensure a separate partition for containers has been created
[WARN] 1.1.3 - Ensure auditing is configured for the Docker daemon
[WARN] 2.2 - Ensure network traffic is restricted between containers on the default bridge
[WARN] 2.13 - Ensure centralized and remote logging is configured
[WARN] 4.5 - Ensure Content trust for Docker is Enabled
Вспоминаю разбор документа по докеру, там реально об этом идёт речь, что указано в замечаниях.
Похожую проверку можно запустить через Docker. Это тот же скрипт, но упакованный в контейнер, который тут же будет собран:
# docker-compose run --rm docker-bench-security
Проверки можно разделить и не делать сразу все. К примеру, запускаем только проверки образов и runtime:
# sh docker-bench-security.sh -c container_images,container_runtime
Для проверки конкретного образа, достаточно его указать при запуске скрипта. Образ должен быть скачан. Будут выполнены все проверки, в том числе хоста. При проверке образа это скорее всего не нужно. Имеет смысл сразу указать, что нас интересует только 4-й раздел проверок, относящихся к образам:
# docker image pull nginx
# sh docker-bench-security.sh -i nginx -c container_images
Напомню, что есть похожий инструмент Dockle, писал про него. Он делает примерно то же самое, но только для образов. Саму систему и службу docker не проверяет. Конкретно для образов он удобнее и информативнее, чем Docker Bench for Security, потому что проверяет не только по CIS, но и некоторым другим рекомендациям. Увидеть разницу проверок можно на тестовом образе от Dockle:
# docker run --rm goodwithtech/dockle:latest goodwithtech/dockle-test:v2
# sh docker-bench-security.sh -i dockle-test -c container_images
У Dockle вывод более подробный с большим числом замечаний. Эти проверки имеет смысл использовать в тандеме. Docker Bench for Security для хоста и службы, Docker для образов.
#cis #docker #devops
В сервере мониторинга Zabbix есть интересная возможность по отправке регулярных отчётов. К сожалению, у неё несколько громоздкая реализация, поэтому лишний раз её настраивать не хочется. Но в целом, ничего сложного, настройка простая. Реализованы эти отчеты на базе рендеринга pdf файлов из изображения дашборда средствами браузера chrome. В связи с этим, chrome необходимо устанавливать на сервер. Не обязательно именно на тот же сервер, где и мониторинг.
Меня не раз спрашивали, можно ли с помощью Zabbix раз в день, к примеру, утром, получить письмо со списком всех активных триггеров. Да, можно. Достаточно сделать дашборд с виджетом активных триггеров. Настроить регулярный отчёт и отправлять его себе.
Покажу на практике, как выглядит настройка. Использовать буду реальный сервер на базе Oracle Linux Server 8.10. Для любого другого сервера настройка будет выглядеть так же, только команды и ссылки на скачивание будут другие.
Устанавливаем необходимые пакеты:
Добавляем в конфиг
Службу zabbix-web-service установил на ту же машину, где сам мониторинг, поэтому указал соответствующий адрес. Если будете устанавливать её отдельно, то не забудьте его поменять.
Перезапускаем сервер мониторинга:
Идём в веб интерфейс, в раздел Отчёты ⇨ Регулярные отчёты. Настройка там интуитивна, так что рассказывать особо нечего. Нужно будет выбрать панель и период, который будет выбран при формировании отчёта. Если в панели несколько страниц, то в отчёте они будут все по очереди отражены.
Отчёты будут отправляться на e-mail, так что у пользователя, для которого вы их будете отправлять, он должен быть указан. Здесь же можно проверить отправку отчёта.
Интересная возможность, которая позволяет получать на почту информацию в любом необходимом вам виде, который позволяет оформить функциональность дашбордов zabbix сервера. Называть их отчётами слишком громко, по сути это просто картинки.
📌 Ссылки на документацию:
⇨ Scheduled reports
⇨ Setting up scheduled reports
#zabbix
Меня не раз спрашивали, можно ли с помощью Zabbix раз в день, к примеру, утром, получить письмо со списком всех активных триггеров. Да, можно. Достаточно сделать дашборд с виджетом активных триггеров. Настроить регулярный отчёт и отправлять его себе.
Покажу на практике, как выглядит настройка. Использовать буду реальный сервер на базе Oracle Linux Server 8.10. Для любого другого сервера настройка будет выглядеть так же, только команды и ссылки на скачивание будут другие.
Устанавливаем необходимые пакеты:
# dnf install zabbix-web-service
# wget dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
# dnf install google-chrome-stable_current_x86_64.rpm
# systemctl enable --now zabbix-web-service
Добавляем в конфиг
zabbix_server.conf
:StartReportWriters=1
WebServiceURL=http://127.0.0.1:10053/report
Службу zabbix-web-service установил на ту же машину, где сам мониторинг, поэтому указал соответствующий адрес. Если будете устанавливать её отдельно, то не забудьте его поменять.
Перезапускаем сервер мониторинга:
# systemctl restart zabbix-server
Идём в веб интерфейс, в раздел Отчёты ⇨ Регулярные отчёты. Настройка там интуитивна, так что рассказывать особо нечего. Нужно будет выбрать панель и период, который будет выбран при формировании отчёта. Если в панели несколько страниц, то в отчёте они будут все по очереди отражены.
Отчёты будут отправляться на e-mail, так что у пользователя, для которого вы их будете отправлять, он должен быть указан. Здесь же можно проверить отправку отчёта.
Интересная возможность, которая позволяет получать на почту информацию в любом необходимом вам виде, который позволяет оформить функциональность дашбордов zabbix сервера. Называть их отчётами слишком громко, по сути это просто картинки.
📌 Ссылки на документацию:
⇨ Scheduled reports
⇨ Setting up scheduled reports
#zabbix
Судя по проведённым ранее опросам, большинство читателей канала администрируют системы под управлением Linux. Тем не менее, я заметил, что заметки о Windows всегда вызывают живой интерес и отклик. Люди либо тоскуют по винде, либо привирают о том, что её не администрируют 😁.
Сегодня будет заметка о неплохой бесплатной программе для бэкапа систем под управлением Windows, причём как обычных, так и серверных. Речь пойдёт про Hasleo Backup Suite Free. Я её установил и попробовал. Честно говоря, даже не понял, в чём тут подвох. Программа полностью бесплатна и при этом обладает очень неплохими возможностями. Кратко перечислю основные:
▪️ Бэкап на уровне всей системы, диска, раздела или набора файлов и директорий.
▪️ Клонирование системы, диска, разделов.
▪️ Тип бэкапов: полный, инкрементный, дифференцированный.
▪️ Поддержка расписания, политики хранения, очистки бэкапов.
▪️ Универсальное восстановление системы на другое железо.
▪️ Шифрование, проверка бэкапов.
▪️ Создание загрузочного образа на базе WinPE.
▪️ Логирование своей работы.
В этой системе есть всё, что ожидаешь от подобного продукта. Есть даже нормальный перевод на русский язык. Я на него посмотрел, явных ляпов не заметил, кроме разве что обозначения образа диска изображением. То есть монтировать не образ диска, а изображение диска. Она даже директории с бэкапами создаёт на русском языке: "Бэкап системы 20240903135711". В данном случае это скорее минус, чем плюс. Тут и русский язык, и пробелы. Лучше без этого обойтись и пользоваться английской версией.
Я проверил эту программу следующим образом:
1️⃣ Установил на систему и сделал полный бэкап на сетевую папку.
2️⃣ Через интерфейс программы создал загрузочный диск.
3️⃣ Создал чистую виртуалку, загрузился с загрузочного диска.
4️⃣ В загрузившейся системе назначил IP адрес, подключил сетевой диск.
5️⃣ Восстановил из сетевого диска образ системы.
На удивление всё прошло гладко, быстро и просто. Загрузочный диск удобнее, быстрее грузится, нежели то же самое от Veeam Agent For Windows, которым я регулярно пользуюсь.
В общем и целом программа понравилась. Из бесплатных точно одна из лучших. В целом, я даже не придумал, что в ней не хватает. Есть всё, что нужно, без каких-то излишеств. Рекомендую 👍
⇨ Сайт
#backup #windows
Сегодня будет заметка о неплохой бесплатной программе для бэкапа систем под управлением Windows, причём как обычных, так и серверных. Речь пойдёт про Hasleo Backup Suite Free. Я её установил и попробовал. Честно говоря, даже не понял, в чём тут подвох. Программа полностью бесплатна и при этом обладает очень неплохими возможностями. Кратко перечислю основные:
▪️ Бэкап на уровне всей системы, диска, раздела или набора файлов и директорий.
▪️ Клонирование системы, диска, разделов.
▪️ Тип бэкапов: полный, инкрементный, дифференцированный.
▪️ Поддержка расписания, политики хранения, очистки бэкапов.
▪️ Универсальное восстановление системы на другое железо.
▪️ Шифрование, проверка бэкапов.
▪️ Создание загрузочного образа на базе WinPE.
▪️ Логирование своей работы.
В этой системе есть всё, что ожидаешь от подобного продукта. Есть даже нормальный перевод на русский язык. Я на него посмотрел, явных ляпов не заметил, кроме разве что обозначения образа диска изображением. То есть монтировать не образ диска, а изображение диска. Она даже директории с бэкапами создаёт на русском языке: "Бэкап системы 20240903135711". В данном случае это скорее минус, чем плюс. Тут и русский язык, и пробелы. Лучше без этого обойтись и пользоваться английской версией.
Я проверил эту программу следующим образом:
1️⃣ Установил на систему и сделал полный бэкап на сетевую папку.
2️⃣ Через интерфейс программы создал загрузочный диск.
3️⃣ Создал чистую виртуалку, загрузился с загрузочного диска.
4️⃣ В загрузившейся системе назначил IP адрес, подключил сетевой диск.
5️⃣ Восстановил из сетевого диска образ системы.
На удивление всё прошло гладко, быстро и просто. Загрузочный диск удобнее, быстрее грузится, нежели то же самое от Veeam Agent For Windows, которым я регулярно пользуюсь.
В общем и целом программа понравилась. Из бесплатных точно одна из лучших. В целом, я даже не придумал, что в ней не хватает. Есть всё, что нужно, без каких-то излишеств. Рекомендую 👍
⇨ Сайт
#backup #windows
Я уже как-то упоминал, что последнее время в репозитории популярных дистрибутивов попадают современные утилиты, аналоги более старых с расширенной функциональностью. Я писал о некоторых из них:
▪️ duf как замена df
▪️ bat как замена cat
▪️ hyperfine как замена time
В этот список можно добавить exa как замена ls. Я про exa уже писал несколько лет назад, но тогда её не было в стабильном репозитории. А сейчас приехала и туда:
Это небольшая утилита с параллельной обработкой файлов, благодаря чему работает быстро. Но при этом обладает рядом дополнительных возможностей по сравнению с ls:
◽более информативная расцветка
◽умеет показывать расширенные атрибуты файлов (xattrs)
🔥иерархичное древовидное отображение
◽отображает статус файлов в git репозитории (изменён или нет со времени последнего коммита)
◽может выводить в несколько колонок информацию
Все привычные ключи ls тоже поддерживает. Мне лично только расцветка понравилась и древовидное отображение:
Можно ограничить максимальный уровень вложенности:
Привычные ключи ls, как я уже сказал, поддерживаются, поэтому можно алиасом заменить ls на exa:
❗️К сожалению, exa больше не развивается, потому что автор куда-то пропал. В репозитории есть об этом информация. Предлагают переходить на форк eza, но его пока нет в репозиториях для Debian 12, но планируется в Debian 13. В Ubuntu 24 уже есть eza. Так что всё написанное актуально и для неё. Если в вашем дистрибутиве она уже есть, то имеет смысл поставить именно её. Там есть ряд небольших правок багов и некоторые улучшения функциональности. Я себе поставил в WSL как замену ls.
⇨ Исходники / Сайт
#linux #terminal
▪️ duf как замена df
▪️ bat как замена cat
▪️ hyperfine как замена time
В этот список можно добавить exa как замена ls. Я про exa уже писал несколько лет назад, но тогда её не было в стабильном репозитории. А сейчас приехала и туда:
# apt install exa
Это небольшая утилита с параллельной обработкой файлов, благодаря чему работает быстро. Но при этом обладает рядом дополнительных возможностей по сравнению с ls:
◽более информативная расцветка
◽умеет показывать расширенные атрибуты файлов (xattrs)
🔥иерархичное древовидное отображение
◽отображает статус файлов в git репозитории (изменён или нет со времени последнего коммита)
◽может выводить в несколько колонок информацию
Все привычные ключи ls тоже поддерживает. Мне лично только расцветка понравилась и древовидное отображение:
# exa -T /var/log
├── alternatives.log
├── alternatives.log.1
├── alternatives.log.2.gz
├── alternatives.log.3.gz
├── alternatives.log.4.gz
├── apt
│ ├── eipp.log.xz
│ ├── history.log
│ ├── history.log.1.gz
│ ├── history.log.2.gz
......................................
Можно ограничить максимальный уровень вложенности:
# exa -T -L 2 /var/log
Привычные ключи ls, как я уже сказал, поддерживаются, поэтому можно алиасом заменить ls на exa:
# echo 'alias ls=exa' >> ~/.bashrc
# source ~/.bashrc
# ls -la
❗️К сожалению, exa больше не развивается, потому что автор куда-то пропал. В репозитории есть об этом информация. Предлагают переходить на форк eza, но его пока нет в репозиториях для Debian 12, но планируется в Debian 13. В Ubuntu 24 уже есть eza. Так что всё написанное актуально и для неё. Если в вашем дистрибутиве она уже есть, то имеет смысл поставить именно её. Там есть ряд небольших правок багов и некоторые улучшения функциональности. Я себе поставил в WSL как замену ls.
⇨ Исходники / Сайт
#linux #terminal
Небезызвестный Василий Озеров открыл свой youtube канал (вовремя, как раз к блокировке ютуба) и выложил первое видео. Для тех, кто не знает, поясню. Василий - сооснователь школы Rebrain, рекламу которой вы тут периодически видите, и аутсорс компании Fevlake.
Ролик получился очень информативным, наглядным, нескучным, хоть и длинным - 50 минут. Я посмотрел его весь без перемотки и не в режиме только прослушивания. Большую часть того, что услышал, знал, но не всё. Почерпнул для себя новую информацию.
▶️ Разбор TLS параметров в Nginx: Подробная инструкция по настройке TLS
Для тех, у кого нет желания или времени всё смотреть, напишу несколько основных моментов, которые будут полезны даже в таком формате.
📌 Замена TLS 1.2 на TLS 1.3 даёт уменьшение времени отклика веб сервера. Тест Василия показал уменьшение со 170 мс до 130 мс только из-за смены версии протокола. Это связано с более быстрой инициализацией подключения клиента к серверу.
📌 Сертификат сервера, основанный на протоколе ECDSA, уменьшает при прочих равных условиях нагрузку на CPU сервера в сравнении с RSA где-то на 20-25%. Это связано с гораздо меньшей длиной сертификатов ECDSA.
📌 В конфигурацию Nginx можно добавить оба сертификата: ECDSA и RSA. Это обеспечит поддержку всех клиентов, и новых, и сильно старых, которые ECDSA не поддерживают.
📌 Если у вас только один веб сервер, то нет необходимости включать ssl_session_tickets, достаточно только ssl_session. Тикеты нужны, когда клиенту могут отвечать разные веб сервера с одинаковыми приватными ключами.
Очень подробно эти и некоторые другие моменты разобраны в видео. Рекомендую к просмотру. Реально полезная база, актуальная для любых сервисов, где используется TLS. Ну и не забывайте про лайк и подписку на канал, чтобы у Василия была мотивация записывать больше роликов. Видно, что для этого проделана большая работа.
#nginx #webserver
Ролик получился очень информативным, наглядным, нескучным, хоть и длинным - 50 минут. Я посмотрел его весь без перемотки и не в режиме только прослушивания. Большую часть того, что услышал, знал, но не всё. Почерпнул для себя новую информацию.
▶️ Разбор TLS параметров в Nginx: Подробная инструкция по настройке TLS
Для тех, у кого нет желания или времени всё смотреть, напишу несколько основных моментов, которые будут полезны даже в таком формате.
📌 Замена TLS 1.2 на TLS 1.3 даёт уменьшение времени отклика веб сервера. Тест Василия показал уменьшение со 170 мс до 130 мс только из-за смены версии протокола. Это связано с более быстрой инициализацией подключения клиента к серверу.
📌 Сертификат сервера, основанный на протоколе ECDSA, уменьшает при прочих равных условиях нагрузку на CPU сервера в сравнении с RSA где-то на 20-25%. Это связано с гораздо меньшей длиной сертификатов ECDSA.
📌 В конфигурацию Nginx можно добавить оба сертификата: ECDSA и RSA. Это обеспечит поддержку всех клиентов, и новых, и сильно старых, которые ECDSA не поддерживают.
📌 Если у вас только один веб сервер, то нет необходимости включать ssl_session_tickets, достаточно только ssl_session. Тикеты нужны, когда клиенту могут отвечать разные веб сервера с одинаковыми приватными ключами.
Очень подробно эти и некоторые другие моменты разобраны в видео. Рекомендую к просмотру. Реально полезная база, актуальная для любых сервисов, где используется TLS. Ну и не забывайте про лайк и подписку на канал, чтобы у Василия была мотивация записывать больше роликов. Видно, что для этого проделана большая работа.
#nginx #webserver
YouTube
Разбор TLS параметров в Nginx: Подробная инструкция по настройке TLS.
💬 Наш Telegram-канал: https://t.me/sysopslab
🎥 В этом видео разберемся, как настроить и оптимизировать протоколы TLS 1.2 и TLS 1.3 на веб-сервере. Узнаете, как выбрать конфигурации, повысить безопасность, и почему не стоит слепо копировать настройки из интернета.…
🎥 В этом видео разберемся, как настроить и оптимизировать протоколы TLS 1.2 и TLS 1.3 на веб-сервере. Узнаете, как выбрать конфигурации, повысить безопасность, и почему не стоит слепо копировать настройки из интернета.…
До меня докатилась новость о недавнем обновлении основного продукта Veeam - Veeam Backup & Replication. У них коммерческий продукт сейчас называется Veeam Data Platform, а бесплатная community версия так и осталась Veeam Backup & Replication Community Edition. Я перестал следить за их новостями с тех пор, как перешёл почти полностью на Proxmox и его продукт для бэкапа Proxmox Backup Server. Он закрывает базовые потребности малых и средних компаний. А Veeam Proxmox не поддерживал, поэтому и интереса не было.
Veeam решил повернуться в сторону KVM и в последнем релизе объявил поддержку систем виртуализации Nutanix и Proxmox VE. Из нового, там ещё отдельно поддержка MongoDB заявлена. На сегодняшний день это лидер рынка систем архивации данных, который поддерживает всё, что только можно: и облака, и гипервизоры, и СУБД, и отдельные системы. Он покрывает все популярные системы виртуализации: VMware, Microsoft Hyper‑V, Proxmox, Nutanix.
Решил посмотреть на бесплатную версию. У неё заявлены следующие ограничения:
This free gift from Veeam can protect up to 10 workloads: VMware, Hyper-V, Windows & Linux servers, laptops, NAS and more!
Насколько я понял, имеется ввиду 10 любых объектов для бэкапа. В принципе, средненькие ограничения, которые могут быть вполне функциональны для каких-то небольших или личных инфраструктур.
Для загрузки установщика нужна регистрация. Кому не хочется её проходить, вот прямая ссылка, можно ⇨ скачать. Доступ с адресов РФ закрыт, качать через VPN. Объём установщика солидный - 12 ГБ. Устанавливать нужно на систему Windows, в качестве СУБД будет установлена PostgreSQL. В 12-й версии есть возможность отказаться от MS SQL. В 13-й версии вангую отказ от Windows и переход на веб панель управления, как в Vinchin.
Интерфейс обновлённой 12-й версии привычен. Он вообще мало меняется от релиза к релизу. Как и логика работы. Сразу попробовал бэкап Proxmox VE. Для добавления сервера в консоль управления достаточно указать IP адрес и рутовый доступ по SSH. Далее было предложено создать служебную виртуалку на гипервизоре, которую Veeam будет поднимать через Cloud-Init во время бэкапа.
Дальше всё как обычно. Выполняется бэкап, восстановление возможно как на уровне всей системы, так и файлов на ней. В комментариях видел, кто-то писал, что восстановление на уровне файлов не работает. Я проверил, такая возможность есть, но реализована она следующим образом. Нужен какой-то промежуточный Linux хост, куда бэкап будет примонтирован для доступа к файлам. Туда ставится служба veeamagent и монтируется бэкап через fuse.
Я добавил для теста гипервизор Proxmox и Hyper-V. Забэкапил по паре виртуальных машин оттуда, ушло 4 лицензии.
Добавить про Veeam особо больше нечего. Продукт известный, лидер своей ниши. Мне лично он нравится за то, что можно забэкапить виртуалки, добавить в систему какой-нибудь старый сервер и настроить на него восстановление этих виртуалок с оповещением на почту. В итоге ты и бэкапы проверяешь и всегда имеешь под рукой актуальную копию виртуалки для различных задач.
С учётом нарастающего объёма блокировок и санкций, использовать Veeam не очень хочется, но лучше ничего нет. Так что решайте сами для себя, нужен он вам или нет. По возможностям даже бесплатной версии всё выглядит очень привлекательно. Позволяет объединить всю инфраструктуру в одном продукте. К примеру, несколько виртуалок и сетевой диск. Ну и на торрентах традиционно полные версии есть.
#backup
Veeam решил повернуться в сторону KVM и в последнем релизе объявил поддержку систем виртуализации Nutanix и Proxmox VE. Из нового, там ещё отдельно поддержка MongoDB заявлена. На сегодняшний день это лидер рынка систем архивации данных, который поддерживает всё, что только можно: и облака, и гипервизоры, и СУБД, и отдельные системы. Он покрывает все популярные системы виртуализации: VMware, Microsoft Hyper‑V, Proxmox, Nutanix.
Решил посмотреть на бесплатную версию. У неё заявлены следующие ограничения:
This free gift from Veeam can protect up to 10 workloads: VMware, Hyper-V, Windows & Linux servers, laptops, NAS and more!
Насколько я понял, имеется ввиду 10 любых объектов для бэкапа. В принципе, средненькие ограничения, которые могут быть вполне функциональны для каких-то небольших или личных инфраструктур.
Для загрузки установщика нужна регистрация. Кому не хочется её проходить, вот прямая ссылка, можно ⇨ скачать. Доступ с адресов РФ закрыт, качать через VPN. Объём установщика солидный - 12 ГБ. Устанавливать нужно на систему Windows, в качестве СУБД будет установлена PostgreSQL. В 12-й версии есть возможность отказаться от MS SQL. В 13-й версии вангую отказ от Windows и переход на веб панель управления, как в Vinchin.
Интерфейс обновлённой 12-й версии привычен. Он вообще мало меняется от релиза к релизу. Как и логика работы. Сразу попробовал бэкап Proxmox VE. Для добавления сервера в консоль управления достаточно указать IP адрес и рутовый доступ по SSH. Далее было предложено создать служебную виртуалку на гипервизоре, которую Veeam будет поднимать через Cloud-Init во время бэкапа.
Дальше всё как обычно. Выполняется бэкап, восстановление возможно как на уровне всей системы, так и файлов на ней. В комментариях видел, кто-то писал, что восстановление на уровне файлов не работает. Я проверил, такая возможность есть, но реализована она следующим образом. Нужен какой-то промежуточный Linux хост, куда бэкап будет примонтирован для доступа к файлам. Туда ставится служба veeamagent и монтируется бэкап через fuse.
Я добавил для теста гипервизор Proxmox и Hyper-V. Забэкапил по паре виртуальных машин оттуда, ушло 4 лицензии.
Добавить про Veeam особо больше нечего. Продукт известный, лидер своей ниши. Мне лично он нравится за то, что можно забэкапить виртуалки, добавить в систему какой-нибудь старый сервер и настроить на него восстановление этих виртуалок с оповещением на почту. В итоге ты и бэкапы проверяешь и всегда имеешь под рукой актуальную копию виртуалки для различных задач.
С учётом нарастающего объёма блокировок и санкций, использовать Veeam не очень хочется, но лучше ничего нет. Так что решайте сами для себя, нужен он вам или нет. По возможностям даже бесплатной версии всё выглядит очень привлекательно. Позволяет объединить всю инфраструктуру в одном продукте. К примеру, несколько виртуалок и сетевой диск. Ну и на торрентах традиционно полные версии есть.
#backup
▶️ Очередная подборка авторских IT роликов, которые я лично посмотрел и посчитал интересными/полезными. Как обычно, ниже те видео из моих подписок за последнее время (обычно беру период в 2 недели), что мне показались интересными и полезными.
⇨ FreeBSD in 100 Seconds
Очень короткий ролик про FreeBSD. Там нет ничего особенного. Интересен будет только тем, кто не знает, что это за система, но хочет иметь о ней представление. В конце ролика реклама, ради которой он и записывался, можно не досматривать. На этом канале много видео в таком же стиле, где за 100 секунд кратко рассказывают о каком-то продукте. Можно смело смотреть с синхронным переводом от Яндекса. Всё понятно.
⇨ Secure your HomeLab for FREE // Wazuh
Информативное и подробное видео про настройку open source SIEM-системы Wazuh. Автор выполнил single-node установку через docker на домашнем сервере, настроил доступ к веб интерфейсу через traefik. Потом установил агентов на Windows и Linux сервер. Далее показал, как выглядит анализ конфигурации систем на соответствие рекомендациям CIS. В конце рассказал про обнаружение вирусов и вторжений.
⇨ Настройка Suricata в OPNsense
Недавно делал заметку по мотивам ролика от этого автора на тему настройки Zenarmor в OPNsense. Теперь то же самое, только про бесплатную Сурикату.
⇨ Запуск Llama 405b на своем сервере. vLLM, docker.
Подробное описание того, как запустить самую мощную открытую нейросеть Llama 405b на своем сервере. Там и про объём данных, системные требования, где можно взять в аренду сервер (стоимость аховая 🙈) и т.д. В общем, всё. Хорошая инструкция. Было интересно посмотреть для общего развития. Подписался на канал.
⇨ Установка Docmost на Synology в контейнер Docker
Видео про установку и настройку бесплатной open source замены Notion, заблокировавшей всех пользователей из РФ. Автор ставит на Synology, но так как продукт запускается с помощью docker-compose, не принципиально, где это будет запущено. Если хочется просто посмотреть, как выглядит Docmost, мотайте сразу на 8-ю минуту.
⇨ My NEW HomeLab storage server!
Бодрое видео от весёлого блогера, который собрал себе новый сервер хранения, установил туда unraid и рассказал об этом. Будет интересно тем, кто любит такой формат. Пользы там нет, чисто развлечение. Я люблю смотреть такие видео. Может у самого когда-то появится время собирать себе домой какие-то сервера. Сейчас не до этого.
⇨ Zabbix Meetup online, August 2024: Synthetic browser monitoring in Zabbix 7.0
Рассказ с недавнего митапа Zabbix о том, как работает новый мониторинг веб сайтов в Zabbix 7.0. Наглядной практики в записи нет, в основном теория и описание возможных настроек.
⇨ Сети для несетевиков // OSI/ISO, IP и MAC, NAT, TCP и UDP, DNS
Хорошее обзорное видео по основам сетевых технологий. Даётся база для тех, кто почти нулевой в этой теме: модель OSI, MAC адреса, IP адреса, порты, NAT и т.д. У автора явно есть потенциал, желание и знания для создания хороших роликов, но он почему-то пошёл по самым азам, по которым уже есть много материала в интернете и в ютубе в частности. Было бы интереснее, если бы он в какую-то практическую область сместился. Надеюсь, до него как-то дойдёт этот посыл.
⇨ Какой роутер взять для NAS и дома (подкаст)
Личное мнение автора по выбору роутера для дома. Интересно послушать рассуждения, а не какие-то пересказы. Он делает акцент на Wifi и считает, что отталкиваться надо от этих возможностей железа. Всё остальное вторично. Я с этим не согласен, так как везде стараюсь тянуть провод, а по WiFi работают в основном смартфоны, которым некритична скорость подключения.
#видео
⇨ FreeBSD in 100 Seconds
Очень короткий ролик про FreeBSD. Там нет ничего особенного. Интересен будет только тем, кто не знает, что это за система, но хочет иметь о ней представление. В конце ролика реклама, ради которой он и записывался, можно не досматривать. На этом канале много видео в таком же стиле, где за 100 секунд кратко рассказывают о каком-то продукте. Можно смело смотреть с синхронным переводом от Яндекса. Всё понятно.
⇨ Secure your HomeLab for FREE // Wazuh
Информативное и подробное видео про настройку open source SIEM-системы Wazuh. Автор выполнил single-node установку через docker на домашнем сервере, настроил доступ к веб интерфейсу через traefik. Потом установил агентов на Windows и Linux сервер. Далее показал, как выглядит анализ конфигурации систем на соответствие рекомендациям CIS. В конце рассказал про обнаружение вирусов и вторжений.
⇨ Настройка Suricata в OPNsense
Недавно делал заметку по мотивам ролика от этого автора на тему настройки Zenarmor в OPNsense. Теперь то же самое, только про бесплатную Сурикату.
⇨ Запуск Llama 405b на своем сервере. vLLM, docker.
Подробное описание того, как запустить самую мощную открытую нейросеть Llama 405b на своем сервере. Там и про объём данных, системные требования, где можно взять в аренду сервер (стоимость аховая 🙈) и т.д. В общем, всё. Хорошая инструкция. Было интересно посмотреть для общего развития. Подписался на канал.
⇨ Установка Docmost на Synology в контейнер Docker
Видео про установку и настройку бесплатной open source замены Notion, заблокировавшей всех пользователей из РФ. Автор ставит на Synology, но так как продукт запускается с помощью docker-compose, не принципиально, где это будет запущено. Если хочется просто посмотреть, как выглядит Docmost, мотайте сразу на 8-ю минуту.
⇨ My NEW HomeLab storage server!
Бодрое видео от весёлого блогера, который собрал себе новый сервер хранения, установил туда unraid и рассказал об этом. Будет интересно тем, кто любит такой формат. Пользы там нет, чисто развлечение. Я люблю смотреть такие видео. Может у самого когда-то появится время собирать себе домой какие-то сервера. Сейчас не до этого.
⇨ Zabbix Meetup online, August 2024: Synthetic browser monitoring in Zabbix 7.0
Рассказ с недавнего митапа Zabbix о том, как работает новый мониторинг веб сайтов в Zabbix 7.0. Наглядной практики в записи нет, в основном теория и описание возможных настроек.
⇨ Сети для несетевиков // OSI/ISO, IP и MAC, NAT, TCP и UDP, DNS
Хорошее обзорное видео по основам сетевых технологий. Даётся база для тех, кто почти нулевой в этой теме: модель OSI, MAC адреса, IP адреса, порты, NAT и т.д. У автора явно есть потенциал, желание и знания для создания хороших роликов, но он почему-то пошёл по самым азам, по которым уже есть много материала в интернете и в ютубе в частности. Было бы интереснее, если бы он в какую-то практическую область сместился. Надеюсь, до него как-то дойдёт этот посыл.
⇨ Какой роутер взять для NAS и дома (подкаст)
Личное мнение автора по выбору роутера для дома. Интересно послушать рассуждения, а не какие-то пересказы. Он делает акцент на Wifi и считает, что отталкиваться надо от этих возможностей железа. Всё остальное вторично. Я с этим не согласен, так как везде стараюсь тянуть провод, а по WiFi работают в основном смартфоны, которым некритична скорость подключения.
#видео
YouTube
FreeBSD in 100 Seconds
Try Brilliant free for 30 days https://brilliant.org/fireship You’ll also get 20% off an annual premium subscription.
Learn the basics of FreeBSD - a UNIX-like operating system that shares code with projects like iOS, MacOS, Nintendo, PlayStation, and many…
Learn the basics of FreeBSD - a UNIX-like operating system that shares code with projects like iOS, MacOS, Nintendo, PlayStation, and many…
Прошлая моя публикация про покупку монитора вызвала очень бурное обсуждение и споры. В выходной хорошее время, чтобы к ней вернуться. Напомню, что я купил себе монитор 27" с разрешением 2K, 2560x1440. В заметке написал, что не очень понравилось за ним работать. Спустя несколько месяцев мнение не поменялось. Так и не привык. Сейчас надо обустроить ещё одно рабочее место. Снова подбираю монитор.
Разрешение 2560x1440 слишком широкое, разворачивать приложения на весь экран не имеет большого смысла. Будет либо много пустых мест, либо головой крутить придётся в разные стороны, чтобы охватить весь экран. Я вышел из положения приложением FancyZones из набора PowerToys. С его помощью сделал рабочую зону по центру монитора 1920x1300 и автоматически разворачиваю на этот размер приложения, когда сажусь работать.
Неудобство в том, что когда работаешь за ноутом без внешнего монитора, все окна приходится разворачивать обратно на весь экран. Широкий монитор нужен в очень ограниченном наборе приложений, с которыми лично я почти не работаю. В основном весь день проходит в консоли или браузере, а их я на всю ширину монитора никогда не разворачиваю. Соответственно, брать более широкий экран вообще не вижу смысла. Мне удобнее переключаться между окнами, нежели головой крутить по всей ширине монитора, располагая их на экране.
❓Мне совершенно непонятна популярность широких экранов. В чём смысл крутить головой по всей ширине, если можно нажать Alt+Tab и получить нужное окно перед глазами? Игры, фильмы, какая-то графика - всё понятно, на широком экране удобно и зрелищно. Но для работы зачем это? Кто-то может пояснить? Может я чего-то не понимаю?
Сейчас подбираю новый монитор. По финансам я не сильно ограничен, то есть могу купить и 2К, и 4К популярных диагоналей из среднего ценового сегмента. Но я решил взять монитор разрешением 1920x1200. К сожалению, выбор там небольшой, но он есть. Мне кажется, это будет наиболее оптимальный вариант для работы с развёрнутыми на весь экран окнами, чтобы их не пришлось двигать туда сюда. Если у кого-то есть подобный монитор или занимался его подбором, порекомендуйте хорошую модель.
Думаю, может что-то подобное взять: ASUS ProArt PA248CRV 24.1" или DELL P2425E 24.07".
#железо
Разрешение 2560x1440 слишком широкое, разворачивать приложения на весь экран не имеет большого смысла. Будет либо много пустых мест, либо головой крутить придётся в разные стороны, чтобы охватить весь экран. Я вышел из положения приложением FancyZones из набора PowerToys. С его помощью сделал рабочую зону по центру монитора 1920x1300 и автоматически разворачиваю на этот размер приложения, когда сажусь работать.
Неудобство в том, что когда работаешь за ноутом без внешнего монитора, все окна приходится разворачивать обратно на весь экран. Широкий монитор нужен в очень ограниченном наборе приложений, с которыми лично я почти не работаю. В основном весь день проходит в консоли или браузере, а их я на всю ширину монитора никогда не разворачиваю. Соответственно, брать более широкий экран вообще не вижу смысла. Мне удобнее переключаться между окнами, нежели головой крутить по всей ширине монитора, располагая их на экране.
❓Мне совершенно непонятна популярность широких экранов. В чём смысл крутить головой по всей ширине, если можно нажать Alt+Tab и получить нужное окно перед глазами? Игры, фильмы, какая-то графика - всё понятно, на широком экране удобно и зрелищно. Но для работы зачем это? Кто-то может пояснить? Может я чего-то не понимаю?
Сейчас подбираю новый монитор. По финансам я не сильно ограничен, то есть могу купить и 2К, и 4К популярных диагоналей из среднего ценового сегмента. Но я решил взять монитор разрешением 1920x1200. К сожалению, выбор там небольшой, но он есть. Мне кажется, это будет наиболее оптимальный вариант для работы с развёрнутыми на весь экран окнами, чтобы их не пришлось двигать туда сюда. Если у кого-то есть подобный монитор или занимался его подбором, порекомендуйте хорошую модель.
Думаю, может что-то подобное взять: ASUS ProArt PA248CRV 24.1" или DELL P2425E 24.07".
#железо
Небольшая заметка про одну команду, которая у меня уже вошла в привычку и используется почти каждый день. Возможно и вам она будет полезна. Я недавно делал заметку про netstat и ss. Рассказал, что постепенно почти перешёл на
В комментариях один человек посоветовал использовать утилиту column. Что самое интересное, я про неё знаю, писал заметку. Тоже посоветовали в комментариях. Но с
А самое главное, что я cразу эту конструкцию запомнил и теперь постоянно пользуюсь, так как и
Теперь вот и с
Netstat вообще не выводит пользователей, только название процесса. В
Но тут вывод о процессе ненагляден, так как выводится имя юнита systemd, а не непосредственно рабочего процесса.
#linux #terminal
ss
, но не нравится широкий вывод команды. На узком терминале разъезжается одна строка на две и вывод выглядит ненаглядно.В комментариях один человек посоветовал использовать утилиту column. Что самое интересное, я про неё знаю, писал заметку. Тоже посоветовали в комментариях. Но с
ss
не догадался её попробовать. А это удобно. Вывод получается более компактный и наглядный:# ss -tulnp | column -t
# ss -nte | column -t
А самое главное, что я cразу эту конструкцию запомнил и теперь постоянно пользуюсь, так как и
ss
, и column
есть во всех дистрах из коробки. Рекомендую попробовать. Я column
привык с mount
использовать для удобного вывода:# mount | column -t
Теперь вот и с
ss
. Про netstat
стал забывать. Не использую почти, перешёл на ss
. Один неприятный нюанс всё равно остался. Даже с column
в ss
бывают длинные строки, если поле с users очень длинное, типа такого:users:(("smtpd",pid=1680589,fd=6),("smtpd",pid=1680587,fd=6),("smtpd",pid=1680585,fd=6),("smtpd",pid=1678705,fd=6),("smtpd",pid=1678348,fd=6),("smtpd",pid=1675803,fd=6),("master",pid=1837,fd=13))
Netstat вообще не выводит пользователей, только название процесса. В
ss
тоже можно убрать, например вот так (заменили p
на e
):# ss -tulne
Но тут вывод о процессе ненагляден, так как выводится имя юнита systemd, а не непосредственно рабочего процесса.
#linux #terminal
Я себе на дачу давно уже купил камеры Hikvision и настроил видеонаблюдение на базе их бесплатного софта под винду iVMS-4200. В качестве хранилища взял их же бесплатный сервер Storage Server V3.2.0.10_S. До сих пор нормально работает. Это старая версия, так как новый сервер для локального хранения записей стоит денег. Параллельно поток без хранения льётся в бесплатное облако всё того же Hikvision. За хранение уже какие-то деньги платить надо. Мне достаточно картинки в режиме live посмотреть со смартфона. А записи смотрю с компа, подключившись к нему через Parsec. Картинка тормозит меньше, чем через какие-то другие программы для удалённого доступа.
Это решение было поднято как временное на одном из старых системных блоков. А как известно: "Нет ничего более постоянного, чем временное!" До сих пор работает и в целом нормально. Претензий у меня к нему нет. Но поменять всё это дело желание есть, как появится возможность и свободное время.
В закладках давно уже лежит бесплатный open source NVR - Frigate.video. Это современный софт, который запускается в Docker, настраивается через yaml конфиг, интегрируется с Home Assistant, шлёт оповещения в Telegram. Он умеет не только записывать и хранить картинку, но и распознавать объекты, лица. Это принципиальная особенность от многих других бесплатных продуктов. Нормальное распознавание - чаще всего функциональность платных версий. Тут же, судя по отзывам, и в бесплатной версии всё работает неплохо. Люди распознают других людей, своих котиков, собак, автомобили и т.д.
Я немного изучил этот продукт и нашёл много позитивных отзывов. Например, вот реальный отзыв пользователя, настроившего распознавание лиц и объектов. А это подробный разбор возможностей Frigate в формате видеоролика с ютуба. В комментариях есть отзывы пользователей с примерами нагрузки на железо с включённой детекцией.
Не могу сказать, что это простой для настройки софт. Если у вас нет практики работы с докером, то и настроить будет не просто. Для добавления камер нужно будет править конфиг и перезапускать контейнеры. Можно настроить конвейер для этого. В настоящий момент для меня это скорее плюс, чем минус, так как подобный софт очень легко переносится с машины на машину. А настройка может выглядеть примерно так. При желании конфиг можно отредактировать через веб интерфейс и перезапустить контейнер.
В документации есть вся информация для запуска. Упрощу задачу, если захочется попробовать и сразу покажу итоговый docker-compose.yml, который можно просто запустить.
Создаём необходимые директории:
Запускаем:
Когда всё скачается и запустится, в консоли будет отображена учётка от веб интерфейса: admin / e8cc7b1542a06025032e14ec1ff256f3. Можно идти по IP адресу сервера на порт 8971 и проверять работу: https://10.20.1.36:8971/
Проект живой, активно развивается. В гитхабе коммиты почти каждый день. Много вопросов, звёзд. На первый взгляд неплохое современное бесплатное решение для дома. В организации я бы рекомендовал что-то платное покупать.
⇨ Сайт / Исходники
#видеонаблюдение
Это решение было поднято как временное на одном из старых системных блоков. А как известно: "Нет ничего более постоянного, чем временное!" До сих пор работает и в целом нормально. Претензий у меня к нему нет. Но поменять всё это дело желание есть, как появится возможность и свободное время.
В закладках давно уже лежит бесплатный open source NVR - Frigate.video. Это современный софт, который запускается в Docker, настраивается через yaml конфиг, интегрируется с Home Assistant, шлёт оповещения в Telegram. Он умеет не только записывать и хранить картинку, но и распознавать объекты, лица. Это принципиальная особенность от многих других бесплатных продуктов. Нормальное распознавание - чаще всего функциональность платных версий. Тут же, судя по отзывам, и в бесплатной версии всё работает неплохо. Люди распознают других людей, своих котиков, собак, автомобили и т.д.
Я немного изучил этот продукт и нашёл много позитивных отзывов. Например, вот реальный отзыв пользователя, настроившего распознавание лиц и объектов. А это подробный разбор возможностей Frigate в формате видеоролика с ютуба. В комментариях есть отзывы пользователей с примерами нагрузки на железо с включённой детекцией.
Не могу сказать, что это простой для настройки софт. Если у вас нет практики работы с докером, то и настроить будет не просто. Для добавления камер нужно будет править конфиг и перезапускать контейнеры. Можно настроить конвейер для этого. В настоящий момент для меня это скорее плюс, чем минус, так как подобный софт очень легко переносится с машины на машину. А настройка может выглядеть примерно так. При желании конфиг можно отредактировать через веб интерфейс и перезапустить контейнер.
В документации есть вся информация для запуска. Упрощу задачу, если захочется попробовать и сразу покажу итоговый docker-compose.yml, который можно просто запустить.
Создаём необходимые директории:
# mkdir ~/frigate && cd ~/frigate && mkdir storage config
# touch ./config/config.yml
mqtt:
enabled: false
cameras:
name_of_your_camera:
enabled: true
ffmpeg:
inputs:
- path: rtsp://10.0.10.10:554/rtsp
roles:
- detect
detect:
enabled: false
version: 0.14
# touch docker-compose.yml
---
services:
frigate:
container_name: frigate
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable
volumes:
- ./config:/config
- ./storage:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "8971:8971"
- "8554:8554"
Запускаем:
# docker compose up
Когда всё скачается и запустится, в консоли будет отображена учётка от веб интерфейса: admin / e8cc7b1542a06025032e14ec1ff256f3. Можно идти по IP адресу сервера на порт 8971 и проверять работу: https://10.20.1.36:8971/
Проект живой, активно развивается. В гитхабе коммиты почти каждый день. Много вопросов, звёзд. На первый взгляд неплохое современное бесплатное решение для дома. В организации я бы рекомендовал что-то платное покупать.
⇨ Сайт / Исходники
#видеонаблюдение
Для OpenVPN на первый взгляд кажется, что существует много различных веб панелей. Но когда начинаешь в них разбираться, оказывается, что одна платная, а бесплатная версия урезана, другая уже давно не поддерживается, третья в какой-то своей логике всем управляет и хранит данные. На деле выбирать особо то и не из чего. Я когда-то давно собрал список известных мне панелей:
⇨ Управление OpenVPN сервером через web интерфейс
Сегодня покажу ещё один вариант, который поначалу показался каким-то костыльным из-за недостатка документации, но когда немного разобрался, решение понравилось. Речь пойдёт про open source проект от известного аутсорсера flant - ovpn-admin.
📌 У ovpn-admin следующие возможности:
◽️Запуск через одиночный бинарник с передачей всех параметров через ключи. Есть готовый контейнер для автоматического запуска. Я тестировал в нём.
◽️Веб интерфейс для добавления и удаления пользователей, просмотра статуса их подключения и передачи маршрутов
◽️Экспортер для Prometheus и шаблон для Grafana с метриками: срок жизни сертификата, кол-во подключенных пользователей, информация о подключенных пользователях (время подключения, ip адрес, трафик)
◽️Подключение пользователем с использованием пароля или без, возможность скачать готовый конфиг сразу с включённым в него сертификатом
◽️Helm чарт для запуска в Kubernetes, собственно, продукт оптимизирован для запуска в кубере, может хранить сертификаты в секретах
Мне понравилось это решение тем, что оно, во-первых, полностью автоматизирует запуск сервера, а во-вторых, максимально похоже на администрирование стандартного openvpn сервера, установленного вручную. Тут всё на своих местах: конфиг сервера, шаблон конфига пользователей, директория с сертификатами, с настройками пользователей. Для тех, кто знаком с openvpn сервером не будет никаких проблем с тем, чтобы разобраться, как это всё работает.
Показываю, как запустить ovpn-admin в рабочем режиме. Не знаю, почему в самой репе не оставили краткой инструкции. Либо я её не нашёл. В общем, сделал в итоге так:
Теперь правим некоторые параметры
Остальные параметры я оставил по умолчанию. Собираем и запускаем контейнер:
Дожидаемся запуска и идём в веб интерфейс управления: http://1.2.3.4:8080/. Он будет доступен без аутентификации. Его нужно закрыть либо файрволом, либо basic_auth на прокси.
Расскажу про несколько полезных директорий и файлов:
-
-
-
-
Структура и расположение файлов типичны для openvpn сервера. На эту панель легко переехать с работающего сервера, либо наоборот съехать, если не понравится, забрав все настройки и пользователей. Можно спокойно залезть в какие-то файлы и руками поправить параметры. Это ничего не сломает, так как всё состояние хранится только в них.
Я всё это запустил, настроил, попробовал. Добавил метрики Прома, установил шаблон Графаны. Забрать можно тут. У меня заработало сразу. На деле вроде бы и ничего особенного, но задачу по управлению и тем более мониторингу сильно упрощает. Не нужно самому парсить статус лог сервера. Там хоть и ничего сложного, я парсил для Zabbix, но тут это сделали за нас.
⇨4️⃣ Исходники
#openvpn
⇨ Управление OpenVPN сервером через web интерфейс
Сегодня покажу ещё один вариант, который поначалу показался каким-то костыльным из-за недостатка документации, но когда немного разобрался, решение понравилось. Речь пойдёт про open source проект от известного аутсорсера flant - ovpn-admin.
📌 У ovpn-admin следующие возможности:
◽️Запуск через одиночный бинарник с передачей всех параметров через ключи. Есть готовый контейнер для автоматического запуска. Я тестировал в нём.
◽️Веб интерфейс для добавления и удаления пользователей, просмотра статуса их подключения и передачи маршрутов
◽️Экспортер для Prometheus и шаблон для Grafana с метриками: срок жизни сертификата, кол-во подключенных пользователей, информация о подключенных пользователях (время подключения, ip адрес, трафик)
◽️Подключение пользователем с использованием пароля или без, возможность скачать готовый конфиг сразу с включённым в него сертификатом
◽️Helm чарт для запуска в Kubernetes, собственно, продукт оптимизирован для запуска в кубере, может хранить сертификаты в секретах
Мне понравилось это решение тем, что оно, во-первых, полностью автоматизирует запуск сервера, а во-вторых, максимально похоже на администрирование стандартного openvpn сервера, установленного вручную. Тут всё на своих местах: конфиг сервера, шаблон конфига пользователей, директория с сертификатами, с настройками пользователей. Для тех, кто знаком с openvpn сервером не будет никаких проблем с тем, чтобы разобраться, как это всё работает.
Показываю, как запустить ovpn-admin в рабочем режиме. Не знаю, почему в самой репе не оставили краткой инструкции. Либо я её не нашёл. В общем, сделал в итоге так:
# git clone https://github.com/flant/ovpn-admin.git
# cd ovpn-admin
Теперь правим некоторые параметры
docker-compose.yaml
:OVPN_PASSWD_AUTH: "true"
# включена аутентификация по паролю, можно отключить, если не надоOVPN_SERVER: "1.2.3.4:7777:tcp"
# ip адрес, на котором запущен сервер и к которому будут подключаться клиенты, соответственно порт и протокол, по которому будут подключатьсяOVPN_METRICS_PATH: "/metrics"
# url, на котором будут жить метрики PrometheusОстальные параметры я оставил по умолчанию. Собираем и запускаем контейнер:
# ./start.sh
Дожидаемся запуска и идём в веб интерфейс управления: http://1.2.3.4:8080/. Он будет доступен без аутентификации. Его нужно закрыть либо файрволом, либо basic_auth на прокси.
Расскажу про несколько полезных директорий и файлов:
-
.ovpn-admin/easyrsa_master/pki
- сертификаты пользователей-
.ovpn-admin/ccd_master
- файлы конфигурации пользователей-
.ovpn-admin/setup/openvpn.conf
- параметры сервера openvpn-
.ovpn-admin/templates
- шаблон конфигурации клиента, настроек ccdСтруктура и расположение файлов типичны для openvpn сервера. На эту панель легко переехать с работающего сервера, либо наоборот съехать, если не понравится, забрав все настройки и пользователей. Можно спокойно залезть в какие-то файлы и руками поправить параметры. Это ничего не сломает, так как всё состояние хранится только в них.
Я всё это запустил, настроил, попробовал. Добавил метрики Прома, установил шаблон Графаны. Забрать можно тут. У меня заработало сразу. На деле вроде бы и ничего особенного, но задачу по управлению и тем более мониторингу сильно упрощает. Не нужно самому парсить статус лог сервера. Там хоть и ничего сложного, я парсил для Zabbix, но тут это сделали за нас.
⇨
#openvpn
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжу начатую утром тему OpenVPN. В Linux без проблем можно запустить сколько угодно экземпляров сервера и клиента. Достаточно копировать конфигурационный файл, указывать разные tun или tap интерфейсы, порты и запускать каждый экземпляр службы со своим конфигом.
В Windows несколько сложнее. Про сервер ничего не скажу, я его на винде никогда не поднимаю. А вот для запуска нескольких подключений клиента, чтобы иметь возможность одновременно подключаться к нескольким OpenVPN серверам, нужно добавить дополнительные сетевые адаптеры в систему. Сделать это несложно.
Запускаем консоль cmd с правами администратора и делаем там следующее:
В Панели управления, в списке сетевых адаптеров должен появиться ещё один TAP-Windows Adapter V9 #2, #3 и так далее, если нужно больше двух. Теперь можно одновременно подключиться к разным OpenVPN серверам.
Добавлю несколько ссылок на полезные и неочевидные возможности OpenVPN сервера:
▪️ Маршруты для клиента на основе url, а не ip адреса
▪️ Запуск OpenVPN сервера на разных внешних IP адресах
▪️ Блокировка подключения пользователя без отзыва сертификата
▪️ Диагностика низкой скорости через OpenVPN
▪️ Запускаем OpenVPN сервер за 443 портом веб сервера
Подход из последней ссылки недавно помог восстановить хождение трафика на зарубежные VPS по OpenVPN. Просто поменял порт на 443 TCP и всё заработало.
Предвещая вопросы на тему того, зачем сейчас использовать OpenVPN, сразу оставлю ссылку, так как много раз отвечал на него. И добавлю, что OpenVPN использую в первую очередь для объединения и доступа к сетям, а не обхода блокировок.
#openvpn #windows
В Windows несколько сложнее. Про сервер ничего не скажу, я его на винде никогда не поднимаю. А вот для запуска нескольких подключений клиента, чтобы иметь возможность одновременно подключаться к нескольким OpenVPN серверам, нужно добавить дополнительные сетевые адаптеры в систему. Сделать это несложно.
Запускаем консоль cmd с правами администратора и делаем там следующее:
> cd C:\Program Files\OpenVPN\bin
> tapctl.exe create
В Панели управления, в списке сетевых адаптеров должен появиться ещё один TAP-Windows Adapter V9 #2, #3 и так далее, если нужно больше двух. Теперь можно одновременно подключиться к разным OpenVPN серверам.
Добавлю несколько ссылок на полезные и неочевидные возможности OpenVPN сервера:
▪️ Маршруты для клиента на основе url, а не ip адреса
▪️ Запуск OpenVPN сервера на разных внешних IP адресах
▪️ Блокировка подключения пользователя без отзыва сертификата
▪️ Диагностика низкой скорости через OpenVPN
▪️ Запускаем OpenVPN сервер за 443 портом веб сервера
Подход из последней ссылки недавно помог восстановить хождение трафика на зарубежные VPS по OpenVPN. Просто поменял порт на 443 TCP и всё заработало.
Предвещая вопросы на тему того, зачем сейчас использовать OpenVPN, сразу оставлю ссылку, так как много раз отвечал на него. И добавлю, что OpenVPN использую в первую очередь для объединения и доступа к сетям, а не обхода блокировок.
#openvpn #windows
Вчера случайно заметил очень любопытную вещь в Debian, которая касается различий между apt и apt-get. Я всегда был уверен, что различия там в основном организационные в плане названия команд. Apt объединил в себе возможности apt-get и apt-cache, добавился прогресс бар, и что важно
Я обычно использую apt, потому что короче набирать и в целом удобнее. Оказалось, что команды
А заметил я разницу, когда установил на Debian 12 версию php 8.2 и захотел обновить её до 8.3, подключив сторонний репозиторий. Покажу наглядно по шагам, что сделал.
Сначала полностью обновил систему и установил туда php 8.2 из стандартного репозитория:
Далее подключил репозиторий sury, а точнее его зеркало в домене на su, так как автор ограничил к нему доступ из РФ:
В репозитории есть версия php 8.3. Пробую обновиться через apt:
Предлагает установить php 8.3 и удалить 8.2:
Делаю full-upgrade:
Вывод один в один как для upgrade. Предлагает удалить 8.2 и поставить 8.3. Я выполнил обе эти команды и убедился, что результат идентичный. Они отработали обе как full-upgrade. Я получил в системе php 8.3.
Делаю то же самое, только с apt-get:
Предлагает только обновить 8.2, что от него и ожидаешь. Выполняю full-upgrade:
Вывод такой же, как у apt full-upgrade. То есть в apt-get upgrade и full-upgrade работают ожидаемо, как и описано в документации. А вот с apt мне непонятна ситуация. Не так часто приходится в рамках одной системы переходить на другую ветку ПО, поэтому раньше не обращал на это внимание. А теперь буду.
Вот отличия apt upgrade от apt full-upgrade согласно man:
▪️ upgrade - upgrade is used to install available upgrades of all packages currently installed on the system from the sources configured via sources.list(5). New packages will be installed if required to satisfy dependencies, but existing packages will never be removed.
▪️ full-upgrade - full-upgrade performs the function of upgrade but will remove currently installed packages if this is needed to upgrade the system as a whole.
Apt-get ведёт себя согласно описанию, а вот apt - нет. Не знаю, баг это или особенность конкретно веток php и подключенного репозитория. Если бы оба apt-get и apt вели себя одинаково, я бы не обратил на это внимания. Но тут разница в поведении налицо. Их поведение не идентично не только в плане синтаксиса и некоторых ключей, но и функциональности.
#linux
apt list --upgradable
. Я обычно использую apt, потому что короче набирать и в целом удобнее. Оказалось, что команды
apt upgrade
и apt-get upgrade
тоже отличаются. Фактически разницы между apt upgrade и apt full-upgrade нет, а она должна быть. Напомню, что команда upgrade обновляет только текущую версию пакета, ничего не удаляя. В то же время full-upgrade может удалить текущую версию пакета и установить новую. Поэтому эта команда используется при обновлении с релиза на релиз. Там без удаления не обойтись. А заметил я разницу, когда установил на Debian 12 версию php 8.2 и захотел обновить её до 8.3, подключив сторонний репозиторий. Покажу наглядно по шагам, что сделал.
Сначала полностью обновил систему и установил туда php 8.2 из стандартного репозитория:
# apt update && apt upgrade
# apt install php
Далее подключил репозиторий sury, а точнее его зеркало в домене на su, так как автор ограничил к нему доступ из РФ:
# wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.su/php/apt.gpg
# sh -c 'echo "deb https://packages.sury.su/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
В репозитории есть версия php 8.3. Пробую обновиться через apt:
# apt update && apt upgrade
Предлагает установить php 8.3 и удалить 8.2:
The following packages were automatically installed and are no longer required:
libapache2-mod-php8.2 php8.2 php8.2-cli php8.2-common php8.2-opcache php8.2-readline
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
debsuryorg-archive-keyring libapache2-mod-php8.3 php8.3 php8.3-cli php8.3-common php8.3-opcache php8.3-readline
Делаю full-upgrade:
# apt full-upgrade
Вывод один в один как для upgrade. Предлагает удалить 8.2 и поставить 8.3. Я выполнил обе эти команды и убедился, что результат идентичный. Они отработали обе как full-upgrade. Я получил в системе php 8.3.
Делаю то же самое, только с apt-get:
# apt-get upgrade
The following packages will be upgraded:
libapache2-mod-php8.2 php8.2 php8.2-cli php8.2-common php8.2-opcache php8.2-readline
Предлагает только обновить 8.2, что от него и ожидаешь. Выполняю full-upgrade:
# apt-get full-upgrade
The following packages were automatically installed and are no longer required:
libapache2-mod-php8.2 php8.2 php8.2-cli php8.2-common php8.2-opcache php8.2-readline
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
debsuryorg-archive-keyring libapache2-mod-php8.3 php8.3 php8.3-cli php8.3-common php8.3-opcache php8.3-readline
Вывод такой же, как у apt full-upgrade. То есть в apt-get upgrade и full-upgrade работают ожидаемо, как и описано в документации. А вот с apt мне непонятна ситуация. Не так часто приходится в рамках одной системы переходить на другую ветку ПО, поэтому раньше не обращал на это внимание. А теперь буду.
Вот отличия apt upgrade от apt full-upgrade согласно man:
▪️ upgrade - upgrade is used to install available upgrades of all packages currently installed on the system from the sources configured via sources.list(5). New packages will be installed if required to satisfy dependencies, but existing packages will never be removed.
▪️ full-upgrade - full-upgrade performs the function of upgrade but will remove currently installed packages if this is needed to upgrade the system as a whole.
Apt-get ведёт себя согласно описанию, а вот apt - нет. Не знаю, баг это или особенность конкретно веток php и подключенного репозитория. Если бы оба apt-get и apt вели себя одинаково, я бы не обратил на это внимания. Но тут разница в поведении налицо. Их поведение не идентично не только в плане синтаксиса и некоторых ключей, но и функциональности.
#linux
Познакомлю вас с простым и функциональным DNS сервером с управлением через веб интерфейс. Речь пойдёт о бесплатном Nxfilter. Почему-то вообще не нашёл о нём информации в русскоязычном интернете, кроме каких-то коротких упоминаний.
Кратко опишу возможности этого сервера:
◽️обслуживание dns запросов из локальной сети;
◽️аутентификация пользователей на основе ip адресов, паролей, учётных записей из Active Directory (в том числе прозрачная);
◽️использование готовых списков для запрета доступа к каким-то сайтам, а также создание своих списков;
◽️логирование всех dns запросов;
◽️создание гибких политик доступа к сайтам на основе пользователей, групп пользователей, времени суток;
◽️отчёты и оповещения о событиях фильтрации.
Сам продукт бесплатен, монетизируется за счёт подписок на регулярно обновляемые списки сайтов, разбитых на категории. На них, соответственно, можно не подписываться и использовать программу бесплатно без ограничения. Коммерческое использование допускается. Программа написана на Java, поэтому кроссплатформенна. Можно запускать как на Linux, так и на Windows.
Показываю процесс установки на Debian 12. Устанавливаем Java и sudo (нужен установщику):
Скачиваем пакет и устанавливаем:
Запускаем службу. 80-й порт на сервере должен быть свободен, так как веб интерфейс по умолчанию запускается на этом порту:
Служба какое-то время будет создавать свою базу данных и индексы. Наблюдать за процессом можно в логе:
Как только процесс завершится, можно идти в веб интерфейс по адресу сервера: http://10.20.1.36/admin/ Учётка: admin / admin. Мне почему-то после логина показывалась страница с блокировкой, хотя аутентификация проходила нормально. Я просто открыл страницу http://10.20.1.36/dashboard.jsp и оказался в панели управления. После этого всегда успешно заходил в админку.
Кратко покажу, как тут всё устроено. Для примера добавим пользователя, который будет проходить аутентификацию на основе своего IP адреса, то есть автоматом. Создадим политику, которая будет блокировать доступ к доменам vk.com и ok.com и назначим эту политику этому пользователю.
1️⃣ Идём в раздел DNS ⇨ Setup и указываем DNS серверы, на которые будем перенаправлять запросы. В разделе DNS ⇨ ACCESS CONTROL указываем подсети, для которых будет разрешен доступ к dns серверу. У меня это подсеть 10.20.1.0/24.
2️⃣ Идём в раздел CATEGORY ⇨ CUSTOM и добавляем новую категорию. Я назвал её VK_OK. После создания нажимаем на редактирование и добавляем в список домены для блокировки.
3️⃣ Идём в раздел POLICY ⇨ POLICY и создаём новую политику. Нажимаем на редактирование, переходим на вкладку BLOCKED CATEGORIES и выбираем там созданную ранее категорию.
4️⃣ Идём в раздел USER ⇨ USER и создаём там новый список, открываем на редактирование. В параметре Work-time Policy выбираем созданную ранее политику. Во вкладке ADD IP указываем IP адреса или подсети, которые будут входить в создаваемый список.
5️⃣ Идём в раздел SYSTEM ⇨ SETUP и включаем там параметр Enable User Authentication. Я про него забыл и в итоге ничего не работало.
Вот и всё. Я довольно быстро разобрался, просто потыкав веб интерфейс. Там всё интуитивно понятно, плюс многие параметры описаны. Теперь пользователь из списка при открытии заблокированных сайтов будет перенаправлен на внутреннюю страницу. Она может быть настроена. Он увидит предупреждение о недоверенном TLS сертификате, так как по умолчанию используется самподписанный. На самой странице с редиректом будет указано, что данный сайт заблокирован, так как входит в соответствующий список.
Такой вот относительно простой и эффективный способ блокировки доступа к сайтам на основе фильтрации DNS запросов. Помимо этого nxfilter всё логирует, собирает статистику, выводит её на дашборд, формирует отчёты. В общем, функциональная и удобная программа.
⇨ Сайт
#dns
Кратко опишу возможности этого сервера:
◽️обслуживание dns запросов из локальной сети;
◽️аутентификация пользователей на основе ip адресов, паролей, учётных записей из Active Directory (в том числе прозрачная);
◽️использование готовых списков для запрета доступа к каким-то сайтам, а также создание своих списков;
◽️логирование всех dns запросов;
◽️создание гибких политик доступа к сайтам на основе пользователей, групп пользователей, времени суток;
◽️отчёты и оповещения о событиях фильтрации.
Сам продукт бесплатен, монетизируется за счёт подписок на регулярно обновляемые списки сайтов, разбитых на категории. На них, соответственно, можно не подписываться и использовать программу бесплатно без ограничения. Коммерческое использование допускается. Программа написана на Java, поэтому кроссплатформенна. Можно запускать как на Linux, так и на Windows.
Показываю процесс установки на Debian 12. Устанавливаем Java и sudo (нужен установщику):
# apt install openjdk-17-jdk-headless sudo
Скачиваем пакет и устанавливаем:
# wget https://pub.nxfilter.org/nxfilter-4.7.0.5.deb
# dpkg -i nxfilter-4.7.0.5.deb
Запускаем службу. 80-й порт на сервере должен быть свободен, так как веб интерфейс по умолчанию запускается на этом порту:
# systemctl enable --now nxfilter
Служба какое-то время будет создавать свою базу данных и индексы. Наблюдать за процессом можно в логе:
# tail -f /nxfilter/log/nxfilter.log
Как только процесс завершится, можно идти в веб интерфейс по адресу сервера: http://10.20.1.36/admin/ Учётка: admin / admin. Мне почему-то после логина показывалась страница с блокировкой, хотя аутентификация проходила нормально. Я просто открыл страницу http://10.20.1.36/dashboard.jsp и оказался в панели управления. После этого всегда успешно заходил в админку.
Кратко покажу, как тут всё устроено. Для примера добавим пользователя, который будет проходить аутентификацию на основе своего IP адреса, то есть автоматом. Создадим политику, которая будет блокировать доступ к доменам vk.com и ok.com и назначим эту политику этому пользователю.
1️⃣ Идём в раздел DNS ⇨ Setup и указываем DNS серверы, на которые будем перенаправлять запросы. В разделе DNS ⇨ ACCESS CONTROL указываем подсети, для которых будет разрешен доступ к dns серверу. У меня это подсеть 10.20.1.0/24.
2️⃣ Идём в раздел CATEGORY ⇨ CUSTOM и добавляем новую категорию. Я назвал её VK_OK. После создания нажимаем на редактирование и добавляем в список домены для блокировки.
3️⃣ Идём в раздел POLICY ⇨ POLICY и создаём новую политику. Нажимаем на редактирование, переходим на вкладку BLOCKED CATEGORIES и выбираем там созданную ранее категорию.
4️⃣ Идём в раздел USER ⇨ USER и создаём там новый список, открываем на редактирование. В параметре Work-time Policy выбираем созданную ранее политику. Во вкладке ADD IP указываем IP адреса или подсети, которые будут входить в создаваемый список.
5️⃣ Идём в раздел SYSTEM ⇨ SETUP и включаем там параметр Enable User Authentication. Я про него забыл и в итоге ничего не работало.
Вот и всё. Я довольно быстро разобрался, просто потыкав веб интерфейс. Там всё интуитивно понятно, плюс многие параметры описаны. Теперь пользователь из списка при открытии заблокированных сайтов будет перенаправлен на внутреннюю страницу. Она может быть настроена. Он увидит предупреждение о недоверенном TLS сертификате, так как по умолчанию используется самподписанный. На самой странице с редиректом будет указано, что данный сайт заблокирован, так как входит в соответствующий список.
Такой вот относительно простой и эффективный способ блокировки доступа к сайтам на основе фильтрации DNS запросов. Помимо этого nxfilter всё логирует, собирает статистику, выводит её на дашборд, формирует отчёты. В общем, функциональная и удобная программа.
⇨ Сайт
#dns
Пройдусь немного по важной теории по поводу работы в консоли bash. Я в разное время всё это затрагивал в заметках, но информация размазана через большие промежутки в публикациях. Имеет смысл повторить базу.
Покажу сразу очень наглядный пример:
В первом случае ключ не сработал, а во втором сработал, хотя запускал вроде бы одно и то же. А на самом деле нет. В первом примере я запустил echo из состава оболочки bash, а во втором случае - это бинарник в файловой системе. Это по факту разные программы. У них даже ключи разные.
Узнать, что конкретно мы запускаем, проще всего через type:
В первом случае прямо указано, что echo - встроена в оболочку.
И ещё один очень характерный пример:
Очень часто ls это не утилита ls, а алиас с дополнительными параметрами.
Когда вы вводите команду в терминал, происходит следующее:
1️⃣ Проверяются алиасы. Если команда будет там найдена, то поиск остановится и она исполнится.
2️⃣ Далее команда проверяется, встроена в ли она в оболочку, или нет. Если встроена, то выполнится именно она.
3️⃣ Только теперь идёт поиск бинарника в директориях, определённых в
У последнего варианта тоже есть свои нюансы. У вас может быть несколько исполняемых файлов в разных директориях с одинаковым именем. Ситуация нередкая. Можно столкнуться при наличии разных версий python или php в системе. Поиск бинарника ведётся по порядку следования этих директорий в переменной слева направо.
Что раньше будет найдено в директориях, определённых в этой строке, то и будет исполнено.
И ещё важный нюанс по этой теме. Есть привычные команды из оболочки, которых нет в бинарниках. Например, cd.
В выводе последней команды пусто, то есть бинарника
А вот если вы cd используете в юните systemd, то ничего не заработает:
Вот так работать не будет. Systemd не будет запускать автоматом оболочку. Надо это явно указать:
То есть либо явно указывайте bash, либо запускайте скрипт, где bash будет прописан в шебанге.
❗️В связи с этим могу дать совет, который вам сэкономит кучу времени на отладке. Всегда и везде в скриптах, в кронах, в юнитах systemd и т.д. пишите полные пути до бинарников. Команда, в зависимости от пользователя, прав доступа и многих других условий, может быть запущена в разных оболочках и окружениях. Чтобы не было неожиданностей, пишите явно, что вы хотите запустить.
#bash #terminal
Покажу сразу очень наглядный пример:
# echo --version
--version
# /usr/bin/echo --version
echo (GNU coreutils) 9.1
В первом случае ключ не сработал, а во втором сработал, хотя запускал вроде бы одно и то же. А на самом деле нет. В первом примере я запустил echo из состава оболочки bash, а во втором случае - это бинарник в файловой системе. Это по факту разные программы. У них даже ключи разные.
Узнать, что конкретно мы запускаем, проще всего через type:
# type echo
echo is a shell builtin
# type /usr/bin/echo
/usr/bin/echo is /usr/bin/echo
В первом случае прямо указано, что echo - встроена в оболочку.
И ещё один очень характерный пример:
# type ls
ls is aliased to `ls --color=auto'
Очень часто ls это не утилита ls, а алиас с дополнительными параметрами.
Когда вы вводите команду в терминал, происходит следующее:
1️⃣ Проверяются алиасы. Если команда будет там найдена, то поиск остановится и она исполнится.
2️⃣ Далее команда проверяется, встроена в ли она в оболочку, или нет. Если встроена, то выполнится именно она.
3️⃣ Только теперь идёт поиск бинарника в директориях, определённых в
$PATH
.У последнего варианта тоже есть свои нюансы. У вас может быть несколько исполняемых файлов в разных директориях с одинаковым именем. Ситуация нередкая. Можно столкнуться при наличии разных версий python или php в системе. Поиск бинарника ведётся по порядку следования этих директорий в переменной слева направо.
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Что раньше будет найдено в директориях, определённых в этой строке, то и будет исполнено.
И ещё важный нюанс по этой теме. Есть привычные команды из оболочки, которых нет в бинарниках. Например, cd.
# type cd
cd is a shell builtin
# which cd
В выводе последней команды пусто, то есть бинарника
cd
нет. Если вы будете использовать cd в скриптах, то проблем у вас не будет, так как там обычно в шебанге указан интерпретатор. Обычно это bash или sh, и там cd присутствует.А вот если вы cd используете в юните systemd, то ничего не заработает:
ExecStart=cd /var/www/ ....... && .........
Вот так работать не будет. Systemd не будет запускать автоматом оболочку. Надо это явно указать:
ExecStart=/usr/bin/bash -с "cd /var/www/ ......."
То есть либо явно указывайте bash, либо запускайте скрипт, где bash будет прописан в шебанге.
❗️В связи с этим могу дать совет, который вам сэкономит кучу времени на отладке. Всегда и везде в скриптах, в кронах, в юнитах systemd и т.д. пишите полные пути до бинарников. Команда, в зависимости от пользователя, прав доступа и многих других условий, может быть запущена в разных оболочках и окружениях. Чтобы не было неожиданностей, пишите явно, что вы хотите запустить.
#bash #terminal
Несколько лет назад я уже писал про бесплатный Radmin VPN. Интересное простое решение для организации совместного доступа к группе компьютеров. На тот момент у меня создалось впечатление, что это какой-то полузаброшенный старый проект. Но на деле это оказалось не так. Основной продукт Radmin сервер продолжает развиваться, продаваться, и все бесплатные вспомогательные программы тоже потихоньку обновляются.
Radmin VPN — приложение только под Windows. После установки оно создаёт новое сетевое соединение, подключается к своему серверу, назначает компьютеру серый IP адрес с маской 255.0.0.0. Далее вы можете создать локальную сеть, закрытую отдельным паролем и собирать в эту сеть подключенные компьютеры.
Я проверил, как это работает. Установил Radmin VPN на 3 машины: Win10, Win11, WinSRV2019. Добавил их в единую сеть. Они сразу же увидели друг друга: стали пинговаться по своим серым адресам, заработал доступ к файлам через
Не знаю, насколько это безопасный способ подключения. Я так понял, что все клиенты этой сети сидят в общем адресном пространстве 26.0.0.0 с маской 255.0.0.0. Вы можете создавать публичные сети для совместной онлайн игры. Посмотрел на доступный список подобных сетей. Их очень много на разных языках. То есть продуктом реально пользуются по всему миру. Зашёл в одну такую публичную сеть - стал видеть все компы из этой сети по их серым IP адресам. Они видны, так как все участники сети отображаются в общем списке. Как только из общей сети выходишь, доступ к её членам по IP пропадает.
В целом, не вижу тут каких-то серьёзных сетевых проблем, если настроить файрвол и разрешить доступ только со своих серых IP адресов. Они статичны. Можно разрешить только те протоколы, что вам нужны. Например, RDP. У него своё шифрование, так что можно спокойно пользоваться поверх любых сетей.
А так в целом продукт очень простой для использования. Будет удобно для тех, кто не хочет или не может, не умеет, настраивать свои VPN серверы. Можно детей научить пользоваться, чтобы играли с приятелями в онлайн игры. Тот же Minecraft.
⇨ Сайт
Помимо Radmin VPN у этой компании есть ещё два неплохих бесплатных продукта для сисадминов, работающих с локальными сетями и пользователями:
▪️ Advanced IP Scanner
▪️ Advanced Port Scanner
Думаю, по названиям и так понятно, что эти программы делают - сканируют локалку, ищут хосты в ней и проверяют открытые порты.
#vpn
Radmin VPN — приложение только под Windows. После установки оно создаёт новое сетевое соединение, подключается к своему серверу, назначает компьютеру серый IP адрес с маской 255.0.0.0. Далее вы можете создать локальную сеть, закрытую отдельным паролем и собирать в эту сеть подключенные компьютеры.
Я проверил, как это работает. Установил Radmin VPN на 3 машины: Win10, Win11, WinSRV2019. Добавил их в единую сеть. Они сразу же увидели друг друга: стали пинговаться по своим серым адресам, заработал доступ к файлам через
\\26.210.121.198\c$
, подключение по RDP. Никаких настроек делать не пришлось, кроме подключения к созданной сети через клиента Radmin VPN. Сам софт доступен без регистрации и каких-то дополнительных действий. Не знаю, насколько это безопасный способ подключения. Я так понял, что все клиенты этой сети сидят в общем адресном пространстве 26.0.0.0 с маской 255.0.0.0. Вы можете создавать публичные сети для совместной онлайн игры. Посмотрел на доступный список подобных сетей. Их очень много на разных языках. То есть продуктом реально пользуются по всему миру. Зашёл в одну такую публичную сеть - стал видеть все компы из этой сети по их серым IP адресам. Они видны, так как все участники сети отображаются в общем списке. Как только из общей сети выходишь, доступ к её членам по IP пропадает.
В целом, не вижу тут каких-то серьёзных сетевых проблем, если настроить файрвол и разрешить доступ только со своих серых IP адресов. Они статичны. Можно разрешить только те протоколы, что вам нужны. Например, RDP. У него своё шифрование, так что можно спокойно пользоваться поверх любых сетей.
А так в целом продукт очень простой для использования. Будет удобно для тех, кто не хочет или не может, не умеет, настраивать свои VPN серверы. Можно детей научить пользоваться, чтобы играли с приятелями в онлайн игры. Тот же Minecraft.
⇨ Сайт
Помимо Radmin VPN у этой компании есть ещё два неплохих бесплатных продукта для сисадминов, работающих с локальными сетями и пользователями:
▪️ Advanced IP Scanner
▪️ Advanced Port Scanner
Думаю, по названиям и так понятно, что эти программы делают - сканируют локалку, ищут хосты в ней и проверяют открытые порты.
#vpn
iptables-proxmox.sh
4.8 KB
Поискал по каналу и не нашёл ни одной заметки, где бы я рассказал и показал на практике, как я настраиваю iptables на гипервизорах Proxmox. Я всегда в обязательном порядке это делаю. Не утверждаю, что так, как настраиваю я, правильно и наиболее подходящий вариант. Просто привык делать именно так, проблем с этим не было, поэтому закрепилось. Воспроизвожу из раза в раз эту настройку.
Порядок настройки следующий:
1️⃣ Сохраняю список правил в файл
Настройку делаю на чистом гипервизоре, поэтому даже если ошибусь где-то, то проблемы это не вызовет. Набор правил отлажен, обычно проблем нет, если не ошибся с именами интерфейсов.
2️⃣ Убеждаюсь, что после выполнения скрипта появился файл-экспорт с набором правил
Вешаю загрузку правил iptables на поднятие wan интерфейса.
3️⃣ Перезагружаю сервер и убеждаюсь, что всё нормально поднимается, правила применяются, доступ к серверу у меня есть.
4️⃣ Если нужно добавить или изменить какое-то правило, то правлю файл
Если у вас хост Proxmox выполняет роль шлюза, то не забудьте проверить, что параметр
В наборе правил пример с работающего сервера. На основе него можете сформировать свой набор правил. Я там некоторые правила закомментировал, так как нужны они будут не всем. Оставил их для примера.
Формирую набор правил именно в таком виде, потому что он мне кажется удобным и наглядным. Можно быстро оценить все правила, оставить комментарии, что-то добавить.
#proxmox #iptables
Порядок настройки следующий:
1️⃣ Сохраняю список правил в файл
/etc/iptables.sh
. Адаптирую под текущие условия гипервизора: меняю имена сетевых интерфейсов, IP адреса. Делаю его исполняемым. Обычно сразу же проверяю, просто запустив его. # mcedit /etc/iptables.sh
# chmod +x /etc/iptables.sh
# bash /etc/iptables.sh
# iptables -L -v -n
Настройку делаю на чистом гипервизоре, поэтому даже если ошибусь где-то, то проблемы это не вызовет. Набор правил отлажен, обычно проблем нет, если не ошибся с именами интерфейсов.
2️⃣ Убеждаюсь, что после выполнения скрипта появился файл-экспорт с набором правил
/etc/iptables.rules
. Добавляю применение правил в файл /etc/network/interfaces
:iface enp5s0 inet manual
post-up iptables-restore < /etc/iptables.rules
Вешаю загрузку правил iptables на поднятие wan интерфейса.
3️⃣ Перезагружаю сервер и убеждаюсь, что всё нормально поднимается, правила применяются, доступ к серверу у меня есть.
4️⃣ Если нужно добавить или изменить какое-то правило, то правлю файл
iptables.sh
, а когда закончу, запускаю его. Он обновляет набор правил в iptables.rules
, так что после перезагрузки хоста изменённые правила сохранятся.Если у вас хост Proxmox выполняет роль шлюза, то не забудьте проверить, что параметр
net.ipv4.ip_forward=1
активен в /etc/sysctl.conf
. Без него NAT для виртуалок не заработает. Точнее не сам нат, а передача пакетов между локальным и wan интерфейсом. Если в качестве шлюза для VM выступает отдельная VM, то как минимум из набора правил исчезает NAT и всё, что касается локалки и проброса портов. А на шлюз уезжает этот же шаблон с правилами и там правится по месту. В наборе правил пример с работающего сервера. На основе него можете сформировать свой набор правил. Я там некоторые правила закомментировал, так как нужны они будут не всем. Оставил их для примера.
Формирую набор правил именно в таком виде, потому что он мне кажется удобным и наглядным. Можно быстро оценить все правила, оставить комментарии, что-то добавить.
#proxmox #iptables
===============================
Регулярно встречаю мемы на тему Javascript. Я на нём программировать не умею, могу только что-то готовое подправить, так что не совсем понимаю. Эти мемы реально актуальные или это что-то из устаревшего? Там действительно какая-то особенная арифметика, что над ней постоянно шутят?
#юмор
Регулярно встречаю мемы на тему Javascript. Я на нём программировать не умею, могу только что-то готовое подправить, так что не совсем понимаю. Эти мемы реально актуальные или это что-то из устаревшего? Там действительно какая-то особенная арифметика, что над ней постоянно шутят?
#юмор