Практика хостера ч.3 настройка сервера
В данной инструкции мы установим и произведем первичную настройку необходимого програмного обеспечения нашего будующего сервера с установленной ISPConfig 3 панелью для администрирования таких сервисов как Почта (Postfix), FTP (PureFTPd), SSH (OpenSSH), DNS (Bind9), Web (Apache2).
Первое, что я обнаружил, что моей Debian абсолютно не понимает одну из главных команд установки «aptitude», не беда, ставим её со всеми патрахами следубщей командой в терминале:
[sociallocker]
# sudo apt-get install aptitude
Соглашаемся с установкой, нажав в нужный момент «y» или «д» и вуаля, всё встает на свои места, пользунмся продвинутым установщиком.
Поехали дальше. Изменение оболочки консоли по умолчанию, так как /bin/sh является символичной ссылкой на /bin/dash, нам надо /bin/bash, а не /bin/dash. Изменяем настройку консоли выполнив команду:
# dpkg-reconfigure dash
на вопрос системы: Использовать dash в качестве системной оболочки по умолчанию (/bin/sh)?
Отвечаем Нет
Теперь переходим непосредственно к серверным приложениям. Устанавливаем NTP, Postfix, Dovecot, Saslauthd, MySQL, rkhunter, and binutils командой:
# aptitude install ntp ntpdate postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo
На вопросы системы отвечаем:
- Настройка Postfix: — Ok
- Общий тип настройки почты: — выбираем Интернет-сайт
- Система почтовое имя: — Вводим webserver.server.loc
- Новый пароль для MySQL пользователя «root»: Вводим пароль root для MySQL
- Повторите ввод пароля для MySQL пользователя «root»: Повторяем ввод пароля root для MySQL
Открываем TLS/SSL порты в Postfix внеся изменения в файл /etc/postfix/master.cf (вместо комсольного редпктора VI (находим нужное место жмём «Esc», затем «I», для перехода в режим редактирования, для сохоанения «Esc» и «:wq», удобно пользоваться «WinSCP» — выбираем нужный файл жмём F4 и правим):
# vi /etc/postfix/master.cf
было:
...
#submission inet n - - - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#smtps inet n - - - - smtpd
# -o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
...
...
submission inet n - - - - smtpd
-o syslog_name=postfix
/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=
yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
-o syslog_name=postfix
/smtps
-o smtpd_tls_wrappermode=
yes
-o smtpd_sasl_auth_enable=
yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
...
После сохранения файла /etc/postfix/master.cf перезагружаем сервер Рostfix выполнив команду:
# /etc/init.d/postfix restart
Настраиваем работу базы данных Mysql на всех интерфейсах, по умолчанию работает только на 127.0.0.1:
# vi /etc/mysql/my.cnf
было:
...
bind-address = 127.0.0.1
...
стало:
...
#bind-address = 127.0.0.1
...
После сохранения изменений перезагружаем сервер Mysql командой:
# /etc/init.d/mysql restart
Устанавливаем антиспам и антивирус для почтового сервера Amavisd-new, SpamAssassin и ClamAV командой:
# aptitude install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
В ходи установки подтверждаем наше решение клавишей «y». Для фильтрации спам писем ISPConfig3 использует Amavisd, который загружает внутренние фильтры библиотеки SpamAssassin самостоятельно, потому мы можем остановить и отключить загрузку SpamAssassin, чтобы не занимать оперативную память лишним процессом выполнив команды:
# /etc/init.d/spamassassin stop
# update-rc.d -f spamassassin remove
!!! Внимание !!! При продолжительной работе почтового сервера, сервер Amavisd собирает огромное количество спама и вирусов в карантинную папку /var/lib/amavis/virusmails/ которая разростается если её не чистить. Добавим в крон автоматический поиск и удаление спама и вирусов в карантине старше 30 дней. Для этого выполним команду:
# crontab -e
В открывшемся файле добавим запись:
10 1 * * * find /var/lib/amavis/virusmails -ctime +30 -and -type ‘f’ -exec rm {} \;
Таким образом в час ночи десять минут каждый день будет запускатся поиск файлов старше 30 дней и автоматически удалятся.
Устанавливаем Веб сервер с поддержкой php Apache2, PHP5, PHPMyAdmin, FCGI, suExec, Pear, FPM And mcrypt выполнив команду:
# aptitude install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-curl php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby libapache2-mod-python libapache2-mod-perl2 dh-make-php php5-dev build-essential libmagic-dev php5-intl libapache2-mod-fastcgi php5-fpm
На вопросы системы отвечаем:
- Веб-сервер для автоматической перенастройки: — apache2
- Настроить базу данных для phpmyadmin с помощью dbconfig-common? — Нет
Выполним активацию модулей веб сервера Apache2 — suexec, rewrite, ssl, actions, dav, dav_fs, and auth_digest выполнив команду:
# a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest fastcgi alias fcgid
После активации моделей веб сервера необходимо перезагрузить Apache2 веб сервер командой:
# /etc/init.d/apache2 restart
Вносим изменения в suphp конфигурационный файл /etc/apache2/mods-available/suphp.conf
# vi /etc/apache2/mods-available/suphp.conf
было:
<IfModule mod_suphp.c>
<FilesMatch
"\.ph(p3?|tml)$"
>
SetHandler application
/x-httpd-suphp
<
/FilesMatch
>
suPHP_AddHandler application
/x-httpd-suphp
<Directory />
suPHP_Engine on
<
/Directory
>
...
стало:
<IfModule mod_suphp.c>
# <FilesMatch "\.ph(p3?|tml)$">
# SetHandler application/x-httpd-suphp
# </FilesMatch>
AddType application
/x-httpd-suphp
.php .php3 .php4 .php5 .phtml
suPHP_AddHandler application
/x-httpd-suphp
<Directory />
suPHP_Engine on
<
/Directory
>
...
Если Вы хотите использовать файлы языка Ruby с расширением .rb, необходимо закоментировать параметр в файле /etc/mime.types:
# vi /etc/mime.types
было:
...
application
/x-ruby
rb
...
стало:
...
#application/x-ruby rb
...
Устанавливаем модуль кеширования для PHP Xcache, вместо него Вы можете использовать и APC или Eaccelerator:
# aptitude install php5-xcache
Перезагружаем веб сервер Apache2 выполнив команду:
# /etc/init.d/apache2 restart
Устанавливаем FTP сервер PureFTPd и квоты Quota выполнив команду:
# aptitude install pure-ftpd-common pure-ftpd-mysql quota quotatool
Нам необходимо внести изменения в конфигурационный файл ftp сервера PureFTPd /etc/default/pure-ftpd-common:
# vi /etc/default/pure-ftpd-common
было:
...
VIRTUALCHROOT=
false
...
стало:
...
VIRTUALCHROOT=
true
...
Сохраняем измененный файл.
Теперь настраиваем работу FTP сервера для работы через защищенный протокол TLS и создаем ssl сертефикат:
# echo 1 > /etc/pure-ftpd/conf/TLS
Создаем папку, где будет хранится наш сертификат выполнив команду:
# mkdir -p /etc/ssl/private/
Генерируем сам сертификат выполнив команду:
# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Во время создания сертификатов отвечаем на вопросы:
Назначаем права для сертификата 600 выполнив команду:
# chmod 600 /etc/ssl/private/pure-ftpd.pem
После внесения изменений и сохранив конфигурационный файл, создания ssl сертификата перезагружаем FTP сервер PureFTPd командой:
# /etc/init.d/pure-ftpd-mysql restart
Вносим изменения в файл /etc/fstab для включения квот нашим пользователям, параметр ,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 который добавим для почты и веб сервера в корневой раздел.
У Вас UUID будет отличатся от моего, вносим изменения в корневой раздел / системы:
# vi /etc/fstab
было:
UUID=5deecf34-1354-4a0f-b65c-90abb960433e / ext4 errors=remount-ro 0 1
UUID=5deecf34-1354-4a0f-b65c-90abb960433e / ext4 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
Для включения квот на диске, нам необходимо перемонтировать корневой раздел выполнив команду:
# mount
-o remount /
И непосредственно включаем квоты на диске выпонив команды:
# quotacheck
-avugm
# quotaon -avug
Устанавливаем DNS сервер Bind который будет также удобно администрироватся через веб интерфейс панели ISPConfig выполнив команду и согласившись:
# aptitude
install
bind9 dnsutils
Устанавливаем программы для анализа и статистики посещаемости веб сервера выполнив команды:
# aptitude
install
vlogger webalizer awstats geoip-database
Отключаем для программы awstat автоматический запуск из cron в файле /etc/cron.d/awstats:
# vi
/etc/cron
.d
/awstats
было:
*
/10
* * * * www-data [ -x
/usr/share/awstats/tools/update
.sh ] &&
/usr/share/awstats/tools/update
.sh
# Generate static reports:
10 03 * * * www-data [ -x
/usr/share/awstats/tools/buildstatic
.sh ] &&
/usr/share/awstats/tools/buildstatic
.sh
стало:
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh
Установка программы Jailkit
Если Вы будете предоставлять для пользователей изолированный chroot ssh доступ к серверу, необходимо установить программу Jailkit. Jailkit должен быть установлен до установки ISPConfig, и сам Jailkit будем устанавливать из исходных кодов, потому устанавливаем необходимые для сборки программы выполнив команду:
# aptitude
install
build-essential autoconf automake1.9 libtool flex bison debhelper
И приступаем у созданию директории, где будем скачивать, распаковывать и собирать программу Jailkit. Для установки программы Jailkit выполняем команды:
# mkdir
/usr/src/iserver/
&&
cd
/usr/src/iserver/
# wget http:
//olivier
.sessink.
nl
/jailkit/jailkit-2
.16.
tar
.gz
#
tar
xvfz jailkit-2.16.
tar
.gz
#
cd
jailkit-2.16
# .
/debian/rules
binary
# dpkg -i
/usr/src/iserver/jailkit_2
.16*.deb
Устанавливаем программу fail2ban, которая будет стоять на защите наших серверов, блокируя айпи с которых производится попытка взлома открытых в интернет сервисов, если такие есть. Если же Вам это не нужно, тогда можете пропустить установку и настройку fail2ban.
Выполним установку и настройку программы fail2ban выполнив команду:
# aptitude
install
fail2ban
Создаем конфигурационный файлы для настройки программы fail2ban, выполнив команды (скопировать все и вставить в консоль через Putty):
# echo
'
#[pureftpd]
# enabled =
true
# port =
ftp
# filter = pureftpd
# logpath =
/var/log/syslog
# maxretry = 3
#
# [dovecot-pop3imap]
# enabled =
true
#
filter = dovecot-pop3imap
# action = iptables-multiport[name=dovecot-pop3imap, port=
"pop3,pop3s,imap,imaps"
, protocol=tcp]
# logpath =
/var/log/mail
.log
# maxretry = 5
# ' >
/etc/fail2ban/jail
.
local
# echo
'
# [Definition]
# failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] Authentication failed
for
user.*
# ignoreregex =
# ' >
/etc/fail2ban/filter
.d
/pureftpd
.conf
#
#
echo
'
# [Definition]
# failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P<host>\S*),.*
# ignoreregex =
# ' >
/etc/fail2ban/filter
.d
/dovecot-pop3imap
.conf
Перезагружаем программу для защиты сервера fail2ban выполнив команду:
# /etc/init
.d
/fail2ban
restart
[/sociallocker]
Comments on Практика хостера ч.3 настройка сервера