Установка Slackware і настройка безпеки

  1. Підготовка до безпеки
  2. Установка і видалення пакетів
  3. Інформація про пакетах
  4. патчі
  5. Директорія ./usr/local/bin
  6. Безпека
  7. тести
  8. І так далі...
  9. ресурси
Ця стаття описує дві групи скриптів: перша використовується для установки і видалення окремих пакетів, друга - для настройки безпеки.Обидві спроектовані для Slackware Linux.Утиліти для установки і видалення пакетів не так накручено, як програми з SlackPkg або Packware, але вони дають повний контроль над системою.Те ж саме вірно і для скриптів настройки безпеки.Вони виконують тільки елементарні операції.Обидва набори ми зібрали в зв'язку slack * more.

[Cezary M Kruk. Переклад Андрій Романич]

Автор: Cezary M Kruk
Переклад: Андрій Романчев

Ця стаття була переведена автором з польської мови. Оригінал буде опублікований в літньому випуску CHIP Special Linux .

[Прим.ред.- Уточнення: з польської на англійську.Так вона потрапила в Linux Gazette і тільки після цього була переведена на російську.Якщо все це назад перевести на польський - автор свою статтю може не впізнати.;-)]

Коли б не виходила нова версія вашого дистрибутива, завжди виникає одне і те ж питання: "Ставити все з нуля, спробувати оновити систему або продовжувати працювати з тим, що ви так довго використовували?"

Розглянемо два крайніх випадки: встановлення та налаштування системи з нуля дозволить вам побачити і використовувати всі її нові властивості, в той час як залишивши стару систему, ви можете бути впевнені, що продовжите роботу над своїми проектами без всяких перешкод. Звичайна боротьба між нововведеннями і стабільністю.

Базова настройка системи не складна. Але чим більше ви від неї хочете, тим більше зусиль доведеться для цього докласти. Чи можливо спростити установку і настройку? Повна і чітко розроблена база, яка містить інформацію про зміни, які ви зробили в попередній версії системи, робить настройку нової версії набагато простіше. Це не складно, коли ви збираєте інформацію, але вимагає великих зусиль при відновленні старої конфігурації. Як це можна автоматизувати і спростити?

На щастя, Linux зберігає інформацію про налаштування кожного окремого сервісу в текстових файлах. Більш того, є цілий набір утиліт для обробки таких файлів. Тому досить просто заготовити потрібні скрипти і використовувати їх, коли знадобиться заново встановити систему.

Підготовка до безпеки

Ця стаття описує дві групи скриптів: перша використовується для установки і видалення окремих пакетів, друга - для настройки безпеки. Обидві спроектовані для Slackware Linux. Утиліти для установки і видалення пакетів не так накручено, як програми з SlackPkg або Packware, але вони дають повний контроль над системою. Те ж саме вірно і для скриптів настройки безпеки. Вони виконують тільки елементарні операції. Обидва набори ми зібрали в зв'язку slack * more.

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

Ми будемо використовувати в якості прикладу Slackware Linux, тому що цей дистрибутив змушує користувачів змінювати конфігураційні файли безпосередньо. Інші дистрибутиви Linux, пропонуючи комплексні програми для цих цілей, віддаляють користувача від файлів настройки. Таким чином вони або роблять користувачів ледачими або змушують їх проводити складні дослідження, щоб встановити, що і де насправді було змінено в їх системі "доброзичливими програмами".

