Журнал LinuxFormat - перейти на главную

LXF156:По рецептам доктора Брауна

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(На­чи­на­ем)
(Управ­ля­ем ре­сур­са­ми)
 
(не показаны 14 промежуточных версий 1 участника)
Строка 21: Строка 21:
 
Не­дав­но я был у дан­ти­ста и за­пол­нял фор­му, тре­бую­щую проставить несколь­ко га­ло­чек на­про­тив во­про­сов об этниче­­ской при­над­леж­но­сти. Од­на­ко сек­ре­тарь деликатно подска­зал мне, что ес­ли я не хо­чу, то за­пол­нять эти пункты не обя­за­тель­но. Нель­зя ли точно так же по­сту­пать с элек­трон­ной по­чтой?}}
 
Не­дав­но я был у дан­ти­ста и за­пол­нял фор­му, тре­бую­щую проставить несколь­ко га­ло­чек на­про­тив во­про­сов об этниче­­ской при­над­леж­но­сти. Од­на­ко сек­ре­тарь деликатно подска­зал мне, что ес­ли я не хо­чу, то за­пол­нять эти пункты не обя­за­тель­но. Нель­зя ли точно так же по­сту­пать с элек­трон­ной по­чтой?}}
  
LXF00.tut1.chris2.psd
 
 
==Дай ра­бо­ту, на­сяльника==
 
==Дай ра­бо­ту, на­сяльника==
 
[[Файл: LXF156.sysadmin.spectru_opt2.png|right |300px ]]   
 
[[Файл: LXF156.sysadmin.spectru_opt2.png|right |300px ]]   
Строка 68: Строка 67:
 
Container private area was created
 
Container private area was created
 
</pre>
 
</pre>
Здесь 102 – иден­ти­фи­ка­тор кон­тейнера (CTID), ко­то­рый пред­став­ля­ет со­бой про­сто це­лое чис­ло, иден­ти­фи­ци­рую­щее кон­тейнер. По умол­чанию ис­поль­зу­ют­ся зна­чения от 100 и вы­ше. Иден­ти­фи­ка­то­ры кон­тейнеров долж­ны быть уникаль­ны­ми в ка­ж­дом фи­зи­че­­ском хосте (или «уз­ле обо­ру­до­вания», на язы­ке OpenVZ); хо­тя ес­ли у про­вай­де­ра несколь­ко хостов, то, по­жа­луй, луч­ше, что­бы зна­чения CTID бы­ли уникаль­ны­ми в пре­де­лах ор­ганиза­ции. Те­перь мож­но на­стро­ить эк­зем­п­ляр кон­тейнера, за­дав имя хоста, IP-ад­рес и па­роль root:
 
 
{{Врезка|left|Заголовок= Спектр технологий виртуализации|Ширина=98%|Содержание= [[Файл:LXF156.sysadmin.spectru_opt.png | |thumb|500px|Классификация технологий контейнеров по тому, что они обобществляют и разделяют.]]
 
{{Врезка|left|Заголовок= Спектр технологий виртуализации|Ширина=98%|Содержание= [[Файл:LXF156.sysadmin.spectru_opt.png | |thumb|500px|Классификация технологий контейнеров по тому, что они обобществляют и разделяют.]]
Один из спо­со­бов ра­зо­брать­ся в оша­ра­ши­ваю­щем на­бо­ре тех­но­ло­гий вир­туа­ли­за­ции – ис­сле­до­вать сте­пень раз­де­ления, пре­достав­ляе­мую ка­ж­дой из них. В нижнем кон­це спек­тра – про­цесс Linux, ко­то­рый раз­де­ля­ет ад­рес­ное про­стран­ст­во, де­ск­рип­то­ры фай­лов, пе­ре­мен­ные ок­ру­жения, при­ори­тет планиро­вания и поль­зо­ва­те­ля.
+
<span style="font-size: 150%"> Один из спо­со­бов ра­зо­брать­ся в оша­ра­ши­ваю­щем на­бо­ре тех­но­ло­гий вир­туа­ли­за­ции – ис­сле­до­вать сте­пень раз­де­ления, пре­достав­ляе­мую ка­ж­дой из них. В нижнем кон­це спек­тра – про­цесс Linux, ко­то­рый раз­де­ля­ет ад­рес­ное про­стран­ст­во, де­ск­рип­то­ры фай­лов, пе­ре­мен­ные ок­ру­жения, при­ори­тет планиро­вания и поль­зо­ва­те­ля.
 +
</span>
  
 +
<span style="font-size: 150%">
 
Это ста­рая ис­то­рия, и мы обыч­но не удо­стаи­ва­ем ее тер­ми­ном «вир­туа­ли­за­ция», но на­ши раз­мыш­ления по­лез­но на­чать именно с нее, по­то­му что дру­гие кон­тейнеры вир­туа­ли­за­ции по существу пред­став­ля­ют со­бой лишь рас­ши­рения этой идеи. Да­лее в на­шем спек­тре – chroot jails [jail – англ. тюрьма], когда на ка­ж­дую «тюрь­му» отводится от­дель­ная фай­ло­вая сис­те­ма. Это небезо­пас­ная тех­но­ло­гия (из «тюрь­мы» лег­ко вы­рвать­ся), но она пре­достав­ля­ет «пе­сочницу», где мож­но по­про­бо­вать раз­лич­ные кон­фи­гу­ра­ции без рис­ка вы­вес­ти из строя всю сис­те­му.
 
Это ста­рая ис­то­рия, и мы обыч­но не удо­стаи­ва­ем ее тер­ми­ном «вир­туа­ли­за­ция», но на­ши раз­мыш­ления по­лез­но на­чать именно с нее, по­то­му что дру­гие кон­тейнеры вир­туа­ли­за­ции по существу пред­став­ля­ют со­бой лишь рас­ши­рения этой идеи. Да­лее в на­шем спек­тре – chroot jails [jail – англ. тюрьма], когда на ка­ж­дую «тюрь­му» отводится от­дель­ная фай­ло­вая сис­те­ма. Это небезо­пас­ная тех­но­ло­гия (из «тюрь­мы» лег­ко вы­рвать­ся), но она пре­достав­ля­ет «пе­сочницу», где мож­но по­про­бо­вать раз­лич­ные кон­фи­гу­ра­ции без рис­ка вы­вес­ти из строя всю сис­те­му.
 +
</span>
 +
 +
<span style="font-size: 150%">
 +
В верхнем кон­це спек­тра – тех­но­ло­гии пол­ной вир­туа­ли­за­ции уст­ройств, соз­даю­щие ил­лю­зии от­дель­ных дис­ко­вых раз­де­лов, се­те­вых ин­тер­фей­сов и опе­ра­ци­он­ных сис­тем. OpenVZ ле­жит где-то в се­ре­дине. Его досто­ин­ст­во – соз­дание доста­точ­но убедительной ил­лю­зии неза­ви­си­мо ад­ми­нист­ри­руе­мо­го ком­пь­ю­те­ра без за­трат на ис­пользо­вание тех­но­ло­гии пол­ной вир­туа­ли­за­ции. </span>
 +
}} Здесь 102 – иден­ти­фи­ка­тор кон­тейнера (CTID), ко­то­рый пред­став­ля­ет со­бой про­сто це­лое чис­ло, иден­ти­фи­ци­рую­щее кон­тейнер. По умол­чанию ис­поль­зу­ют­ся зна­чения от 100 и вы­ше. Иден­ти­фи­ка­то­ры кон­тейнеров долж­ны быть уникаль­ны­ми в ка­ж­дом фи­зи­че­­ском хосте (или «уз­ле обо­ру­до­вания», на язы­ке OpenVZ); хо­тя ес­ли у про­вай­де­ра несколь­ко хостов, то, по­жа­луй, луч­ше, что­бы зна­чения CTID бы­ли уникаль­ны­ми в пре­де­лах ор­ганиза­ции. Те­перь мож­но на­стро­ить эк­зем­п­ляр кон­тейнера, за­дав имя хоста, IP-ад­рес и па­роль root:
  
В верхнем кон­це спек­тра – тех­но­ло­гии пол­ной вир­туа­ли­за­ции уст­ройств, соз­даю­щие ил­лю­зии от­дель­ных дис­ко­вых раз­де­лов, се­те­вых ин­тер­фей­сов и опе­ра­ци­он­ных сис­тем. OpenVZ ле­жит где-то в се­ре­дине. Его досто­ин­ст­во – соз­дание доста­точ­но убедительной ил­лю­зии неза­ви­си­мо ад­ми­нист­ри­руе­мо­го ком­пь­ю­те­ра без за­трат на ис­пользо­вание тех­но­ло­гии пол­ной вир­туа­ли­за­ции.
 
}}
 
 
[[Файл: LXF156.sysadmin.spectru_opt3.png|left |400px |thumb|OpenVZ: виртуальные частные серверы, создаваемые за секунды  из готовых шаблонов, с установкой поверх общего ядра Linux.]]   
 
[[Файл: LXF156.sysadmin.spectru_opt3.png|left |400px |thumb|OpenVZ: виртуальные частные серверы, создаваемые за секунды  из готовых шаблонов, с установкой поверх общего ядра Linux.]]   
  
Строка 121: Строка 124:
 
Сей­час я смот­рю в команд­ную стро­ку сво­его VPS, хо­тя, конеч­но, на прак­ти­ке это бу­дут де­лать кли­ен­ты хостинг-про­вай­де­ра.
 
Сей­час я смот­рю в команд­ную стро­ку сво­его VPS, хо­тя, конеч­но, на прак­ти­ке это бу­дут де­лать кли­ен­ты хостинг-про­вай­де­ра.
  
Ос­та­но­вим кон­тейнер
+
==Ос­та­но­вим кон­тейнер==
  
 
Конеч­но, мо­жет по­ка­зать­ся, что для за­пуска од­но­го сер­ве­ра мы при­ло­жи­ли слиш­ком мно­го уси­лий, но лег­ко на­пи­сать неболь­шой скрипт, ко­то­рый бы это ав­то­ма­ти­зи­ро­вал. Мо­же­те да­же пред­ста­вить се­бе хостинг-про­вай­де­ра, ко­то­рый немно­го зна­ком с на­пи­санием скрип­тов и сде­лал несколь­ко скрип­тов (и, воз­мож­но, web-ин­тер­фейс), что­бы кли­ен­ты мог­ли са­ми соз­да­вать эк­зем­п­ля­ры VPS. Кон­тейнер мож­но оста­но­вить сле­дую­щим об­ра­зом:
 
Конеч­но, мо­жет по­ка­зать­ся, что для за­пуска од­но­го сер­ве­ра мы при­ло­жи­ли слиш­ком мно­го уси­лий, но лег­ко на­пи­сать неболь­шой скрипт, ко­то­рый бы это ав­то­ма­ти­зи­ро­вал. Мо­же­те да­же пред­ста­вить се­бе хостинг-про­вай­де­ра, ко­то­рый немно­го зна­ком с на­пи­санием скрип­тов и сде­лал несколь­ко скрип­тов (и, воз­мож­но, web-ин­тер­фейс), что­бы кли­ен­ты мог­ли са­ми соз­да­вать эк­зем­п­ля­ры VPS. Кон­тейнер мож­но оста­но­вить сле­дую­щим об­ра­зом:
  
 +
{{Врезка|right|Заголовок= |Ширина=20%|Содержание=Ути­ли­ты ко­манд­ной стро­ки
 +
 +
*vzlist Вы­во­дит спи­сок всех кон­тей­не­ров (по умол­ча­нию со­дер­жит толь­ко за­пу­щен­ные кон­тей­не­ры).
 +
 +
*vzcpucheck Ото­бра­жа­ет ис­поль­зо­ва­ние про­цес­со­ра для ка­ж­до­го кон­тей­не­ра.
 +
 +
*vzcalc Ото­бра­жа­ет до­лю сис­тем­ных ре­сур­сов хос­та, ис­поль­зуе­мых за­дан­ным кон­тей­не­ром.
 +
 +
*Соз­да­ет при­мер фай­ла на­строй­ки кон­тей­не­ра, ко­то­рый мож­но ис­поль­зо­вать для раз­де­ле­ния ре­сур­сов уз­ла обо­ру­до­ва­ния на N рав­ных час­тей.
 +
 +
*vzmigrate Пе­ре­но­сит кон­тей­нер с од­но­го уз­ла обо­ру­до­ва­ния на дру­гой. Де­лать это мож­но, да­же ко­гда они за­пу­ще­ны. Фан­та­сти­ка! }}
 
<pre> # vzctl stop 102</pre>
 
<pre> # vzctl stop 102</pre>
  
Строка 155: Строка 169:
 
У ка­ж­до­го кон­тейнера есть свой IP-ад­рес и свое лич­ное про­стран­ст­во но­ме­ров пор­тов. Так, порт 80 кон­тейнера 102 пол­но­стью от­де­лен от пор­та 80 кон­тейнера 103. «За ку­ли­са­ми» OpenVZ ис­поль­зу­ет гло­баль­ный файл на­строй­ки /etc/vz/vz.conf (при­ме­няе­мый ко всем кон­тейнерам) и фай­лы на­строй­ки кон­тейнеров /etc/vz/conf/xxx.conf, где xxx – иден­ти­фи­ка­тор кон­тейнера. Ус­та­нов­ка Live CD со­дер­жит при­ме­ры фай­лов, а под­роб­но­сти мож­но уз­нать на man-странице vz.conf. У хостинг-про­вай­де­ра ре­шения вро­де OpenVZ остав­ля­ют некое ощу­щение «всех яиц в од­ной кор­зине», в том смыс­ле, что ес­ли фи­зи­че­­ский сер­вер вый­дет из строя или бу­дет ата­ко­ван ха­ке­ром, он по су­ти останет­ся без вир­ту­аль­ных ча­ст­ных сер­ве­ров кли­ен­тов. Но это спра­вед­ли­во для всех тех­но­ло­гий вир­туа­ли­за­ции.
 
У ка­ж­до­го кон­тейнера есть свой IP-ад­рес и свое лич­ное про­стран­ст­во но­ме­ров пор­тов. Так, порт 80 кон­тейнера 102 пол­но­стью от­де­лен от пор­та 80 кон­тейнера 103. «За ку­ли­са­ми» OpenVZ ис­поль­зу­ет гло­баль­ный файл на­строй­ки /etc/vz/vz.conf (при­ме­няе­мый ко всем кон­тейнерам) и фай­лы на­строй­ки кон­тейнеров /etc/vz/conf/xxx.conf, где xxx – иден­ти­фи­ка­тор кон­тейнера. Ус­та­нов­ка Live CD со­дер­жит при­ме­ры фай­лов, а под­роб­но­сти мож­но уз­нать на man-странице vz.conf. У хостинг-про­вай­де­ра ре­шения вро­де OpenVZ остав­ля­ют некое ощу­щение «всех яиц в од­ной кор­зине», в том смыс­ле, что ес­ли фи­зи­че­­ский сер­вер вый­дет из строя или бу­дет ата­ко­ван ха­ке­ром, он по су­ти останет­ся без вир­ту­аль­ных ча­ст­ных сер­ве­ров кли­ен­тов. Но это спра­вед­ли­во для всех тех­но­ло­гий вир­туа­ли­за­ции.
  
