ИТ-заметки: субъективно
56 subscribers
23 photos
203 links
ИТ заметки по Network, Ops, DevOps

🔗 it.mxav.ru
Download Telegram
Защита от простых наплывов запросов в Nginx

Часто, когда сайт начинает становится более популярным, всякие нехорошие люди (ботов люди создают) пытаются его положить наплывом запросов.
Можно попытаться защититься стандартными решениями на Nginx. В качестве ответов сервера здесь выдается 444 код (закрывает соединение без отправки данных), но можно ставить тот, который посчитаете нужным.

1. Когда в запросах идут левые заголовки, то можно оставить только нужные, а по остальным не отвечать:
if ($request_method !~ ^(GET|POST|HEAD)$ ) {
return 444;
}

2. Если запросы идут внешне нормальные, но с разными http_referer (например, с взломанных сайтов), то можно вести черные список при помощи map.
2.1 Перед разделом server в vhost создаем map
map $http_referer $bad_referer {
default 0;
"~https://example.com" 1;
}

Аналогично example.com можно добавлять в новой строке и другие http_referer.
2.2 В разделе server создаем условие на проверку
if ($bad_referer) { 
return 444;
}

Если в http_referer указан https://example.com, то он будет получать 444 от Nginx.

3. Если нужно ограничить количество запросов от IP-адресов, но некоторые адреса надо исключить, то можно применять limit_req со списком исключений (geo+map).
3.1 Формируем список перед разделом server в vhost
geo $limited_net {
default 1;
192.168.1.0/24 0;
}

Сеть 192.168.1.0/24 будет в исключениях.
3.2 Создаем map c $binary_remote_addr
map $limited_net $addr_to_limit {
0 "";
1 $binary_remote_addr;
}

$binary_remote_addr - параметр в Nginx, который отвечающий за адрес клиента.
3.3 Перед разделом server создаем условия по запросам. В данном случае создаем зону reqtest, где возможно отправлять с одного IP 10 запросов в секунду.
limit_req_zone $addr_to_limit zone=reqtest:10m rate=10r/s;

3.4 В location ставим limit_req с возможностью всплеска 50:
limit_req zone=reqtest burst=50;

Если нужно без задержек обрабатывать всплески, то надо добавить nodelay после burst. Если запросы выше всплеска, то будут отбрасываться.

4. Если надо ограничить количество одновременных запросов от IP-адреса, то можно применить limit_conn.
4.1 Перед разделом server создаем зону.
limit_conn_zone $binary_remote_addr zone=conntest:10m;

4.2 В разделе server указываем условия одновременных подключений. В данном примере 30.
limit_conn conntest 30;

Конечно, это всё защита не от серьезного DDOS'a, но в блокировке всяких мутных ботов может помочь. Плюс хорошо бы ещё добавить fail2ban для выявления и блокирования странных запросов в логах.

#devops@itmxav

😉 На сайте
Быстрая сортировка и удаление повторяющихся строк через терминал Linux

Короткая заметка, чтобы можно было быстро найти.
Иногда надо быстро отсортировать строки через терминал в Linux и убрать повторения.
Здесь хорошо может помочь конвейерные способы
cat file.txt | sort | uniq

или
sort file.txt | uniq

Или sort через параметр -u
sort -u file.txt


#linux@itmxav

😉 На сайте
❗️Новости

Добавил теги к заметкам. Текущие теги можно посмотреть в закрепленном сообщении.

Хорошего дня 😊
Запросы с User-Agent claudebot

В последнее время много запросов с User-Agent "claudebot" прилетает от разных IP.
Если загуглить, то Claudebot, возможно, относится к конторе Anthropic, которая работает по теме AI, хотя с РФ не дружит.
Может просто совпадение.
Зачем этот сканер нужен остается загадкой, но на всякий случай его можно заблокировать.

#devops@itmxav

😉 На сайте
Блокирование ботов по User-Agent в Nginx

