книги хакеры / журнал хакер / 108_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>>
ХАКЕР
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
.PROBUY |
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Работа мастера настройки репликации
работающихподуправлениемсерверныхверсийWindowsот2000(лучше 2003).Вполе«Путькцелевойобщейпапке»появившегосяокнавводим илиприпомощикнопки«Обзор»указываемобщийресурс,располагающийсянадругомкомпьютере.Втомслучаееслидлясинхронизацииинформациимеждуэтимиресурсамипланируетсяиспользоватьальтернативныепрограммы(илисинхронизациябудетпроизводитьсявручную), следуетснятьфлажок«Добавитьэтуцелевуюпапкукнаборурепликации»
(Addthistargettothereplicationset).НажимаемОК,ипоявляетсямастер настройкирепликации(ConfigureReplicationWizard),которыйпомо- жетвыбратьмастер-репликуитопологиюрепликации.Напервомшаге указываемкаталог,которыйбудетиспользоватьсявкачествеосновного целевого.Всяинформацияизэтогокаталогазатембудетскопированав другуюпапку.Последняядолжнабытьпустой;есливнейестьфайлы,они будутскопированывовременныйкаталог,азатемудалены.Еслиобщий ресурспокаким-либопричинамнеподходитдлярепликации(например, расположенневразделесNTFS),онбудетотмеченкраснымкрестиком; припопыткеперейтикследующемушагумастерпредложитуказать другуюссылкуилизакончитьработу.
Нажатиемкнопки«Промежуточноехранение»(StagingFolder)можно изменитьрасположениекаталога,которыйбудетиспользоватьсядлявременногохраненияреплицируемыхданных.Поумолчаниюэтоткаталог размещаетсявразделе,отличномоттого,накоторомнаходитсяобщий ресурс,связанныйсDFS.Далеемастерпредложитвыбратьтопологию репликации.Необходимобудетуказатьодинизследующихвариантов:
•Кольцо(Ring)—всерепликиобмениваютсяинформациейсдвумя соседними;
•Звезда(Hubandspoke)—указываетсяосновнаяссылка,скоторойибудут обмениватьсяинформациейвсеостальныереплики;
•Полнаясетка(Mesh)—всерепликиобмениваютсяинформациейдругс другом;
•Особая(Custom)—позднееадминистраторсамостоятельнонастроит репликациюдлякаждойпарысерверов.
Кольцеваятопологияустановленапоумолчаниюиподходитдлябольшинстваслучаев.Видеалевыбраннаятопологиярепликациидолжнасоответствоватьсхемесети.Например,еслиестьцентральныйофис,гдерасполагаются основныересурсы,амногочисленныефилиалыподключаютсякнимпомере необходимости,товэтомслучаебольшеподойдетсхема«Звезда».Еслиничегоизпредустановокнеподходит,следуетобратитьсякпункту«Особая».
Послесозданиярепликидляссылкисоответствующийейзначоквокнеоснасткиизменится.Вконтекстномменютакжепоявятсядвановыхпункта: «Отобразитьстатусрепликации»/«Скрытьстатусрепликации»и«Остановитьрепликацию».Вполестатусарепликацииможетбытьодинизтрех результатов.Еслипроцессрепликациизавершилсянормально,назначках будутзеленыефлажки.Красныйкрестикназначкерепликиукажет,что онавданныймоментнедоступна;вполе«Состояние»подписьпоменяется
Создание новой ссылки
на«Автономный».Есливпроверяемойссылкенедоступнылишьнекоторыереплики,взначкепоявитсяжелтыйвосклицательныйзнак.
Передудалениемоднойизальтернативныхрепликсначаласледуетзапретитьрепликацию.Привозобновлениирепликациитебявстретиттот жемастер.Еслисерверявляетсяконтроллеромдомена,вместесовсеми даннымиDFSбудетреплицироватьисодержимоетомаSYSVOL.Поэтому следуетпомнить,что,дотехпорпоканепроизойдетполнаярепликация всехреплик,начинатьлюбыеизменениявконфигурацииDFSоченьрискованно,этоможетнарушитьработоспособностьвсегодомена.
Есливыбранныйварианттопологиирепликациипокаким-либопричинам неподошел,топологиюрепликациивпоследствииможнолегкоизменить, выбравокносвойствсоответствующейссылкииперейдявовкладку«Репликация».Здесьнаходитсяещенесколькополезныхнастроек.Поумолчанию репликациявыполняетсяпостоянно;нажавкнопку«Расписание»,можно изменитьрасписаниерепликацийдлявсехподключений.Чутьнижеуказываютсяфильтрыдляфайловиподпапки,которыенебудутреплицироваться.Нажимаем«Изменить»ивводимшаблоныфайловилиподкаталогов. Дляпринудительнойрепликацииинформации,хранящейсянаопределенномсервере,можновоспользоватьсяутилитойNtfrsUtl.exe,которая входитвсоставпакетаSupportTools.Командапроста:ntfrsutlpoll/now server.com.Чтобыувидетьустановленныевременныеинтервалы,через которыепроизводитсярепликация,следуетввестиntfrsutlpoll.Всеуста-
новкидоступныпокомандеntfrsutlsetsserver.com.
Вокнесвойствобщегоресурса,представленноговслужбеDFS,появится ещеоднавкладка—DFS.Открывее,пользовательможетпросмотреть,с какимиобщимипапкамисопоставленаэтассылка,проверитьсостояние реплики,выбратьактивнуюреплику,ккоторойонбудетперенаправлятьсявпервуюочередь.
Администраторудляконтроляследуетпочащезаглядыватьвжурнал «АдминистрированиеПросмотрсобытийСлужбарепликациифайлов»,гдеможнонайтиинформациюобовсехсобытиях,происходящихсо службойFRS.z
Windows
Server2003R2
ПоявлениеR2в2005годупрошлотихоинезаметно.Этаверсия, созданнаянаосновеWin2k3спакетомобновленияSP1,расширяет возможностиподключениялокальныхиудаленныхресурсовиуправленияими.R2являетсякакбыпромежуточнойверсиеймеждуWin2k3 иWin2k8иподдерживаетсяпараллельносWin2k3.Нужносказать,что реализацияинастройкиDFSвWin2k3иR2несколькоразличаются.
xàêåð 12 /108/ 07 |
149 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PrO
виталий «ROOt» чернов
/ VITAl@REAl.XAKEP.RU /
хостингана одномдыхании
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
пОШаГОвОе РукОвОдствО пО настРОйке сеРвеРа для хОстинГа сайтОв
Думаю, каждый когда-либо пытался сделать из своего компа веб-сервер. Кто-то для этого ставил под Виндой пакет со всеми прелестями (Apache+PHP+MySQL), кто-то компилил тарболлы из сорцов под фрю, но все без исключения вдумчиво вкуривали мануалы. В Сети полно документации по каждому из пакетов в отдельности, но, чтобы собрать полнофункциональный сервак, порой требуется не одна неделя. Сегодня я хочу показать, как можно быстро установить и настроить связку Apache+OpenSSL+PHP+MySQL+Phpmya dmin+ProFTPd с чистого листа. Все это составляющие классического веб-сервера для хостинга сайтов.
чтО ПОтребуетСя
Для экспериментов нам понадобится настроенный и рабочий Linux. В настоящее время любой дистрибутив имеет в своем арсенале продвинутый менеджер пакетов, но мы откажемся от его использования. Все будем ставить исключительно из исходных текстов. На это есть ряд причин. Во-первых, так мы всегда сможем иметь самые свежие версии пакетов. Во-вторых, так появляется гибкость при конфигурировании. В-третьих, зависимость от системы — это подход Майкрософт. При установке из исходников название дистрибутива нам вообще должно быть безразлично.
ЛичноуменясобранодвасерверанаALTLinux.Аптаймграмотнонастроенногосерверананормальномжелезедостигаетнесколькихлет,даито
всепроблемы,какправило,отуборщициэлектромонтеров:).
Длянаписаниястатьиякачалсамыесвежиепакетыизстабильных,а
именноhttpd-2.2.6,php-5.2.4,mysql-5.0.45,proftpd-1.3.1,openssl-0.9.8g, mod_ssl-2.8.30(весьупомянутыйсофтможнонайтинаприлагаемомк журналудиске).Впринципе,всевышеуказанноетыможешьпоставить изпрекомпилированныхдлясвоейсистемыпакетов,новтакомслучае расположениеконфиговикаталоговможетотличатьсяотописываемого встатье.
уСтанОвКа APACHE+oPENSSl+PHP+MYSQl
НачинатьлучшесOpenSSL.Переходимвкаталогсархивомивводим следующее:
150 |
xàêåð 12 /108/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
>>
ХАКЕР
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
.PROBUY |
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
PhpMyAdmin в работе
#tar -xf openssl-0.9.8g.tar.gz
#cd openssl-0.9.8g
#./config
#make; make test; make install
Теперьставимдляweb-серверасобственносамSSL-модуль.Внимание! ПриконфигурированиинужнообязательноуказыватьпутькисходникамApacheиOpenSSL.Соответственно,обаархиваужедолжныбыть распакованы:
#tar -xf httpd-2.2.6.tar.gz
#tar -xf mod_ssl-2.8.30-1.3.39.tar.gz
#cd mod_ssl-2.8.30-1.3.39
#./configure \
--with-apache=../httpd-2.2.6 \ --with-ssl=../openssl-0.9.8g \ --with-crt=/usr/local/apache2/conf/ssl.crt/server.crt \ --with-key=/usr/local/apache2/conf/ssl.key/server.key \ --prefix=/usr/local/apache2
ДалеепоспискуидетApache.Собираемисходникииустанавливаем самымпримитивнымспособом,ноужессертификатами:
#cd ../httpd-2.2.6
#./configure --enable-ssl
#make; make certificate; make install
Всесобираетсябезпроблемприусловии,чтоотсутствуютнеудовлетворенныезависимости.Есливпроцессекомпиляциивозникаютошибки,ни вкоемслучаенельзякомпилироватьсопцией‘-i’(игнорированиеошибок присборке).Впротивномслучаесервердолгонепроживети,естественно, никакнельзягарантироватьегобезошибочнуюистабильнуюработу. Послеустановкивкаталоге/usr/local/apache2унаспоявилсяАпач,конфигкотороголежитвподкаталогеconf.Открываемhttpd.confидобавляем тристрокивначалофайла:
#vi/usr/local/apache2/conf/httpd.conf
SSLEngine on
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/ server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/ssl. key/server.key
ТеперьзапускаемApacheследующимобразом:
# /usr/local/apache2/bin/httpd -startssl
Конфиг Apache
Ичестноотвечаемназадаваемыевопросы.
Теперь при переходе в браузере по http://localhost/ должна появиться страница с сообщением: «It works!». То же самое происходит при переходе по https://localhost/. Это означает, что демон вполне работоспособен. Если при попытке запуска демон выдает ошибку, возможно, на 80 м или 443 м порту что-то уже висит. Проверить это можно так:
#netstat -p tcp -a --numeric-ports | grep *:80
#netstat -p tcp -a --numeric-ports | grep *:443
Еслипортдействительнозанят,виновныйпроцессможноубитьпоPIDили поимени,которыевозвратятэтикоманды.
Влюбомдругомслучаеошибкинедолжнопроизойти—поумолчанию конфигнастроеннаипростейшимобразом,аправанафайлырасставлены корректно.
Следующийшаг—инсталляцияMySQL:
#tar -xf mysql-5.0.45.tar.gz
#cd mysql-5.0.45/
#./configure
#make; make install
Теперьсоздадимгруппуипользователя,справамикоторогобудетработатьдемон:
#groupadd mysql
#useradd -g mysql mysql
Далееунасидетсозданиеслужебныхбазданныхитаблиц.Дляэтогопереходимвподкаталогscriptsизапускаемфайлmysql_install_db:
# ./mysql_install_db
Просмотривнимательнорезультатстандартноговыводаскриптананаличиеошибок.Есливсенормально,стартуемдемон:
# /usr/local/bin/mysqld_safe &
Поумолчаниюадминистраторомбазданныхявляетсяпользовательroot безпароля.Этонеестьгуд.Вцеляхбезопасностимыдолжнысразуустановитьсвойпароль:
# /usr/local/bin/mysqladmin -u root password 'новый па-
роль'
Все,MySQLбольшенетрогаем.ТаккакApacheиMySQLужеинсталлированы,присборкеPHPследуетуказатьпутидоapxsиmysql:
xàêåð 12 /108/ 07 |
151 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PRO
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Ответ MySQL на запрос «SELECT * FROM users»
#tar -xf php-5.2.4.tar.bz2; cd php-5.2.4/
#./configure --with-apxs2=/usr/local/apache2/bin/apxs \ --with-mysql=/usr/local
#make; make test; make install
ТеперьмыдолжнызаставитьApacheраспознаватьPHP-файлыкакис- полняемыескрипты,анепростовыводитьихсодержимоеввидетекста. Дляэтогоидемвегоконфигидобавляемвначалофайлатридирективы
AddType:
#vi/usr/local/apache2/conf/httpd.conf
AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddType application/x-httpd-php-source .phps
Послеэтогоищемстроку«DirectoryIndexindex.html»именяемеена
«DirectoryIndexindex.htmlindex.html.varindex.php».Перезапускаемhttpd-
демон:
# /usr/local/apache2/bin/apachectl restart
Далеесоздаемв/usr/local/apache2/htdocsкаталогphpmyadminи
копируемвнеговсефайлыизтарболлаphpMyAdmin-2.10.2.Теперь можнопроверитьработоспособностьApacheвсвязкесPHP+MySQL.
Скопируемфайлconfig.sample.inc.phpвconfig.inc.php(тот,чтолежитв /usr/local/apache2/htdocs/phpmyadmin),раскомментируемвнемстроки controluserиcontrolpass,впишемтудапользователяrootиегопарольи добавимвblowfish_secretлюбуюстрокуизпроизвольныхсимволов(она используетсядляидентификацииcookie).Теперьидемнаhttp://localhost/ phpmyadmin/и,есливсеправильнособрано,оказываемсявадминкебазы данных!Все,сустановкойвеб-сервераразобрались.ПереходимкFTP.
Установка ProFTPd
ВкачествеFTP-сервераядавнодлясебявыбралProFTPd.Единственная проблема,возникающаяприегоиспользовании,заключаетсявтом,что еслизакачкафайловпроизводитсясWindows-машин,тоизназваний русскихфайловвырезаютсябуквыы,ь,э, ю,я.Деловтом,чтоProFTPdпропускаетвесьсвойтрафикчерезTelnet,которыйвоспринимаетсимволы
скодами251-255какуправляющиепоследовательностиивырезаетих. Нонестоитотчаиваться,такоеповедениеможноисправитьнебольшим вмешательствомвфайлsrc/netio.c.Простоудалиизнегостроки:
switch (mode) { case IAC:
... часть кода пропущена ...
mode = cp; continue;
Браузер предлагает принять сертификат
}
break;
}
Послеэтогосмелокомпилируй:
#./configure
#make; make install
Файлзапускаустановилсякак/usr/local/sbin/proftpd.Запустиегоипро- верьвFTP-клиентеадресftp://localhost/.Есликаталоготкрылся,значит установкапрошлауспешно.
Вотивсе!Новпрактическомпланепоканашсерверничегособойнепредставляет.Длятогочтобызапускатьеговпродакшн,необходимадальнейшаянастройка.
Настройка
Дляначаласледуетопределиться,чтонамдействительнонеобходимо получитьнавыходе.Нарисуемпримернотакуюкартину:
1.Нашсерверимеетдоменноеимяmyservak.ru.
2.Насервереможетрасполагатьсялюбоеколичествосайтов,доменные именакоторыхApacheдолженраспознавать.
3.СерверимеетстатическийIP-адрессвыходомвинтернетчерезинтер-
фейсeth0.
4.Снаружидолжныбытьвидныследующиепорты:http(80),ftp(21).
5.Всеостальныепортыдолжныбытьзакрытынаинтерфейсеeth0,но открытынавсехостальныхдляадминистрированиясервераиздоверенныхсетей.
6.Правонаредактированиекаталогасweb-файламипоFTPбудутиметь толькопользователи-владельцысайтовподсвоимипаролями.
7.Редактироватьглавныйсайткомпанииmyservak.ruпоFTPбудеттолько пользовательadmin.
8.Всесервисыдолжнызапускатьсяавтоматическипослеперезагрузки системы.
Итак,создадимкаталог/srv,гдебудемхранитьнашсайт,иподкаталоги cgi-binиhtdocsдляcgi-скриптовидляhtml-документовсоответственно. Добавляемпользователяadmin,которомувкачестведомашнегокаталога назначаем/srv,незабывпоменятьвладельца:
#mkdir -p /srv/{cgi-bin,htdocs}
#useradd -d /srv admin
#passwd admin
#chown admin /srv
#chmod 775 /srv
Теперьидемв/usr/local/etc/proftpd.confиполностьюудаляемсекцию <Anonymous>.Такимобразоммыперекрываемкислородвсеманонимнымпользователям.Перезапускаемproftpd:
152 |
xàêåð 12 /108/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
#killall proftpd
#/usr/local/sbin/proftpd
Ипробуемзайти.ПослетогокакдоступпоFTPбудетоткрыт,можносмело закидыватьhtml-документывкаталог/srv/htdocs.Теперьзаймемся настройкойApache.
Открываем/usr/local/apache2/conf/httpd.confиправимследующим образом:ServerAdmin—сюдапишемсвойящик;вездеменяем/usr/local/ apache2/htdocsна/srv/htdocs,а/usr/local/apache2/cgi-binна/srv/cgi- bin.Послевнесенныхизмененийсноваперезапускаемдемон:
#/usr/local/apache2/bin/apachectl restart
Теперьвнимание!Строка«chmod775/srv»внашемслучаерешающая.Так каквладельцемкаталогаунасявляетсяadmin,агруппа—root,доступдляних долженбытьоткрытполностью,чтобыможнобылосвободноманипулировать файламипоFTPилокально.Длявсехостальныхпользователейвыставляются праватольконачтениеиназапускскриптов.Тольковэтомслучаеможно гарантироватькорректнуюработуидолжныйуровеньбезопасности.
Хотя*nix-серверыисчитаютсянадежными,отперезагрузокнезастрахо- ванникто.Ибудеттоскливо,еслипослекаждоговключениянампридетсястартоватьвседемонывручную.Чтобыизбежатьпроблемвбудущем, лучшесразуразвентилироватьэтотвопрос,поместиввсестартовые файлывкаталог/etc/init.d.Крометого,унаспоявитсявозможностьэле-
гантноуправлятьсервисами(кпримеру,serviceapacherestart/stop/start).
ВслучаесApacheвсерешаетсядостаточнопросто—выполникоманду:
# cp /usr/local/apache2/bin/apachectl /etc/init.d/ apache
ДляMySQLстрокаустановкидемонавкачествесервисабудетвыглядеть так:
#cp /usr/local/bin/mysqld_safe /etc/init.d/mysql
Ксожалению,дляProFTPDразработчикинепозаботилисьвыложитьготовыйскриптдляinit.d,поэтомуегокодмыприводимнадиске.
Еслитынехочешь,чтобывсеновыесервисыстартовалипоумолчанию напятомуровнезапуска,создайссылкивсоответствующихrc.dвручную. Личноуменявсеподнимаетсянатретьемrunlevel’е.Послеэтогоможешь смелоперезагрузитьсяипротестироватьработу.
Пару слов о безопасности
Неуделитьвниманиебезопасностимыпростонеможем.Ведьоттого, насколькограмотнонастроендоступкнашемусерверуснаружи,зависити жизньсайтов,которыеунасбудутхоститься.
Впервуюочередьстоитобратитьвниманиенаоткрытыепорты.Совсемник чему,например,оставлятьоткрытымпортнаMySQL.Самыйэффективный способотфильтроватьвозможныевторжения—этоиспользоватьIptables:
# iptables -A INPUT -i eth0 -p tcp -m multiport --dports 3306,...<Здесь через запятую можно указать порты, которые мы не будем оставлять открытыми наружу> -j REJECT --reject-with icmp-port-unreachable
Естественно,этобудетработатьтольковтомслучае,еслиинтерфейсeth0 смотритвинтернет.
Вотещенесколькосоветовпобезопасности:
1.Нивкоемслучаенеиспользуйпростыепароли!Стойкийпарольдолжен состоятькакминимумизвосьмисимволовивключатьчередующиеся заглавные,строчныебуквы,спецсимволыицифры.
2.Неустанавливайдляразныхадминистративныхзадачодинаковые пароли.
3.Подумайнесколькораз,преждечемустанавливатьправанафайлыили каталоги.777—этодалеконелучшиеправа.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
>> ХАКЕР.PROto BUY |
|
|
|
m |
|||||
w Click |
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Добавление новых сайтов
Итак,унасестькаталог/srv,вкотороммыхранимнашглавныйсайт. Новслучаехостингаоднимсайтом,естественно,необойтись.Можно, конечно,создатькаталогидлядругихсайтоввнутри/srvиобращатьсяк ним«http://myservak.ru/pupkin»,ноэтооченьнеудобно,темболеечто Apacheобладаетвсемивозможностямидлярешенияэтойпроблемыспо-
мощьювиртуальныххостов.Естьдвавидавиртуальныххостов:отдельные длякаждогоIP-адресаииспользующиеодинIP(name-basedхосты).Мы будемиспользоватьпоследние.Теперьпредставим,чтонамдализаказна хостингсайтаnumber2.ru.
Впервуюочередьмыдолжныдобавитьгруппудляновыхпользователейи создатьвэтойгруппесоответствующегопользователя:
#groupadd hosting
#useradd -d /home/number2 -g hosting number2
#passwd number2
Естественно,имя юзеранеобязательнодолжносоответствоватьназваниюсайта.Теперьсоздадимдляпользователядомашнийкаталогиустановимнанеговладельцаисоответствующиеправа:
#mkdir /home/number2
#chown number2 /home/number2
#chmod 775 /home/number2
Здесьнужносоздатькаталогhtdocsдляхраненияфайловсайта,cgi-binдля скриптовижурнальныефайлыerror.logиaccess.log:
#mkdir /home/number2/{htdocs,cgi-bin}
#chown number2 /home/number2/{htdocs,cgi-bin}
#chmod 775 /home/number2/{htdocs,cgi-bin}
#echo '###Log file for error logging###' | tee /home/ number2/error.log
#echo '###Log file for access logging###' | tee /home/ number2/access.log
ДалеепереходимвконфигApacheидобавляемнесколькострочек:
#vi/usr/local/apache2/conf/httpd.conf
#number2 <VirtualHost number2>
ServerAdmin admin@number2.ru ServerName number2
DocumentRoot "/home/number2/htdoc" ScriptAlias /cgi/ "/home/number2/cgi-bin" ErrorLog /home/number2/error.log CustomLog /home/number2/access.log common </VirtualHost>
Инемногоправим/etc/hosts,добавляятудалокальныйивнешнийIPадреснашегосайта:
#vi/etc/hosts
127.0.0.1 number2 my.ext.ip.addr number2
ВконфигеProFTPdприэтомникакихизмененийделатьненадо.Все,после этогоможносмелозаходитьнаhttp://number2.ruинаftp://number2.ru.
Заключение
Послетогокакфундаментготов,можнодобавлятьпанельуправления хостингом,почтовыйсерверимногодругихпримочекнатвоеусмотрение.Всезависиттолькооттвоейфантазии.Отсебямогутолькопожелать удачивэтомнелегком,нооченьприбыльномначинании.Можетбыть,ты когда-нибудьподаришьмнеметров100халявногохостинга:).z
xàêåð 12 /108/ 07 |
153 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PrO
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
|
|
|
X |
|
|
|
|
|
|||
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||
|
|
|
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПодзнакомVoIP
пОдключаем AsTeRIsk к IAx- и sIp-сеРвеРам
Часто компании имеют несколько офисов, удаленных друг от друга. Использовать только один сервер телефонии в таком случае очень накладно. Кроме того, нельзя забывать о том, что в настоящее время существует достаточно сервисов, предлагающих выход в телефонную сеть по приемлемым тарифам (например, sipnet.ru). Подключаясь к ним, можно существенно сэкономить на междугородних телефонных переговорах и получить прямой номер. Так что давай попробуем подружить наш Asterisk с VoIP-серверами, работающими по протоколам IAX и SIP.
ПрОбЛеМы и ПрОтОКОЛы
Значок«*»(Астериск),которыйупрограммистовиадминистраторов ассоциируетсяслюбойвозможнойпоследовательностью,полностью отражаетподходразработчиковприсозданииодноименногосервера IP-телефонии.Какрезультат,IP-PBXAsteriskдействительноможетбыть примененпрактическивлюбомслучае,гдеуместноупоминаниеоVoIP. Онможетработатькакавтономныйсервер,обслуживаяабонентовсвоей сети,икакшлюзвобычнуютелефоннуюилиудаленнуюVoIP-сеть. Итак, будем считать, что сервер Asterisk успешно установлен и абоненты уже звонят друг другу (смотри статью «Строим телефонную сеть» в 10-м номере «Хакера» за этот год), поэтому сразу переходим
кнастройке связки двух серверов. Первым делом следует побеспокоиться о наличии хорошего канала в интернет, обладающего достаточнойпропускнойспособностью.Несмотрянато,чтоVoIP-трафик спокойноотноситсякпотерямотдельныхпакетов,оноченькритичен
кзадержкампакетоввсети,поэтомуспутниковыеканалынеподойдут. Крометого,желательноиметьхотябысоднойстороныпостоянныйIPадрес,вэтомслучаепроблемснастройкамиточнонебудет.
ПроцедураустановлениясвязивVoIP(какииспользуемыетермины)
зависит от протокола. Для связи двух серверов Asterisk можно использовать протоколы H.323, SIP или IAX/IAX2 (был еще MGCP, но о нем вряд ли стоит сегодня говорить). Первая версия H.323, благодаря стараниям ITU (International Telecommunications Union), появилась в
1996 году. И хотя его совершенствование продолжается, большинство провайдеров перешли на протокол управления сессиями SIP, изначально ориентированный на работу в интернете. Предлагаемый разработчиками новый стандарт позволяет устанавливать пользовательские сеансы, включающие передачу голоса, видео, мгновенные сообщения и даже онлайн-игры. По сравнению с H.323, он более легок в реализации, независим от транспортного уровня (может работать по UDP, TCP, ATM и другим). Правда, в нумерации версий SIP есть небольшая путаница. Первая версия стандарта, получившая обозначение SIP 2.0, определена в RFC 2543. В RFC 3261 (www.ietf.org/rfc/rfc3261.txt) он был уточнен,
но номер версии так и остался 2.0. Многие текущие решения основаны на промежуточных версиях стандарта. Протокол SIP чаще всего используется провайдерами VoIP, поэтому при подключении к сервисам вроде sipnet.ru придется использовать именно этот протокол. ПротоколIAX(Inter-AsteriskeXchange)разработанкакальтернативный
154 |
xàêåð 12 /108/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
>>
ХАКЕР
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
.PROBUY |
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Вывод информации о подключенных клиентах
протоколобменаVoIP-даннымимеждуAsterisk.Перваяверсияпротокола ужеустарелаипрактическинеприменяется,поэтомуобычнотермины IAXиIAX2обозначаютименновторуюверсию.IAX2позволяетсовмещать множествоголосовыхпотоковипередаватьихвнутриодногоканала (транка),чтоуменьшаетнакладныерасходы,связанныеспередачей заголовковIP-пакетов,чтоособенноощутимоприбольшомколичестве звонков.ВотличиеотH.323иSIP,онлучшеприспособленкработечерез NAT.ЧтобысвязатьдвасервераAsterisk,этонаиболеепростойипоэтому рекомендуемыйвариант.
ПротоколыH.323иIAX2стандартизированыполностью,авSIP—только сигнализирующаячасть,сервисыжемогутиспользоватьсвоистандарты иразвиватьсялюбымигруппамиразработчиков.Болееполноеописаниеи
сравнениеэтихпротоколовможнонайтинасайтеwww.en.voipforo.com/SIP.
Подключаемся к другому серверу
Так как у нас два сервера Asterisk, для организации соединения между ними будем использовать протокол IAX2. Все настройки работы Asterisk по этому протоколу производятся в файле iax.conf. Один сервер настраивается для исходящих звонков — peer, а другой принимает звонки
— user. Если вызовы предполагается совершать в обоих направлениях, то в конфигурационном файле следует создать две соответствующие учетные записи. Можно использовать и тип пользователя friend, то есть разрешить совершать звонки в обоих направлениях, но тогда созданная учетная запись сможет принимать вызов только с указанного узла (смотри директиву host), а такой вариант не всегда приемлем. Когда один из хостов имеет динамический адрес или работает из-за NAT, он должен зарегистрироваться на втором сервере. Параметры, определенные в секции general, будут действительны для всех клиентов, хотя большую часть из них при необходимости можно переопределить в индивидуальных секциях.
$sudomcedit/etc/asterisk/iax.conf
[general]
;порт, на котором принимаются звонки
;bindport=4569
;IP-адрес интерфейса, принимающего звонки, иначе прослушиваются все
;bindaddr=192.168.0.1
;полезный параметр, снижающий задержки при сложных диалпланах
;iaxcompat=yes
;отключение проверки контрольных сумм UDP-пакетов
;nochecksums=no
Регистрация в sipnet.ru
;вводим задержки при ошибочном наборе пароля, чтобы затруднить их подбор
delayreject=yes
;включаем поддержку великого и могучего
language=ru
;мелодия при ожидании mohinterpret=default mohsuggest=default
;полоса пропускания low, medium или high, будет влиять на используемые кодеки
bandwidth=high
;при помощи директив allow и disallow указываем разрешенные
;и запрещенные кодеки, значение all соответствует всем форматам
disallow=g723.1
disallow=lpc10
;установка бита Type of Service (TOS) в исходящих IPпакетах
;для IAX, в отличие от SIP, значение устанавливается для всех видов связи
;все варианты можно подсмотреть в файле doc/ip_tos.txt tos=lowdelay
;если в течение 2000 мс не получаем ответ, соединение прерывается
;вместо yes или no можно указать свое значение в мс autokill=yes
;пользователь, принимающий звонки
[incominguser]
type=user
auth=md5,plaintext,rsa
secret=password
;для type=user можно использовать несколько записей secret
context=incoming
;пользователь для исходящих звонков
[outgoinguser]
xàêåð 12 /108/ 07 |
155 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PRO
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Файл sip.conf |
Настройка диалплана |
dvd
На прилагаемом к журналу диске ты найдешь примеры конфигурационных файлов Asterisk IPPBX, а также видеоролик, где показано, как подключить свой сервер IP-телефонии к сервису sipnet.ru.
type=peer
host=hostname.com
;host=dynamic ; в этом случае требуется команда register
auth=md5 secret=secret_word username=username
;последние два параметра могут быть включены в команду Dial
Теперьнебольшоепояснениепоповодуauth.ВIAXавторизацияпользователейвозможнаоднимизтрехметодов. Призначенияхmd5иplaintextпарольвфайлехранитсяв открытомвиде,новпервомслучаепосетипередаетсяегохэш, чтопрепятствуетперехвату.Вариантplaintextявляетсясамым незащищенным,поэтомустоитисключитьегоприменение впродакшн-системах.Приrsaдляавторизациииспользуется связкапубличногоиприватногоключей.Хотяэтоиболее
сложныйвнастройкевариант,нозатоонсамыйзащищенный, таккакрасшифроватьинформациюможно,толькополучив приватныйключ.Списокизвестныхпубличныхключейс расширениемpubприводитсячерездвоеточиевпараметре inkeys,априватных—вoutkey.Еслисабонентамивыбранного узлатребуетсяодновременновестинесколькихразговоров, следуетустановитьзначениепараметраtrunkвyes.
Настройка диалплана
Здесьнужносделатьнебольшоезамечаниепоповодубезопасности,аименнопоповодуиспользованияконтекстов,к которымбудутиметьдоступпользователиизвне.Есливсе пользователиопределеныводномконтексте,втомчислеис использованиемдирективыinclude,толюбойзвонящийсможетполучитьдоступнетолькоквнутреннимномерамисерверуголосовойпочты,ноикдругимсервисам.Например,унего появитсявозможностьсовершатьисходящиемеждугородние звонки.Невсеминевсегдаэтонеобходимоилиположено, поэтомулучшевсеправила,относящиесякзвонкамизвнеили наружу,вынестивотдельныйконтекст,напримерincoming. Теперьпереходимкнастройкеплананабора.Всамомпростомслучаевфайлеextensions.confможносоздатьконтекст incoming,гдепростовписатьпользователя,принимающего звонки:
[incoming]
exten => grinder,1,Dial(IAX2/grinder)
Адляисходящихсоздатьсвойконтекствроде:
[outgoing]
exten => 4000,1,Dial(IAX2/outgoinguser/4000)
Нотакойподходможноиспользоватьпринебольшомколичественомеров.Впротивномслучаепрощезаставитьсервер Asteriskавтоматическиполучатьконтекстсудаленного сервераилиперенаправлятьвызовыкнему.Соответственно, иреализоватьэтоможнонесколькимиспособами.Например, чтобыпередатьсвойдиалпланнаудаленныйсервер,используемконструкциювроде:
switch => IAX2/<username>:[<password>]@<myser ver>/<mycontext>
Приэтомпараметрыusername,passwordдолжныбыть прописанывконтексте«mycontext»iax.confнаудаленном сервере(myserver).Экстеншенымогутбытьвыражены цифрамиибуквамиилизаданыприпомощишаблона.Если экстеншенначинаетсясподчеркивания'_',тоонвоспринимаетсякакшаблон.Вшаблонеможноиспользоватьнекоторые специальныесимволы.Например,X—соответствуетчислам от0до9,Z—1-9,N—2-9,точка('.')соответствуетодному илинесколькимчислам,а'!'—нулюилиболеесимволов, есличислазаключенывскобки([1237]),тобудетпринято лишьодноизних.Теперь,когдавсепоясненияданы,приведу рабочийпример:
$sudomcedit/etc/asterisk/extensions.conf
[general]
static=yes
writeprotect=no
;при такой конфигурации можно сохранить диалплан командой save dialplan
[default]
exten => _5XXXХ,1,Goto,out|${EXTEN}|1
;описываем план набора для удаленного сервера, цифра 5 вначале — нечто вроде выхода на межгород
[out]
exten => _5XXXХ,1,StripMSD,3
;StripMSD удаляет один символ (по умолчанию) с начала номера
exten => _XXXХ,2,Goto,1
156 |
xàêåð 12 /108/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
switch => IAX2/outgoinguser: secretword@hostname.com/ incominguser
[incoming]
exten => grinder,1,Dial(IAX2/grinder)
Чтобыпроверитьрегистрациюнадругомсервере,необходимоввестив
CLIAsteriskкомандуiax2showregistry.
Оченьполезнойприорганизациисвязкидвухудаленныхсерверовявляетсявозможностьограниченияповремениприпомощиtiminglist.Дляэтого следует,используяинструкциюinclude,указатьпромежутоквременив формате:
<диапазон времени>|<день недели>|<дни месяца>|<месяц>
Например,рабочеевремяспонедельникапопятницубудетвыглядетьтак:
include => daytime|9:00-18:00|mon-fri|*|*
Подключаемся к sipnet.ru
Сегоднядоступнобольшоеколичествосервисов,которыепозволяют совершатьзвонкинастационарныеимобильныетелефоны,находящиесявлюбойстранемира.Стоимостьтакихуслугнапорядокменьше,чем предоставляемыеоператорамиместнойпроводнойсвязи.Крометого, компания,подключившиськоднойизтакихVoIP-сетей,какправило, получаетпрямойномервомногихгородахРоссииидругихстранах,что оченьудобнодляееклиентов.ДляпримеранаучимсерверAsteriskподключатьсяксетиsipnet.ru.
Переднастройкойсервераследуетсоздатьучетнуюзапись.Заходимна сайтcustomer.sipnet.ru/cabinet/registerизаводимсебеаккаунт.Дляэтого необходимозаполнитьвсеполявпоявившемсяокне,ввестиконтрольное числоинажатькнопку«Продолжитьрегистрацию».Послеподтверждениярегистрациивписьме,котороепридетнауказанныйemail,активируетсяучетнаязаписьсостатусом«Тестовыйдоступ».Выбраннымлогином можнопользоватьсявтечение30дней,послечегоследуетпополнить счет,впротивномслучаезаписьбудетудалена.Тестовыйдоступпозволяетсовершатьзвонкипобесплатнымнаправлениям(стационарные телефонывМосквеиПетербурге)иабонентамsipnet,последнимможно отсылатьмгновенныесообщения.Чтобыперейтинатарифныйплан «Абонентскийдоступ»извонитьзапределыРоссииинамобильныетелефоны,достаточноположитьнасчетвсего3у.е.
При регистрации тебе будет выдан семизначный номер SIP ID плюс понадобятся указанные тобой логин и пароль. Предположим, это
1234567, grinder и password. Теперь в файл sip.conf дописываем такие строки:
$ sudo mcedit /etc/asterisk/sip.conf
[general]
videosupport=yes
useragent=SipPhone
register=grinder:password@sipnet.ru/1234567
[sipnet]
type=friend
username=grinder
secret=password
callerid=sipnet
host=sipnet.ru
nat=no
fromuser=sipnet
fromdomain=sipnet.ru
dtmfmode=rfc2833
insecure=invite
context=sipnet
disallow=all
allow=alaw
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
>> ХАКЕР.PROto BUY |
|
|
|
m |
|||||
w Click |
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Параметр insecure=invite позволяет подключаться извне без ввода пароля. Для обозначения типа тонального набора DTMF (Dual Tone Multi Frequency) используется dtmfmode с возможными значениями rfc2833, info, inband и auto. Параметр fromdomain указывает, какой домен будет использоваться в заголовках (по умолчанию локальный — domain).
Этот параметр необязателен, но некоторые сервисы его требуют. Теперь переходим к настройке диалплана. Все городские номера, используемые в sipnet.ru, можно просмотреть в customer.sipnet. ru/cabinet/do_showphones. Следует выбрать нужные и прописать их в extensions.conf.
$sudomcedit/etc/asterisk/extensions.conf
[Moscow]
exten => _7495XXXXXXX,1,SetCallerID("SipPhone" <1234567>)
exten => _7495XXXXXXX,2,Dial(SIP/sipnet/ ${EXTEN},120)
exten => _7495XXXXXXX,3,HangUp
Иподключаемэтотэкстеншенввыбранныегруппыабонентовприпомощизаписи:
include => Moscow
Аналогичнымобразомпрописываютсяпланынаборадлядругихгородов. Закончивсредактированиемфайлов,вводимвCLIкомандуreload.После перезапускаAsteriskвверхнемуглуменю«Персональныеданные»должна появитьсяинформацияоподключенномклиентеAsteriskPBX(или содержимоеполяuseragent).Командаsipshowregistryтакжепокажет,что подключениевыполнено:
CLI> sip show registry |
|
|
|
||
Host |
Username |
Refresh State |
Reg.Time |
|
|
sipnet.ru:5060 |
grinder |
105 Registered |
Tue, 16 |
||
Oct 2007 23:10:04 |
|
|
|
|
|
|
|
|
|
|
|
Теперьможнозвонить,используяsipnet.ru.z
Правилаiptables
Нелишнимбудетуказатьнекоторыеполезныеправилаiptables.Чтобы пакетыбеспрепятственнопроходиличерезфильтр,пишем:
ДляпротоколаSIP:
iptables-AINPUT-pudp-mudp--dport5004:5082-jACCEPT
ДляпротоколаIAX2:
iptables-AINPUT-pudp-mudp--dport4569-jACCEPT
МедиапотокиRTP:
iptables-AINPUT-pudp-mudp--dport10000:20000-jACCEPT
НекоторыеиспользуютпротоколMGCP(mediagatewaycontrol protocol):
iptables-AINPUT-pudp-mudp--dport2727-jACCEPT
ДляустановкиTOSвисходящихпакетахиспользуем(дляSIP)такое правило:
iptables-AOUTPUT-tmangle-pudp-mudp--dport5060\ -jDSCP--set-dscp0x28
iptables-AOUTPUT-tmangle-pudp-mudp--sport10000:20000\ -jDSCP--set-dscp0x28
xàêåð 12 /108/ 07 |
157 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
E |
|
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
NOW! |
o |
|
|||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> ХАКЕР.PrO |
|
|||||||
|
|
|
|
|
|
m |
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
n |
e |
|
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Палимруткиты вниксахиВинде
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
РучнОй пОиск РуткитОв в lINux/xbsd и NT
Агрессивное развитие руткитов до сих пор остается безнаказанным и продолжается столь же активно, не встречая никакого существенного сопротивления со стороны защитных технологий, большинство из которых хорошо работает только на словах и ловит общедоступные руткиты, взятые с rootkits.com или аналогичных ресурсов. Руткиты, написанные «под заказ», обнаруживаются значительно хуже, если вооб-
ще обнаруживаются. Причем даже такие продвинутые технологии детекции, как удаленное сканирование портов, оказываются бессильными перед новейшими версиями руткитов, которые реально палятся только руками, хвостом и головой.
ыщъхпостояннодержитвключеннымhoneypotнабазе M VMware,засасывающийкучумалвари.Ееанализуказыва-
етнанеуклонныйростколичестваруткитов,обитающих исключительновпамятиинезаписывающихсебянадиск,в
результатечегоунихотпадаетнеобходимостьвсокрытиифайловиветвей реестра,прямоиликосвенноответственныхзаавтозагрузку.Онинесоздаютновыхпроцессов,предпочитаявнедрятьсявадресноепространство ужесуществующих.Онинеоткрываютновыхпортов,перехватываявходящийтрафикспомощьюсырыхсокетовиливнедряясьвсетевыедрайверы
(например,вTCPIP.SYSилиNDIS.SYS).
Врезультатенивреестре,нивфайловойсистеменепроисходитникакихизменений,азначит,ничегопрятатьнеприходится!Естественно, перезагрузкаубиваетруткитытакоготипанаповал,ипотомумногие администраторыполагают,чтоникакойопасностинет.Нетакужсложно перезагрузитьсерверпривозникновенииподозренийнаегокомпрометацию.Однакоименноустановкафактакомпрометацииявляетсяпервоочереднойисамойсложнойзадачей,стоящейпередадминистратором.Если сервердействительнобылскомпрометирован,тонеобходимовыяснить, какименноонбылскомпрометирован!Впротивномслучаеповторные атакинезаставятсебяждать,неговоряужеотом,чтопослеудалениямалваритребуетсякакминимумизменитьпаролинавсересурсы,иначехакер сможетобойтисьибезруткита,используяранееперехваченныепассы. Сампосеберуткитобычнонепредставляетникакойугрозы,иоткрывать удаленныйшеллтипаbackdoorсейчасуженемодно.Авотзавестиновую учетнуюзаписьидобавитьIP-адрес«своего»proxy-серверавсписок доверенныхадресов—этонетолькопроще,ноинадежнее,поскольку,в отличиеотbackdoor’а,этонеобнаруживаетсяниантивирусами,нидругимисредствамизащиты.
Такимобразом,задачасводитсякответунавопрос:утеклилинаши паролинасторонуилинет.Ксожалению,вобщемслучаезадачанеимеет решения.Руткит,обитающийвоперативнойпамятиисуществующийкороткоевремя,обнаружитьпрактическиневозможно,темболееручными методами.
Такчтомыбудемрассматриватьлишьдолгоживущиеруткиты,которыхв настоящиймоментбольшинство.
антивируСы и ДруГие автОМатизирОванные СреДСтва
Руткит,известныйантивирусу,элементарнообнаруживаетсяпутем сканированияпочтовыхвложенийилисетевыхпакетов,однакодажев этомслучаеухакераимеетсямассаспособовобломатьрогаантивирусу. Допустим,руткитзабрасываетсячерездырувбраузере,некорректно обрабатывающемTIFF-файлы.Тогдаатакующемуостаетсявсеголишь заманитьжертвунассылкувидаhttps://www.xxxx.com,чтобыантивирус пропустилнужныесетевыепакетымимосвоихушей.
Чтожекасаетсяпоискаактивныхруткитов,то,дажееслиониизвестны антивирусу,унихостаютсявсешансыуйтиотвозмездия,особенноесли антивирусзнакомруткитам.Вот,например,существуеттакаяинтереснаяутилита,какRootkitRevealerотМаркаРуссиновича(www.microsoft. com/technet/sysinternals/Utilities/RootkitRevealer.mspx).Поутверждению еесоздателя,онаобнаруживаетвсеруткиты,представленныенаwww. rootkits.com,чтонесоответствуетдействительности—тривиальная проверкавыявляетбольшоеколичествомалвари,отслеживающейзапуск RootkitRevealer’аимодифицирующейегокодвпамятитакимобразом, чтобыонничегонепоказывал.Естественно,подобнаятехникаработает толькосострогоопределеннымиверсиямиRootkitRevealer’а(руткитдолжензнатьточноерасположениемашинныхкомандвпамяти).Апоскольку
158 |
xàêåð 12 /108/ 07 |