Управ­ля­ем ре­сур­са­ми
+
==Управ­ля­ем ре­сур­са­ми==
  
 
OpenVZ – не тех­но­ло­гия пол­ной вир­туа­ли­за­ции. Хо­тя ка­ж­дый кон­тейнер ви­дит свою соб­ст­вен­ную фай­ло­вую сис­те­му, он не ви­дит соб­ст­вен­ных дис­ко­вых раз­де­лов фик­си­ро­ван­но­го раз­ме­ра. Вме­сто это­го фай­ло­вая сис­те­ма кон­тейнера свя­зы­ва­ет­ся с фай­ло­вой сис­те­мой хоста, так что (на­при­мер) ка­та­лог /home кон­тейнера с иден­ти­фи­ка­то­ром 102 пред­став­ля­ет со­бой ка­та­лог /vz/private/102/home хоста.
 
OpenVZ – не тех­но­ло­гия пол­ной вир­туа­ли­за­ции. Хо­тя ка­ж­дый кон­тейнер ви­дит свою соб­ст­вен­ную фай­ло­вую сис­те­му, он не ви­дит соб­ст­вен­ных дис­ко­вых раз­де­лов фик­си­ро­ван­но­го раз­ме­ра. Вме­сто это­го фай­ло­вая сис­те­ма кон­тейнера свя­зы­ва­ет­ся с фай­ло­вой сис­те­мой хоста, так что (на­при­мер) ка­та­лог /home кон­тейнера с иден­ти­фи­ка­то­ром 102 пред­став­ля­ет со­бой ка­та­лог /vz/private/102/home хоста.
Строка 163: Строка 177:
 
