Получи случайную криптовалюту за регистрацию!

ServerAdmin.ru

Адрес канала: @srv_admin
Категории: Технологии
Язык: Русский
Количество подписчиков: 25.80K
Описание канала:

Авторская информация о системном администрировании.
Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed
Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Рейтинги и Отзывы

1.00

2 отзыва

Оценить канал srv_admin и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

0

3 звезд

0

2 звезд

0

1 звезд

2


Последние сообщения 2

2024-05-06 18:30:58 ​​В популярных файловых системах на Linux есть одна полезная особенность. Любой файл или каталог можно сделать неизменяемым с помощью атрибута immutable. Его ещё называют immutable bit. Его может установить только root. Он же его может и убрать.

Сразу покажу на примере, где это может быть актуально. Я уже как-то делал ранее заметки на тему заполнения локальной файловой системы, когда вы копируете что-то в точку монтирования, например, /mnt/backup, которая подключает сетевой диск. В случае, если диск по какой-то причине не подключился, а вы в точку монтирования /mnt/backup залили кучу файлов, они всё лягут локально в корень и заполнят его.

Бороться с этим можно разными способами. Например, проверять перед копированием монтирование с помощью findmnt. А можно просто с помощью флага immutable запретить запись в директорию:

# chattr +i /mnt/backup

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

# > /mnt/backup/file.txt
bash: /mnt/backup/file.txt: Operation not permitted

Убираем бит и пробуем ещё раз:

# chattr -i /mnt/backup
# > /mnt/backup/file.txt
# ls /mnt/backup/file.txt
/mnt/backup/file.txt

Посмотреть наличие этого бита можно командой lsattr. Для директории необходимо добавлять ключ -a, для отдельных файлов он не нужен.

# lsattr -a /mnt/backup
--------------e------- /mnt/backup/..
----i---------e------- /mnt/backup/.

Буква i указывает, что immutable bit установлен. Про псевдопапки точка и две точки читайте отдельную заметку.

Можно придумать разное применение этого бита. В основном это будут какие-то костыли, которыми не стоит сильно увлекаться. Например, можно очень просто запретить изменение паролей пользователям. Достаточно установить immutable bit на файл /etc/shadow:

# chattr +i /etc/shadow

Теперь если пользователь попытается поменять пароль, то у него ничего не выйдет. Даже у root:

# passwd root
passwd: Authentication token manipulation error
passwd: password unchanged

Необходимо вручную снять бит. Можно запретить изменение какого-то конфига на сайте или в системе. Когда-то давно видел, как публичные хостинги использовали этот бит, чтобы запретить пользователям удалять некоторые файлы, которые доступны в их домашних директориях.

Также читал, что некоторые трояны и прочие зловреды защищают себя от удаления или изменения с помощью immutable bit. Так что если расследуете взлом, имеет смысл рекурсивно пройтись по всем системным бинарям и проверить у них этот бит. Отсюда следует параноидальный способ защиты от вирусов - использование этого бита на всех важных системных файлах. Нужно только понимать, что для обновления системы, этот бит нужно будет снимать и потом ставить заново.

Если знаете ещё какое-то полезное применение immutable, поделитесь в комментах. Я видел, что некоторые /etc/hosts или /etc/resolve.conf им защищают от изменений.

Вообще, это неплохой вопрос для собеседований или шуток над каким-то незнающим человеком. Обычно в Unix root может удалить всё, что угодно, даже работающую систему. А тут он вдруг по какой-то причине не может удалить или изменить файл, записать в директорию.

#linux
8.8K views15:30
Открыть/Комментировать
2024-05-06 12:30:53
Недавно была опубликована новость об отключении российских компаний от продуктов Veeam Software - мирового поставщика средств для резервного копирования и управления данными. 

Чтобы не лишиться данных компания Крайон предлагает альтернативу – решение Кибер Бэкап. Это российская система резервного копирования и восстановления данных с защитой от вирусов-шифровальщиков. Кибер Бэкап включает:

