Записки IT специалиста
Ir al canal en Telegram
IT-канал, просто о сложном https://interface31.ru Купить рекламу: https://telega.in/c/interface31
Mostrar más9 025
Suscriptores
+224 horas
+57 días
+2430 días
Archivo de publicaciones
Зимние ботинки с мехом UGG – 15.000 ₽
STYLAR: брендовая одежда, обувь и аксессуары
✅ Премиальные бренды, которые ты знаешь — без лишних наценок и напрямую от поставщиков. Работаем уже более 5 лет!
⚡ Tom Ford, EA7, Burberry, Premiata, Moncler, Chrome Hearts, Loro Piana, Prada, Brunello Cucinelli, Hugo Boss, LV, Tommy Hilfiger, D&G, Polo Ralph Lauren, Hermes и др.
🚗 Доставка с примеркой по Москве, в другие города России и СНГ — быстро, надёжно и без задержек.
💰 Скидки до -80% в нашем дисконт Telegram-канале.
❤️ Тысячи моделей в наличии, новинки каждый день — без переплат и лишней суеты!
Посмотреть каталог
#реклама
О рекламодателе
CrowdSec – как система предотвращения вторжений (IPS)
CrowdSec – это популярное ПО с открытым кодом для предотвращения вторжений, многие считают его современным аналогом Fail2ban, однако это не совсем так.
Также сразу внесем ясность: ни Fail2ban, ни CrowdSec не являются средствами защиты от атак на отказ в обслуживании – DDoS, так как являются достаточно ресурсоемкими приложениями и способны в таком сценарии еще сильнее нагрузить сервер.
Но такая задача и не преследуется, данное ПО предназначено для защиты от вторжений: перебора паролей, взлома, проактивного анализа, эксплуатации уязвимостей.
Так чем не угодил Fail2ban, не считая, что CrowdSec стильный, модный, молодежный, весь из себя модульный, написан на Go и содержит встроенный дашборд и мониторинг.
Ключевое различие в подходе к обеспечению безопасности. Fail2ban прост, но в своей простоте он застыл на уровне 15-20 летней давности. Не учитывая современных подходов и сценариев.
Схему работы Fail2ban можно представить в упрощенном виде так:
Лог → Парсинг/Regex → Решение → ДействиеОсновной источник событий – это регулярные выражения, которые получают из лога нужные события, например, неудачная попытка ввода пароля. Затем идет простейший счетчик и, если событие повторилось 5 раз за 10 минут источник события улетает в бан. Просто и незамысловато. Но это работало 15 лет назад, сейчас же интернет кишит умными ботами, которые один раз попав под бан вычисляют его временные параметры и продолжают свое дело так, чтобы не попадать в фильтры. CrowdSec предлагает принципиально иную схему, хотя во многом она похожа на предшественника:
Лог → Парсер → Событие → Сценарий → Решение → ДействиеЗдесь не просто по Regex выделяются нужные строки лога, а выделяются значимые события, которые потом не просто изменяют счетчик, а передаются на сценарный анализ. Сценарий – это не только ответ на вопрос: что произошло, но и попытка определить, чтобы это могло значить. Сценарий содержит основные паттерны атак и если событие ложится в паттерн, то это одно, а если выбивается из него – то совсем другое, хотя это может быть одно и тоже событие. Для примера: пользователь забыл пароль и неспеша подбирает его, скажем одна попытка через разные промежутки времени. Четыре неудачных и потом вспомнил, вошел. Потом запускает другой клиент и там автоматически подставился старый пароль. Fail2ban однозначно отправит пользователя в бан. CrowdSec, при наличии грамотно написанного сценария, во-первых, учтет, что вход похож на подбор пароля человеком, не ботом, а по факту удачного входа сбросит прошлые неудачные попытки. Если говорить грубо, то принципиальная разница в том, что Fail2ban просто считает ошибки, а CrowdSec пытается понять поведение. Но за все надо платить. Бытует мнение, что так как Fail2ban написан на Python, а CrowdSec на Go – последний быстрее и менее ресурсоемкий. Однако это не так. Fail2ban большую часть времени, пока парсер не выдал новое событие может находиться в состоянии покоя и ничего не делать, тогда как CrowdSec постоянно анализирует поведение на соответствие сценариям, т.е. работает фактически непрерывно. Говорит ли это о том, что Fail2ban устарел? И, да и нет. Если вам нужно что-то простое и незамысловатое – выбор за старым добрым Fail2ban. Но это защита реактивная, которая сработает уже по факту. Если же вы начинаете новый проект и нуждаетесь в проактивной защите, которая отсечет злоумышленника еще до, то обратите внимание на CrowdSec.
Панно из ароматного сибирского можжевельника для бани
Панно из ароматного сибирского можжевельника купить со скидкой 30%. Без клея. Редкие большие спилы. Расслабляющий аромат.
Узнать больше
#реклама 16+
сибирский-можжевельник.рф
О рекламодателе
Гистерезис как средство стабилизации триггеров в Zabbix
Кто постоянно работает с Zabbix знает такое явление как дребезг триггеров (или флаппинг), когда контролируемое значение колеблется около значения срабатывания триггера и приводит к постоянному его срабатыванию и восстановлению.
Это неприятно, так как приводит к резкому росту количества уведомлений и именно с этим явлением предлагают бороться, но на самом деле проблема лежит глубже, это проблема иллюзии восстановления.
О чем это мы? Давайте возьмем для примера триггер High memory utilization, который имеет следующее выражение срабатывания:
min(/Linux by Zabbix agent/vm.memory.utilization,5m)>{$MEMORY.UTIL.MAX}
Оно означает, что если все значения за последние 5 минут были выше порога, то триггер сработает. Это обусловлено использованием min(), фактически мы берем наименьшее значение за 5 минут и сравниваем с порогом.
Поэтому набор значений:
89 90 91 89 92 95 – не сработает, min = 89а набор:
91 93 95 91 92 94 – сработает, min = 91При этом фактически ситуация по памяти у нас не меняется и триггер или будет постоянно флапать или замолчит, и мы будем уверены, что ситуация выправилась, хотя на самом деле это не так и она продолжает оставаться критичной. Как этого избежать? Ввести гистерезис, т.е. переводить триггер в состояние восстановления не сразу после того, как выражение срабатывания перестало работать, а с задержкой, когда мы будем уверены, что ситуация действительно нормализировалась. Примем для этого значения порог срабатывания – 5%, при этом условием восстановления будет то, что за 5 минут ни одно значение не превысит этот порог. Теперь, после срабатывания триггера по памяти (штатное значение 90%) он не перейдет в состояние восстановления до тех пор, пока утилизация памяти стабильно не снизится менее 85%. Для этого в настройках триггера добавим выражение восстановления и запишем туда следующий текст:
max(/Linux by Zabbix agent/vm.memory.utilization,5m) < ({$MEMORY.UTIL.MAX} - 5)
Обратите внимание, что здесь мы используем не min(), а max(), так как у нас ни одно значение метрики не должно в течении 5 минут превысить пороговое.
Таким образом мы ввели четкий 5% коридор, который не только предотвращает флаппинг триггера, но и защищает нас от иллюзии ложного восстановления, когда триггер перешел в состояние ОК, но значения остались близки к критическим.
Рекомендуем настроить подобный гистерезис для всех триггеров, имеющих критическое значение для системы, где мы должны быть твердо уверенны, что проблема действительно ушла, а не затаилась на время.tcpdump – сеть как на ладони
При диагностике сетей очень важно убедиться в том, что нужные пакеты приходят на нужный узел и не просто приходят, а соответствуют критериям, которые вы указали в правилах фильтрации.
Иначе можно долго гадать, что происходит и почему не работает то, что «по идее» должно работать. Поэтому не будем гадать, а просто посмотрим трафик своими глазами, в этом нам поможет утилита
tcpdump.
Для ее установки выполните:
apt install tcpdump
После чего запустите ее с ключом -D, чтобы посмотреть какие интерфейсы в системе она видит и откуда может слушать трафик.
tcpdump -D
Далее мы можем просто запустить:
tcpdump -i enp3s0
И сразу утонем в количестве информации, разобраться в которой будет решительно невозможно, поэтому, чтобы получить выжимку мы будем использовать фильтры, самые популярные из них:
▫️port
▫️host
▫️src
▫️dst
▫️tcp
▫️udp
▫️icmp
Например, мы хотим посмотреть все пакеты с портом назначения UDP 34567:
tcpdump -i enp3s0 udp dst port 34567
Указанную нами конструкцию следует читать как: протокол UDP - порт назначения 34567.
Теперь утилита нам покажет все пакеты, которые соответствую данному критерию: у которых транспортный протокол UDP и в поле порт назначения стоит 34567.
А если мы хотим посмотреть пакеты только от определенного узла, чтобы понять доходит к нам на сервер он него что-нибудь или нет. Усложним фильтр и добавим в него две группы условий. Для их соединения можно использовать логические выражения:
▫️AND
▫️OR
Отдельно для отрицания условия можно использовать
▫️NOT
Например:
tcpdump -i enp3s0 src host 203.0.113.11 and udp dst port 34567
Здесь мы фильтруем по двум условиям: хост источник и протокол - порт назначения пакета.
Вот здесь может возникнуть вопрос, а почему нельзя написать так:
tcpdump -i enp3s0 src host 203.0.113.11 udp dst port 34567
Вроде бы как пол логике вещей условия все равно соединяются как-бы по логическому И, однако это неверно. tcpdump требует явного указания условии соединения различных примитивов.
В нашем условии два примитива: хост и порт. Общий синтаксис примитива можно описать выражением:
[протокол] [направление] {host|net|port|portrange} значение
В нашем случае примитивы взяты в фигурные скобки, каждый примитив должен явно соединяться через логический оператор. Например, наоборот, все пакеты, кроме определенного узла:
tcpdump -i enp3s0 udp dst port 34567 and not src host 203.0.113.11
Если мы хотим захватить определенное количество пакетов, то используйте ключ -с:
tcpdump -i enp3s0 -с 50 src host 203.0.113.11 and udp dst port 34567
Данная команда захватит строго 50 пакетов, соответствующих условию.
Чтобы увеличить количество выводимой информации добавьте ключ -v[v], чем больше v вы указали, тем на более глубокий уровень будет разбираться информация пакета, но не обольщайтесь, если пакет не содержит дополнительных подробностей, но ничего нового вы не увидите.
При работе tcpdump пытается разрешать адреса в DNS-имена, а порты в имена служб, чтобы предотвратить такое поведение используйте ключ -n:
tcpdump -i enp3s0 -n src host 203.0.113.11 and tcp dst port 22
Но все это диагностика в реальном времени, а как быть, если мы хотим изучить полученный дамп подробно, в спокойной обстановке? Все просто, нужно записать его в файл, для этого предназначена опция -w:
tcpdump -i enp3s0 -c 50 src host 203.0.113.11 and tcp dst port 22 -w mydump.pcap
Теперь 50 пакетов, попадающих под фильтр, будут записаны в файл mydump.pcap, если вы не указали количество, то в файл запишется все, что tcpdump успел захватить, пока вы не прервали его работу через Ctrl+C.
Записанный файл можно открыть любым подходящим ПО, наиболее популярным является открытый анализатор пакетов Wireshark.Honor — то, что вы искали
✅ Твой смартфон
✅ Твой выбор
✅ Твои правила
Купить
#реклама
market.yandex.ru
О рекламодателе
Free или Available memory в Linux
В очередной раз сталкиваюсь с тем, что администраторы не понимают разницу между этими двумя показателями оперативной памяти в Linux.
Например, команда
free -m может дать нам такой вывод:
total used free shared buff/cache available Mem: 60169 27996 9001 8472 23171 22576
На первый взгляд может показаться, что все хорошо, ведь доступно еще практически треть памяти. Но на самом деле не очень. Потому как свободно всего 9 ГБ.
Почему так? Для этого нужно углубиться в принципы организации памяти в Linux. Кроме занятой процессами памяти – used в системе присутствует еще буферы и кеш - buff/cache, которые содержат разделяемые библиотеки, буферы ввода-вывода и т.д. и т.п., что позволяет системе меньше обращаться к диску.
Можем ли мы сбросить буферы и очистить кеш? Да, можем, но когда после этого приложению потребуется какие-то данные или вызов библиотеки – то все это снова будет подгружено с жесткого диска и вполне может оказаться, что сделали мы только хуже, так как производительность системы на некоторое время упрется в производительность дисков, пока снова не будет заполнен кеш.
Поэтому в данной ситуации рассчитывать на 22,5 ГБ доступной памяти будет крайне неосмотрительно. В лучшем случае система может посчитать, что ей выгоднее сбросить страницы приложений в своп, вместо очистки кеша.
А в худшем в вовсе может решить, что сохранить кеш важнее, нежели сохранить процесс и застрелит его при помощи OOM Killer.
Кстати, системы мониторинга, тот же Zabbix будут смотреть именно на свободную память и выдавать вам алерты при ее исчерпании, хотя доступной памяти может быть еще много.
Также рекомендуем прочесть следующие статьи:
🔹 Linux - начинающим. Что такое пространства подкачки и как они работают
🔹 Linux - начинающим. Что такое OOM Killer и как он работаетКорпоративные сети 2026 – конференция по сетевым технологиям. Никакой рекламы. Только обмен опытом.
🔗 Регистрация
Участие бесплатное, но регистрация обязательна
📅 8 апреля 2026 в 11:30
📍 Москва, ВК «Тимирязев Центр» (Верхняя аллея, 6, стр. 1)
Ⓜ️ Станция метро «Петровско-Разумовская»
Сетевые инженеры и ИТ-руководители поделятся реальными кейсами эксплуатации, настройки и защиты сетей. Честно обсуждаем цены и особенности железа разных производителей.
🧩 Полная программа конференции тут
Лично пообщаться с экспертами и коллегами можно будет во время кофе-брейков и в зоне экспозиции оборудования.
Конференция пройдет в рамках выставки «Связь-2026», так что вы сможете совместить посещение крупнейшего отраслевого события и нашей профильной площадки.
Организатор мероприятия:
ООО «Элтекс Коммуникации» — официальный дилер завода Eltex.
Ждем Вас на КС-2026!
#eltex #eltexcm #cnets #cnets2026 #связь2026 #кс2026
@eltexcm
#реклама
О рекламодателе
А в розетку включить не пробовали?
В продолжение первоапрельской темы расскажу реальный случай. Было это в начале нулевых и работал я в компьютерной фирме. Был у нас один достаточно крупный дилер из области и неплохой мужик сам по себе, назовем его Юра.
Так вот, Юра купил навороченный компьютер и что-то там его не совсем устраивало, поэтому он заранее с нами договорился, мол привезу свой комп, посмотрите, магарыч с меня.
В общем привез, подключили мы его с моим начальником Колей и стали смотреть, а там совсем беда, не стартует… И так и эдак, ну никак.
Зовем Юру, мол попал ты пацан, мать мертвая, мать в гарантию, а это недели две, а то и месяц, мать то не простая, понтовая.
Юра в шоке, ведь утром еще все включалось, зовем посмотреть самого – убеждается, то матери карачун. Далее стадия принятия и все такое.
И тут подходит к нам другой сотрудник техотдела Женя, внимательно на нас смотрит, а потом задает единственный, но меткий вопрос:
- А в розетку включить не пробовали?
Оказалось, что лежащий на столе удлинитель типа «пилот» оказался никуда не подключен, ну как-то так исторически сложилось.
В итоге оказалось, что проблемы Юры совсем не проблемы, мы быстро все решили и он поехал домой довольный. А Женя получил на домашний адрес большую пиццу.
Пригон Авто из Германии на 25-30% Выгоднее Рынка
Список готовых к пригону авто в нашем Telegram. С ценами под ключ👌
Видео-отзывы клиентов✅
Никаких 100% предоплат✅
Оплата по этапам✅
Только проверенные авто✅
Узнать больше
#реклама 16+
tgryx.ru
О рекламодателе
Шутки в IT бывают разные: бывают достаточно безобидные, а бывают очень злые и деструктивные.
Поэтому мы за первые. Старая добрая шутка на 1 апреля.
🤯🤯🤯
А какие IT-шутки знаете вы?
Вы когда-нибудь жалели о покупке для дома?
Перекрашивали стены — и через год они надоели. Брали мебель «в тренде» — и через два года она выглядела устаревшей. Вкладывали деньги в ремонт — и понимали, что половину можно было не делать.
В Telegram-канале «Экоокна» — о том, как улучшать дом разумно.
Что реально стоит своих денег, а что — маркетинг. Какой интерьер не надоест через год. Как обустроить дом, чтобы жить в нём с удовольствием годами.
Подписывайтесь!❤️
Узнать больше
#реклама
О рекламодателе
Логическая бомба
Казалось бы, на эту тему все говорено-переговорено, но с завидным постоянством наблюдаю как даже опытные коллеги регулярно создают логические бомбы.
Логическая бомба – это код, который при наступлении некоторых условий, которые можно заранее просчитать и предвидеть, производит некоторые деструктивные действия. И здесь трудно сослаться на случайность или недосмотр.
Почему же так происходит? На наш взгляд – это классическое «и так сойдет» и тот же самый русский авось. Т.е. надежда на то, что обстоятельства, приводящие к срабатыванию логической бомбы, не произойдут или находятся под контролем.
Рассмотрим классический пример, очистка устаревших данных, например, бекапов:
find -type f -mtime +90 -exec rm -rf {} \;
Что делает эта команда? Тупо ищет файлы старше 90 дней и удаляет их. И логических бомб тут сразу несколько.
1️⃣ Самая очевидная. Если у нас по какой-либо причине перестанут создаваться резервные копии, то через 90 дней у нас не останется ни одной. И тут ошибочно полагаться на мониторинг или иные средства контроля, так как сбой может произойти в любой части схемы.
Сначала сломался мониторинг, потом перестали создаваться копии – вот и все, привет горячий.
2️⃣ Далее. Команда работает без привязки к конкретному расположению. Если кто-то случайно переместит скрипт, то он подметет вообще случайные данные. Поэтому никаких относительных путей в подобных конструкциях быть не должно. Только абсолютные.
3️⃣ Теперь – самое неочевидное – find, который не рекомендуется использовать в скриптах в силу ряда особенностей. В частности, если нам попадется файл с пробелами в имени, то строка будет разбита на две, что приведет к неожиданным последствиям. Чаще всего удаление не произойдет, но может случиться разное.
Поэтому постараемся сразу учесть эти моменты. Удалять всегда нужно привязываясь не ко времени или еще каким-то внешним параметрам, а по количеству остающихся копий, в этом случае даже если у вас перестанут создаваться копии, то последние всегда останутся. Во многих случаях это гораздо лучше ситуации, когда копии нет вообще.
Т.е. оставляем не копии за последние 90 дней, а 90 последних копий (или более, если в день создается более одной копии).
Жестко привязываемся к путям и учитываем возможность появления пробелов в имени файла:
find /mnt/backup/ -type f -printf '%T@ "%p"\n' | \
sort -n | \
head -n -90 | \
awk '{print $2}' | \
xargs -I {} rm {}
Конструкция стала сложнее, мы, как и прежде ищем файлы, но сразу указываем директорию поиска, а список выводим построчно, в каждой строке размещая временную метку файла и его имя, взятое в кавычки.
Сортируем от самых старых к самым новым и отбрасываем последние 90 записей. Затем для каждой строки получаем второй аргумент (имя файла в кавычках) и передаем его на удаление.
Однозначно стало лучше, но не совсем. Что будет, если в эту папку попадут другие файлы? Они также будут удалены, при этом мы снова легко можем остаться без бекапов. Что будет если кто-то случайно закинет туда 100 новых файлов?
Правильно – из них останется только 90 самых последних и ни одного бекапа, ну или самый последний. Это видно на берегу? Видно. Значит это очередная логическая бомба и надо от нее избавляться.
Допустим, наши бекапы имеют имя base1-YYYY-MM-DD.dump, поэтому добавляем в строку поиска новое условие:
find /mnt/backup/increment/ -type f -name "base1*.dump" -printf '%T@ "%p"\n'
Или даже
find... -name "base1-*-*-*.dump"...Чем более строгое совпадение в шаблоне – тем безопаснее, но во всем нужно видеть меру и вовремя остановиться, потому что если увлечься, то можно погрязнуть в проверках для совсем уже маловероятных условий или событий. Да, и не забывайте логировать все что делают подобные скрипты, чтобы в случае какой-либо нештатной ситуации вы хотя бы могли выполнить работу над ошибками.
Идёт набор на бесплатный урок по пошиву одежды с нуля
За 1,5 часа в онлайн формате разберем базу работы с трикотажем:
✅ что делать, если нет оверлока, и как обойтись обычной швейной машинкой
✅3 лайфхака, без которых не получится шить качественно
✅как избежать ошибок при работе с трикотажем, на которых попадаются 90% новичков
Подойдёт любая швейная машинка, оверлок не обязателен.
⚡ Я проведу урок, на котором подробно, доступным языком буду объяснять каждый шаг. Это не просто вебинар, это полноценный качественный курс.
Получится у каждой, не сомневайтесь.
Скажу сразу, что повтора бесплатного урока не будет, он станет платным. Хотите научиться шить — занимайте место прямо сейчас!
👍 Для регистрации на бесплатный урок жмите "Зарегистрироваться":
Зарегистрироваться
#реклама 16+
foxmaman-sew.ru
О рекламодателе
Как быстро вычислить отвечающие на Ping узлы подсети в терминале Linux
Такая задача встречается довольно часто, когда вам нужно получить список «живых» узлов подсети, неважно с какими целями и сделать это нужно быстро и просто.
Вам поможет утилита fping, для ее установки воспользуйтесь командой:
apt install fping
Затем запустите ее с ключами:
fping -a -g 192.168.172.0/24 2>/dev/null
Разберем части команды подробнее:
▫️Ключ -a – предписывает вывести узлы, которые отвечают на ping
▫️Ключ -g – генерировать узлы назначения из указанного диапазона, можно указать начальный и конечный адреса через пробел или CIDR, как в нашем случае.
▫️ 2>/dev/null – подавляет вывод потока ошибок, чтобы не выводить сообщения о недоступных узлах
Как видим, поставленная нами задача решена просто и быстро.
Но это еще не все, рекомендуем ознакомиться со всеми возможностями fping выполнив:
fping -hКстати, советуем регулярно обращаться к справке даже тех утилит, которые вы знаете, это поможет узнать что-то новое (новые ключи) или вспомнить некоторые забытые возможности.
Всё, что вы любите, есть на Wildberries
Все мы ищем разное, но всегда находим что-то своё на WB — со скидками и доставкой
Перейти на сайт
#реклама
wildberries.ru
О рекламодателе
Полезная команда tee в Linux
Любой Linux-администратор, активно работающий в консоли, должен знать и умело использовать эту команду.
Как и все классические утилиты
tee выполняет одну задачу, но делает ее хорошо. Ее смысл можно представить в виде буквы Т - команда принимает на вход стандартны поток ввода и выдает его же в стандартный поток вывода, одновременно записывая его содержимое в один или несколько файлов.
Например:
command | tee file1.log
В данном случае мы не только увидим результат выполнения команды на экране, но и запишем его содержимое в файл file1.log.
Это удобно для фиксации промежуточного результата, особенно в целях логирования или отладки.
command1 | tee file1.log | command2
В примере выше мы передали результат работы первой команды на вход второй, попутно записав его в файл.
По умолчанию tee перезаписывает указанный файл, если же мы хотим его дописать, то следует использовать ключ -a:
command1 | tee -a file1.log
Еще один интересный ключ -i, который предписывает игнорировать команды завершения, такие как Ctrl + C.
Для чего это нужно? Допустим вы запустили какую-то длительную команду, результат которой вам нужно записать в файл, а потом решили ее прервать по Ctrl + C, при наличии данного ключа tee продолжит работу и корректно завершит запись в файл.
ping ya.ru | tee -i ping_ya.txt
Еще один вариант использование tee - это повышение прав для записи в системные файлы. Например:
sudo echo "строка_текста" > /etc/myconf.conf
Не увенчается успехом, а если сделать вот так, то все получится:
echo "строка_текста" | sudo tee /etc/myconf.conf
Как видим, tee - простая, но весьма удобная и функциональная команда.Всё, что вы любите, есть на Wildberries
Все мы ищем разное, но всегда находим что-то своё на WB, со скидками и доставкой
Перейти на сайт
#реклама
wildberries.ru
О рекламодателе
Эти добавки сделают из тебя гения!
Такое не увидишь в обычных каналах. Здесь собрана информация про редкие ноотропы, которые повышают продуктивность и выкручивают работу мозга на полную катушку. Только проверенная информация, основанная на исследованиях и никакой воды.
⚡ Вступай в закрытый клуб биохакеров ⚡
P.S.: Заявки на подписку принимаются автоматически
Подписаться
#реклама 16+
О рекламодателе
