Установка Интернет-сервера на Debian

From SysadminWiki.ru
Jump to: navigation, search

Введение

Функции Интернет-сервера
Функция ПО, описание
1 Маршрутизатор route. Маршрутизация между локальными и глобальными сетями
2 Брандмауэр (файрвол) iptables
3 Удалённое администрирование openssh
4 FTP сервер vsftpd
5 DNS сервер Bind (named) со своей зоной teo.mynetwork.ru
6
СУБД MySQL
7 Web сервер Apache + php4 + ssl + mysql
8 Прокси сервер Squid

+ квотирование трафика на день (любой период) и отчёт по использованию.

9 Почтовый сервер Postfix - smtp сервер.
  • виртуальный домен
  • MySQL - база данный пользователей
  • Postfix Admin - управление ящиками
  • TLS - шифрация трафика
  • ClamAV - проверка почты на вирусы

Courier - pop3, imap сервер

Cyrus - шифрование

Цель этой инструкции - получить полностью рабочий Интернет-сервер на ОС Debian с функционалом приведённым в таблице.


Для определённости условимся, что:

  • Компьютер с двумя сетевыми картами. eth0 для локальную сети, а eth1 для внешней.
  • Локальная сеть состоит из трёх подсетей: 10.0.0.0/24, 10.0.10.0/24, 10.0.20.0/24.
  • В глобальной сети есть спул адресов 192.168.100.16/28, т.е. у нас 14 внешних адресов.
  • После настройки и отладки сервера в тестовом режиме, переведём его в "боевой".
  • Будем использовать только собранные пакеты, не собирая ничего из исходников. Это даст нам возможность в будущем без опасений обновлять нашу ОС целиком командой:
# apt-get dist-upgrade

Установка Debian

Прежде чем устанавливать можно ознакомиться с дополнительной иформацией используя функциональные клавиши F1 - F10. Это будет просто необходимо, если вдруг Debian не захочет устанавливаться с установками по умолчанию.

Если на каком-то этапе установки инсталятор выдаст ошибку о невозможности выполнить такой-то шаг, то это ещё не значит, что дальше установка невозможна. Нажмите продолжить и появиться меню установки, вернувшись на один или несколько пунктов назад можно будет повторить настройку в более подробном виде.

- Основным сетевым интерфейсом выбираем тот, который будет смотреть в Интернет. Через него во время установки будут закачены обновления безопасности. Таким образом, основной интерфейс eth1. Мастер настройки в Debian 4 Etch настроит только основной интерфейс, а в Sarge предложит настроить все.

eth1:
IP-адрес: 192.168.100.18
Маска сети: 255.255.255.240
Шлюз: 192.168.100.17

eth0:
IP-адрес: 10.0.0.2
Маска сети: 255.255.255.0
Шлюз: [не указываем, т.к. этот интерфейс смотрит в локальную сеть]

Адреса серверов имён: 217.116.158.1 217.116.158.2 (выдаёт провайдер, но можно и другие)

(Чтобы изменить эти настройки после установки см. статью "Советы по Linux")

- Имя компьютера: teo

Имя домена: mynetwork.ru

- Разбиение жесткого диска. На ваш выбор, в зависимости от планируемых задач. Мы сделаем простую разбивку. Позволим Debian разбить диск, выбрав пункт "Использовать самое большое непрерывное свободное место", затем "Все файлы в одном разделе". Если на диске уже были установлены другие ОС в своих разделах, то Debian займёт неразмеченное место на диске, разбив его на 2 раздела: для подкачки (swap) и для всего остального (с точкой монтирования / и файловой системой ext3)

Создание программного RAID массива

Вариант с программным (софтовым) RAID1 - зеркалирование:

