#
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
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:
#
/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п в качестве ее значения
свой почтовый адрес:
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]
ро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М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с/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
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).
|