Розділ 9. Настроювання Дебіен

Цей розділ описує лише основи конфігурування системи за допомогою інтерфейсу командного рядка. Перед його читанням вам потрібно прочитати розділ 3.

Якщо ви зацікавлені в безпеці, вам потрібно прочитати Посібник по безпеці Дебіен з пакунку harden-doc.

Ініціалізація системи

Дебіен використовує ініціалізаційні сценарії в стилі System 5. Вступ до них описується у параграфі 2.4.1.

Настроювання стартових сценаріїв

Найпростіший спосіб контолювати поведінку ініціалізаційних сценарів - зміна змінних середовища у файлі, що називається так само, як стартовий сценарій і розташований у каталозі /etc/default. Наприклад, файл /etc/default/hotplug можна використати для контролю роботи /etc/init.d/hotplug, а файл /etc/default/rcS використовується для настроювання типових значень motd, sulogin і т.д.

Якщо ви не можете отримати потрібну вам поведінку корегуванням цих змінних, ви можете редагувати стартові сценарії напряму: всі вони є конфігураційними файлами.

Настроювання журналювання системи

Системний журнал можна конфігурувати за допомогою /etc/syslog.conf. Гляньте пакунок colorize якщо ви хочете бачити розфарбовані системні журнали. Див. також syslogd(8) та syslog.conf(5).

Оптимізація апаратного забезпечення

Існує кілька оптимізуючих конфігурацій, котрі Дебіен залишає на розсуд системного адміністратора.

  • hdparm

    • Оптимізація доступу до жорсткого диску. Дуже ефективно.
    • Небезпечно. Ви повинні спершу прочитати hdparm(8).
    • перевірити швидкість доступу до диску: hdparm -tT /dev/hda
    • збільшити швидкість сучасної IDE-системи: hdparm -q -c3 -d1 -u1 -m16 /dev/hda (може бути небезпечним!)
  • setcd

    • Оптимізація доступу до оптичного приводу
    • setcd -x 2 зменшити швидкість доступу до 2х
    • Див. setcd(1).
  • setserial

    • Набір інструментів для керування послідовним портом
  • scsitools

    • Набір інструментів для керування системою SCSI
  • memtest86

    • Набір інструментів для керування системою пам'яті
  • hwtools - Набір інструментів для низькорівневого керування апаратурою:

    • irqtune: змінює пріоритети IRQ пристроїв щоб дати пристроям, котрі цього потребують, вищий пріоритет та швидше обслуговування (наприклад, послідовним портам, модемам). Швидкість порта/модема можна збільшити втричі.
    • scanport: сканує діапазон вводу-виводу від 0x100 до 0x3ff шукаючи встановлені ISA-пристрої.
    • inb: маленький швидкий хак, котрий читає порт вводу-виводу та зберігає значення у шістнадцятковій та двійковій формах
  • schedutils

    • утиліти планувальника Лінукс
    • включно з taskset, irqset, lsrt, та rt
    • Разом з nice та renice (не включено) дозволяють контролювати параметри виконання процесів.

Монтування файлових систем з опцією noatime є також досить ефективним для пришвидшення часу звертання до файлу. Див. fstab(5) та mount(8).

Деякі пристрої можна настроювати напряму за допомогою ядра Лінукс через файлову систему proc. Див. параграф 7.3.

В Дебіен також є багато спеціалізованих конфігураційних утиліт. Багато з них спеціалізовані для вжитку на лептопах. Ось деякі цікавинки, доступні в Дебіен:

  • tpconfig - Програма для конфігурування тачпадів
  • apmd - Утиліти для розширеного керування живленнм (англ. Advanced Power Management, APM)
  • acpi - показує інформацію про пристрої АСРІ
  • acpid - утиліти для використання ACPI
  • lphdisk - prepares hibernation partition for Phoenix NoteBIOS
  • sleepd - переводить лептоп в сплячий режим під час неактивності
  • noflushd - дозволяє зменшити швидкість обертання жорстких дисків
  • big-cursor - більший курсор миші в X
  • acme - задіює знайдені "мультимедійні клавіші"
  • tpctl - інструменти для конфігурування апаратним забезпеченням IBM ThinkPad
  • mwavem - підтримка модемів Mwave/ACP
  • toshset - доступ до апаратного інтерфейсу більшості лептопів Тошиба
  • toshutils - інструменти для лептопів Тошиба
  • sjog - програма для використання "Jog Dial" на лептопах Sony Vaio
  • spicctrl - програма конролю яскравості монітора для лептопів Sony Vaio

АСРІ - це новіший фреймворк для керування живленням, аніж APM.

Деякі з цих пакунків вимагають особливих модулів ядра. В більшості випадків вони вже включені в сучасні ядра. Якщо ж вам не пощастило, ви можете самостійно накласти відповідну латку на ядро.

Організація доступу

Організація реєстрації за допомогою ПАМ

