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

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

Apachq MySQL и.РНP стек LAMB

# ee/etc/rc.conf

hostname="host. соm"

lfconfig_em0= " inet 1. 2. 3. 4 netmask 0xffff fff f "

defaultrouter=" 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

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ему ин-струмент rkhunr нужный для отлова ругкитов, которые мо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/rkhunr.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:

# /usr/local/etc/rc.d/Webmin start

И протестировать его рабо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п в качестве ее значения свой почтовый адрес:

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]

роrt=29912

[mysqld]

port=29912

bind-address=127.0.0.1

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

# echo 'mysql_enable="YES"' << /etc/rc.conf

# /usr/lосаl/еtс/rс.d/mуsql-sеrvеr start

Установим пароль на досryп к базе данных;

#mysqladmin -u rооt раsswоrd пароль

# mysql -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Мodullias_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с/rс.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

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 (02.08.2011)
Просмотров: 1123 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024Сделать бесплатный сайт с uCoz