Установка Интернет-сервера на Debian
Содержание
- 1 Введение
- 2 Установка Debian
- 3 Настройка firewall (брендмауэр). Iptables
- 4 Удалённое управление сервером
- 5 Настройка FTP-сервера. vsftpd
- 6 Настройка DNS. Bind
- 7 Настройка СУБД. MySQL
- 8 Настройка Веб-сервера. Apache
- 9 Настройка прокси-сервера. Squid
- 10 Настройка почтового сервера
- 11 Введение сервера в "боевой" режим
Введение
Функция | ПО, описание | |
---|---|---|
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 сервер.
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
- Каждый диск разабьём на 3 раздела:
- 300Мб - загрузочный. Включаем метку "загрузочный"
- 2,4Гб - подкачка
- 77,3Гб - для данных
- Добавить каждый раздел в Linux RAID. В меню появляется пункт "Настройка програмного RAID"
- Записать данные на диск
- Создать по очереди 3 MD устройства (multidisk), создав таким образом зеркало для каждого раздела.
- Тип MD: RAID1
- Число активных разделов: 1, резервных: 1
- Выбор активных разделов: /dev/sda1 ( /dev/sda2, /dev/sda3 )
- Выбор резервных разделов: /dev/sdb1 ( /dev/sdb2, /dev/sdb3 )
- Повторить 4.1-4.4 для оставшихся двух разделов.
- Настраиваем разделы. Чтобы в будущем можно было легко изменять размер нашего основного раздела, используем LVM:
- RAID1 устройство #0 296 Mb - ext3, точка монтирования - /boot
- RAID1 устройство #1 2.4 Gb - Использовать как раздел подкачки
- RAID1 устройство #2 77.3 Gb - Физический том для LVM
- В меню появляется пункт "Настройка менеджера логических томов (LVM)"
- Создать группу томов. Название group_store
- Устройство для новой группы: /dev/md2
- Создать логический том. Выбрать группу group_store
- Название логического тома store1
- Размер максимальный
- Настраиваем созданный LVM. Использовать как ext3, точка монтирования - /
- 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
! |
|
Настройка 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 в конфигурациях виртуальных хостов (если создавались).
Сноски