ПАМ (під'єднувані аутентифікаційні модулі, англ. PAM, Pluggable Authentication Modules) дозволяють вам контролювати реєстрацію користувачів.

Файли Опис
/etc/pam.d/* керуючі файли ПАМ
/etc/pam.d/login керуючий файл реєстрації
/etc/security/* параметри модулів
/etc/securetty контролює реєстрацію суперкористувача з консолі (login)
/etc/login.defs контролює поведінку програми реєстрації (login)

Якщо ви хочете мати небезпечний, але зате безпарольний доступ до терміналів консолі, змініть вміст файлу /etc/pam.d/login як показано нижче.

#auth       required   pam_unix.so nullok
auth       required   pam_permit.so

Подібні фокуси можна застовувати для xdm, gdm, ..., для безпарольних графічних консолей.

З іншого боку, встановіть cracklib2 і налаштуйте наступним чином /etc/pam.d/passwd щоб мати гарантовано хорошу політику паролів.

password required       pam_cracklib.so retry=3 minlen=6 difok=3

Також можуть допомогти одноразові паролі для активації реєстраційного запису. Для цього використовуйте команду passwd з опцією -e. Див. passwd(1).

З оболонки Bash командою ulimit -u 1000 або через налаштування ПАМ у файлі /etc/security/limits.conf можна задати максимальну кількість процесів. Подібно можна налаштувати й інші параметри. Початкове значення змінної PATH може бути задане в /etc/login.defs до стартового сценарію оболонки.

Документація на ПАМ запакована в libpam-doc. Посібник системного адміністратора Лінукс-ПАМ (The Linux-PAM System Administrator's Guide) описує конфіругурвання ПАМ, доступні модулі та ін. В документацію також включено Посібник розробника Лінукс-ПАМ (The Linux-PAM Application Developers' Guide) та Посібник автору модулів Лінукс-ПАМ (The Linux-PAM Module Writers' Guide).

«Чому GNU su не підтримує групу wheel»

Це відома фраза Річарда М Столмана з початку старої інформаційної сторінки info su. Не хвилюйтесь: поточна версія su в Дебіен використовує ПАМ, отож ви можете надати можливість користуватись програмою su будь-якій групі за допомогою pam_wheel.so з /etc/pam.d/su. Наступним чином в системі Дебіен можна налаштувати групу adm подібно до групи wheel у системах BSD без паролів для її членів:

# анти-РМС конфігурація у /etc/pam.d/su
auth       required   pam_wheel.so group=adm

# користувачі групи wheel (в нашому випадку adm) можуть користуватись su без паролю
auth       sufficient pam_wheel.so trust group=adm

Призначення стандартних груп

Кілька цікавих груп:

  • Якщо використовується pam_wheel.so без аргумента group=, група root є стандартною групою для запуску su.
  • Група adm може проглядати журнальні файли.
  • Групу cdrom можна використовувати для надавання доступу до оптичного приводу.
  • Групу floppy можна використовувати для надавання доступу до дисковода.
  • Групу audio можна використовувати для надавання доступу до аудіопристрою.
  • Група src володіє джерельними кодами, включаючи файли в /usr/src. Її члени можуть керувати джерельними кодами системи.
  • Групу staff зручно використовувати для виконання допоміжної роботи молодшими адміністраторами, даючи їм можливість виконувати всячину в /usr/local та створювати каталоги в /home.

Повний список шукайте в секції "Часті питання" Посібника по безпеці Дебіен. Нові версії base-passwd (>3.4.6) також містять повний список: /usr/share/doc/base-passwd/users-and-groups.html.

Працюємо безпечніше – sudo

Я використовую sudo в основному щоб захистити себе від власної дурості. Особисто я розглядаю використання sudo як кращу альтернативу регулярного використання системи від імені системного адміністратора.

Встановіть та налаштуйте sudo задавши відповідні опції в файлі /etc/sudoers. Перевірте також доступність групи для запуску sudo в файлі /usr/share/doc/sudo/OPTIONS.

Проста конфігурація пропонує членам групи "staff" доступ до будь-яких команд від імені суперкористувача а також членам групи "src" до вибраних команд.

Перевагою sudo є те, що вона потребує лише звичайного паролю користувача для реєстрації; активність користувача при цьому відслідковується. Це хороший спосіб давати деякі привілеї молодшим адміністраторам. Наприклад:

$ sudo chown -R myself:mygrp .

Звичайно, якщо ви знаєте пароль суперкористувача, будь-яка команда можне буде виконана від його імені з користувацького облікового запису:

$ su -c "shutdown -h now"
Password:

(Я знаю що я повинен урізати права облікового запису адміністратора через sudo, але поскільки це мій домашній сервер, я цим не дуже переймаюсь)

Різноманітні прорами, котрі дозволяють звичайним користувачам запускати команди з привілеями системного адміністратора, шукайте в пакунку super.

Обмеження доступу до служб

Супер-сервер служб інтернет, inetd, запускається при завантаженні файлом /etc/rc2.d/S20inetd (для другого рівня запуску), котрий є симлінком на /etc/init.d/inetd. Найголовніше, що ця служба дозволяє запустити один демон для виклику кількох інших, що суттєво економить ресурси системи.

Коли приходить запит до служби, вона та її протокол ідентифікуються переглядаючи бази даних в файлах /etc/protocols та /etc/services. Далі inetd шукає викликану службу у файлах /etc/inetd.conf та /etc/rpc.conf для служб, що базуються на Sun-RPC.

З метою підвищення безпеки системи відключіть невикористовувані служби у /etc/inetd.conf. Служби Sun-RPC повинні бути активними для роботи NFS та інших програм, що основані на них.

Іноді inetd запускає викликану службу не напряму, а її обгортку (англ. wrapper) з іменем служби у якості аргумента. В цьому випадку tcpd запускає відповідну службу лише після журналювання запиту та виконання ряду додаткових перевірок за допомогою файлів /etc/hosts.deny та /etc/hosts.allow.

Якщо ви маєте клопоти з віддаленим доступом до свіжої системи Дебіен, закоментуйте рядок "ALL: PARANOID" у файлі /etc/hosts.deny, якщо такий існує.

Деталі описуються в inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8), hosts_access(5), та hosts_options(5).

Додаткова інформація по Sun-RPC знаходиться в rpcinfo(8), portmap(8), та /usr/share/doc/portmap/portmapper.txt.gz.

Централізація аутентифікації - протокол LDAP

Використовуйте Полегшений протокол доступу до каталогів (англ. Lightweight Directory Access Protocol, LDAP). Довідники: