Вторник, 24.12.2024, 06:25
# FreeBSD ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [167]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Каталог статей 
Главная » Статьи » Мои статьи

Apache MySQL иРНP
Установку этого набора софта в один из многочисленных дистрибутивов Linuх. Мейу ieM выбор
FreeBSD в этом случае может оказаться более подходящим.

Говоря об Apache MySQL и.РНP большинство админов имеют в виду стек LAMB подразумевающий
Установку этого набора софта в один из многочисленных дистрибутивов Linux Между тeM выбор
FreeBSD в этом случае может оказаться более подходящим.


В этой статье я расскажу о всех шагах, которые необходимо выполнить
для того, чтобы поднять FгееВSD вместе со стеком [L)ДМР и не-
скольким и инструмента м и адм и н истрирован ия на абсолютно голом
сервере и сделать так, чтобы все это работало вместе без сбоев и
непредвиденных ситyаций.


Шаг 1. Устанавливаем FreeBSD

ля начала нам понадобится сама операционная система, Идем на офи-
циальную страничку FгееВSD [www.fгееЬsd,оrg], жмем по ссылке.Gеt
FгееВSD Now>, далее выбираем версию 0С [на момент написа н ия ста-
тьи досryпны были две версии: В,2- RELEASE и 7.4-RELEASE), архитекrypy[
amd64 или iЗВ6], нажимаем на ссылку[lSОJ ивидимсписокдосryпных
образов, Всего их пять: booton [у - загрузочны й образ для установки по
сети, disk1 - lS0 образдля записи на CD, dvd1 - образдля записи на
DVD, Livefs - LiveCD без графического интерфейса, mеmstiсkдля записи
на USВ-брелок. В нашем случае подходящими будцтолько первый и
второй, а если в сети нет DHCP-cepBepa, то тол ько второй {DVD-образ
качать смысла нет, потому ка к С D содержит все на м необходимое].
Итак, скачиваем lSO-образ, нарезаем его на болванку, вставляем в при-
вод сервера и сбрасываем/включаем его. Хдем пока 0С загрузится.
После окончания загрузки на экранедолжно появиться окно выбора
страны и меню инсталлятора sysinstaL[, состоящее из двенадцати
пунктов. Нас интересуеттолько один из них: .Ехргеss>, он позволяет
уста новить опера цион ную систему ма кси мал ьно быстро, пропусти в
многие предупреждающие сообщения, вопросы и настройки. Вы-
бираем его, жмем <Епtегr.
Появится окно программы для разбивки диска, Здесь можнолибо
просто нажать <А> для использOвания всего диска, либо <С>, чтобы
создать новый раздел в свободной области. Oднако, имей в виду,
что FгееВSD используетдвухуровневую схему разметки диска при
которой один стадартный DOS-раздел [в терминологии FгееВSD име-
нуемый слайсом] можетсодержать в себе несколько ВSD-разделов,
поэтому на этом шаге понадобится создатьтолько один раздел. По
окончании нажимаем .Qr, чтобы выйти из программы.
Следующее окно: вопрос об установке загрузчика, просто жмем
.Епtег, чтобы установить загрузчик в MBR. Сразу после него появится
0кно разметчика созданного ранее раздела на ВSD-разделы. Здесь
можно поэкспериментировать, но я бы рекомендовал просто нажать
.А, чтобы программа сама разметила диск,.Щалее жмем <Q>, чтобы
подтвердить изменения.
Следующее окно: выбор источника установки. По дефолry в качестве
источника используется CD/DVD поэтому простожмем <Епtег>. Под-
тверждаем выбор нажатием <Епtег, в следующем окне.
Теперь начнется процесс копирования файлов, по окончании кото-
рого на экран будет выведено сообщение с вопросом о возвращении
в главное меню инсталлятора. Нажимаем <Епtег>, далее.Хr, *YeS>
и . Епtегr. 0пера цион ная система должна перезагрузиться. Н е за-
бываем вынугьустановочныйдиск из привода, чтобы 0С загрузилась
с жесткого диска.
По окончании загрузки вводим имя пользователя гооt и получаем до-
сryп к командному интерпретатору.

Шаг 2. Настройка

Мы только что установили FгееВSD, но она еще не готова ктому, чтобы
выполнять роль полноценного сервера: сеть не работает, гооt не име-
ет пароля, в системе только один пользователь. Исправим это.
П е р во - н а п е р во, уста н о в и м п ол ьзо вател ю root п а рол ь :

# passwd
Дважды вводи м па роль. !алее создади lй непри вилеги рова нного
пользователя, учетную запись которого мы будем использовать
для входа на сервер через SSН,.Щля этого воспользуемся командой
аddusег:

# adduser

На экране будр появляться вопросы, на большинство из которых
можно не да вать ответов (жать . Епtегr], вахны lv и я вляются только
имя пользователя, дефолтовый кома ндны й и нтерп ретатор (лучше
выбрать tcshJ и пароль. В конце команда выведет на экран получив-
шийся сп исок настроек пол ьзователя, в ответ на которы й следует
ввести слово <yes" [смотри скриншот], и в ответ на следующий вопрос
ввести <<no>.
Чтобы пользователь смог получать права гооt, добавим его в группу
whee:

# рw gnoupmod wheel -m имя пользователя
исп ра ви м фа йл /etc/fstab так, чтобы никто не смог запускать файлы,
расположенн ые на разделах /tmр и /var. для этого добавим флаги
<<nоехес>> в поле 0ptions каждого из этих разделов (смотри скриншот).
Установим более жесткие ограничения на достyп к системным фай-
ЛаМ:

# chmod 0600 /etc/syslog.conf
# chmod 0600 /еtс/rс.соnf
# chmod 0600 /etc/newsyslog.conf
# chmod 0600 /etc/hosts.allow
# chmod 0600 /etc/login.conf

Теперь нам нужно настроить сетевое соединение. Во FгееВSD все
глобал ьн ые настройки хранятся в фа йле /еtс/rс.соnf, поэтому откры -
ваем его с помощью редактора и добавляем следующие строки:

# ee/etc/rc.conf
hostname="host. соm"
lfconfig_em0= " inet 1. 2. 3. 4 netmask Oxffff fff f "
defaultrouteг=" 5. 6.7. 8"

Здесь еm0 во второй строке - это имя настраиваемого сетевого
интерфейса. Список всех доступных сетевых интерфейсов мохно
получить с помощью команды ifconfiq. В качестве значения опции
можно указать DHCP, тогда для конфигурирования интерфейса будет использован dhc[ient. Такхе сразудобавим несколько важных для нас опций:
# ее /еtс/rс.соnf

# 0тключаем переадресацию пакетов и
# регистрируем все попытки переадресации

icmp_drор_rеdirесt= "YЕS"
icmp_log_redirect

# Запрещаем ответы на широковещательные рiтg-запрсы

icmp_bmcastecho=”NO”

# 0чищаем каталог /tmp при каждой загрузке
сlеаr_tmр_enablе= "YЕS "

# Запрещаем обновление файла /etc/motd при кахдой загрузке 
update_motd=”NO”

# Не принимаем пакеты с одновременно установленными
# флагами SYN и FIN
tcp_drор_sуnfin="YES"

# 0тключаем sendmail

sendmail_enable= "NO"
sendmail_submit_enable=”NO”

# включаем ssн

sshd_enable=”YES”

Чтобы выйти из редактора, нажимаем .ESc, и два раза .А>

Добавим адрес DNS-сервера в /еtc/resolv.conf
# ее /etc/resolv.conf
nameserver 8.8.8.8

Чтобы сетевые настройки всryпили в силу, выполняем следующию команду

# /etc/rc.d/netif rеtstаrt


Проверяем досryпность сети :
# ping mail.ru

Добавим несколько полезных строк в файл /еtс/sуsсtl.соnf

# Не отвечать на попытки подключения к закрытым портам
# (спасет от некоторых видов DoS-aTaK и затруднит
# сканирование портов)

net.inet.tcp.blackhole=2
net.inet.udр.blackhole=1

# Разрешаем смотреть список всех процессов только rооt

kеrn.ps_showallprocs=0

Защитим SSH-cepBep от бррфорс-атак:

# echo "MaxStartups 5:50:10" >> /etc/ssh/sshd_config
# /etc/rc.d/sshd rеstаrt

Теперь SSH-cepBep будет отбрасывать 50% новых подключений в
случае, если будет произведено пять неправильных регистраций


Когда их станетдесять, сервер перестанет отвечать вовсе.
При использовании экспресс-установки, система портов [фреЙм-
ворк для установки стороннего П0 в 0С] не устанавливается во
FгееВSD автоматически, поэтому нам надо сделать это вручную
[этохорошо,потомучтотакмыполучимсамыйсвежийсрезпортов,
не содержащий устаревшего дырявого П0:

# pontsnap fetch extract

также можно обновить базовую систему, однако это делать не обязательно

# freebsd-update fetch
# freebsd-update install
# shutdown -r now

После того как порты будр обновлены, установим в сисIему ин-
струмент rkhuntеr нужный для отлова ругкитов, которые моryг быть
установлены в систему в будущем:

# cd /usr/роrts/sесuritу/rkhunter
# make install clean

0тредакти руем конфигурационный файл /usг/lосаl/еtс/rkhunter.соnf так, чтобы опция MAlL-ON-WARNlNG содержала emaiL, на
который следует слать сообщения об обнаруженных аномалиях.
Заставим инструмент проверить себя на обновления:

#rkhunter --update
После этого создадим снимок системных файлов, который будет
ИСПОЛьЗOВаТЬСЯ в КаЧеСТве ЭТаЛОНа вО ВРеМЯ ПОИСКа РУТКИТОВ:
# rkhunter --propuрd

Далее добавим в файл /etc/periоdic.соnf две строки, бла годаря
которым проверки обновлений и системы будут происходить каждый
ДеН Ь:
# echo'daily_rkhunter_update_enable="YES" ' > \
/etc/periodic.conf
# echo'daily_rkhunter_check_enable="YES" ' > \
/etc/peniodic.conf

Все, теперь все сообщения о подозрительной системной активности будут помещаться в лог /var/lоg/rkhuntеr.lоg и отсылаться на
указанный в конфигурационном файле email.
flалее настроим сrоn на синхронизацию системных часов каждые
ДВа ЧаСа:

# сrоntаb -е
о2* * * rооt /usn/local/sbin/ntpdate рооI.ntр.оrg

Наконец, установим и Webmin, wеb-ориентированный интерфейс для
удаленного уп ра влен ия сервером (те, кто п редпоч итает использовать
для администрирования SSН, моryг п ропустить этот шаг,
#cd /usr/ports/sysutils/webmin
# mаkе install clean
# echo 'Webmin_enable="YES"' >> /еtс/rс.соnf

Далее необходимо запустить конфигyратор Webmin:

# /usr/Iocal/lib/webmin/setup.sh

На вопросы л,4ожно отвечать нажатием .Епtегr, однако когда дело
доЙдет до ввода па роля [строка "
Login раsswоrd :"), следует вве-
сти пароль на достyп к Webmin [лучше, если он будет отли чаться от
остальных п ролей). .далее можно за пустить webmin:

# /usn/local/etc/rc.d/Webmin staгt

И протестировать его рабоry, введя адрес . https://host.com:'1 0000/" в
адресную строку ближайшего браузера.

Амр
Теперь настало время установить стекАМР, то есть - веб-сервер
Apache, базуданных MySQL и интерпретатор РНР Сначала займемся
Apache. Идем в порты и устанавливаем последнюю версию:
# cd /usг/роrts/www/арасhе22
# make config instaII сlеаn
На экране должно появиться окно конфиryраlора, с помощью
которого ты можеш ь выбрать уста новку оп ционал ьн ых ком понентов
сервера. Что-л ибо менять здесь см ысла нет, поэтому можеш ь смело
жать < Епtег>. После окончания сборкииуста новки не забудь доба вить
сервер в автозапуск [если поддерхка SSL не требуется, вторую строку
мохно пропустить),

# echo'apache22_enable="YES"' >> /еtс/rс.соnf
# echo'apache22ssl_enable="YES"' >> /etc/rc.conf

Также в конфиryрационный файл следуетдобавить инструкцию для
загрузки модуля accf_http, который будет буферизировать НТТР-
соединения, что разгрузит сервер и поможет в борьбе с SYN-флудом:
# echo'accf_http_neady="YES"' >> /еtс/rс.соnf
# kldload accf_http

Далее установим и нтерпретатор РНР пятой версии :
#cd /usr/роrts/lаng/рhр5
#make соnfig install сlеаn

Убедись, что опция "BuiLd Apache moduLe> выбрана,
Плюс несколько расширений к нему:

# cd /usг/ports/lang/phpS-extensions
# make соnfig install clean
 
Важно, чтобы на шаге конфиryрирования РНРты не забывал отметить пункт.MySQL data base suррогt>, п ри нужда ющий систему
портов кустановке модуля РНРдля работы с MySQL. Без него ничего
не заработает.
Теперь открываем конфиryрационный файл Apache в текстовом
редакторе во FгееВSD он запрятан далеко: /usг/lоса/еtс/арасhе22/httpd.conf
 
и изменяем в нем следующее:
1. После строк Load Module доба вляем следующие две строки:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

2. Находим опцию SеrvеrАdmin и прописываеIп в качестве ее значения свой почтовый адрес:
SеrvеrАdmin me@site. соm
З. В опци и DocumentRoot указы ваем каталог, в котором будуг храниться все файлы нашего веб-сайта:
DocumentRoot " /home/www/data "
Не забываем создать этот каталог:
# mkdir /hоmе/www
#mkdiг /home/www/data
# mkdir /hоmе/www/сgi-bin

Я предпочитаю использовать в качестве корневого каталога /home/wwwT aK как, во-первых, каталог/hоmе обычно находится на
самом большом разделе (автоконфигуратор разделов, который мы
использовали в ходе установки, отводит под
/hоmе большую часть
пространства), а во-вторых, с ним проще работать, чем с какимнибудь /usr/lосаl/www/aраche22/data, запрятаннымвом ножествоподкатало гов.
4. Находим следующую строку:
<Diпесtогу /usn/local/www/apache22/data>
И меняем еетак, чтобы в качестве каталога былуказан
DocumentRoot:
<Dirесtоrу/home/WWW/data>
5. Меняем следующие строки:
<ifModule din_moduIe>
DiгectonyIndex index. htm1
</ifModule>

На эти:
<ifModule dir_module>
DiгectoryIndex index. php index. html
</ifModule>

6. Внугри директивы .if lvloduLe aLias_moduLe> заменяем строку:
ScriptAlias /cgi - bin/ " /usr/lосаl/www/арache22/cgi - bin/ "
В от этой:
ScriptAlias /cgi- bin/ "/home/www/cgi-bin/ "
7. Следующую строку:
<Dirесtоrу "/usr/lосаl/www/арасhе22lс8i- bin" >
заменяем этой:
<Dirесtоrу " /hоmе/www/сgi-bin" >
Сохраняем файл и создаем файл настроек РНР:
# ср /usr/lосаl/еtс/рhр. ini-rесоmmеndеd /usг/local/etc/php. Ini

Этого будетдостаточнодля нормальной работы Apache совместно с
РНР Теперь N4ожно присryпить кустановке MySQL. Идем в порты и ДелаеМ сЛедУЮЩее:

# cd /usr/роrts/dаtаbаsеs/mуsq150-sеrvеr
# make WITH_OPENSSL=yes install clean

Создадим рудиментарный конфигyрационный файл, которого хватит
На ПеРВОЕ ВРЕМЯ:
#ee/etc/my.cnf
[client]
рогt=29912
[mysqld]
pont=29912
bind-addгess=127.0.0.1

Добавим MySQL в автозагрузку и запустим сервер:

# echo 'mysql_enable="YES"' << /etc/nc.conf
# /usr/lосаl/еtс/rс.d/mуsql-sеrvеr start

Установим пароль на досryп к базе данных;
#mysqladmin -u rооt раsswогd пароль
# mysq1 -u root -р
Теперь MySQL должна нормально функционировать, но управлять
базами данных вручную не оченьудобно, ктомуже, для некоторых это
будет первый опытустановки MySQL, а с наскоку разобраться с ней не
так-то просто. Поэтому уста новим вебинтерфейс управлен ия MySQL
под названием PHPMyAdmin:
# cd /usr/ports/databases/phpmyadmin
# make install clean

Поправим конфиryрационный файл PHPMyAdmin, указав пароль на
досryп к wеb-интерфейсу:
# cd /usr/local/www/phpМyAdmin
#ср config.sample.inc.php config.inc.php
# ее соnfig.inс.рhр
$cfg['blowfish_secnet' ] ='пароль' ;
Теперь вновь открываем конфиryрационный файл Apache и делаем
СЛеДУЮЩее:
1 . Всекцию <.ifМoduleаlias_modulе, добавляем следующую строку:
Alias /phpmyadmin /usr/lосаl/www/рhрМуAdmin
2. В конец секции . Dirесtоry> добавляем следующие строки:
<Diгесtоrу "/usr/lосаl/www/рhрМуАdmin" >
Оrdеr allow, deny
Allow frоm аll
</Dirесtоrу>
Здесь вместо .Allow fгоm all> можно доба вить что-то вроде "Allow
frоm 12З.239.189.0/12", чтобы разреш ить достyп к РНPMyAdmin только
из определенной подсети.
Перезапускаем Apache:
#/usr/lосаl/еtс/гс.d/арасhе22 rеstаrt
Это все, теперь (АМРдолжен работать.)
HTTPS
РН PMyAdmin для корректной работы требует поддержку HTTPS,
и вполне возможно, что в будущем тебе понадобится этот прото-
кол для установления безопасного зашифрованного соединения
между клиентом и сайтом. Поэтому сделаем так, чтобы Apache его
понимал.
Для начала исправим конфиryрационный файл OpenSSL (/etc/ssl/openssl.cnf), добавив в него следующие строки:

# Каталог для хранения сертификатов
dir= /root/sslCA
#Срок действия сертификата (-10 лет)
default_days = 3650
Теперь подготовим каталог и создадиl\4 сертификаты для собственного
центра сертификации:
# cd /rооt
# mkdin sslCA
# chmod 700 sslcA
# chmod 700 sslcA
# mkdin private
# cd sslCA
# openssl геq -new -х5О9 -days З650 -extensions v3_ca \
-keyout private/cakey.pem -out сасегt.реm \
-config /etc/ss1/openss1. cnf
Проверим, что сертификаты были созданы успешно:

# IS -1 сасегt.реm pnivate/cakey.pem
Сгенерируем сертификаты для Apache и поместим их в каталог/еtс/
ssL:
# cd /root/sslCA
# openssl rеq -nеw -nodes -out имя_хоста-rеq.реm \
- keyout рrivаtе/имя_хоста - key. реm - соnfig /etc/ss1/openssl. cnf
# openssl са -config /etc/ssl/openssl.cnf -out \
имя_хоста- сегt. реm -infi les имя_хоста- геq. Реm

#ср /rооt/sslСА/имя_хоста-сеrt. реm /etc/ssl/crt
#ср /rооt/sslСА/рrivаtе/имя_хоста -key. реm /etc/ssl/key
Снова открываем конфиryрационный файл Apache, находим следуюЩУЮ СТРОКУ И РаСКОММеНТИРУЕМ ее:
# ее /usr/lосаl/еtс/арасhе22/httрd.соnf
#Include etc/apache22/extra/httpd- ss1. conf
В носим следующие изменения в файл /usг/Lосаl/еtс/аpрасhе22/ехtrа
http-ssL.conf:
fi ее /чsr/[осаUеtс/арасhе22/6хtrа/httр-gэ[.соnf
# Имя HTTPS-cepвepa
Sеrvernamе 5sI. host . соm
# Путь до файла, содерхащего сертификат и ключ
SSLcentifi catetiIe /еtс/ssl/сrtlуоurhоstnаmе-сеrt.реm
SSLCertificateKeyFile /etc/ssl/key/уоurhоstnаmе-kеу.реm
# То же, что и в главном конфиге
DocumentRoot " /home/v*ludata "
# Куда писать логи
ЕrгоrLоg "/vаr/Iоg/httрd-еrrоr. log"
ТrаnsfеrLоg "/var/log/httpd-access. log"
Перезапускаем Apache:
# /usr/lосаl/еtс/rс.d/арасhе22 rеstаrt
Что дальше?
В этой статье я показал, как поднять полностью работоспособный
стек [L]AMP на базе FгееВSD [так что это скорее FАМРJ, и все, что
тебетеперь нужно сделать, это скачать свой любимый сайтовый
движок и развернуть его в каталог/hоmе/wwйdаtа (не забыв положить скрипты в /home/www/cgi-bin). Все остальное возьмет на
себя [LAMP).


Категория: Мои статьи | Добавил: Admin (07.09.2011)
Просмотров: 1154 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024Сделать бесплатный сайт с uCoz