По­следний хит­рый при­ем OpenVZ – воз­мож­ность пе­ре­но­са VPS с од­но­го уз­ла уст­ройств на дру­гой, да­же при ра­бо­таю­щем VPS. Для хостинг-про­вай­де­ра, ко­то­рый толь­ко что рас­ко­ше­лил­ся на до­полнитель­ное обо­ру­до­вание и хо­чет рас­пре­де­лить на­груз­ку поль­зо­ва­те­ля на но­вые ком­пь­ю­те­ры, это по­тря­саю­щая воз­мож­ность. На сай­те OpenVZ есть ру­ко­во­дство поль­зо­ва­те­ля, хо­тя местами его не помешало бы и об­но­вить, и пол­ный на­бор man-страниц (http://wiki.openvz.org/images/9/9a/Man_pages.pdf). Но луч­ший спо­соб зна­ком­ст­ва с ним – уста­но­вить про­грам­му и по­про­бо­вать что-нибудь сде­лать. В этом и заключается пре­лесть от­кры­то­го ПО.
 
По­следний хит­рый при­ем OpenVZ – воз­мож­ность пе­ре­но­са VPS с од­но­го уз­ла уст­ройств на дру­гой, да­же при ра­бо­таю­щем VPS. Для хостинг-про­вай­де­ра, ко­то­рый толь­ко что рас­ко­ше­лил­ся на до­полнитель­ное обо­ру­до­вание и хо­чет рас­пре­де­лить на­груз­ку поль­зо­ва­те­ля на но­вые ком­пь­ю­те­ры, это по­тря­саю­щая воз­мож­ность. На сай­те OpenVZ есть ру­ко­во­дство поль­зо­ва­те­ля, хо­тя местами его не помешало бы и об­но­вить, и пол­ный на­бор man-страниц (http://wiki.openvz.org/images/9/9a/Man_pages.pdf). Но луч­ший спо­соб зна­ком­ст­ва с ним – уста­но­вить про­грам­му и по­про­бо­вать что-нибудь сде­лать. В этом и заключается пре­лесть от­кры­то­го ПО.
  
 +
=Etcetera в ил­лю­ст­ра­ци­ях – часть 4=
  
 +
''Изу­чай­те фай­лы в /etc ка­ж­дый ме­сяц с на­шим удоб­ным ру­ко­во­дством. В этот раз зна­ко­мим­ся с hosts.allow и hosts.deny.''
  
LXF156.sysadmin.spectrum.psd
+
[[Файл: LXF156.sysadmin.spectru_opt4.png|right |400px |thumb|Файл /etc/hosts.allow позволяет отфильтровать подключения к сервису путем идентификации клиентского компьютера.]]
185534.png Клас­си­фи­ка­ция тех­но­ло­гий кон­тей­не­ров по то­му, что они обоб­ще­ст­в­ля­ют и раз­де­ля­ют.
+
  
LXF156.sysadmin.openvz_logo.psd
+
'''Ф'''ай­лы /etc/hosts.allow и /etc/hosts.deny — фай­лы на­строй­ки ме­ханиз­ма управ­ления досту­пом, ко­то­рый на­зы­ва­ет­ся «оберт­ки TCP [TCP wrappers]» и пре­достав­ля­ет се­те­вым сер­ви­сам до­полнитель­ный уро­вень безо­пас­но­сти, по­зво­ляя управ­лять тем, ка­кие сер­ви­сы мо­гут быть доступ­ны с оп­ре­де­лен­ных кли­ент­ских ком­пь­ю­те­ров или се­тей. TCP wrappers бы­ли на­пи­са­ны Ви­ет­сой Венема [Wietsa Venema], ко­то­рый ра­бо­тал в Универ­си­те­те Эйн­дхо­ве­на и, по­жа­луй, бо­лее все­го из­вес­тен как ав­тор поч­то­вой сис­те­мы Postfix и та­ких ути­лит безо­пас­но­сти, как SATAN и Coroner’s Toolkit.
185420.png OpenVZ: вир­ту­аль­ные ча­ст­ные сер­ве­ры, соз­да­вае­мые за се­кун­ды из го­то­вых шаб­ло­нов, с ус­та­нов­кой по­верх об­ще­го яд­ра Linux.
+
 
+
Ути­ли­ты ко­манд­ной стро­ки
+
 
+
185793.png vzctl Ос­нов­ная ути­ли­та управ­ле­ния OpenVZ, об­су­ж­дае­мая в тек­сте ста­тьи.
+
 
+
185795.png vzlist Вы­во­дит спи­сок всех кон­тей­не­ров (по умол­ча­нию со­дер­жит толь­ко за­пу­щен­ные кон­тей­не­ры).
+
 
+
185797.png vzcpucheck Ото­бра­жа­ет ис­поль­зо­ва­ние про­цес­со­ра для ка­ж­до­го кон­тей­не­ра.
+
 
+
185799.png vzcalc Ото­бра­жа­ет до­лю сис­тем­ных ре­сур­сов хос­та, ис­поль­зуе­мых за­дан­ным кон­тей­не­ром.
+
 
+
185801.png vzsplit Соз­да­ет при­мер фай­ла на­строй­ки кон­тей­не­ра, ко­то­рый мож­но ис­поль­зо­вать для раз­де­ле­ния ре­сур­сов уз­ла обо­ру­до­ва­ния на N рав­ных час­тей.
+
 
+
185803.png vzmigrate Пе­ре­но­сит кон­тей­нер с од­но­го уз­ла обо­ру­до­ва­ния на дру­гой. Де­лать это мож­но, да­же ко­гда они за­пу­ще­ны. Фан­та­сти­ка!
+
 
+
Узел обо­ру­до­ва­ния (Фи­зи­че­ский сер­вер)
+
 
+
Вир­ту­аль­ный ча­ст­ный сер­вер
+
 
+
Поль­зо­ва­тель
+
 
+
Фай­ло­вая сис­те­ма
+
 
+
Яд­ро Linux OpenVZ
+
 
+
Шаб­лон
+
 
+
Поль­зо­ва­тель
+
 
+
Вир­ту­аль­ный ча­ст­ный сер­вер
+
 
+
Фай­ло­вая сис­те­ма
+
 
+
Шаб­лон со­дер­жит па­ке­ты, ус­та­нав­ли­вае­мые на ка­ж­дый но­вый VPS
+
 
+
Се­те­вые под­клю­че­ния пе­ре­на­прав­ля­ют­ся
+
уз­лом обо­ру­до­ва­ния
+
 
+
Ин­тер­нет
+
 
+
Etcetera в ил­лю­ст­ра­ци­ях – часть 4
+
 
+
Изу­чай­те фай­лы в /etc ка­ж­дый ме­сяц с на­шим удоб­ным ру­ко­во­дством. В этот раз зна­ко­мим­ся с hosts.allow и hosts.deny.
+
 
+
Фай­лы /etc/hosts.allow и /etc/hosts.deny — фай­лы на­строй­ки ме­ханиз­ма управ­ления досту­пом, ко­то­рый на­зы­ва­ет­ся «оберт­ки TCP [TCP wrappers]» и пре­достав­ля­ет се­те­вым сер­ви­сам до­полнитель­ный уро­вень безо­пас­но­сти, по­зво­ляя управ­лять тем, ка­кие сер­ви­сы мо­гут быть доступ­ны с оп­ре­де­лен­ных кли­ент­ских ком­пь­ю­те­ров или се­тей. TCP wrappers бы­ли на­пи­са­ны Ви­ет­сой Венема [Wietsa Venema], ко­то­рый ра­бо­тал в Универ­си­те­те Эйн­дхо­ве­на и, по­жа­луй, бо­лее все­го из­вес­тен как ав­тор поч­то­вой сис­те­мы Postfix и та­ких ути­лит безо­пас­но­сти, как SATAN и Coroner’s Toolkit.
+
  
 
Су­ще­ст­ву­ет два под­хо­да в ис­поль­зо­вании TCP wrappers. Пер­вый – «неви­но­вен, по­ка ви­на не до­ка­за­на». В нем все под­клю­чения раз­ре­ше­ны, ес­ли они яв­но не за­бло­ки­ро­ва­ны в hosts.deny. Вто­рой – «ви­но­вен, по­ка не до­ка­за­но об­рат­ное»: все со­единения бло­ки­ру­ют­ся, ес­ли они яв­но не раз­ре­ше­ны в hosts.allow. Стро­гие ад­минист­ра­то­ры, не до­пускаю­щие те­чи на судне, на­вер­ня­ка вы­бе­рут вто­рой под­ход и нач­нут с фай­ла hosts.deny, со­дер­жа­ще­го все­го од­ну стро­ку:
 
Су­ще­ст­ву­ет два под­хо­да в ис­поль­зо­вании TCP wrappers. Пер­вый – «неви­но­вен, по­ка ви­на не до­ка­за­на». В нем все под­клю­чения раз­ре­ше­ны, ес­ли они яв­но не за­бло­ки­ро­ва­ны в hosts.deny. Вто­рой – «ви­но­вен, по­ка не до­ка­за­но об­рат­ное»: все со­единения бло­ки­ру­ют­ся, ес­ли они яв­но не раз­ре­ше­ны в hosts.allow. Стро­гие ад­минист­ра­то­ры, не до­пускаю­щие те­чи на судне, на­вер­ня­ка вы­бе­рут вто­рой под­ход и нач­нут с фай­ла hosts.deny, со­дер­жа­ще­го все­го од­ну стро­ку:
  
 
ALL: ALL
 
ALL: ALL
 
+
[[Файл: LXF156.sysadmin.spectru_opt5.png|left |400px |thumb|]] 
 
За­тем они ука­жут раз­ре­шен­ные со­че­тания сер­вис/кли­ент в hosts.allow. Этот файл да­ет боль­шую гиб­кость в опи­сании со­единений кли­ен­тов. Мож­но вве­сти кон­крет­ный IP-ад­рес или на­бор ад­ре­сов (ско­рее все­го, здесь вы ука­же­те свою локаль­ную сеть) или имя ком­пь­ю­те­ра или до­ме­на. Од­на­ко уч­ти­те, что для имен ком­пь­ю­те­ров TCP wrappers при­хо­дит­ся вы­пол­нять об­рат­ные DNS-за­про­сы, а это влия­ет на про­из­во­ди­тель­ность.
 
За­тем они ука­жут раз­ре­шен­ные со­че­тания сер­вис/кли­ент в hosts.allow. Этот файл да­ет боль­шую гиб­кость в опи­сании со­единений кли­ен­тов. Мож­но вве­сти кон­крет­ный IP-ад­рес или на­бор ад­ре­сов (ско­рее все­го, здесь вы ука­же­те свою локаль­ную сеть) или имя ком­пь­ю­те­ра или до­ме­на. Од­на­ко уч­ти­те, что для имен ком­пь­ю­те­ров TCP wrappers при­хо­дит­ся вы­пол­нять об­рат­ные DNS-за­про­сы, а это влия­ет на про­из­во­ди­тель­ность.
  
 
На за­ре TCP wrappers про­вер­ки досту­па вы­пол­ня­лись от­дель­ной про­грам­мой tcpd. Обыч­но так на­зы­вае­мый «су­пер­сер­вер», та­кой как inetd, слу­шал вхо­дя­щие со­единения от имени сер­ви­са и за­тем за­пускал tcpd. По­сле вы­полнения про­ве­рок и об­ра­бот­ки па­ра­мет­ров, ука­зан­ных в hosts.allow и hosts.deny, tcpd за­пускал сер­вер. Се­го­дня inetd и tcpd поч­ти не ис­поль­зу­ют­ся. Од­на­ко на удив­ление мно­го сер­ви­сов все еще удо­стаи­ва­ют вниманием hosts.allow и hosts.deny по­сред­ст­вом биб­лио­те­ки libwrap (см. врез­ку).
 
На за­ре TCP wrappers про­вер­ки досту­па вы­пол­ня­лись от­дель­ной про­грам­мой tcpd. Обыч­но так на­зы­вае­мый «су­пер­сер­вер», та­кой как inetd, слу­шал вхо­дя­щие со­единения от имени сер­ви­са и за­тем за­пускал tcpd. По­сле вы­полнения про­ве­рок и об­ра­бот­ки па­ра­мет­ров, ука­зан­ных в hosts.allow и hosts.deny, tcpd за­пускал сер­вер. Се­го­дня inetd и tcpd поч­ти не ис­поль­зу­ют­ся. Од­на­ко на удив­ление мно­го сер­ви­сов все еще удо­стаи­ва­ют вниманием hosts.allow и hosts.deny по­сред­ст­вом биб­лио­те­ки libwrap (см. врез­ку).
  
Еще боль­ше поль­зы
+
==Еще боль­ше поль­зы==
  
 
Кро­ме управ­ления досту­пом к сер­ви­су пу­тем иден­ти­фи­ка­ции ком­пь­ю­те­ра кли­ен­та, TCP wrappers мо­гут вы­пол­нять и дру­гие дей­ст­вия при под­клю­чении кли­ен­та. Мож­но за­пи­сать в жур­нал все за­про­сы на под­клю­чение (с по­мо­щью syslog), от­пра­вить кли­ен­ту со­дер­жи­мое за­ранее за­дан­но­го фай­ла «баннера» (час­то как со­об­щение «толь­ко для ав­то­ри­зо­ван­ных поль­зо­ва­те­лей») или за­пустить лю­бую ко­ман­ду обо­лоч­ки. На man-странице hosts_access опи­сан ба­зо­вый син­так­сис hosts.allow и hosts.deny, а на man-странице hosts_options – до­полнитель­ные воз­мож­но­сти. А про­чтя ори­ги­наль­ный до­ку­мент Венемы (ftp://ftp.porcupine.org/pub/security/tcp_wrapper.pdf), вы уз­нае­те, что основ­ным мо­ти­вом раз­ра­бот­ки TCP wrappers бы­ло от­сле­жи­вание по­пы­ток ха­ке­ра взло­мать ком­пь­ю­тер­ную сис­те­му в Эйн­дхо­ве­не.
 
Кро­ме управ­ления досту­пом к сер­ви­су пу­тем иден­ти­фи­ка­ции ком­пь­ю­те­ра кли­ен­та, TCP wrappers мо­гут вы­пол­нять и дру­гие дей­ст­вия при под­клю­чении кли­ен­та. Мож­но за­пи­сать в жур­нал все за­про­сы на под­клю­чение (с по­мо­щью syslog), от­пра­вить кли­ен­ту со­дер­жи­мое за­ранее за­дан­но­го фай­ла «баннера» (час­то как со­об­щение «толь­ко для ав­то­ри­зо­ван­ных поль­зо­ва­те­лей») или за­пустить лю­бую ко­ман­ду обо­лоч­ки. На man-странице hosts_access опи­сан ба­зо­вый син­так­сис hosts.allow и hosts.deny, а на man-странице hosts_options – до­полнитель­ные воз­мож­но­сти. А про­чтя ори­ги­наль­ный до­ку­мент Венемы (ftp://ftp.porcupine.org/pub/security/tcp_wrapper.pdf), вы уз­нае­те, что основ­ным мо­ти­вом раз­ра­бот­ки TCP wrappers бы­ло от­сле­жи­вание по­пы­ток ха­ке­ра взло­мать ком­пь­ю­тер­ную сис­те­му в Эйн­дхо­ве­не.
  
185391.png
 
185392.png
 
 
Кто этим поль­зу­ет­ся?
 
  
 +
{{Врезка|left|Заголовок=Кто этим поль­зу­ет­ся? |Ширина=80%|Содержание=
 
Сер­ви­сы, ис­поль­зую­щие TCP wrappers, свя­зы­ва­ют­ся с биб­лио­те­кой libwrap. По­это­му их лег­ко най­ти с по­мо­щью про­сто­го скрип­та, при­мер­но та­ко­го:
 
Сер­ви­сы, ис­поль­зую­щие TCP wrappers, свя­зы­ва­ют­ся с биб­лио­те­кой libwrap. По­это­му их лег­ко най­ти с по­мо­щью про­сто­го скрип­та, при­мер­но та­ко­го:
 
+
<pre>
 
for f in /bin/* /usr/bin/* /sbin/* /usr/sbin/*
 
for f in /bin/* /usr/bin/* /sbin/* /usr/sbin/*
 
 
do
 
do
 
 
# echo processing $f
 
# echo processing $f
 
 
if ldd $f | grep -q libwrap
 
if ldd $f | grep -q libwrap
 
 
then
 
then
 
 
echo $f uses libwrap
 
echo $f uses libwrap
 
 
fi
 
fi
 
 
done
 
done
 
+
</pre>
 
Он на­шел 23 ис­пол­няе­мых фай­ла в Ubuntu 10.04 и 38 в Fedora 15.
 
Он на­шел 23 ис­пол­няе­мых фай­ла в Ubuntu 10.04 и 38 в Fedora 15.
  
 
Ин­те­рес­но, что в этот спи­сок вхо­дит де­мон безо­пас­ной обо­лоч­ки (sshd) и зер­ка­ло пор­тов (rpcbind), ко­то­рое не­об­хо­ди­мо та­ким сер­ви­сам, как NFS и NIS.
 
Ин­те­рес­но, что в этот спи­сок вхо­дит де­мон безо­пас­ной обо­лоч­ки (sshd) и зер­ка­ло пор­тов (rpcbind), ко­то­рое не­об­хо­ди­мо та­ким сер­ви­сам, как NFS и NIS.
 
+
}}
Со­от­вет­ст­ву­ет ли
+
ему за­пись
+
в hosts.allow?
+
 
+
Со­от­вет­ст­ву­ет ли
+
ему за­пись
+
в hosts.deny?
+
 
+
Вхо­дя­щий за­прос
+
 
+
За­пре­тить!
+
 
+
Да
+
 
+
Нет
+
 
+
Да
+
 
+
Нет
+
 
+
Раз­ре­шить!
+
 
+
Раз­ре­шить!
+
 
+
185448.png TCP wrappers сна­ча­ла счи­ты­ва­ют файл host.allow, а за­тем hosts.deny. Ес­ли файл не су­ще­ст­ву­ет, счи­та­ет­ся, что он пуст.
+
 
+
185831.png Файл /etc/hosts.allow по­зво­ля­ет от­фильт­ро­вать под­клю­че­ния к сер­ви­су пу­тем иден­ти­фи­ка­ции кли­ент­ско­го ком­пь­ю­те­ра.
+
 
+
Од­но или не­сколь­ко имен сер­ви­сов или клю­че­вое сло­во «ALL»
+
 
+
Один или не­сколь­ко кли­ен­тов;
+
вер­ный син­так­сис вклю­ча­ет:
+
 
+
192.168.0.4 За­дан­ный IP-ад­рес
+
 
+
144.116.0.0/16 Диа­па­зон IP-ад­ре­сов
+
 
+
.miskatonic.org До­мен
+
 
+
mars.planets.com За­дан­ный хост
+
 
+
ALL Все кли­ен­ты
+
 
+
LOCAL Ло­каль­ное имя ком­пь­ю­те­ра (с точ­кой в нем)
+
 
+
sshd:
+
 
+
ftpd:
+
 
+
192.168.0.0/24:
+
 
+
miskatonic.org
+
 
+
Па­ра­мет­ры
+
 
+
В при­ве­ден­ном при­ме­ре за­да­ет­ся уро­вень ло­ги­ро­ва­ния. Дру­гие па­ра­мет­ры вклю­ча­ют:
+
 
+
spawn За­пуск ука­зан­ной ко­ман­ды обо­лоч­ки
+
 
+
keepalive От­прав­ка пе­рио­ди­че­ских со­об­ще­ний кли­ен­ту
+
 
+
user tom За­пуск де­мо­на от имени ука­зан­ного поль­зо­ва­те­ля
+
 
+
severity info
+

Текущая версия на 14:30, 13 июля 2018

Содержание

[править] По рецептам доктора Брауна

Доктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает. Эзо­те­ри­че­ское сис­тем­ное ад­ми­ни­ст­ри­ро­ва­ние из при­чуд­ли­вых за­во­ро­тов ки­шок сер­вер­ной



[править] Дай ра­бо­ту, на­сяльника

LXF156.sysadmin.spectru opt2.png

Мы все зна­ем, что Linux чу­де­сен, но мож­но ли с ним сде­лать карь­е­ру? Док­тор счи­та­ет, что да.

И ногда мои кур­сы по­сеща­ют сту­ден­ты, «от­ды­хаю­щие от ра­бо­ты» (то есть по­про­сту без­ра­бот­ные) – они пла­тят за обу­чение из сво­его кар­ма­на, на­деясь улуч­шить свои пер­спек­ти­вы на рын­ке тру­да в бу­ду­щем. Как пре­по­да­ва­тель, я ощущаю осо­бую от­вет­ст­вен­ность, когда кто-то хо­чет, что­бы я уве­ли­чил его шан­сы за­ра­бо­тать на хлеб. Мы все зна­ем, что Linux – луч­шая ОС на планете, но дей­ст­ви­тель­но ли обу­чение на кур­сах сис­тем­но­го ад­минист­ри­ро­вания в Linux – правильный вы­бо­р для этих лю­дей?

Сайт itjobswatch.co.uk фор­ми­ру­ет ста­ти­сти­ку рын­ка тру­да, со­би­рая ин­фор­ма­цию с сай­тов ва­кан­сий в сфе­ре IT. Ста­ти­сти­ка, разумеется, осно­ва­на на по­ис­ке по клю­че­вым сло­вам в опи­саниях ва­кан­сий, и к ней нуж­но от­но­сить­ся с осто­рож­но­стью. Но она по­зво­ля­ет по­нять неко­то­рые ин­те­рес­ные мо­мен­ты, и я про­вел сча­ст­ли­вое ут­ро за вво­дом по­ис­ко­вых за­про­сов в этот сайт. Ни­же при­ве­де­ны неко­то­рые добытые мною по­ка­за­те­ли.

По­ка­за­те­ли осно­ва­ны на средних зна­чениях за три ме­ся­ца (конец ин­тер­ва­ла – 26 ян­ва­ря 2012 г.). Для сравнения так­же при­во­дят­ся по­ка­за­те­ли за тот же пе­ри­од год и два го­да на­зад. Боль­ше все­го вдох­нов­ля­ет не аб­со­лют­ное зна­чение циф­р, а то, что во всех сфе­рах ми­ра СПО (по­иск по “Tomcat”, “PHP”, “Hadoop”, “Drupal”, “Red Hat” и “Ubuntu”) – стой­кий восхо­дя­щий тренд.

[править] Путь толь­ко на­верх

Правда, часть этих тех­но­ло­гий возник­ла со­всем недав­но, и един­ст­вен­ный путь для них – на­верх. Об­рат­ный ре­зуль­тат, впро­чем, де­мон­ст­ри­ру­ют за­про­сы по на­званиям основ­ных сис­тем UNIX (та­кие как “Solaris”, “HPUX” и “AIX”) – ко­ли­че­­ст­во всех их без ис­клю­чения по­сто­ян­но па­да­ет.

Конеч­но, с кон­кре­ти­за­ци­ей рода ра­бо­ты и ме­сто­по­ло­жения циф­ры падают. Ес­ли вы, скажем, раз­ра­бот­чик Drupal и ище­те ра­бо­ту в Тэ­му­ор­те, за­будь­те об этом. Ее нет. Но не верь­те мне на сло­во – зай­ди­те на itjobswatch.co.uk и убе­ди­тесь са­ми.

[править] Кон­тей­не­ры OpenVZ

Ис­поль­зуй­те свое «же­ле­зо» на пол­ную си­лу с OpenVZ, лег­кой про­грам­мой для вир­туа­ли­за­ции, иде­аль­ной для хос­тинг-про­вай­де­ров.

В ми­ре безд­на тех­но­ло­гий вир­туа­ли­за­ции. Да­же ес­ли ог­раничить­ся толь­ко при­менимы­ми в Linux, най­дет­ся доста­точ­но, что­бы гла­за за­сле­зи­лись: Bochs, DOSEMU, KVM, VServer, OpenVZ, Parallels, раз­лич­ные вер­сии VMWare, QEMU, Xen... спи­сок мож­но про­дол­жить.

Се­го­дня я хо­чу рас­ска­зать вам об OpenVZ. Это тех­но­ло­гия яд­ра Linux, по­зво­ляю­щая за­пускать несколь­ко вир­ту­аль­ных ча­ст­ных сер­ве­ров (VPS) на од­ном фи­зи­че­­ском ком­пь­ю­те­ре. Ка­ж­дый из сер­ве­ров при этом вы­гля­дит как от­дель­ный сер­вер с от­дель­ны­ми досту­пом root, IP-ад­ре­сом, таб­ли­цей про­цес­сов, фай­ло­вой сис­те­мой, пра­ви­ла­ми бранд­мау­эра и т. д. От средств пол­ной вир­туа­ли­за­ции вро­де Xen или VMWare эту про­грам­му от­ли­ча­ет то, что в ка­ж­дом эк­зем­п­ля­ре VPS ис­поль­зу­ет­ся од­на и та же раз­де­ляе­мая ко­пия яд­ра Linux. По­это­му, на­при­мер, с OpenVZ нель­зя за­гру­зить эк­зем­п­ляр Windows 7 и эк­зем­п­ляр RedHat, и нель­зя за­гру­жать мо­ду­ли яд­ра неза­ви­си­мо в ка­ж­дый VPS. Но «про­стран­ст­во поль­зо­ва­те­ля» в ка­ж­дом VPS мо­жет быть раз­ным, по­это­му мож­но, на­при­мер, за­пустить CentOS и SUSE ря­дом на од­ном и том же яд­ре. Это эф­фек­тив­ное ре­шение, и мож­но соз­дать доста­точ­но пол­ную ил­лю­зию от­дель­но ад­минист­ри­руе­мых ком­пь­ю­те­ров, что­бы удов­ле­тво­рить поль­зо­ва­те­лей, ко­то­рые не хо­тят мно­го пла­тить за хостинг-услу­ги. Это де­ла­ет OpenVZ при­вле­ка­тель­ной тех­но­ло­ги­ей для хостинг-про­вай­де­ров, же­лаю­щих по­лу­чить мак­си­маль­ную при­быль при ог­раничен­ных вло­жениях в обо­ру­до­вание.

[править] На­чи­на­ем

OpenVZ – тех­но­ло­гия, на осно­ве ко­то­рой ра­бо­та­ют Virtuozzo Containers. Это ком­мер­че­­ская вир­туа­ли­за­ция сер­ве­ра от Parallels (www.parallels.com/products/pvc) – ком­пании, по­жа­луй, луч­ше все­го из­вест­ной на­столь­ны­ми про­дук­та­ми для вир­туа­ли­за­ции, по­зво­ляю­щи­ми за­пустить Windows на Mac. Virtuozzo Containers не бес­пла­тен, но ес­ли вы хо­ти­те немно­го по­ра­бо­тать в команд­ной стро­ке, OpenVZ по­зво­лит восполь­зо­вать­ся этой тех­но­ло­ги­ей бес­плат­но. Она со­сто­ит из мо­ди­фи­ци­ро­ван­ной вер­сии яд­ра Linux, на­бо­ра ути­лит команд­ной стро­ки и кол­лек­ции шаб­ло­нов. Шаб­лон по су­ти пред­став­ля­ет со­бой сжа­тый tar-ар­хив па­ке­тов, ко­то­рые вы хо­ти­те уста­но­вить на VPS. Шаб­ло­ны уско­ря­ют соз­дание эк­зем­п­ля­ров VPS. Хостинг-про­вай­де­ры обыч­но на­чи­на­ют с уста­нов­ки ди­ст­ри­бу­ти­ва Linux на свое обо­ру­до­вание. В на­шем слу­чае они мо­гут за­гру­зить OpenVZ-вер­сию яд­ра, на­стро­ить его за­груз­ку в Grub и уста­но­вить ути­ли­ты про­стран­ст­ва поль­зо­ва­те­ля. И яд­ро, и ути­ли­ты доступ­ны в ви­де RPM-па­ке­тов на сай­те OpenVZ, по­это­му уста­нов­ка не долж­на быть слож­ной.

Как всегда, пред­вку­шая немед­лен­ное удо­воль­ст­вие, а за­гру­зил об­раз Live CD с сай­та OpenVZ (http://wiki.openvz.org/Download_live_CD) и уста­но­вил его на сер­вер Dell PowerEdge. Диск ме­ня немно­го раз­оча­ро­вал – не столь­ко из-за неук­лю­же­го ин­тер­фей­са команд­ной стро­ки, сколь­ко из-за воз­рас­та: в нем ис­поль­зу­ет­ся за­груз­чик Lilo и ста­рое яд­ро (2.6.18). Нет ни пре­дуста­нов­лен­ных шаб­ло­нов, ни yum, ни wget. Но за­то есть яд­ро OpenVZ, ути­ли­ты команд­ной стро­ки OpenVZ и man-страницы. И на нем есть ра­бо­чий сер­вер ssh, по­это­му я за­гру­зил шаб­лон CentOS с сай­та OpenVZ на сво­ем но­ут­бу­ке и ско­пи­ро­вал его ко­ман­дой scp на сер­вер сле­дую­щим об­ра­зом:

wget http://download.openvz.org/template/precreated/centos-5-x86_64.tar.gz

scp centos-5-x86_64.tar.gz root@192.168.1.144:/vz/templates/cache

Ус­та­но­вив шаб­лон, я смог под­клю­чить­ся к сер­ве­ру и соз­дать VPS, вот так:

# vzctl create 102 --ostemplate centos-5-x86_64

Creating container private area (centos-5-x86_64)

Performing postcreate actions

Container private area was created
(thumbnail)
OpenVZ: виртуальные частные серверы, создаваемые за секунды из готовых шаблонов, с установкой поверх общего ядра Linux.
# vzctl set 102 --hostname test102.example.com --save

Saved parameters for CT 102

 # vzctl set 102 --ipadd 192.168.1.102 --save

Saved parameters for CT 102

 # vzctl set 102 --userpasswd root:pink-turtle

Те­перь все го­то­во для за­пус­ка эк­зем­п­ля­ра:

 # vzctl start 102

Starting container ...

Container is mounted

Setting CPU units: 1000

Configure meminfo: 65536

Set hostname: test102.example.com

Container start in progress...

... и за­пус­ка в нем сер­ве­ра sshd:

 # vzctl exec 102 service sshd start

Starting sshd: [ OK ]

На­ко­нец, я мо­гу под­клю­чить­ся к но­во­му VPS по ssh:

 # ssh 192.168.1.102

root@192.168.1.102’s password:

[root@test102 ~]#

Сей­час я смот­рю в команд­ную стро­ку сво­его VPS, хо­тя, конеч­но, на прак­ти­ке это бу­дут де­лать кли­ен­ты хостинг-про­вай­де­ра.

[править] Ос­та­но­вим кон­тейнер

Конеч­но, мо­жет по­ка­зать­ся, что для за­пуска од­но­го сер­ве­ра мы при­ло­жи­ли слиш­ком мно­го уси­лий, но лег­ко на­пи­сать неболь­шой скрипт, ко­то­рый бы это ав­то­ма­ти­зи­ро­вал. Мо­же­те да­же пред­ста­вить се­бе хостинг-про­вай­де­ра, ко­то­рый немно­го зна­ком с на­пи­санием скрип­тов и сде­лал несколь­ко скрип­тов (и, воз­мож­но, web-ин­тер­фейс), что­бы кли­ен­ты мог­ли са­ми соз­да­вать эк­зем­п­ля­ры VPS. Кон­тейнер мож­но оста­но­вить сле­дую­щим об­ра­зом:


 # vzctl stop 102

Stopping container ...

Container was stopped

Container is unmounted

...а на­все­гда унич­то­жить – так:

 # vzctl destroy 102

Вы ви­ди­те, что ко­ман­да vzctl – «ра­бо­чая ло­шад­ка» для управ­ления кон­тейнером. Под­ко­ман­дой set за­да­ет­ся на­бор па­ра­мет­ров – оп­ре­де­ляя, нуж­но ли за­пускать кон­тейнер ав­то­ма­ти­че­­ски при за­груз­ке хоста, соз­дать па­ро­ли для учет­ных за­пи­сей поль­зо­ва­те­лей, до­ба­вить IP-ад­ре­са, за­дать MAC-ад­рес кон­тейнера и ли­ми­ты на по­треб­ление ре­сур­сов. Под­ко­ман­да exec по­зво­ля­ет за­пустить про­из­воль­ную ко­ман­ду в кон­тек­сте за­дан­но­го кон­тейнера. На­при­мер, спи­сок от­кры­тых пор­тов кон­тейнера мож­но вы­вес­ти так:

  1. vzctl exec 102 lsof -i

COMMAND PID USER FD TYPE DEVICE SIZE

NODE NAME

sshd 29989 root 3u IPv4 76125 TCP *:ssh (LISTEN)

sendmail 30015 root 4u IPv4 76193 TCP 127.0.0.1:smtp (LISTEN)

httpd 30033 root 3u IPv4 76232 TCP *:http (LISTEN)

httpd 30034 apache 3u IPv4 76232 TCP *:http (LISTEN)

У ка­ж­до­го кон­тейнера есть свой IP-ад­рес и свое лич­ное про­стран­ст­во но­ме­ров пор­тов. Так, порт 80 кон­тейнера 102 пол­но­стью от­де­лен от пор­та 80 кон­тейнера 103. «За ку­ли­са­ми» OpenVZ ис­поль­зу­ет гло­баль­ный файл на­строй­ки /etc/vz/vz.conf (при­ме­няе­мый ко всем кон­тейнерам) и фай­лы на­строй­ки кон­тейнеров /etc/vz/conf/xxx.conf, где xxx – иден­ти­фи­ка­тор кон­тейнера. Ус­та­нов­ка Live CD со­дер­жит при­ме­ры фай­лов, а под­роб­но­сти мож­но уз­нать на man-странице vz.conf. У хостинг-про­вай­де­ра ре­шения вро­де OpenVZ остав­ля­ют некое ощу­щение «всех яиц в од­ной кор­зине», в том смыс­ле, что ес­ли фи­зи­че­­ский сер­вер вый­дет из строя или бу­дет ата­ко­ван ха­ке­ром, он по су­ти останет­ся без вир­ту­аль­ных ча­ст­ных сер­ве­ров кли­ен­тов. Но это спра­вед­ли­во для всех тех­но­ло­гий вир­туа­ли­за­ции.

[править] Управ­ля­ем ре­сур­са­ми

OpenVZ – не тех­но­ло­гия пол­ной вир­туа­ли­за­ции. Хо­тя ка­ж­дый кон­тейнер ви­дит свою соб­ст­вен­ную фай­ло­вую сис­те­му, он не ви­дит соб­ст­вен­ных дис­ко­вых раз­де­лов фик­си­ро­ван­но­го раз­ме­ра. Вме­сто это­го фай­ло­вая сис­те­ма кон­тейнера свя­зы­ва­ет­ся с фай­ло­вой сис­те­мой хоста, так что (на­при­мер) ка­та­лог /home кон­тейнера с иден­ти­фи­ка­то­ром 102 пред­став­ля­ет со­бой ка­та­лог /vz/private/102/home хоста.

По­это­му не в ме­ру ак­тив­ный кон­тейнер тео­ре­ти­че­­ски мог бы (неча­ян­но или на­ме­рен­но) за­полнить всю фай­ло­вую сис­те­му хоста или по крайней ме­ре дис­ко­вый раз­дел, в ко­то­ром на­хо­дит­ся ка­та­лог /vz. Что­бы из­бе­жать этой си­туа­ции, OpenVZ на­ла­га­ет кво­ты на ре­сур­сы. Кво­ты пер­во­го уров­ня ог­раничи­ва­ют ис­поль­зо­вание ре­сур­сов для кон­тейнера, а кво­ты вто­ро­го уров­ня – ис­поль­зо­вание ре­сур­сов для ка­ж­до­го поль­зо­ва­те­ля внут­ри кон­тейнера.

По­следний хит­рый при­ем OpenVZ – воз­мож­ность пе­ре­но­са VPS с од­но­го уз­ла уст­ройств на дру­гой, да­же при ра­бо­таю­щем VPS. Для хостинг-про­вай­де­ра, ко­то­рый толь­ко что рас­ко­ше­лил­ся на до­полнитель­ное обо­ру­до­вание и хо­чет рас­пре­де­лить на­груз­ку поль­зо­ва­те­ля на но­вые ком­пь­ю­те­ры, это по­тря­саю­щая воз­мож­ность. На сай­те OpenVZ есть ру­ко­во­дство поль­зо­ва­те­ля, хо­тя местами его не помешало бы и об­но­вить, и пол­ный на­бор man-страниц (http://wiki.openvz.org/images/9/9a/Man_pages.pdf). Но луч­ший спо­соб зна­ком­ст­ва с ним – уста­но­вить про­грам­му и по­про­бо­вать что-нибудь сде­лать. В этом и заключается пре­лесть от­кры­то­го ПО.

[править] Etcetera в ил­лю­ст­ра­ци­ях – часть 4

Изу­чай­те фай­лы в /etc ка­ж­дый ме­сяц с на­шим удоб­ным ру­ко­во­дством. В этот раз зна­ко­мим­ся с hosts.allow и hosts.deny.

(thumbnail)
Файл /etc/hosts.allow позволяет отфильтровать подключения к сервису путем идентификации клиентского компьютера.

Фай­лы /etc/hosts.allow и /etc/hosts.deny — фай­лы на­строй­ки ме­ханиз­ма управ­ления досту­пом, ко­то­рый на­зы­ва­ет­ся «оберт­ки TCP [TCP wrappers]» и пре­достав­ля­ет се­те­вым сер­ви­сам до­полнитель­ный уро­вень безо­пас­но­сти, по­зво­ляя управ­лять тем, ка­кие сер­ви­сы мо­гут быть доступ­ны с оп­ре­де­лен­ных кли­ент­ских ком­пь­ю­те­ров или се­тей. TCP wrappers бы­ли на­пи­са­ны Ви­ет­сой Венема [Wietsa Venema], ко­то­рый ра­бо­тал в Универ­си­те­те Эйн­дхо­ве­на и, по­жа­луй, бо­лее все­го из­вес­тен как ав­тор поч­то­вой сис­те­мы Postfix и та­ких ути­лит безо­пас­но­сти, как SATAN и Coroner’s Toolkit.

Су­ще­ст­ву­ет два под­хо­да в ис­поль­зо­вании TCP wrappers. Пер­вый – «неви­но­вен, по­ка ви­на не до­ка­за­на». В нем все под­клю­чения раз­ре­ше­ны, ес­ли они яв­но не за­бло­ки­ро­ва­ны в hosts.deny. Вто­рой – «ви­но­вен, по­ка не до­ка­за­но об­рат­ное»: все со­единения бло­ки­ру­ют­ся, ес­ли они яв­но не раз­ре­ше­ны в hosts.allow. Стро­гие ад­минист­ра­то­ры, не до­пускаю­щие те­чи на судне, на­вер­ня­ка вы­бе­рут вто­рой под­ход и нач­нут с фай­ла hosts.deny, со­дер­жа­ще­го все­го од­ну стро­ку:

ALL: ALL

LXF156.sysadmin.spectru opt5.png

За­тем они ука­жут раз­ре­шен­ные со­че­тания сер­вис/кли­ент в hosts.allow. Этот файл да­ет боль­шую гиб­кость в опи­сании со­единений кли­ен­тов. Мож­но вве­сти кон­крет­ный IP-ад­рес или на­бор ад­ре­сов (ско­рее все­го, здесь вы ука­же­те свою локаль­ную сеть) или имя ком­пь­ю­те­ра или до­ме­на. Од­на­ко уч­ти­те, что для имен ком­пь­ю­те­ров TCP wrappers при­хо­дит­ся вы­пол­нять об­рат­ные DNS-за­про­сы, а это влия­ет на про­из­во­ди­тель­ность.

На за­ре TCP wrappers про­вер­ки досту­па вы­пол­ня­лись от­дель­ной про­грам­мой tcpd. Обыч­но так на­зы­вае­мый «су­пер­сер­вер», та­кой как inetd, слу­шал вхо­дя­щие со­единения от имени сер­ви­са и за­тем за­пускал tcpd. По­сле вы­полнения про­ве­рок и об­ра­бот­ки па­ра­мет­ров, ука­зан­ных в hosts.allow и hosts.deny, tcpd за­пускал сер­вер. Се­го­дня inetd и tcpd поч­ти не ис­поль­зу­ют­ся. Од­на­ко на удив­ление мно­го сер­ви­сов все еще удо­стаи­ва­ют вниманием hosts.allow и hosts.deny по­сред­ст­вом биб­лио­те­ки libwrap (см. врез­ку).

[править] Еще боль­ше поль­зы

Кро­ме управ­ления досту­пом к сер­ви­су пу­тем иден­ти­фи­ка­ции ком­пь­ю­те­ра кли­ен­та, TCP wrappers мо­гут вы­пол­нять и дру­гие дей­ст­вия при под­клю­чении кли­ен­та. Мож­но за­пи­сать в жур­нал все за­про­сы на под­клю­чение (с по­мо­щью syslog), от­пра­вить кли­ен­ту со­дер­жи­мое за­ранее за­дан­но­го фай­ла «баннера» (час­то как со­об­щение «толь­ко для ав­то­ри­зо­ван­ных поль­зо­ва­те­лей») или за­пустить лю­бую ко­ман­ду обо­лоч­ки. На man-странице hosts_access опи­сан ба­зо­вый син­так­сис hosts.allow и hosts.deny, а на man-странице hosts_options – до­полнитель­ные воз­мож­но­сти. А про­чтя ори­ги­наль­ный до­ку­мент Венемы (ftp://ftp.porcupine.org/pub/security/tcp_wrapper.pdf), вы уз­нае­те, что основ­ным мо­ти­вом раз­ра­бот­ки TCP wrappers бы­ло от­сле­жи­вание по­пы­ток ха­ке­ра взло­мать ком­пь­ю­тер­ную сис­те­му в Эйн­дхо­ве­не.


Персональные инструменты
купить
подписаться
Яндекс.Метрика