Пусть у нас есть 2 жёстких диска по 80Гб - sda, sdb

  1. Каждый диск разабьём на 3 раздела:
    300Мб - загрузочный. Включаем метку "загрузочный"
    2,4Гб - подкачка
    77,3Гб - для данных
  2. Добавить каждый раздел в Linux RAID. В меню появляется пункт "Настройка програмного RAID"
  3. Записать данные на диск
  4. Создать по очереди 3 MD устройства (multidisk), создав таким образом зеркало для каждого раздела.
    1. Тип MD: RAID1
    2. Число активных разделов: 1, резервных: 1
    3. Выбор активных разделов: /dev/sda1 ( /dev/sda2, /dev/sda3 )
    4. Выбор резервных разделов: /dev/sdb1 ( /dev/sdb2, /dev/sdb3 )
    5. Повторить 4.1-4.4 для оставшихся двух разделов.
  5. Настраиваем разделы. Чтобы в будущем можно было легко изменять размер нашего основного раздела, используем LVM:
    RAID1 устройство #0 296 Mb - ext3, точка монтирования - /boot
    RAID1 устройство #1 2.4 Gb - Использовать как раздел подкачки
    RAID1 устройство #2 77.3 Gb - Физический том для LVM
  6. В меню появляется пункт "Настройка менеджера логических томов (LVM)"
    1. Создать группу томов. Название group_store
    2. Устройство для новой группы: /dev/md2
    3. Создать логический том. Выбрать группу group_store
    4. Название логического тома store1
    5. Размер максимальный
  7. Настраиваем созданный LVM. Использовать как ext3, точка монтирования - /
  8. lilo на md0 (dev/md/0)

Настройка сети

После окончания установки и перезагрузки настроим доступ к сети. Заходим пользователем root.

Сетевые интерфейсы настраиваются в файле /etc/network/interfaces

Добавим интерфейс eth0, если он не был настроен во время установки ОС. Добавляем маршруты между нашими подсетями, где 10.0.0.1 маршрутизатор между локальными подсетями. Эти маршруты будут автоматически добавляться и убираться в зависимости от подключения или отключения интерфейса. Также можно добавить уведомление об этих событиях в журнал /var/log/messages. Это нам обеспечат последние две строки в описаниях каждого интерфейса:

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
        address 10.0.0.2
        netmask 255.255.255.0
        broadcast 255.255.255.255
        up route add -net 10.0.10.0 netmask 255.255.255.0 gw 10.0.0.1 dev $IFACE
        up route add -net 10.0.20.0 netmask 255.255.255.0 gw 10.0.0.1 dev $IFACE
        up echo Interface $IFACE going up | /usr/bin/logger -t ifup
        down echo Interface $IFACE going down | /usr/bin/logger -t ifdown

iface eth1 inet static
        address 192.168.100.18
        netmask 255.255.255.240
        broadcast 217.116.144.31
        gateway 192.168.100.17
        up echo Interface $IFACE going up | /usr/bin/logger -t ifup
        down echo Interface $IFACE going down | /usr/bin/logger -t ifdown

В качестве альтернативы можно управлять статическими маршрутами, добавляя команды в /etc/network/if-up.d и /etc/network/if-down.d, также в эти каталоги можно добавить любые командные файлы по управлению ПО, зависящего от интерфейсов, например vpn.

- Проверяем работоспособность сетевых настроек. Для этого пингуем адреса из сети локальной, внешней, и проверяем внешний DNS сервер пингуя какой-нибудь узел по имени (само сабой мы должны быть 100% уверены, что все эти ресурсы сейчас доступны):

# ping 10.0.0.35

PING 10.0.0.35 (10.0.0.35) 56(84) bytes of data.
64 bytes from 10.0.0.35: icmp_seq=1 ttl=128 time=0.171 ms

# ping 213.180.204.8

PING 213.180.204.8 (213.180.204.8) 56(84) bytes of data.
64 bytes from 213.180.204.8: icmp_seq=1 ttl=57 time=63.6 ms

# ping ya.ru

PING ya.ru (213.180.204.8) 56(84) bytes of data.
64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=57 time=78.4 ms

Если пинги не проходят, то, может быть, проблема с сетевой картой.

Например, 3Com 3C905-TX не единожды себя компрометировала тем, что вроде бы работает и даже пингует сама себя, но в сеть через неё выходить не удавалось.

Обновление ОС

- Добавляем имеющиеся компакт диски в репозиторий:

# apt-cdrom add

- Доустанавливаем пакеты:

# apt-get install mc ssh tcpdump gcc-4.1

- Обновляем установленную ОС через Интернет (не обязательно, но желательно).

# apt-get update
# apt-get dist-upgrade

Если нет прямого доступа в интернет, то можно обновиться через прокси сервер, экспортировав соответсвующую переменную для apt-get:

# export http_proxy=192.168.0.254:3128


!
  • Не забываем создавать резервные копии всех оригинальных конфигурационных файлов (напр. переименовывая в *.old)
  • Все пакеты, которые собираем из исходников, собираем в домашнем каталоге пользователя, у меня /home/pavel/app/


Настройка firewall (брендмауэр). Iptables

- Включаем iptables при загрузке системы. Для этого добавляем его последней строчкой в /etc/modules:

ide-cd
ide-disk
ide-generic
psmouse
sd_mod
iptables

- Делаем из компьютера маршрутизатор. Раньше для этого нужно было указать в файле /etc/network/options:

ip_forward=yes 

В Debian 5 отказались от использования этого файла, поэтому я сделал по старинке универсальным способом - изменил в /proc/sys/net/ipv4/ip_forward 0 на 1:

# echo 1 > /proc/sys/net/ipv4/ip_forward

- На этом можно приступить к следующему шагу, а можно дать доступ к Интернету для наших пользователей из локальной сети и настроить другие ограничения и разрешения. Как это сделать читайте в спец. статье по iptables. Если будем добавлять правила для прямого доступа в Интернет, то после установки прокси-сервера нужно не забыть их убрать, иначе останется возможность попадать в Интернет в обход прокси.

Удалённое управление сервером

Удалённое управление можно осуществлять по нескольким протоколам как через графический интерфейс (VNC, RDP) так и через текстовый (SSH, Telnet). Текстовый, конечно, быстрее. Для каждого протокола в Линукс есть несколько реализаций серверов и клиентов.

Установим OpenSSH:

# apt-get install openssh-server openssh-client

Настройки находятся в /etc/ssh/sshd_config

Теперь можно заходить на сервер с рабочего места администратора по протоколу ssh, если из Windows, то можно использовать PuTTY (см статью "Терминальное подключение к серверу Linux с помощью ключей ssh без паролей"). Подключаемся пользователем pavel и меняем пользователя на root:

$ su -

Настройка FTP-сервера. vsftpd

Основная статья: vsftpd

Настройка DNS. Bind

Основная статья Bind

На этом шаге мы будем поднимать свой DNS сервер, если этого не требуется и достаточно внешнего, то этот шаг можно пропустить. Однако, если у нас не будет своего DNS, то нужно будет или попросить кого-нибудь (напр. провайдера) разместить у себя нашу зону teo.mynetwork.ru, или обратиться к любому хостеру за этой недорогой услугой.

Настройка СУБД. MySQL

См основную статью по MySQL.

Настройка Веб-сервера. Apache

- В будущем нам понадобиться поддержка php и perl скриптов. Эти модули должны быть установлены при установке ОС (если мы сказали устанавливать веб-сервер). Проверить что установлено вместе с Apache можно командой:

# dpkg -l *apache2*

А установить Apache c этими модулями можно командами:

# apt-get install apache2
# apt-get install libapache2-mod-perl2
# apt-get install libapache2-mod-php4

- Главный конфигурационный файл /etc/apache2/apache2.conf нам пока не понадобится. Нас интересуют 4 каталога в /etc/apache2/:

  • mods-available - установленые в систему модули, хранит сами модули и их конфигурационные файлы
  • mods-enabled - подключенные модули, хранит ссылки на файлы в mods-available
  • sites-available - доступные сайты, хранит файлы описывающие виртуальные хосты
  • sites-enabled - подключенные сайты, хранит ссылки на файлы в sites-available

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

  • a2enmod - подключает модуль
  • a2dismod - отключает модуль
  • a2ensite - подключает сайт
  • a2dissite - отключает сайт