• инструменты работы с данными в единой консоли администратора;
• бесплатный полнофункциональный период использования на месяц;
• техническую поддержку в процессе тестирования;
• возможность хранения данных на локальных, сетевых и облачных хранилищах;
• совместимость с более чем 50 программными и аппаратными платформами, приложениями и операционными системами, СУБД и средствами виртуализации, включая vSphere, Hyper-V и российские решения.

Проконсультируйтесь бесплатно и узнайте подробнее про Кибер Бэкап и другие решения у специалистов Крайон.

Реклама, ООО "КРАЙОН", ИНН 9717087315, erid: 2SDnjcNGiSD

@krayon_ru
9.2K views09:30
Открыть/Комментировать
2024-05-06 09:11:20 ​​Решил сделать шпаргалку для копипасты по отправке email с аутентификацией из консоли через внешний smtp сервер. Нередко приходится этим заниматься как напрямую в консоли, так и в каких-то скриптах.

В Linux самый простой вариант через Curl. Но там есть один нюанс, который создаёт неудобство, если вы хотите быстро отправить письмо через консоль. Заголовки и тело письма задаются через отдельный текстовый файл. Чтобы всё это уместить в одну команду, приходится использовать примерно такую конструкцию:

# echo -e "Subject: Test Subject \nTest body message." > /tmp/body.txt && curl -v --url "smtp://mail.server.ru:25" --mail-from root@server.ru --mail-rcpt user@example.com --user 'root@server.ru:password123' --upload-file "/tmp/body.txt"

Если вы будете использовать подобную отправку регулярно, либо где-то в скрипте, то скорее всего захочется вести лог передачи, отслеживать статус отправки и т.д. В таком случае проще всего настроить локально postfix или ssmtp. Для них нужно будет подготовить простой конфиг. Пример для postfix:

# apt install postfix mailutils

Добавляем в конфиг /etc/postfix/main.cf

relayhost = mail.server.ru:25
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may

Создаём файл /etc/postfix/sasl_passwd с данными для аутентификации в таком формате:

mail.server.ru:25 root@server.ru:password123

Создаем db файл.

# postmap /etc/postfix/sasl_passwd

Теперь можно перезапустить postfix и проверить работу.

# systemctl restart postfix
# echo "Test body message." | mail -s "Test Subject" user@example.com

Лог отправки, в том числе ответ принимающего сервера, будет в системном логе /var/log/syslog или /var/log/mail.log. Удобно для отладки или мониторинга.

Ниже пример отправки почты через ssmtp.

# apt install ssmtp

В конфиг /etc/ssmtp/ssmtp.conf пишем:

mailhub=mail.server.ru:25
hostname=mail.server.ru
root=root@server.ru
AuthUser=root@server.ru
AuthPass=password123
UseSTARTTLS=YES
UseTLS=YES

Отправляем почту:

# echo "Test body message." | mail -s "Test Subject" user@example.com

Утилита mail отправит почту через ssmtp. Я чаще отдаю предпочтение postfix, потому что у него лог кажется более информативным и привычным.

В Windows можно использовать для этих же целей PowerShell. Вот как выглядит там отправка:

> Send-MailMessage -From root@server.ru -To user@example.com -Subject "Test Subject" -Body "Test body message." -SmtpServer mail.server.ru -Port 25 -Credential (Get-Credential)

У вас откроется традиционное окно Windows для аутентификации. Туда нужно будет ввести логин и пароль от ящика. Если открыть cmd, перейти в powershell и выполнить указанную команду, то окно с аутентификацией почему-то не выскакивает. А если открыть сразу консоль PowerShell, то всё в порядке. Похоже на какой-то баг. Ошибка быстро гуглится, как и решение. Если не хочется вводить данные для аутентификации вручную, то их можно можно сохранить в переменной, в случае, если используется скрипт.

#mailserver
8.0K views06:11
Открыть/Комментировать
2024-05-03 18:31:20
Одна из лучших песен по тексту и музыке на тему системных администраторов. Своеобразный гимн, как у программистов. Это перепевка песни "Атланты" Александра Городницкого.

Песня из далёких 90-х годов. Может начало 2000-х. Не смог найти точную инфу. Я её с двухтысячных знаю. Причём, она не кажется сильно устаревшей. Если убрать оттуда зарплату, которую не платят (сейчас в IT всем платят), а сервер заменить на cloud, то и не поймешь, что это глубокая старина.

#юмор #музыка
11.2K views15:31
Открыть/Комментировать
2024-05-03 12:36:38
Саппорт, пора в тимлиды!

Узнайте как на бесплатном уроке онлайн-курса «Руководитель поддержки пользователей в IT» — «Прожарка резюме тимлида поддержки»: регистрация

Рассмотрим:
— резюме глазами рекрутера
— основные ошибки, которые не позволяют пройти этап первичного «отсеивания»
— встреча с руководителем - к чему готовиться?

— Разберем реальные кейсы, чтобы выделить 5 основных ошибок и не допустить их на вашем уровне.

По итогам открытого урока вы получите советы по кастомизации резюме, как результат - попадёте в Топ-выборку!

После вебинара вы сможете продолжить обучение на курсе по спеццене, в том числе, в рассрочку.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
10.7K views09:36
Открыть/Комментировать
2024-05-03 09:11:23 ​​Существует эффективный стандарт сжатия zstd. Не так давно современные браузеры стали его поддерживать, так что можно использовать в веб серверах. Разработчики Angie подсуетились и подготовили модуль для своего веб сервера, так что включить сжатие zstd максимально просто и быстро. Достаточно установить модуль в виде deb пакета и добавить настройки в конфигурацию, которые идентичны настройкам gzip, только название меняется на zstd.

По этому поводу вышел очень информативный ролик на ютубе:

Zstd (Zstandard): новый стандарт сжатия текста. Полный тест

Автор не только показал, как настроить zstd на веб сервере, но и сравнил его эффективность с привычными gzip и brotli. Результаты тестирования в динамическом сжатии получились очень любопытные. Zstd оказался лучше всех. Но если разница с brotli не сильно заметна, то вот gzip на фоне остальных выглядит очень медленным. Буквально в разы в некоторых случаях.

Я решил провести свои тесты, чтобы убедиться в такой большой разнице. Сразу скажу, что если не настроено https, то браузеры не будут использовать ни brotli, ни zstd. Не знаю, с чем это связано, но я потратил некоторое время, пока не разобрался с тем, почему не работает ничего, кроме gzip. И второй момент. Если на веб сервере настроены все 3 типа сжатия, то разные браузеры выбирают разное сжатие: либо brotli, либо zstd. Gzip не выбирает никто.

Тестировал так же, как и автор ролика. Установил Angie и оба модуля сжатия:

# curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg https://angie.software/keys/angie-signing.gpg

# echo "deb https://download.angie.software/angie/debian/ `lsb_release -cs` main" | tee /etc/apt/sources.list.d/angie.list > /dev/null

# apt update && apt install angie angie-module-zstd angie-module-brotli

Подключил оба модуля в angie.conf:

load_module modules/ngx_http_zstd_static_module.so;
load_module modules/ngx_http_zstd_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
load_module modules/ngx_http_brotli_filter_module.so;

И добавил для них настройки:

  gzip on;
  gzip_static on;
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
  gzip_comp_level 4;
  gzip_proxied any;
  gzip_min_length 1000;
  gzip_vary on;

  brotli on;
  brotli_static on;
  brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
  brotli_comp_level 4;

  zstd on;
  zstd_static on;
  zstd_min_length 256;
  zstd_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
  zstd_comp_level 4;

Если использовать ванильный Nginx, то придётся самостоятельно собирать его с нужными модулями

Тестировал с помощью ab, передавая ему метод компрессии через заголовок:

# ab -n 1000 -k -c 1 -H "Accept-Encoding: zstd" https://10.20.1.36/scripts.js

Не буду приводить свои результаты, так как они получились примерно такие же, как у автора ролика, только разница между zstd и brotli с компрессией 4 поменьше. Zstd по rps (247) быстрее всех. Brotli чуть лучше жмёт в плане объёма, то есть трафик будет ниже, но и rps (211) немного меньше, чем у zstd.

В Angie очень легко настроить и brotli, и zstd, и gzip, так что имеет смысл это сделать. Клиент пусть сам выбирает, какой тип сжатия он будет использовать.

Один важный момент, который я вынес из этой темы. Не нужно ставить сжатие выше 3 или 4. Дальше идёт очень существенное падение производительности при незначительном уменьшении размера файлов. Я раньше бездумно ставил 9 и думал, что современные процессоры и так нормально вытягивают, если сервер не нагружен в потолок. Это не так. Смысла в высокой компрессии нет.

#webserver #angie
9.8K views06:11
Открыть/Комментировать
2024-05-02 18:31:13 ​​Расскажу про необычную комбинацию клавиш в консоли bash, о которой наверняка многие не знают, а она иногда бывает полезной. Это из серии советов, когда те, кто про него знают, думаю, что тут такого, зачем об этом писать. А кто-то вообще об этом никогда не слышал.

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

Нажимаем комбинацию Alt+Shif+3. После этого к команде автоматически добавляется в самое начало # и команда как-бы выполняется, но на самом деле не выполняется, потому что стоит #. При этом команда улетает вместе с # в history. После этого её можно там посмотреть, либо быстро вызвать через поиск по Ctrl+R. Если искать по #, то она первая и выскочит.

Такой вот маленький трюк. Если не знали, то запомните. Облегчает работу в консоли.

#bash
9.8K views15:31
Открыть/Комментировать
2023-07-24 18:31:03 ​​Могу посоветовать необычную связку для доступа извне к внутренним ресурсам без необходимости настройки VPN или программных клиентов. Всё будет работать через браузер. Подход нестандартный, но вполне рабочий. Я реализовывал лично на одиночном сервере для безопасного и простого доступа к виртуалкам.

Задача стояла настроить на Proxmox несколько виртуальных машин: Windows Server для работы с 1С, Debian для PostgreSQL + 1С сервер, Debian для локальных изолированных бэкапов. Плюс я добавил сюда одну служебную виртуалку для шлюза с iptables. Задача была максимально упростить доступ клиентов к 1С без дополнительных настроек, но при этом обезопасить его.

В итоге что я сделал. На служебной виртуалке, которая являлась шлюзом в интернет для остальных виртуальных машин, настроил связку:

 Labean — простой сервис, который при обнаружении открытия определённого url на установленном рядом веб сервере, добавляет временное или постоянное правило в iptables. Для настройки надо уметь работать с iptables.

Apache Guacamole — шлюз удалённых подключений, через который с помощью браузера можно по RDP или SSH попасть на сервер.

Работает всё это очень просто. Пользователю отправляются две ссылки. При переходе по первой ссылке labean создаёт правило в iptables для ip адреса клиента, разрешающее ему подключиться к Apache Guacamole. А вторая ссылка ведёт к веб интерфейсу Apache Guacamole, куда пользователю открылся доступ. В Apache Guacamole настраивается учётка для каждого пользователя, где добавлены сервера, к которым ему можно подключаться.

Ссылки для labean настраиваются вручную с не словарными путями, которые невозможно подобрать. Нужно точно знать URL. В данном случае Apache Guacamole выступает для удобства подключения пользователей. Если они готовы настраивать себе клиенты RDP, то можно в labean настраивать сразу проброс по RDP. А можно и то и другое. И каждый сам решает, как он хочется зайти: через RDP клиент или через браузер. Работа в браузере накладывает свои ограничения и не всем подходит.

Вместо labean можно использовать port knocking или настроить HTTP доступ через nginx proxy, закрыв его basic auth. Лично мне реализация через url для labean кажется наиболее простой и удобной для конечного пользователя.

