Настройка и подключение клиента
DNS
Клиентские компьютеры должны быть настроены на использование DNS-сервера, который мы сконфигурировали на сервере FreeIPA во время его установки. В сетевых настройках указываем использовать наш сервер ipa для разрешения имен:
- Пример настройки сети в CentOS / Rocky Linux
- Настройка сети с помощью netplan (Debian, Ubuntu).
- В устаревающих системах на основе deb настройка выполняется в файле /etc/network/interfaces (опция dns-nameservers) или /etc/resolv.conf (опция nameserver).
Время
Для корректной работы и подключения необходимо проверить настройки времени.
В первую очередь, укажем часовой пояс:
timedatectl set-timezone Europe/Moscow
* командой timedatectl list-timezones можно посмотреть список всех часовых поясов.
Устанавливаем утилиту для синхронизации времени, разрешаем запуск демона и стартуем его.
а) если на системе Ubuntu / Debian:
apt-get install chrony
systemctl enable chrony
б) если на системе Rocky Linux / CentOS / Red Hat:
yum install chrony
systemctl enable chronyd —now
Подключение к домену
Устанавливаем freeipa-client.
а) на компьютеры с Red Hat / CentOS:
yum install freeipa-client
б) на компьютеры с Debian / Ubuntu:
apt-get install freeipa-client
Выполним конфигурирование клиента:
ipa-client-install —mkhomedir
Система на основе данных из DNS попробует определить настройки и либо попросит ввести наш домен (если не сможет найти данные автоматически):
DNS discovery failed to determine your DNS domain
Provide the domain name of your IPA server (ex: example.com): dmosk.local
… либо отобразить настройки в консоли, например:
Discovery was successful!
Client hostname: freeipa-client.dmosk.local
Realm: DMOSK.LOCAL
DNS Domain: DMOSK.LOCAL
IPA Server: ipa-server.dmosk.local
BaseDN: dc=dmosk,dc=local
Если эти настройки верны, отвечаем положительно на запрос Continue to configure the system with these values?
Continue to configure the system with these values? : yes
Система спросит, от какого пользователя производить настройку — вводим admin:
User authorized to enroll computers: admin
… и пароль:
Password for admin@DMOSK.LOCAL:
Начнется процесс конфигурации — после его завершения:
…
Configured /etc/openldap/ldap.conf
NTP enabled
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring DMOSK.LOCAL as NIS domain.
Client configuration complete.
The ipa-client-install command was successful
… сразу проверим, что клиент может получать билет от сервера:
kinit admin
… и вводим пароль от пользователя admin.
Проверяем, что билет получен:
klist
Ответ должен быть, примерно, следующим:
Ticket cache: KEYRING:persistent:0:0
Default principal: admin@DMOSK.LOCAL
Valid starting Expires Service principal
25.07.2019 23:39:56 26.07.2019 23:39:52 krbtgt/DMOSK.LOCAL@DMOSK.LOCAL
Клиент настроен.
Настройка сети
Чтобы изучить подключения выполните одну из команд:
- sudo ls /sys/class/net/
- ip a s
- ifconfig
- nmcli conn show
Например:
nmcli conn show
NAME UUID TYPE DEVICE
enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet enp0s3
enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Если какой-то интерфейс, например enp0s3, выключен у него в столбце DEVICE будет стоять —
Обычно неактивный интерфейс выделен серым цветом а активный зелёным.
NAME UUID TYPE DEVICE
enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet —
enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Включить интерфейс можно командой
nmcli conn up enp0s3
Ограничение доступа к сайтам
Мы рассмотрим простой пример блокировки двух сайтов. Доступ к ним будет ограничен в рабочее и ночное время для пользователей группы squidusers. Пользователи группы squidsuperusers будут иметь полный доступ ко всем сайтам.
Открываем конфигурационный файл squid:
vi /etc/squid/squid.conf
В разделе с ACL добавим 2 строки:
acl BLOCKED url_regex -i «/etc/squid/denysite»
acl BLOCKED_ACCESS time 18:00-23:59
* в данном примере мы создаем acl BLOCKED для сайтов, доступ к которым будем блокировать; список сайтов будем хранить в файле /etc/squid/denysite. Второй acl BLOCKED_ACCESS будем использовать для предоставления доступа к заблокированным сайтам, но с промежуток с 18:00 до 23:59.
Теперь преобразовываем к следующему виду, ранее созданные правила для доступа:
http_access allow squid_superusers_acl_krb
http_access allow squid_superusers_acl_ntlm
http_access allow BLOCKED BLOCKED_ACCESS
http_access deny BLOCKED
http_access allow squid_users_acl_krb
http_access allow squid_users_acl_ntlm
* как видим, мы добавили правила блокировки после пользователей группы squidsuperusers — таким образом, на последних они не будут распространяться. Данные правила разрешают заблокированные сайты в указанный ранее промежуток времени и блокируют доступ к сайтам, перечисленным в файле /etc/squid/denysite.
Создаем файл /etc/squid/denysite:
vi /etc/squid/denysite
* в данном примере мы блокируем доступ к социальным сетям facebook и ВКонтакте.
Перечитываем конфигурацию squid:
squid -k reconfigure
Установка ifconfig
yum provides ifconfig
или
yum whatprovides ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.funet.fi
* epel: www.nic.funet.fi
* extras: ftp.funet.fi
* updates: ftp.funet.fi
base/7/x86_64/filelists_db | 7.2 MB 00:00:01
epel/x86_64/filelists_db | 12 MB 00:00:03
extras/7/x86_64/filelists_db | 224 kB 00:00:00
ssh-products/x86_64/filelists_db | 89 kB 00:00:00
updates/7/x86_64/filelists_db | 3.4 MB 00:00:01
net-tools-2.0-0.25.20131004git.el7.x86_64 : Basic networking tools
Repo : base
Matched from:
Filename : /sbin/ifconfig
ifconfig входит, например, в состав net-tools
Установим net-tools
sudo yum install net-tools
Установка и первоначальная настройка
Установка Debian Wheezy 7.0 происходит в текстовом режиме на русском языке и, как правило, не вызывает сложностей. Отдельно стоит только остановится на списке ролей: из предложенного нас, пожалуй, может заинтересовать только OpenSSH, для удаленного доступа, однако воспользовавшись пунктом Manual package selection опытный пользователь может сразу установить необходимые ему пакеты.
Если же это ваш первый сервер, то лучше всего продолжить не выбирая никакого варианта, все необходимые пакеты мы доустановим позже. Это позволит иметь более четкое представлении о назначении того или иного пакета и позволит успешно справляться с возможными неполадками. По окончании установки система перезагрузится и встретит нас черным экраном командной строки. Непривычного к консоли Windows-администратора это может неприятно удивить, однако ситуация на сегодняшний день такова, что все серверные роли Linux настраиваются исключительно через консоль и файлы конфигурации.
В первую очередь настроим сетевые соединения. Вводим в консоли:
nano /etc/network/interfaces
Эта команда откроет в консольном редакторе nano конфигурационный файл с сетевыми интерфейсами, аналогичный рисунку ниже.
Пока там прописан единственный интерфейс eth0, настроенный на работу по DHCP. К eth0 у нас подключен ADSL модем (или любая сеть провайдера), а eth1 смотрит во внутреннюю сеть. IP адрес на внешнем интерфейсе 192.168.1.2, шлюз (ADSL модем) 192.168.1.1, внутренняя сеть лежит в диапазоне 192.168.3.1 — 254. Тогда настройки будут выглядеть следующим образом:
auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 auto eth1 iface eth1 inet static address 192.168.3.1 netmask 255.255.255.0
Сохраняем изменения Ctrl+O и выходим Ctrl+X. Теперь нужно настроить DNS, для этого выполняем:
nano /etc/resolv.conf
В этом файле необходимо указать адреса DNS серверов, лучше всего указать DNS провайдера или, как в нашем случае, Google DNS.
#Google DNS nameserver 8.8.8.8 nameserver 8.8.4.4
Сохраняем. Теперь нужно перезапустить сетевые службы (либо перезагрузиться):
/etc/init.d/networking restart
Собственно сеть настроена, можно переходить к следующему этапу, однако мы рекомендуем установить еще несколько пакетов для удобства администрирования. Сначала обновим список доступных пакетов:
aptitude update
Также рекомендуем обновить версии пакетов до актуальных:
aptitude upgrade
Теперь установим Midnight Commander (mc), файловый менеджер по образу и подобию Norton Commander или Far:
aptitude install mc
Для запуска Midnight Commander достаточно набрать в консоли его краткое имя: mc. Сразу рекомендуем включить встроенный редактор, более удобный чем nano: F9 — Настройки — Конфигурация — Встроенный редактор.
Для удаленного управления сервером (не бегать же к нему каждый раз) установим OpenSSH, что позволит подключаться к нему из любого места, даже из дома, по защищенному протоколу:
aptitude install ssh
Для подключения с Windows станций можно использовать программу PuTTY (скачать), для корректного отображения символов перед подключением необходимо на закладке Window — Translation выбрать кодировку UTF8.
Для ограничения доступа к серверу можно дописать в файл /etc/ssh/sshd_config параметр AllowUsers с указанием пользователя имеющего доступ по SSH, например для пользователя admin:
AllowUsers admin
Также можно разрешить доступ определенной группе пользователей используя параметр AllowGroups, либо запретить доступ определенным пользователям / группам использовав DenyUsers и DenyGroups.
Создание пользовательских зон
Часто предопределенных зон вполне достаточно для работы, но иногда возникает необходимость определить пользовательские зоны.
Например, создадим зону publicweb для веб-сервера. Для нее потребуется настроить дополнительную зону для DNS-сервиса, которая предоставляется в частной сети, назовем ее privateDNS.
Создавая зону, ее нужно добавить к постоянным правилам брандмауэра, а затем перезагрузить FirewallD, чтобы перенести конфигурацию в рабочую сессию. Создадим две зоны, указанные выше, с помощью команд:
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS
Проверим, что они присутствуют в постоянных правилах:
firewall-cmd --get-zones
Ответ:
block dmz drop external home internal public trusted work
Перезагрузим брандмауэр, чтобы получить доступ к новым зонам:
sudo firewall-cmd --reload firewall-cmd --get-zones
Ответ:
block dmz drop external home internal privateDNS public publicweb trusted work
Теперь можно присвоить новым зонам нужные сервисы и порты. Рекомендуется внести изменения в активный экземпляр и протестировать, а затем перенести их в постоянные правила. Например, в зону publicweb можно добавить SSH, HTTP и HTTPS.
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https sudo firewall-cmd --zone=publicweb --list-all
Ответ:
publicweb target: default icmp-block-inversion: no interfaces: sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Аналогично добавим DNS-сервис к зоне privateDNS:
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all
Ответ:
privateDNS interfaces: sources: services: dns ports: masquerade: no forward-ports: icmp-blocks: rich rules:
Затем мы можем перенести интерфейсы в новые зоны, чтобы проверить их:
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1
На этом этапе можно протестировать полученную конфигурацию. Если заданные значения работают, можно добавить правила к постоянным настройкам. Для этого повторно применим правила, добавив флаг :
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns
После применения этих правил к постоянным настройкам можно перезапустить сеть и перезагрузить сервис брандмауэра:
sudo systemctl restart network sudo systemctl reload firewalld
Убедитесь, что зоны были присвоены правильно:
firewall-cmd --get-active-zones
Ответ:
privateDNS interfaces: eth1 publicweb interfaces: eth0
И проверьте, что в обеих зонах работают нужные сервисы:
sudo firewall-cmd --zone=publicweb --list-services
Ответ:
http https ssh
sudo firewall-cmd --zone=privateDNS --list-services
Ответ:
dns
Пользовательские зоны созданы! Если вы хотите сделать одну из этих зон зоной по умолчанию для других интерфейсов, используйте параметр :
sudo firewall-cmd --set-default-zone=publicweb
Настройка сети через консоль с помощью networking
Кроме NetworkManager, сетями управляет служба Networking. Она интегрирована с NetworkManager и позволяет настроить все необходимые вам параметры с помощью редактирования конфигурационных файлов. Сначала нам нужно посмотреть список сетевых интерфейсов:
У меня имя сетевого интерфейса enp2s0f0. Именно на его примере дальше будет выполняться подключение к сети centos 7. Все настройки для сети Networking хранятся в каталоге /etc/sysconfig/network-scripts/. Для нашего сетевого интерфейса конфигурационный файл будет называться /etc/sysconfig/network-scripts/ifcfg-enp2s0f0.
Давайте сначала рассмотрим основные параметры, которые вам придется рассмотреть:
- TYPE — тип соединения, проводное (Ethernet), беспроводное(Wired) и т д;
- BOOTPROTO — способ получения IP адреса, static, dhcp или none;
- NAME — имя соединения;
- DEVICE — имя сетевого интерфейса;
- ONBOOT — необходимо ли запускать при старте системы;
- IPADDR — IP адрес, который будет использован для этого компьютера;
- GATEWAY — шлюз для доступа к интернету;
- NETMASK — маска сети;
- DNS1 — сервер для разрешения доменных имен DNS.
Фактически вы уже знаете большинство этих параметров. Теперь рассмотрим какой набор нужно задать для каждого способа получения IP адреса.
Настройка получения IP по DHCP
Настройка сети dhcp centos предусматривает использование значения BOOTPROTO dhcp, остальные параметры задавать необязательно:
Теперь сохраните изменения и перезапустите сеть. Все должно заработать.
Настройка сети со статическим IP
Для установки статического IP адреса нужно задать значение BOOTPROTO — static, а также указать IP адрес, шлюз, маску сети и DNS. Вот пример конфигурации сети CentOS для нашего интерфейса:
Укажите свои значения и сохраните настройки. Для перезагрузки сети используйте команду:
Затем вам останется проверить работу сети. Если все было сделано правильно сеть будет работать.
5: Настройка Heartbeat
Чтобы получить нужный кластер, необходимо создать и настроить следующие файлы Heartbeat на обоих серверах в каталогах /etc/ha.d.
ha.cf – глобальная конфигурация кластера Heartbeat, которая включает все ноды.
authkeys – содержит ключ безопасности, который позволяет нодам пройти аутентификацию в кластере.
haresources – определяет сервисы, которыми управляет кластер, и ноду, которая должна быть владельцем этих сервисов
Обратите внимание, этот файл не используется в настройке, в которой есть CRM, (например, Pacemaker).. Также необходимо предоставить сценарий, который будет выполнять переназначение плавающего IP-адреса в случае сбоя сервера 1
Также необходимо предоставить сценарий, который будет выполнять переназначение плавающего IP-адреса в случае сбоя сервера 1.
Сбор информации о ноде
Прежде чем настроить файл ha.cf, нужно узнать имя каждой ноды. Heartbeat требует, чтобы имя ноды совпадало с ее выводом uname –n.
Следующую команду нужно запустить на обоих серверах.
Обратите внимание на вывод команды. Ноды должны иметь имена primary и secondary
Также нужно найти сетевой интерфейс и IP-адрес, который использует каждая нода для связи с остальной частью кластера. Вы можете использовать любой сетевой интерфейс, если каждая нода может взаимодействовать с остальными нодами в кластере. В руководстве используется публичный интерфейс серверов, eth0.
Чтобы узнать IP-адрес интерфейса eth0, запустите следующую команду на обоих серверах:
Примечание: Также узнать IP-адрес можно с помощью панели управления.
Обратите внимание на IP-адрес сетевого интерфейса (в примере он выделен красным). Не забудьте получить IP-адреса обоих серверов
Создание файл ha.cf
На обоих серверах откройте /etc/ha.d/ha.cf в редакторе:
Этот файл будет пустым. Сюда нужно добавить сетевые интерфейсы и имена каждой ноды в кластере.
Скопируйте и вставьте эту конфигурацию в файл, а затем замените имена и IP-адреса нод соответствующими значениями. В этом примере сервер 1 имеет IP-адрес 104.236.6.11, а сервер 2 – 104.236.6.22:
Сохраните и закройте файл.
Создание файла authkeys
Ключ авторизации позволяет нодам присоединиться к кластеру. Для этого можно просто создать случайный ключ. На сервере 1 запустите эти команды, чтобы создать ключ авторизации в переменной среды AUTH_KEY:
Затем добавьте ключ в /etc/ha.d/authkeys:
Проверьте содержимое файла authkeys:
Файл будет выглядеть так (ключ будет отличаться):
Право чтения файла должно быть только у пользователя root.
Скопируйте файл /etc/ha.d/authkeys с сервера 1 на сервер 2. Это можно сделать вручную или с помощью scp.
На сервере 2 нужно обновить права на файл:
На этом этапе оба сервера должны иметь идентичные файлы /etc/ha.d/authkeys.
Создание файла haresources
Файл haresources указывает предпочтительные хосты в паре сервисами, которыми управляет кластер. Предпочтительным хостом является нода, которая должна запускать тот или иной сервис, если она доступна. Если предпочтительный хост недоступен в кластере, сервис передается другому хосту. Другими словами, вторичный сервер возьмет работу на себя, если первичный сервер перестанет работать.
На обоих серверах откройте файл haresources в текстовом редакторе:
Добавьте в файл эту строку, указав имя ноды 1:
Сохраните и закройте файл.
Этот параметр настроит сервер 1 как предпочтительный хост для сервиса floatip, который в настоящее время не определен. Теперь нужно настроить сервис floatip.
Работа с учетными записями
Создадим пользователя. Для этого рассмотрим пример использования командной строки и веб-интерфейса.
Командная строка
Авторизуемся на FreeIPA:
kinit admin
Создаем нового пользователя командой:
ipa user-add dmosk —first=Дмитрий —last=Моск —password
* где dmosk — логин; first — имя пользователя; last — фамилия; password — ключ для запроса пароля.
… после ввода команды система запросит пароль для создаваемого пользователя — вводим его дважды.
Мы должны увидеть сводку по параметрам для созданного пользователя:
Добавлен пользователь «dmosk»
——————————
Логин пользователя: dmosk
Имя: Дмитрий
Фамилия: Моск
Полное имя: Дмитрий Моск
Отображаемое имя: Дмитрий Моск
Инициалы: ДМ
Домашний каталог: /home/dmosk
GECOS: Дмитрий Моск
Оболочка входа: /bin/sh
Principal name: dmosk@DMOSK.LOCAL
Principal alias: dmosk@DMOSK.LOCAL
User password expiration: 20190725205853Z
Электронный адрес: dmosk@dmosk.local
UID: 1798800001
ID группы: 1798800001
Пароль: True
Member of groups: ipausers
Kerberos ключей доступно: True
Примет более полной команды для создания пользователя:
* в данном примере мы использовали дополнительные поля:
- cn — полное имя.
- displayname — отображаемое имя.
- email — адрес электронной почты.
* более полный список атрибутов можно найти на странице с мануалом Fedora Project.
Веб-интерфейс
Открываем браузер и переходим по адресу имени сервера — в нашем примере, https://ipa-server.dmosk.local. Закрываем всплывающее окно с запросом пароля. В появившейся странице авторизации вводим логин admin и его пароль.
Откроется страница управления пользователями:
На панели справа (над списком пользователей) кликаем по Добавить:
В открывшемся окне заполняем поля для создания пользователя и нажимаем по Добавить:
Проверка
На компьютере с клиентом вводим команду для проверки:
kinit dmosk
… и вводим пароль от созданной учетной записи:
Password for dmosk@DMOSK.LOCAL:
При вервом входе система попросит поменять пароль на новый:
Password expired. You must change it now.
Enter new password:
Enter it again:
Редактирование учетных записей
Редактирование выполняется командой:
ipa user-mod <имя записи> <опции>
Например, поменять пароль можно командой:
ipa user-mod username —password
* в данном примере будет запрошен новый пароль для учетной записи username.
Для удаления вводим:
ipa user-del <имя записи>
Например:
ipa user-del user_name
Подробная информация
Получить информацию мы можем о любой сущьности в LDAP с помощью командной строки.
Для пользователей:
ipa user-find —all
ipa user-find user_name —all
* первая команда вернет информацию по всем пользователям, вторая — по конкретному (в данном примере user_name).
Для групп:
ipa group-find —all
ipa group-find admins —all
* первая команда вернет информацию по всем группам, вторая — только для admins.
Подготовка серверов
Обновляем систему.
yum update
Настраиваем время.
Необходимо, чтобы на всех нодах было одинаковое время.
Устанавливаем утилиту для синхронизации даты и времени:
yum install ntpdate
Настраиваем синхронизацию по расписанию:
crontab -e
0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org
Выставляем нужный часовой пояс:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* в моем примере московское время.
Синхронизируем время:
ntpdate ru.pool.ntp.org
Настройка брандмауэра.
Выполняется следующими 2-я командами:
firewall-cmd —permanent —add-service=high-availability
firewall-cmd —reload
Заключение
На этом статью по установке сервера на базе ОС CentOS 8 завершаю. Рекомендую сразу же заняться базовой настройкой. Надеюсь, было интересно и полезно. Я постарался подробно рассмотреть все основные нюансы установки, с которыми сам сталкиваюсь в процессе своей профессиональной деятельности. Основные отличия моих статей от подобных, которых развелось огромное количество в интернете в том, что они действительно уникальные и авторские. Я всегда стараюсь привнести в материал часть своих знаний и опыта, накопленного за годы работы в качестве системного администратора. Или просто какие-то свои мысли высказать.
Прежде чем написать статью, я погуглил как ru сегмент, так и мировой на тему установки centos 8 и с грустью констатирую, что не нашел ничего интересного. В топе выдачи банальные СЕО статьи со скриншотами и шагами инсталлятора. Ничего уникального и действительно полезного. Это удручает, потому что СЕО побеждает реальных авторов-практиков, у которых нет времени разбираться в продвижении, и делает их статьи невидимыми для людей, потому что их нет в ТОП 10 выдачи поисковиков. Если мне попадаются интересные сайты с качественным контентом, я добавляю их в закладки и просматриваю вручную, когда есть время.
Обозначенная выше проблема актуальна для всех информационных сайтов. Думаю, каждый это замечает, когда что-то ищет в интернете не по коммерческим запросам. На первых местах всегда СЕО статьи с рерайтом одной и той же фигни. Практическая ценность подобных статей стремится к нулю. Поисковики что-то постоянно пытаются с этим сделать, но получается не очень, потому что сеошники подстраиваются. В этом плане Гугл работает более качественно, чем Яндекс. У последнего выдача более мусорная, что косвенно подтверждается тем, что он с каждым годом теряет свои позиции в качестве поисковика.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .