#!/bin/bash # ============================================================ # ЗАДАНИЕ 1. Настройка BR-SRV (Linux / РЕД ОС 8) # Имя, адрес в сети BR (через BR-FW), пользователь sshuser # (UID 2027, sudo без пароля), SSH: порт 2027, только sshuser, # 2 попытки, баннер, часовой пояс. # ============================================================ # --- Проверка прав root --- if [[ $EUID -ne 0 ]]; then echo "Запустите скрипт с правами root (sudo bash br-srv.sh)" exit 1 fi # ================= ПЕРЕМЕННЫЕ (заполните перед запуском) ================= HOSTNAME_FQDN="br-srv.au-team.irpo" # таблица 3, запись br-srv.au-team.irpo # --- Единственная адресная переменная: базовая сеть офиса BR --- # BR-SRV получает второй адрес сети BR-SRV (см. схему в tools/subnets.py) BR_BASE="10.10.200.0/24" # поменяйте на свой расчёт при необходимости # --- Интерфейс --- SRV_IF="enp0s3" # 1-й NIC — к BR-FW (адрес из BR_BASE-схемы) DNS_SRV="" # DNS для сервера — адрес HQ-SRV (основной DNS по заданию) # либо внешний, например 8.8.8.8 — уточните у экзаменатора # --- Пользователь sshuser (значения из задания) --- SSH_USER="sshuser" SSH_USER_PASS="P@ssw0rd" SSH_USER_UID="2027" # --- SSH (значения из задания) --- SSH_PORT="2027" SSH_BANNER_TEXT="Authorized access only" SSH_BANNER_FILE="/etc/ssh/exam-banner" SSHD_CONF="/etc/ssh/sshd_config" # --- Прочее --- EXAM_TZ="Europe/Moscow" # проверить на экзамене NM_CONF_DIR="/etc/NetworkManager/system-connections" # ============ Проверка заполнения переменных ============ MISSING=() for NAME in HOSTNAME_FQDN SRV_IF BR_BASE SSH_USER SSH_USER_PASS \ SSH_USER_UID SSH_PORT EXAM_TZ; do [[ -z "${!NAME}" ]] && MISSING+=("$NAME") done if [[ ${#MISSING[@]} -gt 0 ]]; then echo "Заполните переменные в начале скрипта: ${MISSING[*]}" exit 1 fi echo "=== Настройка BR-SRV ===" # Префикс по заданию (достаточно голого IP) add_prefix () { if [[ "$2" == */* ]]; then echo "$2"; else echo "$2/$1"; fi; } SRV_ADDR=$(add_prefix 28 "$SRV_ADDR") # --- 1. Имя хоста --- hostnamectl set-hostname "$HOSTNAME_FQDN" echo "Имя хоста: $(hostname)" # --- 2. Сеть --- echo "--- Профиль $SRV_IF ---" cat > "$NM_CONF_DIR/$SRV_IF.nmconnection" </dev/null; then echo "DNS уже прописан: $(grep '^nameserver' /etc/resolv.conf)" else echo "nameserver $DNS_SRV" > /etc/resolv.conf fi fi # --- 3. Пользователь sshuser: UID 2027, пароль, sudo без пароля --- if id "$SSH_USER" &>/dev/null; then echo "Пользователь уже существует" else useradd -u "$SSH_USER_UID" -m "$SSH_USER" fi echo "$SSH_USER:$SSH_USER_PASS" | chpasswd echo "$SSH_USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/sshuser chmod 440 /etc/sudoers.d/sshuser echo "Проверка UID: id $SSH_USER" # --- 4. SSH: порт 2027, только sshuser, MaxAuthTries 2, баннер --- echo "--- Настройка SSH (порт $SSH_PORT) ---" echo "$SSH_BANNER_TEXT" > "$SSH_BANNER_FILE" for KEY in Port AllowUsers MaxAuthTries Banner; do sed -riE "s/^[[:space:]]*[#]*[[:space:]]*${KEY}[[:space:]].*$//" "$SSHD_CONF" done cat >> "$SSHD_CONF" </dev/null 2>&1 && [[ $(getenforce) == "Enforcing" ]]; then if ! semanage port -l | grep -qw "$SSH_PORT" 2>/dev/null; then semanage port -a -t ssh_port_t -p tcp "$SSH_PORT" 2>/dev/null \ || echo "ПРОВЕРИТЬ: не удалось добавить SELinux-порт $SSH_PORT" fi fi sshd -t && echo "Конфиг sshd корректен" || echo "ПРОВЕРИТЬ: sshd -t вернул ошибку" systemctl restart sshd || systemctl restart ssh echo "Проверка: ss -tlnp | grep ':$SSH_PORT'" # --- 5. Часовой пояс --- timedatectl set-timezone "$EXAM_TZ" echo "" echo "=== Самопроверка для BR-SRV ===" ip -4 -br address show echo "" echo "Дополнительные проверки вручную:" echo " ss -tlnp | grep ':$SSH_PORT' (SSH на порту 2027?)" echo " ping -c2 $SRV_GW (BR-FW доступен?)"