Суббота, 05 Май 2012 22:04

Установка и настройка системы распределения трафика на базе Linux. Этап 1.

Автор
Оцените материал
(8 голосов)

Здравствуйте!

В этой статье я хочу рассмотреть установку и настройку системы контроля и распределения доступа интернет трафика. Также, коснусь темы соединения двух офисов через openvpn. Операционную систему для этого буду использовать Fedora 13 — это один из самых популярных дистрибутивов Линукса.

Этап 1. Общая подготовка сервера.

Наша система будет состоять вот из этих основных компонентов:
- Samba
- Squid
- ClamAV
- C-icap
- Apache
- MySQL
- SAMS
- Iptables
- NetAMS
- OpenVPN

Машину для этого я выбрал достаточно простую: Intel E4500/Intel BLKDQ45CB/1Gb DDR2-6400/два WD2500JS, соединённых в raid1.
Приступим к установке. На этапе, когда установщик попросит указать имя машины, укажем, к примеру router.mydomain.domain, где mydomain.domain — это название вашего домена Active Directory. Далее, когда установщик будет спрашивать о том, какое дисковое пространство использовать, выбираем «всё пространство». И, если нужно что-то изменить, то ставим галку «просмотр и изменение разбиения разделов». Я под раздел /home выделил 50Gb, под swap — 2Gb, а всё остальное — под корневой раздел. После сохранения изменений на диск, выберем только нужные нам пакеты для установки. Лишнее уберём.

Итак:

В графических средах снимаем все галки. Иксы нам не нужны.
В приложениях тоже снимаем все галки.
Программирование — там ничего не отмечено по умолчанию. Так и оставляем
Серверы — тут отметим следующее:
- База данных MySQL
- Веб-сервер
- Сервер службы каталогов
Базовая система:
- Основные
- Поддержка оборудования
- Системные средства. Но зайдём внутрь и оставим галки лишь на тех компонентах, которые нам могут понадобиться:
   - mc
   - ntp
   - openvpn
   - samba-client
   - yum-utils
Языки не отмечаем никакие.

Ждём, пока система установится. Заходим в систему под рутом. Первое, что нам надо сделать — это получить доступ к сети. Для этого откроем консольный файловый менеджер midnight commander:

mc

Заходим в каталог /etc/sysconfig/network-scripts. Я предполагаю, что на вашей машине присутствует, как минимум, две сетевые карты. Одна вставлена в PCI слот, а другая интегрирована в материнскую плату. Если это так, то, обычно, файл ifcfg-eth0 будет для сетевой карты PCI-ного слота, а файл ifcfg-eth1 будет для интегрированной сетевой карты. Соответственно, интернетовский шнур будет воткнут в PCI-сетевуху, а шнур локальной сети — в интегрированную сетевуху. Пропишем адреса для обеих сетевых карт.

Поставим курсор на файл ifcfg-eth0 и нажмём F4. Откроется текстовый редактор, встроенный в mc. Приводим файл примерно к такому виду:

DEVICE=eth0
HWADDR=xx:xx:xx:xx:xx:xx #mac-адрес сетевого интерфейса
ONBOOT=yes
IPADDR=xxx.xxx.xxx.xxx #ваш ip-адрес
NETMASK=255.255.255.xxx #ваша маска сети
GATEWAY=xxx.xxx.xxx.xxx #ваш шлюз
DNS1=xxx.xxx.xxx.xxx #ваш DNS-сервер
DNS2=xxx.xxx.xxx.xxx #ваш альтернативный DNS-сервер

Правим файл ifcfg-eth1:

DEVICE=eth1
HWADDR=xx:xx:xx:xx:xx:xx #mac-адрес сетевого интерфейса
ONBOOT=yes
IPADDR=192.168.1.100 #ваш ip-адрес
NETMASK=255.255.255.0 #ваша маска сети
DNS1=192.168.1.200 #ваш DNS-сервер
DNS2=192.168.1.201 #ваш альтернативный DNS-сервер
SEARCH="mydomain.domain" #ваш локальный домен Active Directory
DOMAIN="mydomain.domain" #ваш локальный домен Active Directory

После того, как прописали адреса и сохранили файлы ifcfg-eth0 и ifcfg-eth1, наберём в командной строке:

ntsysv

Откроется консольный редактор автоматического запуска сервисов. Нам нужно снять крыж с NetworkManager и поставить крыж возле network. Сохраняем и перезагружаемся. После перезагрузки, нам надо отредактировать файл /etc/resolv.conf. Приведём его вот в такой вид:

search maydomain.domain
nameserver xxx.xxx.xxx.xxx # IP-адрес вашего локального DNS-сервера
nameserver xxx.xxx.xxx.xxx # IP-адрес вашего альтернативного локального DNS-сервера
nameserver xxx.xxx.xxx.xxx # IP-адрес DNS-сервера вашего провайдера

И, на всякий случай, даём команду:

chattr +i /etc/resolv.conf

чтобы запретить любую модификацию этого файла.
Затем, нужно попробовать обновить систему. Важно! Сначала надо обновить сам менеджер пакетов yum! На практике встречалось, что обновление может не пойти, пока не обновишь сам yum. Итак, делаем:

yum -y update yum

И вот только после этого запускаем обновление всей системы:

yum -y update

После успешного обновления надо перезагрузить систему.

Теперь, стоит отметить один важный момент, который касается настройки вашего локального DNS-сервера. У меня их два, и подняты они на двух контроллерах домена Windows server 2008 R2. В свойствах каждого сервера надо настроить пересылку на DNS-сервера провайдера тех запросов, которые не может обработать ваш локальный DNS-сервер. DNS-сервер провайдера нужно поставить в самый верх:

Теперь, пришло время немного подстраховаться на некоторые случаи жизни. Поскольку, наш сервер будет напрямую «смотреть» в интернет, то желательно запретить заходить на него под суперпользователем через ssh. Откроем файл /etc/ssh/sshd_config, в нём раскомментируем и отредактируем строчку:

PermitRootLogin no

Сохраним файл. Теперь, через ssh мы на сервер сможем зайти только под любым обычным пользователем. Кстати, давайте его и создадим:

useradd admin
passwd admin

Мы добавили пользователя admin и назначили ему пароль.

Вторая подстраховка, которую необходимо сделать — это посадить сервер на ИБП и настроить его автовыключение при низком заряде батареи. Для этого мы возьмём ИБП APC Back-UPS ES 525 и программу Apcupsd. Будем считать, что вы уже подключили ИБП к серверу через USB-интерфейс. Теперь, устанавливаем Apcupsd:

yum -y install apcupsd

Для настройки Apcupsd я воспользовался вот этой статьёй. Итак, после установки программы, отрываем файл /etc/apcupsd/apcupsd.conf и правим там лишь некоторые строчки:

BATTERYLEVEL 10
# уровень заряда батареи, при котором сервер начнёт выключаться

MINUTES 8
# оставшееся время работы батареи, меньше которого сервер начнёт выключаться
NISIP 127.0.0.1

Наберём команду ntsysv и отметим в меню apcupsd, чтоб этот сервис запускался при запуске сервера. После этого, можно продолжать, не опасаясь проблем с электричеством.

Мы будем рассматривать случай, когда сервер будет использоваться в сети с доменом Active Directory. Для этого, нам нужно ввести сервер в домен. А для этого нам понадобится SAMBA. Проверьте, чтоб у вас были установлены следующие пакеты:

samba
samba-client
samba-common
samba-winbind
samba-winbind-clients

Если таковые установлены, то приступим к следующему шагу приготовления сервера к вводу в домен. Нам нужно открыть некоторые порты на фаерволе, который называется iptables. Находим файл /etc/sysconfig/iptables и приводим его вот к такому виду:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 631 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Забегая немного в будущее, хочу сказать, что это временная наша настройка. Позже, мы переделаем настройки iptables. Для того, чтоб прописанные нами правила фаервола применились, надо его перезапустить:

service iptables restart

Также, нам нужно перевести в разрешающий режим систему принудительного контроля доступа SELinux. Находим файл /etc/selinux/config , находим в нём строчку SELINUX=enforcing и меняем её на SELINUX=permissive.

Далее, чтобы потом избежать кое-какие проблемы с самбой, настроим синхронизацию времени с контроллерами домена. Найдём файл /etc/ntp.conf, а в нём найдём строки:

server 0.fedora.pool.ntp.org
server 1.fedora.pool.ntp.org
server 2.fedora.pool.ntp.org

и заменим их на строчки, в которых серверами NTP будут указаны контроллеры домена:

server 192.168.1.200
server 192.168.1.201

Сохраняем и включаем демон ntpd в автозагрузку:

chkconfig ntpd on

И сейчас надо перезагрузить систему.

Ну вот, теперь можно настраивать самбу. Сам я пользовался вот этой статьёй. Тем не менее, здесь мы это ещё раз всё рассмотрим пошагово. Для начала, отредактируем файл /etc/krb5.conf. Его нужно привести в аналогичный вид:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = true
renew_lifetime = 7d
default_realm = MYDOMAIN.DOMAIN