Короткая заметка, чтобы можно было быстро найти.
Недавно касался темы ботов. Самый простой вариант заблокировать ботов по User-Agent в Nginx
if ($http_user_agent ~* (GPTBot|claudebot|GeedoProductSearch|GeedoBot|Amazonbot|Bytespider|SeopultContentAnalyzer|SeekportBot|DataForSeoBot|Barkrowler|BLEXBot|SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|PetalBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru|thesis-research-bot|fidget-spinner-bot|facebookexternalhit)){
return 444;
}

Если не хочется загружать конфиг, то можно вынести в отдельное место и подключить файл через include.

#devops@itmxav

😉 На сайте
Сбор конфигурации Zelax в Oxidized

Столкнулся с ситуацией, что для коммутаторов Zelax 30ХХ, на данный момент, нет модели в Oxidized.
В качестве тестового примера можно закоментить лишнее в ios.rb и назвать файл типа zlx.rb в папке model, потому что синтаксис необходимых команд схож.
В router.db можно добавить
NameRouter:zlx:cisco:IPAddress

В config можно добавить:
groups:
cisco:
username: usernameZLX
password: passwordZLX
model_map:
cisco: zlx

Конечно, пользователь на Zelax был создан заранее с нужным уровнем и нужными разрешенными командами, как в Cisco.
В тестовом варианте конфиг собрался. Может модель скоро и в официальном репозитории Oxidized появится.

#сети@itmxav
#devops@itmxav

😉 На сайте
Ведение записей в Telegram

Когда так или иначе обрабатываешь много информации, то часто надо делать заметки для себя. Возникает потребность в каком-нибудь приложении, чтобы записи можно быть открыть на смартфоне и на компьютере под разными операционными системами. Конечно, таких приложений много, и платных, и бесплатных: Google Keep, Evernote, Simplenote и т. д. Если есть возможность держать сервер, то можно, например, Nextcloud приспособить или сделать свой небольшой сайт в стиле ToDo-листа.

Пробовал разные варианты, но остановился всё же на Telegram, потому что он отвечал на мои критерии:
- Кроссплатформенность. Поддерживает разные операционки и можно даже через браузер зайти, если потребуется.
- Очень прост в управлении. Пишешь просто сообщение, а если задача выполнена или сообщение стало неактуально — удаляешь сообщение.
- Можно организовать многопользовательский режим. Просто добавить ещё человека и совместно обсуждать темы. Можно и без этого обойтись, но приятный момент.
- Можно передавать файлы.
- Можно делать отложенные сообщения. Некий аналог напоминалок в календаре.
- Можно общаться в рамках тем и поднять старое сообщение, если потребуется.
- Есть возможности закрепления тем и сообщений.
- Можно вести видеотрансляции через obs или просто созваниваться там же, где записи делаются. Конечно, эта функциональность необязательна, но приятный момент.

Думаю, что уже понятно как организовать такое в Telegram, но всё же кратко опишу:
1. Создаем группу и называем её как-то.
2. Переходим в редактирование группы и тыкаем включить темы. По умолчанию они выключены.
3. Дальше нажимаем в группе на круглую кнопку создать тему.
4. Называем тему и пишем сообщения по этой теме. Так можно создавать много тем.

Для примера прикладываю скриншот. Если у кого-то есть другие удобные варианты ведения записей, то пишите.

#разное@itmxav

🔗 На сайте
Zelax не отправляет логи в Graylog

Наткнулся на ситуацию, когда логи с оборудования Zelax не появляются в Graylog.

Сначала надо настроить Zelax. В документации почему-то информация по настройке Syslog'а yt подходит и настраивается немного иначе:
1. Включаем info-center
info-center enable

2. Указываем источника для канала
info-center source debug level 7 prefix on channel 2

