четверг, 6 мая 2010 г.

Установка и настройка сервера предприятия на базе UBUNTU SERVER 10.04

Создано по материалам http://forum.ubuntu.ruи прочим аналогичным ресурсам, за что им (и ресурсам и пользователям) огромное спасибо!

Итак, приступим….

Необходимо:

  • Почтовый сервер предприятия (Sendmail & Postfix);
  • Поддержка почтовых серверов и web mail interface (All POP3 & POP3s Servers, All All IMAP & IMAPs Servers и squirrelmail)
  • Web сервер: Apache с PHP, Python, Ruby, и WebDAV
  • Сервер баз данных: MySQL
  • DNS-сервер: bind
  • FTP сервер: ProFTPD vsftpd
  • POP3/IMAP: установка Courier-POP3/Courier-IMAP.
  • Webalizer статистики веб-сайта
  • Firewall Configuration
  • Monitoring Of Services And Automatic Restart
  • Web FTP
  • phpMyAdmin Integration
  • Возможность управления через Web interface ( я думаю использовать панель webmin или ISPConfig 3)


     

После перезагрузки, активизируем пользователя root, запускаем команду (после ввода команды- нажимаем Enter):

Код:

sudo passwd root

Вводим пароль для пользователя root, а затем команду su, чтобы дальнейшие операции совершать под ним. 

Код:

su

Натраиваем сетевые карты сервера, редактируя файл /etc/network/interfaces:

Код:

nano -w  /etc/network/interfaces


Смотрим содержание файла ниже (у вас адреса могут быть свои)

Код:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 10.0.0.243

        netmask 255.255.255.0
        network 10.0.0.0
        broadcast 10.0.0.255

        gateway 10.0.0.2


Перезапускаем нашу сеть:

Код:

/etc/init.d/networking restart


Редактируем имя нашего сервера:

Код:

nano  -w  /etc/hosts


Пример:

Код:

127.0.0.1       localhost.localdomain   localhost
10.0.0.243   server.xxx.xxx     server (xxx – свои значения_

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts


Далее выполняем команды:

Код:

echo server.home.net > /etc/hostname
/etc/init.d/hostname.sh start


проверяем, что получилось:

Код:

hostname
hostname -f


Если вы увидели надписи на экране server.xxx.xxx, то продолжаем.

Далее мы редактируем лист со списком необходимых нам репозитариев: (хотя этого можно и не делать)

Код:

nano  -w  /etc/apt/sources.list


Содержимое этого файла- список адресов смотрите ниже:

Код:

#
# deb cdrom:[Ubuntu-Server 8.04 _Hardy Heron_ - Release i386 (20080423.2)]/ hardy main restricted

#deb cdrom:[Ubuntu-Server 8.04 _Hardy Heron_ - Release i386 (20080423.2)]/ hardy main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://de.archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
deb http://de.archive.ubuntu.com/ubuntu/ hardy universe
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy universe
deb http://de.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ hardy multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy multiverse
deb http://de.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy-updates multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://de.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository. This software is not part of Ubuntu, but is
## offered by Canonical and the respective vendors as a service to Ubuntu
## users.
# deb http://archive.canonical.com/ubuntu hardy partner
# deb-src http://archive.canonical.com/ubuntu hardy partner

deb http://security.ubuntu.com/ubuntu hardy-security main restricted
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted
deb http://security.ubuntu.com/ubuntu hardy-security universe
deb-src http://security.ubuntu.com/ubuntu hardy-security universe
deb http://security.ubuntu.com/ubuntu hardy-security multiverse
deb-src http://security.ubuntu.com/ubuntu hardy-security multiverse


Далее с целью обновления базы данных доступных в репозитарих пакетов, запускаем команду:

Код:

apt-get update


И с целью обновления уже устанавленных пакетов ещё одну:

Код:

apt-get upgrade


Проверяем не забыли ли мы устанавить SSH сервер.

Код:

apt-get install ssh openssh-server


 

Устанавливаем mc (удобство работы и не более того)

Код

apt-get install mc


 

Удаляем пакет app-armor, он может помешать нормальной работе.

Код:

    /etc/init.d/apparmor stop

    update-rc.d -f apparmor remove

    aptitude remove apparmor apparmor-utils

Затем устанавливаем пакеты для Mysql сервера:

Код:

apt-get install mysql-server mysql-client libmysqlclient15-dev


По ходу установки вводим пароль пользователя сервера Mysql (root): в этой версии 2 раза, второй раз для проверки правильности.

New password for the MySQL "root" user: <-- yourrootsqlpassword ВАШ ПАРОЛЬ
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword ЕЩЕ РАЗ ВАШ ПАРОЛЬ

Далее отредактируйте конфиг файл для MYSQL сервера /etc/mysql/my.cnf, закомментируйте строку bind-address = 127.0.0.1 как показано в примере ниже, затем перезапустите MYSQL сервер командой /etc/init.d/mysql restart.

Код:

[…]
# 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
[…]

Проверьте все ли верно, выполнив команду netstat -tap | grep mysql, результат должен быть примерно таким:

Код:

root@server1:~# netstat —tap | grep mysql
tcp 0 0 *:mysql *:* LISTE№ 8474/mysqld
root@server1:~#

Перезагрузим его (сервер MySQL):

Код:

/etc/init.d/mysql restart


 

То же самое для сервера Apashe:

Код:

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert


Устанавливаем пакеты PHP:

Код:

apt-get install libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Расширим диапазон запускаемых файлов, для чего подредактируем файл dir.conf, с помощью редактора nano:

Код:

nano -w /etc/apache2/mods-available/dir.conf


Пример как надо сделать, находится ниже:

Код:

<IfModule mod_dir.c>

          #DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
          DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

</IfModule>


Запускаем необходимые модули:

Код:

a2enmod ssl rewrite suexec include


Перезагружаем сервер Apashe:

Код:

/etc/init.d/apache2 force-reload


 

И проверяем работу сервера набрав в командной строке браузера http://10.0.0.243

Если мы видим надпись

«It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.»

Значит Web сервер у нас уже работает!


 

Установка Postfix, Courier, Saslauthd, phpMyAdmin, rkhunter, binutils

Код:

    aptitude install postfix postfix-mysql postfix-doc 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 maildrop getmail4 rkhunter binutils ntp ntpdate phpmyadmin


 

В процессе установки пакетов вам надо будет ответить на вопросы, отказаться от создания директорий для веб администрирования, для почтовой системы выбрать конфигурацию «интернет сайт», указать полное доменное имя вашего сервера, а так же согласиться на установку сертификатов.

Конфигурирование PHPmyAdmin:

Yes,

Пароль Суперпользователя MySql – ввести пароль,

И пароль для доступа к phpmyadmin, оставьте его пустым


 

Во время установки почтовый сервер Courier генерирует сертификаты для localhost, нам надо сменить их на наше доменное имя, для этого нам надо удалить старые сертификаты, поправить конфигурационные файлы Courier и сгенерировать новые сертификаты для нашего домена. В примере используется домен server1.example.com.

Код:

cd /etc/courier

удалим старые сертификаты

rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

Отредактируем конфиги

nano -w /etc/courier/imapd.cnf

Впишите ваш домен вместо localhost

[…]

CN=server1.example.com
[…]

Отредактируем второй конфиг

nano -w /etc/courier/pop3d.cnf

замените localhost на ваш домен

[…]
CN=server1.example.com
[…]

теперь сгененрируем новые сертификаты

mkimapdcert
mkpop3dcert

Перезапустите Courier для того что бы он подхватил новые сертификаты выполнив пару команд:

Код:

/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart


 

Далее обезопасим доступ к phpmyadmin, удалите файл /etc/phpmyadmin/htpasswd.setup и закомментируйте секцию в конфиге Apache2 /etc/phpmyadmin/apache.conf как показано ниже

Код:

    [...]
# Authorize for setup

<Directory /usr/share/phpmyadmin/setup>

# <IfModule mod_authn_file.c>

# AuthType Basic

# AuthName "phpMyAdmin Setup"

# AuthUserFile /etc/phpmyadmin/htpasswd.setup

# </IfModule>

Require valid-user

</Directory>

    [...]


После этого перезапустим Apache2 командой /etc/init.d/apache2 restart

Проверка работы: http://10.0.0.243/phpmyadmin - должен высветить окно входа


 

Установка PureFTPd и Quota

Код:

    aptitude install pure-ftpd-common pure-ftpd-mysql quota quotatool


Отредактируем конфиг сервера PureFTPD /etc/default/pure-ftpd-common, изменив пару важных параметров как показано ниже

Код:

    [...]
    STANDALONE_OR_INETD=standalone
    [...]
    VIRTUALCHROOT=true
    [...]

После этого перезапустите PureFTPD командой /etc/init.d/pure-ftpd-mysql restart


 

Проверка работы: ftp://10.0.0.243/ - должен высветить окно входа

Включение квотирования будем делать позже когда установим панель управления или можно сразу:

Для включения квот для пользователей отредактируем файл /etc/fstab который отвечает за монтирование дисков, добавим к разделу / опции usrquota и grpquota, выглядеть это будет примерно так

Код:


    # /etc/fstab: static file system information.
    #
    # Use 'vol_id --uuid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    #
    proc /proc proc defaults 0 0
    # / was on /dev/mapper/server1-root during installation
    UUID=b8d265bc-5959-404d-a68e-8dc1c76f18d6 / ext3 relatime,errors=remount-ro,usrquota,grpquota 0 1
    # /boot was on /dev/sda5 during installation
    UUID=01e9c3c7-2ad0-4f52-a356-18290517b362 /boot ext2 relatime 0 2
    # swap was on /dev/mapper/server1-swap_1 during installation
    UUID=c1e0bcbb-5c73-4bd2-a7b2-8beeb7526200 none swap sw 0 0
    /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
    /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0


Создадим файлы необходимые для работы квот и перемонтируем корневой раздел для их включения

Код:

    touch /quota.user /quota.group
    chmod 600 /quota.*
    mount -o remount /

Проверим все ли правильно выполнив команды

Код:

    quotacheck -avugm
    quotaon -avug


 


 

И НАКОНЕЦ ПЕРЕЗАГРУЗИМ НАШ СЕРВЕР!

Код

reboot


 

Изменение встроенной оболочки

/bin/sh является симлинком к /bin/dash, однако нам нужно /bin/bash а не /bin/dash. поэтому мы делаем следующие:

Код:

dpkg-reconfigure dash

Install dash as /bin/sh? <-- No


Если вы не сделаете этого, установка ISPConfig не удастся.


 

Установка DNS сервера

Запускаем

Код:

aptitude install bind9


По соображениям безопасности мы запустим BIND в защищённой среде , для этого выполняем следующие шаги
:

Код:

/etc/init.d/bind9 stop

Отредактируем фаил /etc/default/bind9 , так чтобы демон запускался как непривилегированный пользователь bind , изменим строку OPTIONS="-u bind" на OPTIONS="-u bind -t /var/lib/named"

Код:

nano -w /etc/default/bind9

Код:

# run resolvconf?

RESOLVCONF=yes


 

# startup options for the server

OPTIONS="-u bind -t /var/lib/named"

Создайте требуемую директорию под /var/lib:

Код:

mkdir -p /var/lib/named/etc

mkdir /var/lib/named/dev

mkdir -p /var/lib/named/var/cache/bind

mkdir -p /var/lib/named/var/run/bind/run

Затем переместите сконфигурированную директорию из /etc/ в
/var/lib/named/etc:

Код:

mv /etc/bind /var/lib/named/etc

Создайте символическую ссылку на новую директорию конфигурации со старого места (чтобы избежать проблем при обновлении в будущем):

Код:

ln -s /var/lib/named/etc/bind /etc/bind

Сделайте Null и случайные устройства , и измените права доступа на них :

Код:

mknod /var/lib/named/dev/null c 1 3

mknod /var/lib/named/dev/random c 1 8

chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random

chown -R bind:bind /var/lib/named/var/*

chown -R bind:bind /var/lib/named/etc/bind

Теперь нам нужно создать файл /etc/rsyslog.d/bind-chroot.conf

Код:

nano -w /etc/rsyslog.d/bind-chroot.conf

и добавьте следующие строки, чтобы мы могли получать важные сообщения записываемые в системный журнал (вести логи) :

Код:

$AddUnixListenSocket /var/lib/named/dev/log

Далее перезагружаем демона

Код:

/etc/init.d/rsyslog restart

Стартуем Bind и смотрим наличие каких либо ошибок в /var/log/syslog:

Код:

/etc/init.d/bind9 start

Если вы всё правильно настроили то Bind выдаст вам>OK


 

Установим Vlogger и Webalizer

Код:

aptitude install vlogger webalizer


Установим Jailkit

Jailkit нужен нам для реализации chroot наших пользователей для входа по ssh.
Важно, Jailkit обязательно должен быть установлен перед установкой ISPConfig!
Установим необходимые пакеты

Код:

aptitude install build-essential autoconf automake1.9 libtool flex bison


Jailkit так же как и MyDns будем ставить из исходников
Код:

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
tar xvfz jailkit-2.5.tar.gz
cd jailkit-2.5
./configure
make
make install
cd ..
rm -rf jailkit-2.5*


Установим fail2ban


Код:

aptitude install fail2ban


Установим SquirrelMail

Код:

aptitude install squirrelmail


Создадим симлинк для более удобного входа в почтовый интерфейс, он будет доступен по адресу http://10.0.0.243/webmail (замените на ваш домен)

Код:

ln -s /usr/share/squirrelmail/ /var/www/webmail


Затем настроим SquirrelMail выполнив команду

squirrelmail-configure.

Или Установка Roundcube

Код

aptitude install roundcube roundcube-mysql

Конфигурация

dpkg-reconfigure roundcube-core


 

Создание символической ссылки

Код

ln -s /usr/share/roundcube /var/www/roundcube

Рестарт Apache

Код

/etc/init.d/apache2 restart

Приступаем к установке Webmin и ISConfig


 

Первое что делаем это добавляем в список репозитариев сайт Webmina.
В МС идем: /etc/apt/sources.list находим этот файл и открываем его по F4.

добавляем строчку где нить внизу:

Код:

deb http://download.webmin.com/download/repository sarge contrib

Выходим, сохраняем.

Для того что бы не ругался на отсутствие ключа его надо добавить

Код

cd /root

wget http://www.webmin.com/jcameron-key.asc

apt-key add jcameron-key.asc


Теперь нада считать список пакетов с нового репозитария, не мудрствуя пишем опять:

Код:

sudo apt-get update


Ну и цель нашей установки:

Код:

apt-get install webmin


Сам Webmin весит 13 метров, но скорее всего он попросит что ли бо не достающее, поэтому возможно размер скаченных файлов увеличится.

Если что то пойдет не так и при установке будет ругатся на нехватку каких либо пакетов, смотрим название этого пакета и ставим его:

Код:

sudo apt-get install название пакета


Вообще ему нужны пакеты: perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl
Но 99% что он поставит это сам как зависимсоти. Ну а вообще:

Код:

sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl


Все  Webmin поставился и соответственно сразу запустился. В консоле выскочит https://localhost:10000/ только вместо локалхост имя машины.
Набираем эту строчку в любом браузере и видим приглашение на вход. логин root и пароль.
Если в сети нет DNS сервера то пишем: https://IP-машины:10000/ если вы сидите на сервере и поставили иксы то https://localhost:10000/


 

Установим ISPConfig 3

Код:


cd /tmp
wget http://downloads.sourceforge.net/ispconfig/ISPConfig-3.0.1.1.tar.gz?use_mirror=
tar xvfz ISPConfig-3.0.1.1.tar.gz
cd ispconfig3_install/install/


ВНИМАНИЕ — вместо указанного адреса ставим ПОСЛЕДНЮЮ версию панели с оф.сайта (сначало надо посмотреть на сайте адрес — http://www.ispconfig.org)Также разархивируем не указанный файл, а закаченнный.

Запустим установку

Код:

php -q install.php


 

Далее примерно описан процесс установки с ответами на вопросы задаваемыми установщиком

root@server1:/tmp/ispconfig3_install/install# php —q install.php


----------------------------------------

> > Initial configuration

Operating System: Debian Lenny/Sid or compatible

Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with < ENTER >.
Tap in «quit» (without the quotes) to stop the installer.

Select language (en,de) [en]: < - ENTER

Installation mode (standard,expert) [standard]: < - ENTER

Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.example.com]: < - ENTER

MySQL server hostname [localhost]: < - ENTER

MySQL root username [root]: < - ENTER

MySQL root password []: < - пароль root для mysql

MySQL database to create [dbispconfig]: < - ENTER

MySQL charset [utf8]: < - ENTER

Generating a 2048 bit RSA private key
……………………………………………………..+++
…………..+++
writing new private key to 'smtpd.key'
---
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
---
Country Name (2 letter code) [AU]: < - ENTER
State or Province Name (full name) [Some-State]: < - ENTER
Locality Name (eg, city) []: < - ENTER
Organization Name (eg, company) [Internet Widgits Pty Ltd]: < - ENTER
Organizational Unit Name (eg, section) []: < - ENTER
Common Name (eg, YOUR name) []: < - ENTER
Email Address []: < - ENTER
Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Courier
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring MyDNS
Configuring Apache
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]: < - ENTER



Configuring DBServer
Installing Crontab
no crontab for root
no crontab for getmail
Restarting services …
* Stopping MySQL database server mysqld
…done.
* Starting MySQL database server mysqld
…done.
* Checking for corrupt, not cleanly closed and upgrade needing tables.
* Stopping Postfix Mail Transport Agent postfix
…done.
* Starting Postfix Mail Transport Agent postfix
…done.
* Stopping SASL Authentication Daemon saslauthd
…done.
* Starting SASL Authentication Daemon saslauthd
…done.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
* Stopping ClamAV daemon clamd
…done.
* Starting ClamAV daemon clamd
…done.
* Stopping Courier authentication services authdaemond
…done.
* Starting Courier authentication services authdaemond
…done.
* Stopping Courier IMAP server…
…done.
* Starting Courier IMAP server…
…done.
* Stopping Courier IMAP-SSL server…
…done.
* Starting Courier IMAP-SSL server…
…done.
* Stopping Courier POP3 server…
…done.
* Starting Courier POP3 server…
…done.
* Stopping Courier POP3-SSL server…
…done.
* Starting Courier POP3-SSL server…
…done.
* Restarting web server apache2
… waiting …done.
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot —l mysql:/etc/pure-ftpd/db/mysql.conf —l pam —A —E —b —u 1000 —O clf:/var/log/pure-ftpd/transfer.log —B
Installation completed.
root@server1:/tmp/ispconfig3_install/install#

После установки система готова к использованию, зайдите в админ панель ISPConfig по адресу http://10.0.0.243:8080/ с логином admin паролем admin

Вам останется только создать и настроить аккаунты, а так же немного привести в порядок конфигурацию установленных демонов.