# У меня в домене присутствует два контроллера домена (с адресами 192.168.1.200 и 192.168.1.201).
# Если у вас он всего один, то лишнее уберите.
[realms]
mydomain.domain = {
kdc = 192.168.1.200
kdc = 192.168.1.201
admin_server = 192.168.1.200
admin_server = 192.168.1.201
default_domain = mydomain.domain
}

[domain_realm]
.mydomain.domain = MYDOMAIN.DOMAIN
mydomain.domain = MYDOMAIN.DOMAIN

И не забывайте соблюдать регистр, когда будете подставлять свои значения для контроллеров домена и названия домена.
Далее, находим файл /etc/samba/smb.conf и приводим его в аналогичный вид:

[global]
log file = /var/log/samba/log.%m
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
null passwords = yes
interfaces = eth1
hosts allow = 192.168. 127.0.0.1
winbind uid = 50-99999999
winbind gid = 50-99999999
auth methods = winbind
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
name resolve order = hosts wins bcast lmhosts
case sensitive = no
dns proxy = no
server string = Linux
netbios name = router
password server = 192.168.1.200 192.168.1.201
realm = MYDOMAIN.DOMAIN
client signing = yes
local master = no
domain master = no
workgroup = MYDOMAIN
debug level = 2
security = ads
dos charset = 866
max log size = 50
os level = 0

Опять же, не забываем про регистр.
Последний файл, который нам надо подправить, это /etc/nsswitch.conf. Находим в нём следующие строчки:

passwd: files
shadow: files
group: files

И правим их до такого вида:

passwd: files winbind
shadow: files
group: files winbind

После того, как мы отредактировали все конфигурационные файлы, нам надо запустить/перезапустить и включить в автозапуск некоторые демоны (сервисы). Для начала, набираем команду ntsysv. Поставим звёздочку напротив демонов nmb, smb и winbind. Таким образом, мы включили эти демоны в автозапуск. А сейчас запустим/перезапустим их вот такими командами:

service smb restart
service nmb restart
service winbind restart

Хорошо. Теперь попытаемся включить наш сервер в домен Active Directory. Вводим следующую команду:

kinit Admin@MYDOMAIN.DOMAIN

Где Admin — это учётная имя пользователя AD, имеющего права администратора домена. Если всё нормально, то, к примеру, в моём случае, должно быть типичное линуксовое молчание после ввода пароля. Молчит, значит всё в порядке :) Если же у вас это не так, то вот возможные проблемы на этом этапе:

kinit: krb5_get_init_creds: Client (Admin@MYDOMAIN.DOMAIN) unknown — Надо проверить правильность ввода логина\пароль админа.

kinit: krb5_get_init_creds: unable to reach any KDC in realm (MYDOMAIN.DOMAIN) — Проверьте правильность настроек DNS и конфига krb5.conf

kinit: krb5_get_init_creds: Clock skew too great — Рассинхронизация времени на контроллере домена и клиентом

Итак, если же проблем нет, то выполняем вторую команду:

net ads join -U Admin

Если у вас выйдет сообщение:

Using short domain name — MYDOMAIN
Joined 'SAMBA' to realm 'mydomain.domain'

то значит всё в порядке. Перезагрузимся.

Теперь, давайте проверим, хорошо ли наш SAMBA-сервер чувствует себя в домене. Вводим команду:

wbinfo -t

Вывод должен быть таким:

checking the trust secret via RPC calls succeeded

Проверим пользователей и группы. Эти команды должны вывести список пользователей и групп АД:

wbinfo -u
wbinfo -g

Проверяем аутентификацию в домене:

wbinfo -a user%123

где user — пользователь домена, 123 — пароль. Если ответ:

plaintext password authentication succeeded
сhallenge/response password authentication succeeded

значит аутентификация в доменах работает. Проверим, видит ли наш сервер пользователей домена:

id user

Команда должна вывести id пользователя домена и группы, к которым он относится.

Теперь, когда наш сервер в домене Active Directiry, перейдём к следующему этапу:

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

Перейти зразу на:
Этап 3
Этап 4

Прочитано 5735 раз Последнее изменение Воскресенье, 21 Октябрь 2012 12:42

Комментарии  

Игорь
0 # Игорь 25.10.2013 23:52
Есть много людей, не знающих, как установить Самбу или Апачи(например,я). Поэтому у меня к вам просьба, могли бы вы очень подробно описывать Ваши действия, начиная с выбора нужного ПО при установке Fedor' ы.
Ответить
Николай
+1 # Николай 09.11.2013 12:51
Тут итак всё подробно. Начиная с установки федоры, заканчивая конфигами каждого пакета.
Ответить

Добавить комментарий

Защитный код
Обновить

Вы здесь: Home Мои статьи Linux Fedora Установка и настройка системы распределения трафика на базе Linux. Этап 1.