Пояснения:
level Х - уровень сообщений (0 - emergencies, 1 - alerts, 2 - critical, 3 - errors, 4 - warnings, 5 - notifications, 6 - informational, 7 - debugging);
channel X - номер канала, где часть каналов уже определена:
channel 0 - передача сообщений уровня debugging в консоль;
channel 1 - передача сообщений уровня debugging в терминальный монитор;
channel 2 - зарезервирован под передачу на Syslog-сервер;
channel 3 - передача debugging trap в буфер;
channel 4 - передача сообщений уровня warning в память (logsdram);
channel 5 - передача сообщений уровня critical в память (lognvram).
3. Направляем вывод на сервер Graylog
info-center loghost IP_ADDRESS facility local7 channel 2

Пояснения:
IP_ADDRESS - адрес сервера;
facility - категория сообщения для сервера;
channel X - номер канала, который должен совпадать с предыдущей настройкой.

И, вроде, должно всё заработать. По анализатору трафика видно, что все пакеты доходят, но почему-то отображения логов нет.
Момент заключается в том, что Graylog не обрабатывает полученные пакеты, пока в Zelax не будет установлены параметры времени.
Настраиваем:
ntp enable
ntp server IP_ADDRESS_SERVER
clock timezone MSK add 3 0


Странно. На Cisco, Huawei, Eltex, HPE таких моментов нет и Graylog сам фиксирует время, главное чтобы данные пришли, а здесь нет 😐

#zelax@itmxav
#сети@itmxav

🔗 На сайте
Быстрый поиск файлов в Linux, содержащих определенный текст

Короткая заметка, чтобы можно было отыскать.
Когда надо быстро найти файлы с определенным текстом, то можно перейти в нужную папку и использовать grep:

grep -iRl "нужный_текст" ./


Главное не потерять точку перед /, а то поиск будет производиться от корня.

#linux@itmxav

🔗 На сайте
Как проверить fstab в Linux?

Иногда требуется проверить файл /etc/fstab.
Перед внесением изменений лучше забэкапить fstab.
cp -p /etc/fstab /etc/fstab.bak

Можно рассмотреть вариант с ключом -a. Т.е. смонтируются всё, что указано в fstab.
mount -a

Как вариант, можно использоваться mount с фейковым подключением, т.е. проверка без внесения изменений. Главное не использовать ключ -f во FreeBDS. Там значение ключа другое - force.
mount -fav

Либо через findmnt можно сделать проверку.
findmnt --verify --verbose


#linux@itmxav

🔗 На сайте
👍1
Как настроить Syslog на Cisco ASA 5500 серии?

Для начала надо настроить время. Указываем зону и NTP-сервер:
clock timezone MSK/MSD 3
ntp server IP_NTP_server source inside


Далее настроиваем куда отправлять логи. Отправляем логи через inside-интерфейс и указываем, что отправляем их на порт 1234. По умолчанию 514 порт, но иногда лучше поменять порт. Например, Graylog почему-то не хотел логи с 514 порта обрабатывать, хотя логи других нормально обрабатывались.
logging enable
logging trap informational
logging asdm errors
logging device-id string ASA55ver
logging host inside IP_syslog 17/1234


#cisco@itmxav
#сети@itmxav

🔗 На сайте
Изменения в скрипте с оповещением в RocketChat

Немного подправил payload в скрипте с оповещением в RocketChat. Посмотреть/скачать можно с сайта или Github'а.
Плюс так можно легко найти нужное сообщение через поиск в RocketChat'е. Почему-то поиск не может найти текст в attachments сообщения.

📝 Другие заметки по RocketChat:
- Как исправить apparmor DENIED в snap.rocketchat-server.rocketchat-mongo?
- Как сделать резервное копирование данных rocketchat server?
- Как обновить Rocket.chat через snap?
- Как сбросить пароль RocketChat (admin) SNAP?

#devops@itmxav

🔗 На сайте
Как посмотреть логи контейнера в Docker?

Просто посмотреть логи контейнера:
docker logs NameContainer


Отслеживать появляющиеся новые сообщения в логах:
docker logs -f NameContainer


Посмотреть логи за определенный период:
docker logs -f NameContainer --since 2024-04-30 --until 2024-05-01


