Ўстаноўка 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 .

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

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

Ці магчыма спрасціць ўстаноўку і наладку?
Як гэта можна аўтаматызаваць і спрасціць?