Настройка samba
? Настройка доменного контроллера на alt-linux серВеРе 2 (за пример я взял Samba).
Перед настройкой удалим bind.
Apt-get remove bind
Проверить etc/resolv.conf (nameserver 8.8.8.8)перед скачивание пакета samba, после проверки обновляем и скачиваем.
apt-get update
apt-get install task-samba-dc
После скачивание, resolv возвращаем в исходное положение и также добавляем DNS-сервер(если он имеется)
Nano /etc/resolv.conf
Nameserver 192.168.1.2
Теперь удалим конфиг smb.conf, чтобы он не мешал при настройке службы:
rm -rf /etc/samba/smb.conf
Настроим hosts, добавив новую запись в конец файла:
mcedit /etc/hosts
192.168.4.2 “ваш hostname серВеРа 2”
Теперь в конфигурацию нашего DNS-сервера на сервере 1 добавим следующую строку в dnsmasq.conf:
server=/ww-domain.org/192.168.4.2
systemctl restart dnsmasq
А теперь запускаем автонастройку доменного контроллера на cерВеРе 2(где мы установили samba)
samba-tool domain provision
просто 4-ре раза подряд нажимаем Enter
192.168.1.2 (Здесь вводим значение)
Password
Перемещаем сгенерированный конфиг krb5.conf и включаем службу samba:
mv -f /var/lib/samba/private/krb5.conf /etc/krb5.conf
systemctl enable samba
export EDITOR=nano
crontab -e
И вносим в конец файла следующие строки:
@reboot /bin/systemctl restart network
@reboot /bin/systemctl restart samba
Reboot
Проверка работы домены:
samba-tool domain info 127.0.0.1
На этом этапе можно создать группу и пользователей, а так же добавление их в группу.
samba-tool user add user1.ww 123asdW%
samba-tool group add ww-название группы
samba-tool group addmembers ww user1.ww
Теперь введём клиентскую машину в домен, открываем терминал и заходим под root и пишем acc, после нажимем аутентификация.
Далее ставим галочку на “Домен Active Directory” и вводим:
Домен: WW-DOMAIN.ORG
Рабочая группа: WW-DOMAIN
Имя компьютера: “ваш hostname”
Далее вводим пароль, который писали при настройке домена через samba-tool и перезагружаем.
Чтобы настроить права созданных нами пользователей, нужно установить ещё один пакет на серВеРе 2, подключаем нужный репозиторий:
Apt-repo add rpm http://altrepo.ru/local-p10 noarch local-p10
Apt-get update
Apt-get install sudo-samba-schema
Далее добавляем новую схему следующей командой:
sudo-schema-apply
Откроется следующее диалоговое окно, нажимаем yes и вводим пароль админа, потом ok:
Create-sudo-rule
И вносим следующие изменения (имя правила можно любое):
Имя правила : prava_ww
sudoCommand : /bin/cat
sudoUser : %ww
Заходим под локальным пользователем на клиентской машине:
Apt-get update
Apt-get install admc
Kinit administrator
Password
И запускаем admc:
admc
Включим дополнительные возможности через настройки.
Поменяем опцию sudoOption в созданном нами ранее правиле prava_ww (правило всегда будет находиться в OU с названием sudoers):
Новое значение будет:
!authenticate
И добавим ещё две команды в опцию sudoCommand (grep и id):
/bin/cat
/bin/grep
/usr/bin/id
Заходим на клиентмкую машину и установить дополнительные пакеты:
apt-get update
apt-get install sudo libsss_sudo
Разрешаем использование sudo:
control sudo public
Настроим конфиг sssd.conf:
mcedit /etc/sssd/sssd.conf
services = nss, pam, sudo
sudo_provider = ad
Теперь отредактируем nsswitch.conf:
mcedit /etc/nsswitch.conf
sudoers: files sss
Заходим на клиентскую машину заходим под root и пишем:
rm -rf /var/lib/sss/db/*
sss_cache -E
sssd: systemctl restart sssd
Ctrl+Alt+F2 и заходим под root
sudo -l -U user1.ww
Приступаем к следующему этапу – импортируем пользователей из таблицы Users.csv. Для начала скачиваем если не скачан.
curl -L https://bit.ly/3C1nEYz > /root/users.zip
unzip /root/users.zip
mv /root/Users.csv /opt/Users.csv
Создаём файл import и пишем туда следующий код:
mcedit import
#!/bin/bash
csv_file="/opt/Users.csv"
while IFS=";" read -r firstName lastName role phone ou street zip city country password; do
if [ "$firstName" == "First Name" ]; then
continue
fi
username="${firstName,,}.${lastName,,}"
sudo samba-tool user add "$username" 123asdW%
done < "$csv_file"
Сохраняем этот файл и выдаём ему право на выполнение и запускаем его:
chmod +x /root/import
bash /root/import
==================================================
?. Конфигурация файлового хранилища на сервере 1
Для начала нужно создать три дополнительных диска размером 1 ГБ каждый.
Теперь заходим в виртуальную машину и просматриваем все диски, которые мы подключили, следующей командой:
Lsblk
Теперь создадим дисковый массив уровня 5 из трёх дополнительных дисков следующей командой: (название дисков может отличаться)
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[b-d]
Посмотрим статус нашего raid-массива и схораним:
cat /proc/mdstat
mdadm --detail -scan --verbose > /etc/mdadm.conf
Теперь создаём раздел через fdisk.
fdisk /dev/md0
Затем пишем n, потом p и нажимаем 3-раз подряд Enter, потом w.
mkfs.ext4 /dev/md0p1
Теперь настроим автоматическое монтирование в /raid5. Добавляем следующую строку в конец файла /etc/fstab:
/dev/md0p1<--->/raid5<--->ext4<--->defaults<--->0<--->0
Затем создаём каталог /raid5 и монтируем ФС из /etc/fstab:
mkdir /raid5
mount -a
Теперь настроим сервер файловой системы NFS:
apt-get update
apt-get install nfs-server
Приступаем к самой настройке, создадим каталог, назначим нового владельца и группу ему и выдадим новые права:
mkdir /raid5/nfs
chown 99:99 /raid5/nfs
chmod 777 /raid5/nfs
Откроем каталог для общего доступа в сторону подсети, для этого заходим в /etc/exports:
/raid5/nfs 192.168.2.0/28(rw,sync,no_subtree_check)
После выходим и принимаем изменения:
exportfs -a
exportfs -v
systemctl enable –now nfs
systemctl restart nfs
Теперь идём монтировать этот каталог на клиенте для этого нужно:
apt-get update
apt-get install nfs-clients
mkdir -p /mnt/nfs
Добавляем следующую строку в конец файла /etc/fstab:
192.168.1.2:/raid5/nfs<--->/mnt/nfs<--->nfs<--->intr,soft,_netdev,x-systemd.automount<--->0 0
mount -a
mount -v
touch /mnt/nfs/52
?. Настройка службы сетевого времени на базе сервиса chrony
Для его настройки на роутере 1:
Apt-get update
Apt-get install chronyd
Заходим и редактируем файл /ect/chrony.conf
local stratum 5
allow 192.168.1.0/26
allow 192.168.2.0/28
allow 172.16.5.0/28
allow 192.168.4.0/27
и закомментируем
#pool 2.debian
#rtcsync
Потом перезагружаем chrony
systemctl enable --now chrony
systemctl restart chrony
Выключаем теперь ту самую синхронизацию:
timedatectl set-ntp 0
timedatectl
Теперь переходим к настройке клиента и перед установкой новой службы выключим chrony:
systemctl disable --now chronyd
systemctl status chronyd
Обновляем список пакетов и скачиваем службу systemdtimesyncd:
apt-get update
apt-get install systemd-timesyncd
Теперь зайдём в конфиг /etc/systemd/timesyncd.conf и отредактируем только одну строку:
NTP=192.168.1.1
Теперь включим службу systemd-timesyncd и посмотрим её статус работы:
systemctl enable --now systemd-timesyncd
timedatectl timesync-status
Но помните, что NTP для 2-ого сервера – это внешний IP-адрес 1-ого роуиера, то-есть 172.16.4.2.
Иногда машина багается и для это нужно Ctrl+Alt+F2 и пропсать startx и нажать продолжить и потом reboot.
?. Сконфигурируйте ansible на серВеРе 2
Для начала проверим, обновлены ли у нас списки пакетов и затем попробуем установить ansible:
apt-get update
apt-get install ansible
Далее нам нужен рабочий каталог для нашего ansible, который может быть уже создан, НО если нет, то создадим его следующей командой:
mkdir /etc/ansible
У нас он уже создан, и там же находится нужный нам файл hosts, тоже уже созданный. Теперь нам нужно написать следующие строки в файл hosts:
nano /etc/ansible/hosts
one-srv ansible_host=testshuser@192.168.1.2 ansible_port=2024 ansible_python_interpreter=/usr/bin/python3
one-cli ansible_host=testhuser@192.168.2.5 ansible_port=2024 ansible_python_interpreter=/usr/bin/python3
fir-rtr ansible_host=test_admin@192.168.1.1 ansible_port=22
ansible_python_interpreter=/usr/bin/python3
sec-rtr ansible_host=test_admin@192.168.4.1 ansible_port=22
Теперь на серВеРе 2 генерируем ключи RSA, чтобы экспортировать их на машины клиенты, строку с путём и passphrase оставляем пустой:
ssh-keygen -t rsa
Копируем публичный ключ на клиентские машины, первая из них будет sec-rtr:
ssh-copy-id -p 22 test_admin@192.168.4.1
ssh-copy-id -p 2024 testshuser@192.168.2.5
ssh-copy-id -p 2024 testshuser@192.168.1.2
ssh-copy-id -p 22 test_admin@192.168.1
После этого мы можем проверить связь.
ansible all -m ping
?. Развертывание приложений в Docker на сервере серВеРе 2
Перед настройкой нам необходимо обновить список пакетов и установить docker
apt-get update
apt-get install docker-engine docker-compose
И запустим службу docker:
systemctl enable --now docker
Загружаем образы следующей командой:
docker pull mediawiki
docker pull mariadb
Создаем в домашней директории пользователя файл:
mcedit /home/user/wiki.yml
И заполняем его следующими строками, обратите внимание, что в строках ПРОБЕЛЫ, А НЕ ТАБУЛЯЦИЯ:
services:
| mariadb:
|| image: mariadb
|| container_name: mariadb
|| restart: always
|| environment:
||| MYSQL_ROOT_PASSWORD: 123asdW%
||| MYSQL_DATABASE: mediawiki
||| MYSQL_USER: wiki
||| MYSQL_PASSWORD: WikiP@ssword
|| volumes:
|| - mariadb_data:/var/lib/mysql
| wiki:
|| image: mediawiki
|| container_name: wiki
|| restart: always
|| environment:
||| MEDIAWIKI_DB_HOST: mariadb
||| MEDIAWIKI_DB_USER: wiki
||| MEDIAWIKI_DB_PASSWORD: WikiP@ssword
||| MEDIAWIKI_DB_NAME: mediawiki
|| ports:
||| - "8080:80"
|| volumes:
|| #- /home/user/mediawiki/LocalSettings.php:/var/www/html/LocalSettings.php
volumes:
| mariadb_data:
После всех настроек строку volumes. мы обратно раскомментируем, убрав символ #!
Приступаем к запуску контейнера wiki.yml, в зависимости от версии compose, существует ещё одна запись, она для второй его версии:
Обычная версия: docker-compose -f /home/user/wiki.yml up -d
Вторая версия: docker compose -f /home/user/wiki.yml up -d
Заходим с клиента на сайт после запуска контейнера и пишем в браузера:
192.168.4.2:8080
Видим, что файл LocalSettings.php не найден, и нажимаем на complete the installation или set up the wiki.
Видим строки, которые нужно заполнить:
Хост базы данных: mariadb
Имя базы данных (без дефисов): mediawiki
Имя пользователя базы данных: wiki
Пароль базы данных: WikiP@ssw0rd
Прожимаем Далее, оставляя всё как есть
Пишем в строках следующее и выбираем пункты, как на скрине:
Название вики: (можно своё название)
Ваше имя участника: wiki
Пароль: WikiP@ssw0rd
Далее автоматически скачивается файл LocalSettings.php, который нужно переместить теперь на сервер с mediawiki, а именно на серВеРа 2 c cli:
scp -P 2024 /home/user (смотрите под каким пользователем вы авторизировались до настройки)/LocalSettings.php testshuser@192.168.4.2:/home/testshuser/
Теперь заходим на серВеР 2 и перемещаем скачанный файл в /root, но перед этим удаляем то, что создалось в /root (могло и не создаваться, так даже лучше):
rm -rf /home/user/LocalSettings.php
mkdir /home/user/mediawiki
mv /home/user/huser/LocalSettings.php /home/mediawiki/
ls /home/user/mediawiki/
Раскомментируем, как и говорили ранее, строку volumes.
Теперь перезапускаем контейнеры путём запуска контейнера ещё раз:
docker compose -f wiki.yml up -d
?. На маршрутизаторах сконфигурируйте статическую трансляцию портов
Пробросим порт 80 в порт 8080 и порт 2024 в порт 2024 на маршрутизаторе sec-rtr, для обеспечения работы сервиса mediawiki и ssh, правила прописываем через консоль:
iptables -t nat -A PREROUTING -p tcp -d 192.168.4.1 --dport 80 -j DNAT -- to-destination 192.168.4.2:8080
iptables -t nat -A PREROUTING -p tcp -d 192.168.4.1 --dport 2024 -j DNAT - -to-destination 192.168.4.2:2024
iptables-save > /root/rules
Пробросим порт 2024 в порт 2024 на маршрутизаторе fir-rtr, для обеспечения работы сервиса ssh, правило прописываем через консоль:
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.1 --dport 2024 -j DNAT - -to-destination 192.168.1.2:2024
iptables-save > /root/rules
?. Запустите сервис moodle на сервере 1
Устанавливаем для ряд пакетов, которые будут нам нужны для работы:
apt-get update apt-get install apache2 php8.2 apache2-mod_php8.2 mariadb-server php8.2- opcache php8.2-curl php8.2-gd php8.2-intl php8.2-mysqli php8.2-xml php8.2- xmlrpc php8.2-ldap php8.2-zip php8.2-soap php8.2-mbstring php8.2-json php8.2-xmlreader php8.2-fileinfo php8.2-sodium
Включаем службы httpd2 и mysqld для дальнейшей работы с ними следующей командой:
systemctl enable –now httpd2 mysqld
Теперь настроим безопасный доступ к нашей будущей базе данных с помощью команды:
mysql_secure_installation
Прожимаем просто enter, т.к. сейчас root без пароля: Enter
Прожимаем y для задания пароля: y
Задаем пароль к нашему root, желательно стандартный: 123asdW%
Далее нажимаем на всё y, как на скриншоте: y
Теперь заходим в СУБД для создания и настройки базы данных:
mariadb -u root -p
CREATE DATABASE moodledb;
CREATE USER moodle IDENTIFIED BY ‘P@ssw0rd’;
GRANT ALL PRIVILEGES ON moodledb.* TO moodle;
FLUSH PRIVILEGES;
Exit
Теперь скачаем сам мудл стабильной версии:
curl -L https://github.com/moodle/moodle/archive/refs/tags/v4.5.0.zip > /root/moodle.zip
Разархивируем его в /var/www/html/ для дальнейшей настройки:
unzip /root/moodle.zip -d /var/www/html
mv /var/www/html/moodle-4.5.0/* /var/www/html/
ls /var/www/html
Создадим новый каталог moodledata, там будут храниться данные и изменим владельца на каталогах html и moodledata:
mkdir /var/www/moodledata
chown apache2:apache2 /var/www/html
chown apache2:apache2 /var/www/moodledata
Поменяем значение параметра max_input_vars в файле php.ini
mcedit /etc/php/8.2/apache2-mod_php/php.ini
Жмём F7 для поиска нужной нам строки и пишем туда:
max_input_vars
Раскомментируем и пишем новое значение: max_input_vars = 5000
Удаляем стандартную страницу apache
cd /var/www/html
ls
rm index.html
Перезапускаем службу httpd2:
systemctl restart httpd2
Теперь подключаемся с клиента и начинаем настройку:
http://192.168.1.2/install.php
Жмём далее
Выбираем MariaDB в качестве драйвера базы данных:
Введём нужные данные в следующие строки:
Название базы данных: moodledb
Пользователь базы данных: moodle
Пароль: P@ssw0rd
Нажимаем “Продолжить”:
Просматриваем всё ли в статус “OK” или “Проверка” и прожимаем “Продолжить”:
После установки видим, что всё прошло успешно и жмём “Продолжить”:
Далее заполняем обязательные поля для создания основного администратора:
Логин: admin
Новый пароль: P@ssw0rd
Имя: Администратор (можно любое)
Фамилия: Пользователь (можно любое)
Адрес электронной почты: test@mail.ru (можно любое)
И нажимаем “Обновить профиль”:
Теперь заполним ещё некоторые строки на следующем шаге:
Полное название сайта: moodle
Краткое название сайта: 11
Настройки местоположения: Азия/Барнаул
Контакты службы поддержки: test.test@mail.ru
И жмём “Сохранить изменения” в конце страницы:
?. Настройте веб-сервер nginx как обратный прокси-сервер на fir-rtr
Поменяем значение wwwroot в конфигурации moodle на сервере 1:
mcedit /var/www/html/config.php
$CFG->wwwroot = ‘http://moodle.ww-domain.org’;
Устанавливаем пакет nginx на fir-rtr:
apt install nginx
Создаём новый конфигурационный файл proxy:
mcedit /etc/nginx/sites-available/proxy
server {
| listen 80;
|server_name moodle.ww-domain.org;
|location / {
||proxy_pass http://192.168.1.2:80;
||proxy_set_header Host $host;
||proxy_set_header X-Real-IP $remote_addr;
||proxy_set_header X-Forwarded-For $remote_addr;
|}
}
server {
|listen 80;
|server_name wiki.ww-domain.org;
|location / {
||proxy_pass http://192.168.4.2:8080;
||proxy_set_header Host $host;
||proxy_set_header X-Real-IP $remote_addr;
||proxy_set_header X-Forwarded-For $remote_addr;
|}
}
Удаляем конфигурацию (default), которую создал nginx, потом включаем созданную нами ранее (proxy):
rm -rf /etc/nginx/sites-available/default
rm -rf /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/proxy /etc/nginx/sites-enabled
ls -la /etc/nginx/sites-enabled
systemctl restart nginx
?.
apt-get update
apt-get install yandex-browser-stable