Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
19.94 Mб
Скачать

 

 

 

 

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

Соседние файлы в папке журнал хакер