[Прим.ред.- "Що росіянину в радість, то німцю смерть."Користувача допитливого (usufructuarius studiosus - хай вибачать мене знавці латині) такий підхід влаштує, він йому просто необхідний.А ось для простих смертних, чий комп'ютер це інструмент для роботи, а не засіб для пізнавання навколишнього світу, така особливість ні до чого.Вона його тільки лякає.До того ж автор трохи пересмикує - привид єдиного реєстру для конфігураційних файлів Linux ще бродить по світу.Нехай і далі бродить, а до тих пір будь-який бажаючий може в обхід конфігурують програм та настроюватися вручну.]

Slack * more ділиться на дві частини. INSTALL.tgz містить інструменти для установки, видалення та оновлення програм, SECURE.tgz - інструменти для попереднього налаштування безпеки.

Малюнок 1. За допомогою SCRIPT.sh з директорії ./Slackware-9.0 генеруються списки пакетів окремих груп. На скріншоті пакети з групи d (development)

Установка і видалення пакетів

Найбільш важливі частини пакета INSTALL.tgz - це скрипт INSTALL.sh і директорія ./Slackware-9.0, що містить SCRIPT.sh і файл Slackware.

Щоб форматувати ці утиліти, вам треба змонтувати інсталяційний диск з Slackware к / mnt / cdrom і запустити SCRIPT.sh з ./Slackware-9.0. Скрипт перегляне директорії на CD-ROM і, керуючись розташованими тут тег-файлами, створить файли, що містять інформацію про пакети (Малюнок 1.). Кожен файл буде мати ім'я, відповідне імені його групи. Наприклад, у файлі e, використовуваному для збірки Emacs, ви знайдете серед іншого такі записи:

emacs: ADD emacs-misc: REC emacs-nox: OPT

Користувачі, які знаються на Slackware Linux, знають, що категорія ADD вказує пакети, необхідні для даної програми, категорія REC означає рекомендовані пакети, а категорія OPT - опціональні.

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

emacs: ADD # emacs-misc: REC! emacs-nox: OPT

пакет emacs буде встановлено, emacs-misc пропущений, а emacs-nox не тільки пропущений, але і видалений, якщо раніше він був встановлений.

У файлі Slackware з директорії ./Slackware-9.0 міститься інформація про групи пакетів:

a ap def ...

Згідно з цим файлу, скрипт буде вирішувати, що робити з групами пакетів. Якщо ви зміните цей файл наступним чином:

a ap #d! ef ...

група d буде пропущена, а кожен пакет з групи e, встановлений раніше, буде знищений.

Таким чином, якщо ви поставите перед ім'ям пакету # - він буде пропущений; якщо! - відповідні компоненти будуть видалені з системи. Якщо пакет або група пакетів ще не встановлені, # і! рівнозначні. Записи з файлу Slackware мають більший пріоритет, ніж файли груп, що містять назви пакетів. Так, якщо ви вирішите не ставити цілу групу пакетів або видалити пакети, що входять до неї, скрипт зробить це, не звертаючи уваги на інформацію, записану в файлах, що містять імена окремих пакетів.

Коли ви підготуєте файл Slackware і файли, що містять інформацію про індивідуальні пакетах, можна запускати скрипт INSTALL.sh. Він додасть або видалить відповідні компоненти системи. Якщо це перша установка Slackware і система ще не була відповідним чином налаштована, непогано буде оптимізувати роботу жорсткого диска, використовуваного для установки. Для цього ви можете використовувати скрипти INSTALL.hda або INSTALL.hdb. Після цього процес інсталяції або видалення пакетів піде швидше.

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

Інформація про пакетах

В директорії ./Packages знаходиться ще один SCRIPT.sh. Якщо ви прімонтіруете Slackware CD-ROM і запустіть цей скрипт, створяться директорії, що містять файли з інформацією про кожному пакеті системи. Подібна база даних зручна, так як не доведеться кожного разу монтувати кожен раз диск, для того щоб дізнатися призначення того чи іншого пакета. Створювати таку базу не обов'язково, якщо ви вирішили встановити Slackware Linux повністю. Тоді ви зможете знайти опис всіх пакетів в / var / log / packages.

патчі

В директорії ./Patches лежать два скрипта. Для початку варто запустити 0.check. Він перевірить сервер sunsite.icm.edu.pl на наявність оновлень для Slackware 9.0 і створить файли: Packages.html з інформацією про апдейтах і Packages.txt з назвами пакетів:

mutt-1.4.1i-i386-1 sendmail-8.12.9-i386-1 sendmail-cf-8.12.9-noarch-1

Скрипт 1.get буде використовувати Packages.txt, щоб завантажити самі програми і відповідні файли .txt і .tgz.asc. Для цього в ньому використовується команда wget -c -t0, так що ви можете не побоюватися, що скачаєте одні і ті ж файли повторно. З іншого боку перевірка, викачаний вже файл або ще немає, займає деякий час і найкращим рішенням буде переглянути Packages.txt до запуску 1.get і видалити звідти пакети, які у вас встановлені або вам не потрібні.

Ви можете змінити команду для скачування файлів на wget -c -t0 -b. Тоді всі файли будуть скачиваться з сервера одночасно - в фоновому режимі. Врахуйте, що не кожен сервер дозволяє встановлювати стільки одночасних з'єднань. Якщо sunsite.icm.edu.pl не задовольняє вашим потребам, ви можете прописати в скриптах 0.check і 1.get інший хост (прим.ред. - список дзеркал ви знайдете за адресою http://alphageek.dyndns.org/ linux / slackware-mirrors.shtml). Потім ви можете змінити команду, яка генерує файл Packages.txt на основі Packages.html. Спочатку це така команда:

cat Packages.html | grep ".tgz.asc" | sed 's / .tgz.asc // g' | sed \ 's /.* A HREF = "//' | sed 's /">.*//'> Packages.txt

Скрипт 1.get записує інформацію тільки про деякі пакетах. Велика кількість оновлень для Slackware лежать в окремих директоріях (kde, kdei, і т.д.). Якщо треба скачати і їх, вам доведеться зробити це вручну або відповідно модифікувати вихідний скрипт.

Директорія ./usr/local/bin

У ./usr/local/bin знаходиться скрипт catpkg, який робить перегляд файлів, що знаходяться в / var / log / packages, простіше. INSTALL.sh повністю копіює вміст ./usr/local/bin в аналогічну системну директорію. Тому ви можете помістити сюди різні скрипти, які ви хочете використовувати на перших порах роботи з системою.

Малюнок 2. Скрипт SECURE.sh знімає SUID і SGID біти з обраних фалів і виводить їх на екран

Безпека

Головний скрипт в архіві SECURE.tgz - це SECURE.sh. Він виконує наступні завдання:

  • У файлі /etc/login.defs встановлює значення змінної PASS_MAX_DAYS рівним 182. Завдяки цьому пароль для нових користувачів буде дійсний тільки протягом шести місяців.

  • У файлі / etc / profile встановлює значення змінної HISTFILESIZE рівним 100. Завдяки цьому довжина історії команд обмежиться 100 рядками.

  • У файлі /root/.bashrc встановлює значення змінної TMOUT рівним 900. Завдяки цьому неактивна сесія користувача root буде закрита після 15 хвилин.

    (Прим.ред. - Але якщо в консолі відкрита інтерактивна програма, то цей ключ не спрацює. Перевірялося на mc, думаю, подібна ситуація і з іншими програмами.)

  • Коментує в /etc/inetd.conf все незакомментірованние, але потенційно небезпечні мережеві сервіси.

  • Додає в /etc/hosts.deny запис ALL: ALL @ ALL для блокування всіх зовнішніх доступів до системи.

  • Додає в /etc/hosts.allow запис ALL: [email protected]: ALLOW, роздільну доступ до ресурсів локальної машини.

  • У файлі /etc/host.conf змінює послідовність order hosts, bind на більш безпечну order bind, hosts і додає рядок nospoof on.

  • У файлі / etc / securetty блокує доступ користувачеві root до всіх консолей, крім / dev / tty1.

  • Видаляє з файлу / etc / group групи news і uucp, непотрібні в більшості випадків. Це еквівалентно виконанню команд groupdel news і groupdel uucp.

  • Видаляє з файлу / etc / passwd користувачів news, uucp, operator, sync, і shutdown. Це еквівалентно послідовному виконанню команди userdel з відповідними параметрами.

  • Повторює дії з попереднього пункту для файлу / etc / shadow.

  • У файлі / etc / inittab коментує рядок ca :: ctrlaltdel: / sbin / shutdown. Завдяки цьому комбінація Ctrl-Alt-Delete більше не перезавантажує комп'ютер.

  • Прибирає у всіх скриптів з директорії /etc/rc.d права на читання і виконання непривілейованими користувачами.

  • Додає в /etc/rc.d/rc.local кілька команд, що включають або вимикають різні сервіси. Щоб ці команди працювали, в ядро потрібно додати модуль IP: TCP syncookie support.

  • Перевіряє кілька дюжин проблемних програм і знімає з них SUID біт. Інформація про зміни зберігається в лог-файл (Малюнок 2.).

  • Виконує такі ж дії для дюжини посилань на програми, прибираючи з них SUID і SGID біти.

  • У файлі /etc/mail/sendmail.cf додає записи O PrivacyOptions = noexpn і O PrivacyOptions = novrfy. Це запобігає віддалену перевірку акаунтів.

  • Копіює в директорію /etc/cron.daily скрипт, який автоматично видаляє різні часові директорії і файли.

  • Копіює в директорію / root / bin кілька корисних скриптів.

Ці дії значно підвищать безпеку системи, хоча це всього лише основні кроки по захисту від можливого злому. Скрипт SECURE.sh був написаний з урахуванням того, що він буде запускатися повторно. Тому ви можете додати будь-які функції скрипту і без особливих проблем застосувати їх.

Скрипт модифікує різні сервіси, але не перезапускає їх. Щоб застосувати настройки з /etc/inetd.conf, використовуйте команду killall -HUP inetd. Щоб запустити змінений / etc / inittab, виконайте команду init q. Щоб перезапустити sendmail, використовуйте /etc/rc.d/rc.sendmail restart або команду kill -HUP `head -1 / var / run / sendmail.pid`.

[Прим.ред.- А ще краще додати скрипт з ім'ям service (за аналогією з тим, що використовується в пакеті service в деяких rpm-based дистрибутивах):
#! / bin / sh /etc/rc.d/rc.$1 $ 2Або назвати його ще коротше - srv.Тоді перезапускати можна буде командою: srv sendmail restart Дуже зручно, не доводиться кожен раз набирати шлях /etc/rc.d.Тільки з правами не наплутав: chmod 700 srv або навіть 500.]

Ви можете включити ці команди в скрипт, але це спричинить за собою потенційний ризик, який ви повинні мати на увазі. Якщо ви зробите маленьку помилку при виклику програми sed, замість модифікації etc / inittab ви отримаєте порожній файл.Как результат, після перезапуску init ви втратите доступ до системи, і вам доведеться вручну відновлювати / etc / inittab з копії, використовуючи Linux, встановлений на іншому розділі або диску. Це не завжди приємно, особливо якщо у вас немає іншого розділу з Linux.

Малюнок 3. Лістинг файлів великого розміру. Як ви можете бачити, значну їх частину займають файли OpenOffice.org, встановлені в директорію / opt, так само як і файли RealPlayer і Pingus.

тести

Скрипт TEST-SECURE.sh шукає в системі файли наступних типів:

  • Файли з встановленими SUID або SGID битами.

  • Великі і старі файли (більше 1 МБ, що змінювалися або використовувалися востаннє три місяці тому або раніше).

  • Дуже великі файли (Малюнок 3.).

  • Файли без прив'язки до користувача або групі, існуючим в системі.

Інформація про кожну категорії подібних файлів заноситься в лог-файл. Більш того, TEST-SECURE.sh використовує результати роботи скрипта SECURE.sh, показуючи вміст лог-файлу з інформацією про програми без SUID або SGID бітів.

Так як не завжди треба запускати всі ці тести разом, в директорії / root / bin ви знайдете скрипти 1.suid, 2.huge + old, 3.huge і 4.nobody. Кожен з них виконує тільки один тест.

І так далі...

Дуже правильним ходом буде розширення SECURE.sh іншими функціями, що відповідають за установку і настройку подальших захисних можливостей. На його основі ви зможете дописати наступні скрипти для настройки інших сервісів: конфігурація акаунтів користувачів, настройка мережі, e-mail і WWW серверів і клієнтів, середовища X Window, і т.д. Все обмежується тільки вашою уявою, тому що Linux дає можливість керувати майже всім. І коли ви закінчите створення цих скриптів, ви будете здатні налаштовувати всю систему точно відповідно до ваших потреб, натиснувши всього лише кілька разів клавішу Enter.

ресурси

Slack * more:

freshmeat.net/projects/slackmore

SlackPkg:

freshmeat.net/projects/slackpkg

Packware (Польський сайт):

hacking.pl/packware.php

Cezary живе в Польщі, в місті Вроцлав. Він редактор польського видання CHIP Special Linux .

Copyright © 2003, Cezary M Kruk. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 91 of Linux Gazette, June 2003

Переклад можна знайти за адресою: http://gazette.linux.ru.net/lg91/kruk.html .

[Опубліковано 31/07/2004]

Cezary M Kruk. Переклад Андрій Романич - Установка Slackware і настройка безпеки Версія для друку

Чи можливо спростити установку і настройку?
Як це можна автоматизувати і спростити?