после выполнения этих команд нужно попросить Apache обновить свою конфигурацию:

# /etc/init.d/apache2 reload

Также можно настроить несколько сайтов на одном веб-сервере. В этой же статье описано как изменить доступ к каталогам и файлам сайта.

- Переносим сайты со старого сервера (см. советы по MySQL)

Настройка прокси-сервера. Squid

Основная статья: Squid

Настройка почтового сервера

1) В качестве комплексного решения можно использовать почтовый сервер Zimbra. Он устанавливается и настраивается с помощью встроенного инсталлятора (мастера установки). Так как Zimbra многое чего в системе настраивает для своих нужд и включает в себя много продуктов (среди прочего MySQL, Apache и Postfix), то ёё лучше ставить на отдельную ОС, либо ставить первой.

2) Можно использовать отдельно Postfix и дополняющие его приложения.

Postfix

См. основную статью: Postfix. Установка и настройка


PostfixAdmin (веб-управление)

Postfix Admin (http://www.postfixadmin.org) - удобный веб-интерфейс для администрирования Postfix.

  • Доустановим пакет позволяющий PHP работать с MySQL:
# apt-get install php5-mysql
  • Автоматически подгружаем расширение PHP для MySQL. Для этого убираем комментарий в /etc/php4/apache2/php.ini:
extension=mysql.so
  • Берём последнюю версию с официального сайта. Распаковываем в кокой-нибудь каталог нашего административного сайта (например в postfixadmin) и заходим на него из браузера, проходя несложную настройку.

Удобно, что сейчас весь труд по созданию и настройке базы данных разработчики взяли на себя. Проблемы с русским языком тоже нет.

  • В Postfix Admin добавляем домен teo.mynetwork.ru и тестовые почтовые ящики pm и p.
  • Можно сделать резервную копию всех таблиц в виде SQL выражений. Для этого на странице администратора нажать кнопку Backup.


ClamAV (антивирус)

ClamAV - бесплатный антивирус, часто используемый для проверки на вирусы вложений почтовых сообщений.

Можно ещё раз проверить с помощью telnet, что почта, проходя через антивирусную защиту, доходит в ящик пользователя.


Courier (IMAP-сервер)

Отдавать почту будем с помощью модулей другого почтового сервера: Courier, настроив его на работу с каталогами, которые создаёт Postfix.


Cyrus (шифрование)

Шифрование подключений к почтовому серверу можно сделать с помощью пакетов другого почтового сервера: Cyrus.



Теперь наша почтовая система установлена окончательно. А вместе с этим последним шагом мы закончили настраивать и весь Интернет-сервер. Пришло время время вводить его в эксплуатацию.

Введение сервера в "боевой" режим

Если мы устанавливали и отлаживали свой сервер, как часто бывает, в тестовом режиме, параллельно с работающим старым сервером, то перед установкой сервера в "боевой" режим нужно внести некоторые изменения.

Система

- Изменить настройки сетевых интерфейсов на боевые (ip адрес, маска, шлюз, DNS).

- Прописать реальные имена в /etc/hosts.

Приложения

- Squid. Внести изменения в конфигурационный файл /etc/squid3/squid.conf, чтобы прокси сервер принимал запросы только из локальной сети и компьютера, где установлен:

http_port 10.0.0.2:3128
http_port 127.0.0.1:3128

- SAMS. Исправить IP адрес на административной странице "SAMS" - "Администрирование SAMS"

- Postfix. Исправить IP адреса в параметре mynetworks в файле /etc/postfix/main.cf

- Courier. Если менялось имя почтового домена, то исправить в /etc/courier-authlib/authdaemon-mysql.conf и пересоздать сертификаты.

- Apache. Исправить директивы NameVirtualHost и VirtualHost в конфигурациях виртуальных хостов (если создавались).


Сноски