SCROLL

Посты с тэгом: linux

System Security Services Daemon (SSSD) — это пакет приложений для управления аутентификацией и авторизацией в операционных системах на базе Linux.

В различных ситуациях может понадобится выполнение sudo без ввода пароля. Рассмотрим как это сделать на Linux на нескольких примерах.

Ранее я уже описывал как добавить поддержку шифрования по ГОСТ Р 34.10-2012 в OpenSSL на Debian 9, недавно возвращался к этому вопросу но уже на системе Debian 11, поэтому решил актуализировать под Debian 11.

 

# Все ниже действия будут производится от root.

 

Устанавливаем необходимые пакеты:

apt-get install g++ gcc make git libssl-dev

 

Поддержу GOST-Engine будем реализовывать для OpenSSL 1.1.1p.

 

Выполняем сборку OpenSSL 1.1.1p, выполняем команды (скачиваем, распаковываем, собираем билд, устанавливаем, настраиваем):

wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz
tar -zxvf openssl-1.1.1p.tar.gz
cd openssl-1.1.1p

./config --prefix=/usr/ssl --openssldir=/usr/ssl
make all
make install

cd .. && rm /usr/bin/openssl
ln -s /usr/ssl/bin/openssl /usr/bin/openssl
echo "/usr/ssl/lib" >> /etc/ld.so.conf.d/ssl.conf
ldconfig

 

Проверяем версию OpenSSL, должно быть так:

openssl version -v
OpenSSL 1.1.1p  21 Jun 2022

 

# Для сборки GOST Engine нужна версия CMake 3.0 и выше.

При использовании Linux и необходимости подключения к сервису Exchange Online через PowerShell, то это можно легко сделать, рассмотрим ниже как это сделать.

Разберем как установить phpMyAdmin последней версии из исходников в Debian 9 Stretch. Так же рассмотрим как обезопасить доступ к нему.

 

Устанавливаем необходимые пакеты:

apt-get install php php-common php-cli libapache2-mod-php php-gd php-mbstring php-zip php-xml php-curl php-bz2 php-mysql php-common php-tcpdf php-gettext mariadb-server -y

 

Скачиваем последнюю версию phpMyAdmin, распаковываем скачанный архив и перемещаем его в пользовательский каталог:

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip

unzip phpMyAdmin-latest-all-languages.zip
rm phpMyAdmin-latest-all-languages.zip
mv phpMyAdmin-*-all-languages/ /usr/share/phpmyadmin

 

Создадим каталог в котором phpMyAdmin будет хранить свои временные файлы и назначаем права доступа к нему для веб-сервера (www-data):

mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin

 

Создаем базу данных и таблицы конфигурации для phpMyAdmin. Применяем поставляемый вместе с phpMyAdmin скрипт:

mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

В работе имеется веб-сайт на котором реализована авторизация посредством ЕСИА (Единая система идентификации и аутентификации). До недавнего времени можно было использовать самоподписной RSA сертификат, но с 1 апреля 2020 года, для взаимодействия с ЕСИА необходимо использовать сертификат с алгоритмом шифрования по ГОСТ Р 34.10-2012.

 

В связи с этим мне необходимо было реализовать возможность работы с алгоритмом ГОСТ Р 34.11-2012 в OpenSSL на Debian 9 Stretch.

 

Путем перелопачивания множества информации по этому вопросу и проб использования движка GOST-Engine с различными версиями OpenSSL, для себя определил рабочую связку OpenSSL 1.1.1d + GOST-Engine.

 

В качестве памятки опишу действия для реализации связки OpenSSL 1.1.1d + GOST-Engine на Debian 9 Stretch.

 

Устанавливаем необходимые пакеты:

apt-get install build-essential wget git cmake unzip gcc -y

 

Выполняем сборку OpenSSL 1.1.1d, выполняем команды:

cd /opt

wget "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1d.zip" -O "OpenSSL_1_1_1d.zip"
unzip OpenSSL_1_1_1d.zip && cd openssl-OpenSSL_1_1_1d

./config shared -d --prefix=/usr/ssl --openssldir=/usr/ssl
make all && make install

rm /usr/bin/openssl
ln -s /usr/ssl/bin/openssl /usr/bin/openssl
echo "/usr/ssl/lib" >> /etc/ld.so.conf.d/ssl.conf && ldconfig

По различными причинам, случается так что какой то файл может быть удален с файлового сервера и в этом случае он будет потерян на всегда. Для того чтобы иметь возможность восстановить удаленный файл на файловом сервере samba предусмотрен модуль VFS (Virtual File System) — recycle (сетевая корзина), рассмотрим его применение.

 

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

 

В файле конфигурации samba (/etc/samba/smb.conf) в секцию [global] добавим следующие параметры:

vfs object = recycle

recycle:repository = /samba/recycle/%S
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ~$* *.tmp *.TMP *.temp *.bak *.log .DS_Store

[RECYCLE$]
path = /samba/recycle
read only = no

recycle:exclude = *.*

[stextbox id=’info’]Пояснения по параметрам recycle:

recycle:repository — Задаем каталог расположения сетевой корзины. Если параметр не задан, то по-умолчанию сетевая корзина (.recycle) будет располагаться в корне каждой общей папки.
recycle:keeptree — Сохранять структуру каталогов для удаленных файлов.
recycle:versions — В случае если у удаленных файлов их имена совпадают, то к удаленном файлу в начале имени будет добавляться Copy #N of.
recycle:touch — Задавать дату изменения файла на время удаления файла.
recycle:exclude — Список исключений для файлов.[/stextbox]

[stextbox id=’warning’]Сетевая корзина может располагаться только в той же FS что и общая папка для которой задается сетевая корзина. В случае если указать путь к сетевой корзине на другом диске, то в этом случае удаленные файлы не будут туда помещены, так как хард-линк можно сделать только в рамках одной FS.[/stextbox]

[stextbox id=’info’]Если уже используется какой-то модуль VFS, то перечисляем все объекты через пробел, например:
vfs object = recycle full_audit[/stextbox]

 

Если необходимо включение сетевой корзины для какой то определенной общей папке, то тогда выше описанные параметры необходимо прописывать в секцию описания общей папки.

Как известно система лицензирования Microsoft штука не дешевая и поэтому рассмотрим как установить файловый сервер Samba 4.5 с интеграцией Active Directory на Debian 9 Stretch.

 

Исходные данные:

  • Контроллер домена (DC1) на Windows Server 2012 R2, домен JAKONDA.LOCAL
  • Система по файловый сервер (datastore1) на Debian 9 Stretch

 

Подготовка системы (Debian 9 Stretch)

Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

 

Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле (/etc/hostname):

datastore1.jakonda.local

 

Так же файл (/etc/hosts) приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:

127.0.0.1	localhost
127.0.1.1	datastore1.jakonda.local datastore1

 

Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP, выполняем синхронизацию времени с контроллером домена:

apt-get install ntp ntpdate

ntpdate dc1.jakonda.local

[stextbox id=’info’]Более подробно о синхронизации времени на Debian 8 Jessie/Ubuntu Server 14.04 можно почитать в этой статье[/stextbox]

В очередной раз после миграции ВМ Debian Linux с одного хоста VMWare на другой, при загрузке системы наблюдал множественные ошибки:

blk_update_request: I/O error, dev fd0, sector 0
hv_vmbus: probe failed for device vmbus_10 (-19)

 

Ошибка связана с попытками подключить Floppy дисковод, который в ВМ отсутствует. Решается все довольно просто, путем отключения драйвера Floppy в системе.

 

Выполняем следующие команды в терминале:

echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
sudo rmmod floppy
sudo update-initramfs -u

 

Для применения изменений перезагружаем систему.

Рассмотрим применение базовых мер безопасности на веб-сервере (Apache), развернутом на Linux (DEB) (Debian 8 Jessie/Debian 9 Stretch/Ubuntu Server 14.04 LTS и т.д.).

 

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

 

Скрытие версии Apache

Изначально при обращении к веб-серверу, он выдает версию самого веб-сервера и системы на которой он работает. Для примера откроем несуществующую страницу на веб-сервере:

В качестве памятки по работе с MySQL посредством командной строки, буду вести список наиболее полезных и часто используемых команд MySQL. (Список будет дополнятся по мере необходимости)

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

 

Если у вас система с GUI, то переходим в терминал (Ctrl + Alt + F2) (для того чтобы вернутся обратно в GUI, нажимаем Ctrl + Alt + F7) авторизовываемся и выполняем следующие действия:

 

Задаем новый пароль пользователя:

passwd jakonda

Монтируем зашифрованный каталог:

ecryptfs-mount-private

Задаем контрольную фразу, аналогичную заданному паролю пользователя:

ecryptfs-rewrap-passphrase .ecryptfs/wrapped-passphrase

Работая с Linux системами, иногда возникает необходимость запрета обновления какого либо пакета.

 

Чаще всего это необходимо если развернут какой либо сервис, который требует определенной версии того или иного пакета, в этом случае можно легко запретить его обновление и так же легко разрешить его обновление.

 

Рассмотрим несколько способов, реализации запрета на обновления пакета, в ОС Debian 8 Jessie.

 

Запрет используя dpkg

Для запрета на обновления пакета, выполняем команду:

sudo echo 'имя_пакета hold' | sudo dpkg --set-selections

 

Для разрешения на обновления пакета, выполняем команду:

sudo echo 'имя_пакета install' | sudo dpkg --set-selections

 

Чтобы посмотреть все статус пакетов в системе, выполняем команду:

sudo dpkg --get-selections | grep 'имя_пакета'

Данная статья будет мне памяткой, как добавлять пользователей, изменять, удалять пользователей в консольном режиме Debian 8 Jessie.

 

Добавление пользователя

Пользователь создается командой useradd:

sudo useradd username

 

Полезные ключи используемые при создании пользователя:

-m (--create-home) Создать домашний каталог. По-умолчанию домашний каталог не создается.
-M (--no-create-home) Не создавать домашний каталог.
-d (--home-dir HOME_DIR) Указать расположение домашнего каталога.
-N (--no-user-group) Не создавать группу с таким же именем, как имя пользователя.
-g (--gid GROUP) Название или ID первичной группы пользователя.
-G (--groups GROUPS) Указать список дополнительных групп для пользователя.
-p (--password PASSWORD) Задание пароль пользователя.
-s (--shell SHELL) Указание оболочки пользователя (прим. /bin/bash). По-умолчанию /bin/sh.
-c (--comment COMMENT) Добавить комментарий к пользователю.

 

Изменение пользователя

Изменить пользователя можно командой usermod (прим. добавление пользователя в группу):

sudo usermod -a -G www-data jakonda

 

Изменить пароль пользователю можно при помощи утилиты passwd:

sudo passwd jakonda

Разберем как делать резервные копии имеющихся Subversion (SVN) репозиториев в Linux среде. Все ниже описанное производилось на Debian 8 Jessie.

 

Резервное копирование репозитория

Создаем резервную копию указанного репозитория:

sudo svnadmin dump /path/to/repository > svnexport.dump

 

Создаем резервную копию указанного репозитория и сжимаем его:

sudo svnadmin dump /path/to/repository | gzip > svnexport.dump.gz

 

Резервное копирование все репозиториев (bash скриптом)

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

#!/bin/bash
# 06/01/2018 Jakonda (http://jakondo.ru)

# Резервное копирование репозиториев (SVN)

PATH_REPO="/var/svn/"
LOCAL_DIR="/srv/backups/svn"

EXPIRATION_DAYS=28
DATE=$(date +"%y_%m_%d")

# Создаем каталог для размещения бекапов, если он не создан
if ! [ -d $LOCAL_DIR ]; then
mkdir $LOCAL_DIR
fi

# Создаем каталог с текущей датой
mkdir -p $LOCAL_DIR/$DATE

# Создание дампа всех репозиториев
cd $PATH_REPO
for REPO in *; do
 test -d "$REPO" && /usr/bin/svnadmin dump $REPO | gzip > $LOCAL_DIR/$DATE/$REPO.dump.gz
done

# Удаление старых резервных копий
find $LOCAL_DIR* -mtime +${EXPIRATION_DAYS} -exec rm {} \;
# Удаление пустых каталогов
find $LOCAL_DIR* -type d -empty -exec rmdir {} \;

 

Рассмотрим как сбросить забытый/утерянный пароль от root в MySQL. Рассмотрим варианты сброса пароля под Windows и Unix системах.

Рассмотрим как расчитывать различные hash-суммы (MD5, SHA1, SHA256, SHA384, SHA512, CRC) в среде Linux. Hash-суммы обычно служат для проверки сохранности файлов, а так же для шифрования паролей.

 

Синтаксис для расчета hash-суммы файла:

[алгоритм] [путь к файлу, который нужно рассчитать]

 

Примеры:

md5sum test.iso
sha1sum test.iso
sha256sum test.iso
sha384sum test.iso
sha512sum test.iso
cksum test.iso

Разберем как развернуть мощный и в тоже время бесплатный почтовый сервер Zimbra Collaboration 8.6. Zimbra может соперничать с Microsoft Exchange своим функционалом, в который входит необходимый набор инструментов для работы в корпоративной среде. Zimbra имеет удобный и понятный Web интерфейс, поддерживающий работу мобильных устройств, что не мало важно для сотрудников находящихся вне офиса.

 

Исходные данные для развертывания Zimbra:

  • Домен jakondo.ru (на этом доменном имени будет ходить почта)
  • Локальная сеть 10.5.5.0/24
  • Домен контроллер на базе Windows Server 2012R2 (AD DS, DNS) DC1, jakonda.local10.5.5.5 (Установленный по данной статье)
  • Установленная система Ubuntu 14.04 Trusty Tahr (10.5.5.10, Hostname — mail)

Задача:

  • Настроить DNS на домен контроллере DC1, для работы почтового сервера Zimbra.
  • Выполнить предварительную настройку системы Ubuntu 14.04 Trusty Tahr перед установкой Zimbra.
  • Установить почтовый сервер Zimbra Collaboration 8.6.
  • Добавление почтового домена jakondo.ru в развернутый почтовый сервер.
  • Проверить работу почты.