Персональные инструменты
Вы здесь: Главная / Статьи / Многофункциональный офисный сервер на Linux

Многофункциональный офисный сервер на Linux

Построение системы выполняющей роль файл-сервера, почтового сервера, сервера Интернет и контроллера домена на Linux Ubuntu

Проблема освещенная в этой статье весьма насущна для специалистов автоматизирующих деловые процессы в любом офисе. Это практическое руководство по созданию универсального, многофункционального сервера (типа все-в-одном) реализующего функции файл-сервера (SMB/CIFS с авторизацией пользователей учетными записями имеющегося домена AD), DNS сервера, NTP сервера, DHCP сервера, SSH сервера, почтового сервера, сервера интернет канала (с полноценной контентной фильтрацией), web-сервера и т.д. Изначально планировалось использовать в качестве платформы для этого проекта Gentoo Linux, но при ближайшем рассмотрении выяснилась масса сложностей (в том числе с поддержанием системы в актуальном состоянии и другие - в целом можно сказать, что для поддержания такой сложной системы на этом дистрибутиве возможностей одного специалиста будет недостаточно) склонивших меня отдать предпочтение активно развиваемой платформе Ubuntu Linux. В результате, получился аналог Zentyal , но доработанный в плане контентной фильтрации, подключения к AD и во многом другом однако не имеющий и некоторых функций (как то единая админка, пока не реализованы функции групповой работы, нет антивирусной фильтрации (которая, в моем случае, выполняется на пользовательских АРМ, а на шлюзе только добавит тормозов) и кое что еще).

Итак, качаем-устанавливаем Ubuntu 14.04 LTS Server (или DVD, я устанавливал DVD). Эта часть не представляет существенных сложностей - инсталлятор в Ubuntu Linux весьма толковый. Кроме того установка операционки весьма зависима от железа, а мне хотелось бы написать более-менее универсальное руководство. Здесь можно отметить, что в инсталляторе Ubuntu, установка на софт-рэйд выполняется в ручном режиме. Дело в том, что Груб по-прежнему понимает только RAID1, поэтому под /boot можно делать только зеркало; своп делать на софт-рэйде бессмысленно - он сам как рэйд работает - просто отдаем ему разделы на разных дисках - получается что-то вроде стрипа; ну и в целом - под рэйд проводим сначала разметку дисков (из расчета - раздел на диске - это виртуальный диск в рэйде) указываем в типе раздела raid, заходим в меню управления рэйд массивами установщика и создаем свои массивы с указанием сразу же файловой системы и точки монтирования. Можно сразу указать какие функции будет выполнять сервер (например почтовик (домен+smarthost), файловый сервер (samba4), вэб-сервер (LAMP), DNS (Bind9), прокси сервер (squid)), а можно доставлять нужные пакеты после установки ОС - sudo apt-get install <имя пакета> (я ставил перечисленное сразу и описывать буду именно такую платформу - поэтому делайте поправку - если не поставили что-то сразу). Для удобства дальнейшей настройки (чтобы не заморачиваться изучением nano и других не дружественных редакторов и не тратить время на поиск каждого нужного нам файла и на переход к нему) устанавливаем midnight commander:

sudo apt-get install mc

Общие обозначения принятые для описания системы в статье:

Домен AD: domain.lan
LAN: 192.168.0.0/16
Internet: 10.0.0.0/24
Контроллер домена: dc.domain.lan (192.168.0.1) Настраиваемый сервер: smbsrv01 (192.168.0.2 - LAN, 10.0.0.1 - Internet)

Чтобы упростить себе жизнь, сразу же ставим сервер ssh:

sudo apt-get install ssh

правим /etc/ssh/sshd_config - в целом он остается в первоначальном виде, но обратите внимание на следующие опции:

# Говорим демону слушать только интерфейс в локальной сети
ListenAddress 192.168.0.10
# Говорим использовать PAM механизм аутентификации пользователей
UsePAM yes
# Разрешаем подключения с любого адреса (из локалки)
IgnoreUserKnownHosts no
# Разрешаем аутентификацию (подтверждение имени пользователя) паролем
PasswordAuthentication yes

Сохраняем конфигурацию и перезапускаем sshd (sudo service sshd restart). Теперь можно работать удаленно (подключившись к консоли сервера клиентом ssh, например PuTTY с Windows машины).

Еще немного упростим себе жизнь (в основном на будущее - в текущей настройке этот сервис лучше не использовать - он не всегда предсказуем и не все настройки последних версий пакетов знает) - установим webmin. Правим настройки репозитория нашей Ubuntu - файл /etc/apt/sources.list . В конец файла добавляем строку:

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

Обновляем индекс пакетов и ставим webmin:

sudo apt-get update
sudo apt-get install webmin

DHCP сервер можно настроить на контроллере домена, но если нужно настраивать сетевые параметры клиентам из разных сегментов локальной сети, то единственное решение это установить и настроить демона DHCP на шлюзовом компютере с интерфейсами во всех сегментах локалки.

Теперь можно поставить Самбу 4 и завести ее контроллером домена в имеющийся домен Active Directory (AD) работающий (в моем случае) на Windows 2008 Server. Но, у меня необходимости в дополнительном контроллере домена не было, а авторизоваться доменными учетками на почтовике, файл-сервере и Интернет-шлюзе можно используя Winbind и механизмы Самбы. Поэтому я просто установил-настроил Самбу, BIND DNS, NTP, Керберос, ввел Самбу в домен (member) и добавил в NSS возможность авторизации доменным пользователям. Настройку DNS сделал исходя, в первую очередь, из потребностей доменной Самбы. Однако, необходимо понимать, что в случае простой пересылки всех запросов на AD-шный DNS его необходимо настроить на последующую пересылку внешних запросов наружу (что является тривиальной задачей даже для доменного DNS).

Установим и настроим сервер NTP - основной сервер NTP в домене работает на контроллере домена, но чтобы частично разгрузить его и, главное, чтобы иметь доступ к NTP из других сегментов локальной сети (к которым подключен шлюз, но не контроллер домена).

sudo apt-get install ntp

Теперь правим конфигурацию в файле /etc/ntp.conf , в основном все оставляем как есть, но обратите внимание, что к серверам первой строкой нужно добавить наш контроллер домена. Обратите внимание на следующие настройки:

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
server domain.lan
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

# далее описываются сервера с которых получаем данные. Разрешаем им все кроме
# трапов и запросов к нам
restrict gymnasium.lan noquery notrap
restrict 1.ru.pool.ntp.org noquery notrap
restrict 2.ru.pool.ntp.org noquery notrap
restrict 0.ubuntu.pool.ntp.org noquery notrap
restrict 1.ubuntu.pool.ntp.org noquery notrap
restrict 2.ubuntu.pool.ntp.org noquery notrap
restrict 3.ubuntu.pool.ntp.org noquery notrap
restrict ntp.ubuntu.com noquery notrap
# для локалки так же разрешаем все, кроме трапов и модификаций
restrict 10.0.1.0 mask 255.255.255.0 nomodify notrap nopeer
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer

Теперь перепускаем демон ntpd и пользуемся сервисом синхронизации времени.

 

Устанавливаем CMS и создаем на ее базе сайт организации (внутренний, внешний, сколько угодно сайтов).