HOW-TO: Идеальный сервер. Часть 3 Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
fullcircle:33:server_ч_3 [2010/06/20 17:48]
создано
fullcircle:33:server_ч_3 [2011/03/14 21:06]
[Установка Jailkit]
Строка 9: Строка 9:
   - [[..:​34:​server_ч_4|Идеальный сервер — часть 4]]   - [[..:​34:​server_ч_4|Идеальный сервер — часть 4]]
  
 +Мы можем установить Postfix, Courier, Saslauthd, MySQL, rkhunter и binutils одной командой:​
 +
 +(Если нужно, добавьте перед каждой командой sudo).
 +
 +<​code>​aptitude install postfix postfix-mysql ​
 +postfix-doc mysql-client mysql-server courier-authdaemon ​
 +courier-authlib-mysql courier-pop courier-pop-ssl ​
 +courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules ​
 +libsasl2-modules-sql sasl2-bin libpam-mysql openssl getmail4 ​
 +rkhunter binutils</​code>​
 +
 +Вам зададут следующие вопросы:​
 +
 +  - Новый пароль для пользователя «root» MySQL
 +
 +  - Повторите пароль для пользователя «root» MySQL
 +
 +  - Создать директории для администрирования по сети?
 +  - Введите:​ No
 +
 +  - Основной тип конфигурации почты:
 +  - Введите:​ Internet Site
 +
 +  - Имя почтовой системы:​
 +  - Введите:​ server1.example.com (подставьте адрес своего сайта)
 +
 +  - Требуется ли SSL-сертификат
 +  - Введите:​ OK
 +
 +Далее установим maildrop как показано ниже:
 +
 +<​code>​update-alternatives --remove-all maildir.5
 +
 +update-alternatives --remove-all maildirquota.7
 +
 +aptitude install maildrop</​code>​
 +
 +Вы спросите себя: «Почему мы не установили maildrop вместе с другими пакетами»?​ Причина этому ошибка в пакете courier-base — если вы установите maildrop вместе с courier-pop,​ courier-pop-ssl,​ courier-imap и courier-imap-ssl,​ то получите такую ошибку:​
 +
 +<​code>​update-alternatives:​ error: ​
 +alternative link /​usr/​share/​man/​man5/​maildir.5.gz ​
 +is already managed by maildir.5.gz.</​code>​
 +
 +Мы хотим, чтобы MySQL прослушивала все интерфейсы,​ а не только localhost. Поэтому отредактируем /​etc/​mysql/​my.cnf и закомментируем строку bind-address = 127.0.0.1:
 +
 +<​code>​vi /​etc/​mysql/​my.cnf
 +
 +[...]
 +
 +# Instead of skip-networking the default is now to listen only on
 +
 +# localhost which is more compatible and is not less secure.
 +
 +#​bind-address = 127.0.0.1
 +[...]</​code>​
 +
 +Теперь перезапустим MySQL:
 +
 +<​code>/​etc/​init.d/​mysql restart</​code>​
 +
 +Проверим,​ что сеть включена. Выполните:​
 +
 +<​code>​netstat -tap | grep mysql
 +
 +Вывод должен быть похож на:
 +
 +root@server1:​~#​ netstat -tap | grep mysql
 +
 +tcp 0 0 *:mysql *:* LISTEN 6267/mysqld
 +
 +root@server1:​~#</​code>​
 +
 +В ходе установки сертифи-каты SSL для IMAP-SSL и POP3-SSL были созданы для хоста localhost. Чтобы изменить его на корректный хост (server1.example.com в этом руководстве),​ удалите сертификаты...
 +
 +<​code>​cd /​etc/​courier
 +
 +rm -f /​etc/​courier/​imapd.pem
 +
 +rm -f /​etc/​courier/​pop3d.pem</​code>​
 +
 +и отредактируйте следующие два файла, заменяя '​CN=localhost'​ на '​CN=server1.example.com'​ (а также, при необходимости,​ изменяя другие значения):​
 +
 +<​code>​vi /​etc/​courier/​imapd.cnf
 +
 +[...]
 +CN=server1.example.com
 +[...]
 +
 +vi /​etc/​courier/​pop3d.cnf
 +
 +[...]
 +CN=server1.example.com
 +[...]</​code>​
 +
 +Теперь создадим сертификаты снова:
 +
 +<​code>​mkimapdcert
 +
 +mkpop3dcert
 +
 +и перезапустите Courier-IMAP-SSL и Courier-POP3-SSL:​
 +
 +/​etc/​init.d/​courier-imap-ssl restart
 +
 +/​etc/​init.d/​courier-pop-ssl restart</​code>​
 +
 +=====Установка Amavisd-new,​ SpamAssassin и ClamAV=====
 +
 +Для установки amavisd-new,​ SpamAssassin и ClamAV выполним:​
 +
 +<​code>​aptitude install amavisd-new spamassassin clamav clamav-daemon
 + zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-dap-perl
 + ​libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl
 + ​libnet-ident-perl zip libnet-dns-perl</​code>​
 +
 +**SinglWolf:​** На данный момент версия ClamAV - **0.97**, а в репозиториях lucid - **0.95**. Я это заметил только после полной установки сервера,​ так что вот изыскал,​ на мой взгляд,​ самое простое [[http://​forum.ubuntu.ru/​index.php?​topic=142500.msg1054805#​msg1054805|решение]].
 +=====Установка Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt=====
 +
 +Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt можно установить так:
 +
 +<​code>​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-mcrypt mcrypt php5-imagick ​
 +imagemagick libapache2-mod-suphp</​code>​
 +
 +Необходимо ответить на следующие вопросы:​
 +
 +  - Веб-сервер для автоматической перенастройки:​
 +  - Введите:​ apache2
 +  - Настроить базу данных для работы phpmyadmin с dbconfig-common?​
 +  - Введите:​ No
 +
 +Затем наберите следующую команду,​ чтобы включить модули Apache suexec, rewrite, ssl, actions и include:
 +
 +<​code>​a2enmod suexec rewrite ssl actions include</​code>​
 +
 +Потом перезапустите Apache:
 +
 +<​code>/​etc/​init.d/​apache2 restart</​code>​
 +
 +=====Установка PureFTPd и Quota=====
 +
 +PureFTPd и quota могут быть установлены следующей командой:​
 +
 +<​code>​aptitude install pure-ftpd-common ​
 +pure-ftpd-mysql quota quotatool</​code>​
 +
 +Отредактируйте файл /​etc/​default/​pure-ftpd-common:​
 +
 +<​code>​vi /​etc/​default/​pure-ftpd-common</​code>​
 +
 +и убедитесь,​ что установлены способ запуска standalone и VIRTUALCHROOT=true:​
 +
 +<​code>​[...]
 +STANDALONE_OR_INETD=standalone
 +[...]
 +VIRTUALCHROOT=true
 +[...]</​code>​
 +
 +Теперь перезапустите PureFTPd:
 +
 +<​code>/​etc/​init.d/​pure-ftpd-mysql restart</​code>​
 +
 +Отредактируйте /etc/fstab. Я добавил usrjquota=aquota.user,​grpjquota=aquota.group,​jqfmt=vfsv0
 + к разделу с точкой монтирования /:
 +<​code>​UUID=7dd7d165-5d00-4501-b005-b5233c1872e0 /               ​ext4 ​   errors=remount-ro,​usrjquota=aquota.user,​grpjquota=aquota.group,​jqfmt=vfsv0 ​ 0       ​1</​code>​
 +<​code>​vi /​etc/​fstab</​code>​
 +
 +Чтобы добавить quota, выполните эту команду:​
 +
 +<​code>​touch /​aquota.user /​aquota.group
 +
 +chmod 600 /aquota.*
 +
 +mount -o remount /
 +
 +quotacheck -avugm
 +
 +quotaon -avug</​code>​
 +
 +=====Установка MyDNS=====
 +
 +Перед установкой MyDNS мы должны предварительно установить несколько пакетов:​
 +
 +<​code>​aptitude install g++ 
 +libc6 gcc 
 +gawk make 
 +texinfo libmysqlclient15-dev</​code>​
 +
 +MyDNS нет в репозиториях Ubuntu 9.10, поэтому мы должны установить его из исходников самостоятельно:​
 +
 +**SinglWolf:​** Через wget не получится. Нужно зайти по ссылке:​ http://​sourceforge.net/​projects/​mydns-ng/​files/​mydns/​ и скачать актуальную версию в папку /temp
 +<​code>​cd /tmp
 +
 +wget http://​heanet.dl.sourceforge.net/​sourceforge/​mydns-ng/​mydns-1.2.8.27.tar.gz
 +
 +tar xvfz mydns-1.2.8.27.tar.gz
 +
 +cd mydns-1.2.8
 +
 +./configure
 +
 +make
 +
 +make install</​code>​
 +
 +Затем мы создадим для MyDNS скрипт запуска и остановки:​
 +
 +<​code>​vi /​etc/​init.d/​mydns</​code>​
 +
 +Текст скрипта:​
 +
 +<​code>​
 +#! /bin/sh
 +#
 +# mydns Start the MyDNS server
 +#
 +# Author: Philipp Kern <​phil@philkern.de>​.
 +#
 +Based upon skeleton 1.9.4 by Miquel van Smoorenburg
 +#<​miquels@cistron.nl>​ and Ian Murdock <​imurdock@gnu.ai.mit.edu>​.
 +#
 +set -e
 +PATH=/​usr/​local/​sbin:/​usr/​local/​bin:/​sbin:/​bin:/​usr/​sbin:​
 +/usr/bin
 +DAEMON=/​usr/​local/​sbin/​mydns
 +NAME=mydns
 +DESC="​DNS server"​
 +
 +SCRIPTNAME=/​etc/​init.d/​$NAME
 +
 +# Gracefully exit if the package has been removed.
 +test -x $DAEMON || exit 0
 +
 +case "​$1"​ in
 + start)
 + echo -n "​Starting $DESC: $NAME"
 + start-stop-daemon --start --quiet \
 + --exec $DAEMON -- -b
 + echo "​."​
 + ;;
 + stop)
 + echo -n "​Stopping $DESC: $NAME"
 + start-stop-daemon --stop --oknodo --quiet \
 + --exec $DAEMON
 + echo "​."​
 + ;;
 + reload|force-reload)
 + echo -n "​Reloading $DESC configuration..."​
 + start-stop-daemon --stop --signal HUP --quiet \
 + --exec $DAEMON
 + echo "​done."​
 + ;;
 + restart)
 + echo -n "​Restarting $DESC: $NAME"
 + start-stop-daemon --stop --quiet --oknodo \
 + --exec $DAEMON
 + sleep 1
 + start-stop-daemon --start --quiet \
 + --exec $DAEMON -- -b
 + echo "​."​
 + ;;
 + *)
 + echo "​Usage:​ $SCRIPTNAME
 +{start|stop|restart|reload|force-reload}"​ >&2
 + exit 1
 + ;;
 +esac
 +
 +exit 0
 +</​code>​
 +
 +Теперь сделаем скрипт исполняемым и добавим его в автозагрузку:​
 +
 +<​code>​chmod +x /​etc/​init.d/​mydns
 +
 +update-rc.d mydns defaults</​code>​
 +
 +=====Установка Vlogger и Webalizer=====
 +
 +Vlogger и webalizer могут быть установлены так:
 +
 +<​code>​aptitude install vlogger webalizer</​code>​
 +
 +
 +=====Установка Jailkit=====
 +
 +Jailkit нужен, только если вы хотите изменить корневой каталог для SSH-пользователей. Он может быть установлен так (важно:​ Jailkit должен быть установлен до ISPConfig, и не может быть установлен после!):​
 +
 +<​code>​aptitude install build-essential ​
 +autoconf automake1.9 libtool flex bison
 +
 +cd /tmp
 +
 +wget http://​olivier.sessink.nl/​jailkit/​jailkit-2.10.tar.gz
 +
 +tar xvfz jailkit-2.10.tar.gz
 +
 +cd jailkit-2.10
 +
 +./configure
 +
 +make
 +
 +make install
 +
 +cd ..
 +
 +rm -rf jailkit-2.10*</​code>​
 +
 +=====Установка fail2ban=====
 +
 +Это не обязательно,​ но рекомендуется,​ потому что ISPConfig контролирует попытки показа лога fail2ban:
 +
 +<​code>​aptitude install fail2ban</​code>​
 +
 +
 +В следующем месяце,​ в завершающей части, мы установим SquirrelMail и ISPConfig3, получив идеальный сервер,​ готовый к работе!
 +
 +====Скрипт====
 +
 +<​code>#​! /bin/sh
 +#
 +# mydns         Start the MyDNS server
 +#
 +# Author: ​      ​Philipp Kern <​phil@philkern.de>​.
 +#               Based upon skeleton 1.9.4 by Miquel van Smoorenburg
 +#               <​miquels@cistron.nl>​ and Ian Murdock <​imurdock@gnu.ai.mit.edu>​.
 +#
 +
 +set -e
 +
 +PATH=/​usr/​local/​sbin:/​usr/​local/​bin:/​sbin:/​bin:/​usr/​sbin:/​usr/​bin
 +DAEMON=/​usr/​local/​sbin/​mydns
 +NAME=mydns
 +DESC="​DNS server"​
 +
 +SCRIPTNAME=/​etc/​init.d/​$NAME
 +
 +# Gracefully exit if the package has been removed.
 +test -x $DAEMON || exit 0
 +
 +case "​$1"​ in
 +  start)
 +        echo -n "​Starting $DESC: $NAME"
 +        start-stop-daemon --start --quiet \
 +                --exec $DAEMON -- -b
 +        echo "​."​
 +        ;;
 +  stop)
 +        echo -n "​Stopping $DESC: $NAME"
 +        start-stop-daemon --stop --oknodo --quiet \
 +                --exec $DAEMON
 +        echo "​."​
 +        ;;
 +  reload|force-reload)
 +        echo -n "​Reloading $DESC configuration..."​
 +        start-stop-daemon --stop --signal HUP --quiet \
 +                --exec $DAEMON
 +        echo "​done."​
 +        ;;
 +  restart)
 +        echo -n "​Restarting $DESC: $NAME"
 +        start-stop-daemon --stop --quiet --oknodo \
 +                --exec $DAEMON
 +        sleep 1
 +        start-stop-daemon --start --quiet \
 +                --exec $DAEMON -- -b
 +        echo "​."​
 +        ;;
 +  *)
 +        echo "​Usage:​ $SCRIPTNAME {start|stop|restart|reload|force-reload}"​ >&2
 +        exit 1
 +        ;;
 +esac
 +
 +exit 0
 +</​code>​
  
 --------------------------------------- ---------------------------------------