📝 Другие заметки по Docker:
- Простая установка Docker
- Как установить docker-compose?
- Как собрать образ из контейнера Docker для отправки в реестр?
- Как работать с Docker под своим пользователем?
- Как узнать ip контейнера docker?

#docker@itmxav
#devops@itmxav

🔗 На сайте
Как зеркалировать трафик на коммутаторе Huawei S5700?

Чтобы зеркалировать трафик надо указать куда зеркалировать, откуда и какой трафик (входящий и/или исходящий).

1. Переходим в режим конфигурирования:
system-view

2. Выбираем порт наблюдения. Например 11
observe-port 1 interface GigabitEthernet0/0/11

3. Указываем порт откуда трафик зеркалировать. Например 10:
interface GigabitEthernet 0/0/10
port-mirroring to observe-port 1 both
quit


Если требуется только входящий трафик зеркалироваться, то
port-mirroring to observe-port 1 inbound

Только исходящий
port-mirroring to observe-port 1 outbound

4. Посмотреть порт наблюдения:
display observe-port

5. Посмотреть порт зеркалирования:
display port-mirroring


📝 Другие заметки по Huawei:
- Как задать время на коммутаторе Huawei?
- Как поменять старый пароль на новый на Huawei?

#huawei@itmxav
#сети @itmxav

🔗 На сайте
Как заблокировать сайты на Squid?

Чтобы заблокировать сайты на прокси со Squid надо:
1. Создать список с сайтами для блокировки
nano /etc/squid/blacklistsites

или
nano /etc/squid3/blacklistwebsites

2. Добавляем сайты в список. Например:
site1\.ru
site2\.ru

Т.к. работа будет происходить по регулярным выражениям,то точку надо экранировать
3. В начале acl'ов указываем каким адресам надо проверять список. В данном примере 10 сети:
acl url_filtred src 10.0.0.0/8

и ниже указываем сам пуст к списку:
acl blacklistsites url_regex -i "/etc/squid/blacklistwebsites"

4. Перед всеми http_access указываем, что надо блокировать соединения из списка:
http_access deny blacklistsites url_filtred

5. Проверяем конфиг:
squid -k parse

6. Если всё хорошо, то перечитываем конфигурационный файл без остановки Squid:
squid -k reconfigure


#linux@itmxav
#сети@itmxav

🔗 На сайте
Что-то как-то затянули они. Середина 24 года как бы 😁
🔥1
Ох уж этот Docker!

Как дальше жить, если кит уплывает:
1. Прописать registry-mirrors
{ "registry-mirrors" : [ "https://куда-то-там" ] }

в Linux
/etc/docker/daemon.json

или
~/.config/docker/daemon.json

Для Windows
C:\ProgramData\docker\config\daemon.json

Для Windows с Docker Desktop
C:\Users\<Пользователь>\.docker\daemon.json

И перечитать конфиг
systemctl reload docker

🙃 Но если скучно и одиноко в этом сером, мрачном мире, то
systemctl restart docker


2. Поднять свой удобный прокси и пустить все через него. Вот здесь описывал как настроить работу Docker через прокси.

📝 Другие заметки по Docker:
- Простая установка Docker
- Как установить docker-compose?
- Как собрать образ из контейнера Docker для отправки в реестр?
- Как работать с Docker под своим пользователем?
- Как узнать ip контейнера docker?

#docker@itmxav
#devops@itmxav

🔗 На сайте
Продолжая тему блокирования обновлений Firefox..

Несмотря на разные способы блокировки иногда каким-то образом Firefox умудряется обновляться и роняет открытые вкладки. Как вариант, можно использовать версию Firefox Developer Edition. В основных настройках есть пункт "Проверять наличие обновлений, но позволять вам решать, устанавливать ли их". На версии для Linux точно такое есть.Скорее всего уведомление о новых версиях будет часто появляться, но хоть так можно рулить обновлениями Firefox.

#разное@itmxav

🔗 На сайте
Ошибка target is busy при umount

Иногда при отмонтировании можно получить ошибку "target is busy".
1. Это значит, что какая-то программа работает ещё с тем, что нужно отмонтировать
sudo umount /path/to/target
umount: /path/to/target: target is busy

2. С помощью lsof можно узнать какой процесс задействован.
sudo lsof /path/to/target

Получили вот такой примерный вывод
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse file system /run/user/1000/doc
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2463085 user cwd DIR 7,65 2048 1792 /path/to/target

3. В данном случае у нас задействован процесс с PID 2463085. Точнее работает BASH. И правда был открыт терминал и находились именно в /path/to/target. После закрытия терминала или перехода в другую папку всё отмонтировалось как надо.
sudo umount /path/to/target


#linux@itmxav

🔗 На сайте
Новости про видео

Решил разделить видео на 3 основный направления:
1. SlowHowTo – видео, где объясняется, поясняется, что делается и зачем. Видео для тех, кто хочет послушать комментарии или объяснения того, что происходит. Длинные, «душные» видео.
2. FastHowTo – видео, где нет объяснений, а только показывается, как сделать что-то. Видео для тех, кто хочет быстро узнать, как сделать то или иное. Короткие видео.
3. FunnyHowTo - видео, где могут быть разные нестандартные подходы к решению задач, просто видео на тему «сделаю, потому что могу» или какой-то развлекательный контент.

Зачем это надо?
Очевидно, что все люди разные по уровню знаний. Для кого-то достаточно показать что-то без объяснений и всё станет понятно. Для кого-то нужны комментарии, пояснения, объяснений, а не просто «сделай так, так и вот так». Кто-то хочет отвлечься от загруженности по своим задачам, но есть потребность в развлекательном контенте.

Как понять где какое видео?
Все просто. В названии видео будет нужный тег [SlowHowTo], [FastHowTo] или [FunnyHowTo]. Также в ТГ в постах тоже будет указываться нужный тег #SlowHowTo #FastHowTo #FunnyHowTo
Через навигационное сообщение в ТГ можно легко найти всё и на сайте тоже будут теги, разделы.

🔗 На сайте
Небольшая заметка по Markdown

В Википедии говорится ,что
Markdown (МФА: [ˈmɑːkdaʊn], произносится маркда́ун) — облегчённый язык разметки, созданный с целью обозначения форматирования в простом тексте, с максимальным сохранением его читаемости человеком, и пригодный для машинного преобразования в языки для продвинутых публикаций (HTML, Rich Text и других).


Заголовки
Их можно определить следующим образом
# Заголовок первого уровня #
## Заголовок второго уровня ##
### Заголовок третьего уровня ###


Альтернативный вариант

Заголовок первого уровня
========================

Заголовок второго уровня
------------------------

Цитаты
> Текст цитаты

Ссылки
[Текст ссылки](http://example.com/ "Необязательный заголовок ссылки")

Списки
Неупорядоченный
- Первый элемент
- Второй элемент
- Вложенный первый элемент
- Вложенный первый элемент
- Вложенный второй элемент
- Третий элемент


Упорядоченный
+ Первый элемент
+ Второй элемент
+ Вложенный первый элемент
+ Вложенный первый элемент
+ Вложенный второй элемент
+ Третий элемент

Списки можно комбинировать.

Ссылки
\\Текст ссылки\http://ссылка_на_ресурс/\\
Текст перед ссылкой: \\http://ссылка_на_ресурс/\\


Таблицы
Пример таблицы с 3 столбцами и 3 строками, включая названия
! **1 столбец**
! **2 столбец**
! **3 столбец**
! Название в первом стобце 2 строке
! Текст во втором столбце второй строки.
! Текст в третьем столбце второй строки.
! Название во втором стобце 3 строке
! Текст во втором столбце третьей строки.
! Текст в третьем столбце третьей строки.


Способы есть разные выделения того или иного текста, ссылок, таблиц и т.п. Здесь для себя оставил некоторые моменты. Возможно, позже дополню. Если есть что добавить, то пишите.

Доп.материалы:
- Онлайн редактор
- Статья на Habr
- Статья на doka.guide

#разное@itmxav

🔗 На сайте