Разумеется, помимо labean, должен быть ещё какой-то путь попасть на эти сервера для управления. Белые списки IP или тот же VPN. Администратору, думаю, будет не трудно настроить себе VPN. Я, кстати, на данном сервере в том числе настроил и OpenVPN для тех, кто готов им пользоваться в обход описанной выше схемы.

#security #gateway #network
2.8K views15:31
Открыть/Комментировать
2023-07-24 12:31:13
Тест по высоким нагрузкам в Linux

Ответьте на 19 вопросов и проверьте, насколько вы умеете решать задачи связанные с высокими нагрузками и на сколько готовы к обучению на курсе — «Administrator Linux. Advanced»

За 5 месяцев курса вы научитесь решать 3 глобальные задачи:
- Виртуализация с помощью таких инструментов, как proxmox, KVM, oVirt, Xen
- Кластеризация сервисов и построение дисковых кластеров 
- Построение высоконагруженных систем на базе nginx 

Время прохождения теста ограниченно 30 минут

ПРОЙТИ ТЕСТ — https://otus.pw/WfIB/

Пройдете тест, получите курс по Git и доступ к 2 открытым урокам курса.

#Реклама. Информация о рекламодателе на сайте www.otus.ru
4.0K views09:31
Открыть/Комментировать
2023-07-24 09:11:31 Когда настраиваешь мониторинг на ненагруженных машинах, хочется дать какую-то среднюю нагрузку, чтобы посмотреть, как выглядят получившиеся графики и дашборды. Для стресс тестов есть специальные утилиты, типа stress. Но чаще всего не хочется что-то устанавливать для этого.

Для этих целей в Linux часто используют псевдоустройства /dev/urandom или /dev/zero, направляя куда-нибудь их вывод. Вот простой пример:

# while true; do dd if=/dev/urandom count=30M bs=1 \
| bzip2 -9 > /tmp/tempfile  ; rm -f /tmp/tempfile  ; done

Получилась универсальная нагрузка, которая идёт как на дисковую подсистему, так и на процессор. Изменяя размер файла (30M) и степень сжатия (-9) можно регулировать эту нагрузку. Чем больше размер файла, тем больше нагрузка на диск, чем больше уровень сжатия, тем больше нагрузка на процессор.

Можно только диски нагрузить и проверить скорость записи. Эту команду я постоянно использую, чтобы быстро оценить, с какими дисками я имею дело:

# sync; dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024; sync

Увеличивая размер блока данных (1M) или количество этих блоков (1024) можно управлять характером нагрузки и итоговым объёмом записываемых файлов.

Если хотите нагрузить только CPU, то достаточно вот такой простой конструкции:

# dd if=/dev/zero of=/dev/null

Она загрузит только одно ядро. Для двух можно запустить их в паре:

# cpuload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; \
cpuload; read; pkill dd

Процессы запустятся в фоне, по нажатию Enter в консоли, завершатся. Если у вас нет pkill, используйте killall. Процессор нагрузить проще всего. Можно также использовать что-то типа такого:

# sha1sum /dev/zero

Это так же нагрузит одно ядро. Для нескольких, запускайте параллельно в фоне несколько процессов расчёта. Вот ещё один вариант нагрузки на 4 ядра с ограничением времени. В данном случае 10 секунд:

# seq 4 | xargs -P0 -n1 timeout 10 yes > /dev/null

Причём эта нагрузка будет в большей степени в пространстве ядра. А показанная выше с sha1sum в пространстве пользователя. Пример на 2 ядра:

# seq 2 | xargs -P0 -n1 timeout 10 sha1sum /dev/zero

Если убрать timeout, то нагрузка будет длиться до тех пор, пока вы сами её не остановите по Ctrl-C.

Для загрузки памяти в консоли быстрее всего воспользоваться python3:

# python3 -c 'a="a"*1024**3; input()'

Съели 1G памяти.

#bash #linux #terminal
4.3K views06:11
Открыть/Комментировать