Server unix: С чего начать настройку любого UNIX сервера

Содержание

С чего начать настройку любого UNIX сервера

Обновлено: Опубликовано:

Термины по теме: UNIX, Linux, FreeBSD, Ubuntu, CentOS

Описанные ниже действия рекомендуется выполнить в первую очередь после установки операционной системы на базе UNIX (например, DEB-base: Astra Linux, Ubuntu, Debian и RPM-base: Rocky Linux, РЕД ОС, CentOS, а также FreeBSD) вне зависимости от того, как планируется ее использовать. Также мы рассмотрим некоторые нюансы при работе с контейнерами.

Стоит учитывать, что контейнерная виртуализация решает разные задачи — идеологически, есть контейнеры для процессов (например, docker и podman), а есть контейнеры с полноценными операционными системами (например, LXD и systemd-nspawn). Нижеописанные действия меньше подходят контейнерам для процессов и больше последним.

Обновление системы
Работа с пользователями
Задать имя сервера
Настройка времени и его обновления
Обновление корневых сертификатов
Настройка vi
Автозавершение ввода команд
Утилиты гостевой операционной системы
Безопасность

1.

Обновление и репозитории

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

Rocky Linux / CentOS / Red Hat / Fedora

yum update

Если каждый раз при установке и обновлении пакетов система подвисает на этапе:

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

Значит могут быть проблемы при подключении к серверам для определения скорости. В итоге, это только будет увеличивать время ожидания.

Данную проверку можно отключить. Открываем файл:

vi /etc/yum/pluginconf.d/fastestmirror.conf

И приводим к виду опцию:

enabled=0

Ubuntu

Обновляем кэш репозиториев и выполняем обновление:

apt update && apt upgrade

Debian

Чаще всего, репозиторий Debian не настроен. Открываем файл:

vi /etc/apt/sources.list

И приводим его к виду:

deb http://deb. debian.org/debian/ bullseye main

deb-src http://deb.debian.org/debian/ bullseye main

deb http://security.debian.org/debian-security bullseye-security main contrib

deb-src http://security.debian.org/debian-security bullseye-security main contrib

deb http://deb.debian.org/debian/ bullseye-updates main contrib

deb-src http://deb.debian.org/debian/ bullseye-updates main contrib

 * обратите внимание, что bullseye — кодовое название 11 версии. Вы должны подставить свое значение:

  • Debian 11 — bullseye.
  • Debian 10 — buster.
  • Debian 9 — stretch.

После можно вводить:

apt update && apt upgrade

Astra Linux

Для данной системы по умолчанию нет подключенных онлайн репозиториев — установка возможна только с установочного носителя. Лучше это сразу отредактировать. Для этого откроем файл:

vi /etc/apt/sources. list

Поставим комментарий для CDROM:

#deb cdrom…

и добавим репозитории. Строки, которые нужно прописать стоит посмотреть на сайте разработчика, например, для Astra Linux SE 1.7:

deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free

deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free

Теперь можно выполнить обновление:

apt update && apt upgrade

Мы можем получить ошибку Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown.  Could not handshake: Error in the certificate verification. Она возникает из-за устаревших корневых сертификатов. Сложность в том, что для обновления данных сертификатор нам нужны некоторые пакеты и рабочие репозитории, поэтому для обхода проблемы сы создадим файл:


vi /etc/apt/apt.conf.d/99-verify-peer.conf


Acquire::https::dl. astralinux.ru::Verify-Peer «false»;


* где dl.astralinux.ru — адрес репозитория, для которого необходимо отключить проверку сертификата.


После снова попробуем выполнить обновление:


apt update && apt upgrade

FreeBSD

pkg update && pkg upgrade

2. Работа с пользователями

Задаем пароль для пользователя root следующей командой:

passwd root

Создаем нового пользователя для работы с сервером.

а) если Rocky Linux / CentOS:

useradd kdo -G wheel -m

* где kdo — имя учетной записи; wheel — группа, которая позволяет входить в систему в привилегированном режиме (su).

б) если Astra Linux / Debian / Ubuntu:

useradd kdo -G sudo -m

* где kdo — имя учетной записи; sudo — группа, которая позволяет запускать команды в привилегированном (sudo) режиме.

в) если BSD:

pw useradd kdo -G wheel -m

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

Это можно сделать командой:

passwd kdo

3. Имя сервера

Предположим, имя нашего компьютера должно быть server.dmosk.ru. В зависимости от типа системы, наши действия будут различаться.

а) Для Linux:

hostnamectl set-hostname server.dmosk.ru

б) Для BSD:

ee /etc/rc.local

hostname=»server.dmosk.ru»

в) Для контейнеров.

В контейнерах недоступна подсистема systemd, поэтому такие команды, как hostnamectl там не работают. Редактируем файл:

vi /etc/hostname

server.dmosk.ru

После перезагрузки сервер поменяет имя. Чтобы поменять его сразу, дополнительно вводим команду:

hostname server.dmosk.ru

4. Правильное время

Многие сервисы завязаны на время — от него зависит корректность их работы. Да и, в принципе, неправильное время — не удобно.

Посмотреть текущее время и часовой пояс можно командой:

date

Настройка состоит из двух шагов: указания подходящей временной зоны и запуска приложения для синхронизации времени.

Настраиваем временную зону

а) В большинстве систем Linux это можно сделать командой:

timedatectl set-timezone Europe/Moscow

* В данном примере мы задаем зону по московскому времени. Список всех доступных зон можно посмотреть командой timedatectl list-timezones. Если мы увидим только одну зону UTC, скорее всего, у нас установлена минимальная версия Ubuntu. Для установки всех зон вводим apt install tzdata.

б) В контейнерах и системах без systemd:

rm -f /etc/localtime

ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* В данном примере мы задаем зону по московскому времени. Список всех доступных зон можно посмотреть командой ls /usr/share/zoneinfo.

Синхронизация времени

Устанавливаем утилиту для синхронизации времени, разрешаем запуск демона и стартуем его.

а) если на системе Astra Linux / Ubuntu / Debian:

apt install chrony

systemctl enable chrony

б) если на системе Rocky Linux / CentOS / Red Hat / Fedora:

yum install chrony

systemctl enable chronyd —now

5. Обновление корневых сертификатов

Для корректной работы по зашифрованному каналу связи, необходимо, чтобы на нашем сервере были свежие корневые сертификаты. В противном случае, мы будем получать предупреждения о попытках установить соединение с небезопасным сервером. Это приведем к тому, что некоторые команды не будут отрабатывать или будут требоваться с нашей стороны дополнительные действия.

Установка корневых сертификатов отличается для разных дистрибутивов Linux.

а) для систем на базе DEB (Astra Linux, Debian, Ubuntu, Mint):

apt install wget

wget http://ftp. ru.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20230311_all.deb

dpkg -i ca-certificates_*_all.deb

update-ca-certificates

rm -f ca-certificates_*_all.deb

б) для систем на базе RPM (Rocky Linux, CentOS):

yum install ca-certificates

update-ca-trust

Подробнее об установке корневых сертификатов в инструкции Обновление корневых сертификатов на Linux.

6. Настройка vi (Astra Linux, Debian или Ubuntu)

Некоторые дистрибутивы Linux используют версию vi, с которой работать не совсем удобно. Как правило, это относится к системам на основе deb.

Многие пользователи используют другие редакторы, например, nano. Но если мы хотим использовать, именно, vi, попробуем сделать работу с ним приятнее.

Tiny vi

Ставим пакет:

apt install vim vim-tiny

Вводим команду, чтобы для текущего сеанса использоватся не стандартный vi, а тюнингованный:

alias vi=»vim.tiny»

Также добавим это же в файл:

echo ‘alias vi=»vim. tiny»‘ >> ~/.bashrc

Готово.

Set paste (вставка json и yaml)

При вставке текста с форматом специального назначения, например json и yaml, vi неправильно определяет синтаксис, что приводит к сбиванию формата строк.

Для решения проблемы нужно ввести команду :set paste.

Можно немного упростить процесс — добавляем в конфиг опцию set pastetoggle=<F3>.

а) для настройки всем пользователям:

vi /etc/vim/vimrc

б) только для текущего:

vi ~/.vimrc

Добавим строку:

set pastetoggle=<F3>

* в данном примере мы настроим быструю клавишу F3, при нажатии которой мы введем опцию set paste.

Теперь переходим в редактор, нажимаем F3, переходим в режим вставки (i) — можно вставлять код.

Позиция курсора после выхода из vim

В Debian и некоторых программах подключения по SSH (например, Putty) после выхода из редактора vi, позиция курсора оказывается в верхней части экрана и на него накладывается предыдущий текст. Данное поведение мешает работать.

Для решения проблемы открываем на редактирование:

а) для настройки всем пользователям:

vi /etc/vim/vimrc

б) только для текущего:

vi ~/.vimrc

Добавим строку:

set t_ti= t_te=

7. Автозавершение ввода команд

Значительно упрощает работу с консолью. Выполняется только на Linux — на BSD настроен по умолчанию.

Открываем на редактирование следующий файл:

vi /etc/inputrc +999

И добавляем:

set show-all-if-ambiguous On

«\e[A»: history-search-backward

«\e[B»: history-search-forward

Выходим из системы и входим снова для применения настроек.

8. Утилиты гостевой системы для виртуальных машин

Если наш компьютер является виртуальной машиной, не забываем установить гостевые утилиты. Они позволяют повысить производительность системы, а также дают дополнительные возможности, например, получение дополнительной информации о виртуальной среде из хоста виртуализации или мягкую перезагрузку.

Для каждой системы виртуализации свои методы установки утилит. Читайте о них подробнее в других инструкциях:

1. Установка и настройка Proxmox VE.

2. Пошаговая инструкция по установке VMware Tools на Linux.

9. Безопасность

Для Debian или Ubuntu стоит настроить брандмауэр. А для Rocky Linux / CentOS — отключить SELinux (если только мы не собираемся его настраивать).

Iptables (Debian / Ubuntu)

По умолчанию, в системах на базе deb брандмауэр работает по принципу полного разрешения. Желательно, это поправить.

Для начала убедимся в наличие необходимых для этого утилит:

apt install iptables iptables-persistent

* где:

  • iptables — утилита управления правилами netfilter.
  • iptables-persistent — утилита для сохранения правил для iptables.

Теперь выполним стартовые настройки.

Разрешаем SSH:

iptables -I INPUT -p tcp —dport 22 -j ACCEPT

* если мы подключаемся к SSH по нестандартному порту, то меняе 22 на нужное значение!

Создаем правила для нормальной работы apt или yum:

iptables -I INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

Разрешаем ICMP (для выполнения команды ping):

iptables -I INPUT -p icmp -j ACCEPT

Разрешаем все входящие на адрес локальной петли:

iptables -I INPUT -i lo -j ACCEPT

Ставим политику запрета на входящие и разрешаем все исходящие:

iptables -P INPUT DROP

Для сохранения правил вводим команду:

netfilter-persistent save

О других вариантах сохранения правил в iptables читайте в инструкции Настройка netfilter с помощью iptables. SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

Подробнее в инструкции Как отключить SELinux. Если мы хотим его настроить, читаем инструкцию Настройка SELinux в CentOS.

Fail2ban

На все серверы, к которым можно подключиться из сети Интернет по ssh стоит установить Fail2ban. Данное средство защиты поможет предотвратить подбор пароля для подключения к нашему серверу (по крайней мере, сильно усложнит задачу взломщику).

Подробнее про работу данной программы рассказано в инструкции Настройка и использование Fail2ban на Linux. В рамказ данного руководства мы ограничимся установкой и запуском.

Команда для развертывания зависит от дистрибутива Linux.

а) RPM: Rocky Linux / CentOS:

yum install epel-release

yum install fail2ban

б) Deb: Ubuntu / Debian:

apt install fail2ban

По умолчанию, fail2ban настроен для защиты ssh на порту 22. Нам нужно только убедиться, что он запущен:

systemctl enable fail2ban —now

И убедиться, что правило существует: 

fail2ban-client status

Мы должны увидеть что-то на подобие:

Status

|- Number of jail:    1

`- Jail list:    sshd

Если команда покажет ошибку или не вернет никакого результат, то для пакета вашей системы нет стартовых настроек и их нужно выполнить самоу. Подробнее о настройке fail2ban можно прочитать в инструкции Настройка и использование Fail2ban на Linux.

С чего начать настройку любого UNIX сервера

Обновлено: Опубликовано:

Термины по теме: UNIX, Linux, FreeBSD, Ubuntu, CentOS

Описанные ниже действия рекомендуется выполнить в первую очередь после установки операционной системы на базе UNIX (например, DEB-base: Astra Linux, Ubuntu, Debian и RPM-base: Rocky Linux, РЕД ОС, CentOS, а также FreeBSD) вне зависимости от того, как планируется ее использовать. Также мы рассмотрим некоторые нюансы при работе с контейнерами.

Стоит учитывать, что контейнерная виртуализация решает разные задачи — идеологически, есть контейнеры для процессов (например, docker и podman), а есть контейнеры с полноценными операционными системами (например, LXD и systemd-nspawn). Нижеописанные действия меньше подходят контейнерам для процессов и больше последним.

Обновление системы
Работа с пользователями
Задать имя сервера
Настройка времени и его обновления
Обновление корневых сертификатов
Настройка vi
Автозавершение ввода команд
Утилиты гостевой операционной системы
Безопасность

1. Обновление и репозитории

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

Rocky Linux / CentOS / Red Hat / Fedora

yum update

Если каждый раз при установке и обновлении пакетов система подвисает на этапе:

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

Значит могут быть проблемы при подключении к серверам для определения скорости. В итоге, это только будет увеличивать время ожидания.

Данную проверку можно отключить. Открываем файл:

vi /etc/yum/pluginconf.d/fastestmirror.conf

И приводим к виду опцию:

enabled=0

Ubuntu

Обновляем кэш репозиториев и выполняем обновление:

apt update && apt upgrade

Debian

Чаще всего, репозиторий Debian не настроен. Открываем файл:

vi /etc/apt/sources.list

И приводим его к виду:

deb http://deb.debian.org/debian/ bullseye main

deb-src http://deb.debian.org/debian/ bullseye main

deb http://security.debian.org/debian-security bullseye-security main contrib

deb-src http://security.debian.org/debian-security bullseye-security main contrib

deb http://deb.debian.org/debian/ bullseye-updates main contrib

deb-src http://deb.debian.org/debian/ bullseye-updates main contrib

 * обратите внимание, что bullseye — кодовое название 11 версии. Вы должны подставить свое значение:

  • Debian 11 — bullseye.
  • Debian 10 — buster.
  • Debian 9 — stretch.

После можно вводить:

apt update && apt upgrade

Astra Linux

Для данной системы по умолчанию нет подключенных онлайн репозиториев — установка возможна только с установочного носителя. Лучше это сразу отредактировать. Для этого откроем файл:

vi /etc/apt/sources.list

Поставим комментарий для CDROM:

#deb cdrom…

и добавим репозитории. Строки, которые нужно прописать стоит посмотреть на сайте разработчика, например, для Astra Linux SE 1.7:

deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free

deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free

Теперь можно выполнить обновление:

apt update && apt upgrade

Мы можем получить ошибку Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown.  Could not handshake: Error in the certificate verification. Она возникает из-за устаревших корневых сертификатов. Сложность в том, что для обновления данных сертификатор нам нужны некоторые пакеты и рабочие репозитории, поэтому для обхода проблемы сы создадим файл:


vi /etc/apt/apt.conf.d/99-verify-peer.conf


Acquire::https::dl.astralinux.ru::Verify-Peer «false»;


* где dl.astralinux.ru — адрес репозитория, для которого необходимо отключить проверку сертификата.


После снова попробуем выполнить обновление:


apt update && apt upgrade

FreeBSD

pkg update && pkg upgrade

2. Работа с пользователями

Задаем пароль для пользователя root следующей командой:

passwd root

Создаем нового пользователя для работы с сервером.

а) если Rocky Linux / CentOS:

useradd kdo -G wheel -m

* где kdo — имя учетной записи; wheel — группа, которая позволяет входить в систему в привилегированном режиме (su).

б) если Astra Linux / Debian / Ubuntu:

useradd kdo -G sudo -m

* где kdo — имя учетной записи; sudo — группа, которая позволяет запускать команды в привилегированном (sudo) режиме.

в) если BSD:

pw useradd kdo -G wheel -m

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

Это можно сделать командой:

passwd kdo

3. Имя сервера

Предположим, имя нашего компьютера должно быть server.dmosk.ru. В зависимости от типа системы, наши действия будут различаться.

а) Для Linux:

hostnamectl set-hostname server.dmosk.ru

б) Для BSD:

ee /etc/rc.local

hostname=»server.dmosk.ru»

в) Для контейнеров.

В контейнерах недоступна подсистема systemd, поэтому такие команды, как hostnamectl там не работают. Редактируем файл:

vi /etc/hostname

server. dmosk.ru

После перезагрузки сервер поменяет имя. Чтобы поменять его сразу, дополнительно вводим команду:

hostname server.dmosk.ru

4. Правильное время

Многие сервисы завязаны на время — от него зависит корректность их работы. Да и, в принципе, неправильное время — не удобно.

Посмотреть текущее время и часовой пояс можно командой:

date

Настройка состоит из двух шагов: указания подходящей временной зоны и запуска приложения для синхронизации времени.

Настраиваем временную зону

а) В большинстве систем Linux это можно сделать командой:

timedatectl set-timezone Europe/Moscow

* В данном примере мы задаем зону по московскому времени. Список всех доступных зон можно посмотреть командой timedatectl list-timezones. Если мы увидим только одну зону UTC, скорее всего, у нас установлена минимальная версия Ubuntu. Для установки всех зон вводим apt install tzdata.

б) В контейнерах и системах без systemd:

rm -f /etc/localtime

ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* В данном примере мы задаем зону по московскому времени. Список всех доступных зон можно посмотреть командой ls /usr/share/zoneinfo.

Синхронизация времени

Устанавливаем утилиту для синхронизации времени, разрешаем запуск демона и стартуем его.

а) если на системе Astra Linux / Ubuntu / Debian:

apt install chrony

systemctl enable chrony

б) если на системе Rocky Linux / CentOS / Red Hat / Fedora:

yum install chrony

systemctl enable chronyd —now

5. Обновление корневых сертификатов

Для корректной работы по зашифрованному каналу связи, необходимо, чтобы на нашем сервере были свежие корневые сертификаты. В противном случае, мы будем получать предупреждения о попытках установить соединение с небезопасным сервером. Это приведем к тому, что некоторые команды не будут отрабатывать или будут требоваться с нашей стороны дополнительные действия.

Установка корневых сертификатов отличается для разных дистрибутивов Linux.

а) для систем на базе DEB (Astra Linux, Debian, Ubuntu, Mint):

apt install wget

wget http://ftp.ru.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20230311_all.deb

dpkg -i ca-certificates_*_all.deb

update-ca-certificates

rm -f ca-certificates_*_all.deb

б) для систем на базе RPM (Rocky Linux, CentOS):

yum install ca-certificates

update-ca-trust

Подробнее об установке корневых сертификатов в инструкции Обновление корневых сертификатов на Linux.

6. Настройка vi (Astra Linux, Debian или Ubuntu)

Некоторые дистрибутивы Linux используют версию vi, с которой работать не совсем удобно. Как правило, это относится к системам на основе deb.

Многие пользователи используют другие редакторы, например, nano. Но если мы хотим использовать, именно, vi, попробуем сделать работу с ним приятнее.

Tiny vi

Ставим пакет:

apt install vim vim-tiny

Вводим команду, чтобы для текущего сеанса использоватся не стандартный vi, а тюнингованный:

alias vi=»vim.tiny»

Также добавим это же в файл:

echo ‘alias vi=»vim.tiny»‘ >> ~/.bashrc

Готово.

Set paste (вставка json и yaml)

При вставке текста с форматом специального назначения, например json и yaml, vi неправильно определяет синтаксис, что приводит к сбиванию формата строк.

Для решения проблемы нужно ввести команду :set paste.

Можно немного упростить процесс — добавляем в конфиг опцию set pastetoggle=<F3>.

а) для настройки всем пользователям:

vi /etc/vim/vimrc

б) только для текущего:

vi ~/.vimrc

Добавим строку:

set pastetoggle=<F3>

* в данном примере мы настроим быструю клавишу F3, при нажатии которой мы введем опцию set paste.

Теперь переходим в редактор, нажимаем F3, переходим в режим вставки (i) — можно вставлять код.

Позиция курсора после выхода из vim

В Debian и некоторых программах подключения по SSH (например, Putty) после выхода из редактора vi, позиция курсора оказывается в верхней части экрана и на него накладывается предыдущий текст. Данное поведение мешает работать.

Для решения проблемы открываем на редактирование:

а) для настройки всем пользователям:

vi /etc/vim/vimrc

б) только для текущего:

vi ~/.vimrc

Добавим строку:

set t_ti= t_te=

7. Автозавершение ввода команд

Значительно упрощает работу с консолью. Выполняется только на Linux — на BSD настроен по умолчанию.

Открываем на редактирование следующий файл:

vi /etc/inputrc +999

И добавляем:

set show-all-if-ambiguous On

«\e[A»: history-search-backward

«\e[B»: history-search-forward

Выходим из системы и входим снова для применения настроек.

8. Утилиты гостевой системы для виртуальных машин

Если наш компьютер является виртуальной машиной, не забываем установить гостевые утилиты. Они позволяют повысить производительность системы, а также дают дополнительные возможности, например, получение дополнительной информации о виртуальной среде из хоста виртуализации или мягкую перезагрузку.

Для каждой системы виртуализации свои методы установки утилит. Читайте о них подробнее в других инструкциях:

1. Установка и настройка Proxmox VE.

2. Пошаговая инструкция по установке VMware Tools на Linux.

9. Безопасность

Для Debian или Ubuntu стоит настроить брандмауэр. А для Rocky Linux / CentOS — отключить SELinux (если только мы не собираемся его настраивать).

Iptables (Debian / Ubuntu)

По умолчанию, в системах на базе deb брандмауэр работает по принципу полного разрешения. Желательно, это поправить.

Для начала убедимся в наличие необходимых для этого утилит:

apt install iptables iptables-persistent

* где:

  • iptables — утилита управления правилами netfilter.
  • iptables-persistent — утилита для сохранения правил для iptables.

Теперь выполним стартовые настройки.

Разрешаем SSH:

iptables -I INPUT -p tcp —dport 22 -j ACCEPT

* если мы подключаемся к SSH по нестандартному порту, то меняе 22 на нужное значение!

Создаем правила для нормальной работы apt или yum:

iptables -I INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

Разрешаем ICMP (для выполнения команды ping):

iptables -I INPUT -p icmp -j ACCEPT

Разрешаем все входящие на адрес локальной петли:

iptables -I INPUT -i lo -j ACCEPT

Ставим политику запрета на входящие и разрешаем все исходящие:

iptables -P INPUT DROP

Для сохранения правил вводим команду:

netfilter-persistent save

О других вариантах сохранения правил в iptables читайте в инструкции Настройка netfilter с помощью iptables.

Firewalld (Rocky Linux / CentOS)

В системах на базе RPM брандмауэр работает на запрет пакетов и не требует начальной настройки. SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

Подробнее в инструкции Как отключить SELinux. Если мы хотим его настроить, читаем инструкцию Настройка SELinux в CentOS.

Fail2ban

На все серверы, к которым можно подключиться из сети Интернет по ssh стоит установить Fail2ban. Данное средство защиты поможет предотвратить подбор пароля для подключения к нашему серверу (по крайней мере, сильно усложнит задачу взломщику).

Подробнее про работу данной программы рассказано в инструкции Настройка и использование Fail2ban на Linux. В рамказ данного руководства мы ограничимся установкой и запуском.

Команда для развертывания зависит от дистрибутива Linux.

а) RPM: Rocky Linux / CentOS:

yum install epel-release

yum install fail2ban

б) Deb: Ubuntu / Debian:

apt install fail2ban

По умолчанию, fail2ban настроен для защиты ssh на порту 22. Нам нужно только убедиться, что он запущен:

systemctl enable fail2ban —now

И убедиться, что правило существует: 

fail2ban-client status

Мы должны увидеть что-то на подобие:

Status

|- Number of jail:    1

`- Jail list:    sshd

Если команда покажет ошибку или не вернет никакого результат, то для пакета вашей системы нет стартовых настроек и их нужно выполнить самоу. Подробнее о настройке fail2ban можно прочитать в инструкции Настройка и использование Fail2ban на Linux.

Настройка сервера Unix (Apache: Полное руководство)

Apache: Полное руководство

Мы можем указать httpd
на нашем сайте с флагом -d (уведомление
полный путь к каталогу site.toddle ):

 %  httpd -d /usr/www/site.toddle  

Поскольку вы будете много печатать, имеет смысл скопировать
в скрипт под названием 9d — это сокращение от CTRL-D, которое завершает ввод
и возвращает вашу подсказку. Этот иди будет работать на
каждый сайт.

Сделайте go работоспособным и запустите его, набрав
следующее (обратите внимание, что вы должны находиться в каталоге
…/site.toddle при запуске
перейти ):

 %  chmod +x /usr/local/bin/go 
%  перейти  

Это запускает Apache в фоновом режиме. Убедитесь, что он работает
набрав что-то вроде этого (аргументы для
PS отличаются от Unix
в Unix):

 %  пс-вспомогательный  

Эта Unix-утилита
перечисляет все запущенные процессы, среди которых вы должны найти несколько
httpd с.[18]

[18] В Unix на базе System V
системы (в отличие от основанных на Беркли), команда
ps -ef должен иметь аналогичный
эффект.

Рано или поздно ты
завершили тестирование и хотите остановить Apache. Чтобы сделать это,
вам нужно получить идентификатор процесса (PID), используя
ps -aux и выполнить Unix
полезность
убить :

 %  убить   PID  

В качестве альтернативы, поскольку Apache записывает свой PID в файл
/logs/httpd.pid
(по умолчанию — см.
PidFile), вы можете написать себе
небольшой скрипт, например:

 убить `cat /usr/www/site.toddle/logs/httpd. pid` 

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

 httpd -d `pwd` 

и стоп
выглядит так:

 пароль | путь чтения
убить `кошку $path/logs/httpd.pid` 

Или, если вы не планируете возиться с множеством разных
конфигурации, использование
…/SRC/поддержка/apachect1
запускать и останавливать Apache по умолчанию
каталог. Возможно, вы захотите скопировать его в
/usr/local/bin , чтобы указать путь. Оно использует
следующие флаги:

 использование: ./apachectl
(старт|стоп|перезапуск|полный статус|статус|изящный|конфигурационный тест|помощь) 
старт

Запустить httpd.

стоп

Стоп httpd.

перезагрузка

Перезапустите httpd, если он запущен, отправив SIGHUP, или запустите, если он не запущен.

полный статус

Дамп полного экрана состояния; требуется рысь и
mod_status включен.

статус

Вывод краткого экрана состояния; требуется рысь и
mod_status включен.

изящный

Выполните плавный перезапуск, отправив SIGUSR1, или запустите, если он не запущен.

конфигтест

Выполните проверку синтаксиса конфигурации.

помощь

Этот экран.

Когда мы набрали ./go, ничего не произошло,
но когда мы заглянули в подкаталог logs , мы
нашел файл под названием error_log с
запись:

 [<дата>]:'mod_unique_id: невозможно получить hostbyname ("myname.my.domain") 

В нашем случае эта проблема возникла из-за странного способа запуска
Apache и повлияет на вас только в том случае, если вы работаете на хосте без
DNS или в операционной системе, которая не может определить
локальное имя хоста. Решением было отредактировать файл
/etc/hosts и добавьте строку:

 10.0.0.2 мое имя.мой.домен мое имя 

, где 10.0.0.2 — это IP-адрес, который мы использовали для тестирования.

Однако на этом наши беды еще не закончились. Когда мы перезапустили
httpd
мы
получил следующее сообщение об ошибке:

 [<дата>] — не удалось определить имя пользователя по uid 

Это означает больше
чем может показаться на первый взгляд. Мы вошли как
корень . Из-за проблем с безопасностью
посторонние входят в систему с правами суперпользователя, Apache был запущен
с правами root, чтобы он мог привязываться к порту 80, пытался
чтобы изменить его идентификатор пользователя на -1. Во многих системах Unix
этот ID соответствует пользователю никто : а
безобидный человек. Однако похоже, что FreeBSD не понимает
это понятие, отсюда и сообщение об ошибке.[19]

[19]На самом деле это
проблема была исправлена ​​для FreeBSD незадолго до того, как эта книга вышла в печать,
но вы все равно можете столкнуться с ним в других операционных системах.

2.4.1. Веб-пользователь и веб-группа

Средство
заключается в создании нового пользователя с именем webuser ,
принадлежащий веб-группе . Имена
неважно. Главное, чтобы этот пользователь был в группе
является его собственным и фактически не должен использоваться кем-либо для чего-либо еще.
В системе FreeBSD вы можете запустить adduser сделать
этот новый человек:

 Введите имя пользователя [a-z0-9]:  webuser 
Введите полное имя []:  webuser 
Введите дату оболочки bash csh no sh tcsh [csh]:  no 
Uid [ какое-то число ]:
Группа входа в систему webuser [webuser]:  webgroup 
Группа входа: ''webgroup'.q. Пригласить веб-пользователя в другие
    группы: гость нет [нет]:
Введите пароль []:  пароль 
 

Затем вы получите отчет:

 Имя:webuser
Пароль:  пароль 
Полное имя: веб-пользователь
Uid:  какой-то номер 
Группы:веб-группа
ГЛАВНАЯ:/дом/веб-пользователь
оболочка/несуществующий
ХОРОШО? (д/н) [д]:
отправить сообщение ''webuser' и: нет маршрута second_mail_address [no]:
Добавить что-нибудь к сообщению по умолчанию (y/n) [n]:
Отправить сообщение (д/н) [д]:  n 
Добавить другого пользователя? (y/n) [y]:  n  

Биты скрипта после OK действительно
не имеет значения, но, конечно, FreeBSD не знает, что вы делаете
несуществующий пользователь. Сообщив операционной системе об этом пользователе,
теперь вы должны сообщить об этом Apache. Отредактируйте файл
httpd.conf
к
включите следующие строки:

 Пользователь webuser
Group webgroup 

Ниже приведены интересные директивы.

2.4.1.1. Пользователь

 Пользователь  unix-userid 
По умолчанию: Пользователь #-1
Конфигурация сервера, виртуальный хост 

Пользователь
директива устанавливает идентификатор пользователя под
которые сервер будет отвечать на запросы. Чтобы использовать это
директива, автономный сервер должен запускаться изначально как
корень . unix-userid это
одно из следующих:

имя пользователя

Относится к данному пользователю по имени

#номер_пользователя

Относится к пользователю по его номеру

Пользователь не должен иметь привилегий, позволяющих ему или ей получить доступ
файлы, не предназначенные для просмотра внешним миром; аналогично,
пользователь не должен иметь возможности выполнять код, не предназначенный для
httpd запросов. Рекомендуется установить
создать нового пользователя и группу специально для запуска сервера. Некоторый
администраторы используют пользователя никто , но это не
всегда возможно или желательно. Например, mod_proxy
Кэш
, если он включен, должен быть доступен для этого
пользователя (см. директиву CacheRoot в Главе 9, «Прокси-сервер»).

2.4.1.1.1. Примечания

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

2.4.1.1.2. Безопасность

Не устанавливать пользователя (или группу)
на root , если вы точно не знаете, что вы
делать и чем это грозит.

2.4.1.2.
Группа

 Группа  unix-группа 
По умолчанию: Группа #-1
Конфигурация сервера, виртуальный хост 

Директива Group задает группу, в которой
сервер будет отвечать на запросы. Чтобы использовать эту директиву,
автономный сервер должен быть запущен изначально как корень .
unix-group является одним из следующих:

имя группы

Относится к данной группе по имени

#номергруппы

Относится к группе по номеру

Рекомендуется создать новую группу специально для
запуск сервера. Некоторые администраторы используют группу
никто , но это не всегда возможно или
желательно.

2.4.1.2.1. Примечание

Если вы запускаете сервер в качестве пользователя, отличного от root , он
не сможет перейти в указанную группу и вместо этого продолжит
для запуска в качестве группы исходного пользователя.

Теперь, когда вы запускаете httpd и ищете PID,
вы обнаружите, что одна копия принадлежит root, и
несколько других принадлежат веб-пользователю . Убить
root скопируйте, а остальные исчезнут.

2.4.2. Запуск Apache под Unix

Когда вы сейчас запустите Apache, вы можете получить
следующее сообщение об ошибке:

 httpd: невозможно определить локальное имя хоста
Используйте ServerName, чтобы установить его вручную. 

Apache означает, что вы должны поместить эту строку в
httpd.conf file:

 ServerName  yourmachinename  

Наконец, прежде чем ожидать каких-либо действий, необходимо настроить
документы для подачи. Каталог документов Apache по умолчанию:
… /httpd/htdocs — чего вы не знаете
хотите использовать, потому что вы находитесь по адресу /usr/www/site.toddle
— поэтому вы должны установить его явно. Создавать
… /site.toddle/htdocs , а затем в нем создать
файл с именем 1.txt , содержащий бессмертные слова
«привет мир.» Затем добавьте эту строку в httpd.conf
:

 DocumentRoot /usr/www/site. toddle/htdocs 

Полный файл конфигурации,
…/site.toddle/conf/httpd.conf,
теперь выглядит так:

 Пользователь веб-пользователь
Групповая веб-группа
Имя_сервера  имя вашей машины 
DocumentRoot /usr/www/site.toddle/htdocs 

Когда вы запускаете httpd , вы должны иметь
работающий веб-сервер. Чтобы доказать это, запустите браузер для доступа к вашему
новый сервер и указать его на
http://имя вашей машины/ .
[21]

[21]Обратите внимание, что если вы
находятся на одной машине, вы можете использовать
http://127.0.0.1/ или
http://localhost/ , но это может сбивать с толку
потому что разрешение виртуального хоста может привести к тому, что сервер будет вести себя
иначе, чем если бы вы использовали интерфейс
«настоящее имя.

как мы
знаете, http означает использование протокола HTTP для получения
документов, а «/» в конце означает переход к

DocumentRoot каталог, в котором вы установили
httpd. conf .

2.4.2.1. DocumentRoot

 DocumentRoot  имя-каталога-файла 
По умолчанию: /usr/local/apache/htdocs
Конфигурация сервера, виртуальный хост 

Эта директива устанавливает каталог, из которого Apache будет обслуживать файлы.
Если не используется такая директива, как Alias,
сервер добавляет путь от запрошенного URL-адреса до корня документа
сделать путь к документу. Например:

 DocumentRoot /usr/web 

Доступ к http://www.my.host.com/index.html
теперь ссылается на /usr/web/index.html .

В mod_dir обнаружена ошибка, из-за которой
проблемы, когда каталог, указанный в DocumentRoot
имеет косую черту в конце (например, DocumentRoot
/usr/web/), поэтому избегайте этого. Это стоит
принимая во внимание, что чем глубже уходит DocumentRoot,
тем больше времени требуется Apache для проверки каталогов. Ради
производительности, примите универсальный девиз британской армии: KISS
(Держать его просто глупо)!

Lynx — это текстовый браузер, поставляемый с FreeBSD и другими разновидностями
Юникс; если он доступен, введите:

 %  lynx http://   yourmachinename   /  

Вы видите:

 ИНДЕКС /
* Родительский каталог
* 1. txt 

Если вы перейдете к 1.txt с помощью стрелки вниз, вы увидите:

 привет, мир 

Если у вас нет Lynx (или Netscape, или другого веб-браузера)
на вашем сервере вы можете использовать телнет :[22]

[22] телнет не очень подходит как веб
браузер, хотя он может быть очень полезным инструментом отладки.

 %  telnet   yourmachinename   80  

Затем введите:

  GET / HTTP/1.0   

Вы должны увидеть:

 HTTP/1.0 200 OK
Сб, 24 августа 1996 г., 23:49:02 по Гринвичу
Сервер: Апач/1.3
Подключение: закрыть
Тип содержимого: текст/html
Индекс /

Индекс

Соединение прервано внешним хостом.

Элемент между «< " и ">»
HTML, написанный Apache, который при просмотре через браузер создает
форматированное сообщение, показанное ранее Lynx и Netscape в
Следующая глава.

2.4.3. Несколько копий Apache

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

 %  ps -aux  

httpd принадлежащий root ,
и число, принадлежащее веб-пользователь . Они есть
аналогичные копии, ожидающие обработки входящих запросов.

Копия root по-прежнему подключена к порту 80 — таким образом
его дети тоже будут — но оно не слушает. Это
потому что это корень и у него слишком много полномочий. Это
необходимо, чтобы эта «главная» копия продолжала работать как
root , потому что только root может открывать порты ниже 1024. Его задача — следить за табло, где другие копии
опубликовать свой статус: занято или ожидает. Если слишком мало ожидающих
(по умолчанию 5, устанавливается директивой MinSpareServers
в httpd.conf ), корень
копирование запускает новые; если слишком много ожидающих (по умолчанию 10, установите
директивой MaxSpareServers), он убивает некоторые
выключенный. Если вы заметите PID (показан ps
-ax, или пс
-aux для более полного списка; также можно найти в
… /logs/httpd.pid ) из root скопируйте и уничтожьте его
с:

 %  kill   PID  

или используйте сценарий stop , описанный в Разделе 2.4, «Настройка сервера Unix» ранее в этом
главы, вы обнаружите, что другие копии тоже исчезли.

2.4.4. Разрешения Unix

Если Apache должен работать правильно,
важно правильно установить права доступа к файлам. В
В системах Unix существует три вида разрешений: чтение,
написать

, а выполнить .
Они прикрепляются к каждому объекту на трех уровнях: пользователя,
группа,
и другие или «остальные
весь мир.» Если вы установили демонстрационные сайты, перейдите
до … /site.cgi/htdocs и введите:

 %  ls -l  

Вы видите:

 -rw-rw-r-- 5 корневая корзина 1575 авг.  15 07:45 форма_лето .html 

первый «-» означает, что это обычный файл. Это
за которыми следуют три поля разрешений, каждое из трех символов. Они
означает, в данном случае:

Пользователь ( root )

Чтение да, запись да, выполнение нет

Группа ( бин )

Чтение да, запись да, выполнение нет

Прочее

Чтение да, запись нет, выполнение нет

Когда разрешения применяются к
каталог, разрешение на выполнение «x»
означает сканирование , возможность просмотра содержимого и
перейти на уровень ниже.

Нас интересует разрешение другое ,
потому что копия Apache, которая пытается получить доступ к этому файлу, принадлежит
пользователь веб-пользователь и группа
веб-группа . Они были созданы, чтобы не иметь
родство с корнем и
bin , чтобы копия могла получить доступ только под
других разрешений, и единственный набор
«читать. » Следовательно, Плохой Парень, который ползает под
плащ Apache не может изменить или удалить наши драгоценные
form_summer.html ; он может только читать.

Теперь мы можем написать последовательную доктрину разрешений. Мы установили
так, чтобы все на нашем веб-сайте, кроме данных,
уязвим для атаки имеет владельца корень и группа
колесо . Мы сделали это отчасти потому, что это действительно
подход, но и потому, что это единственный портативный. Файлы на
наш компакт-диск с владельцем root и группой
колесо имеют номера владельца и группы
«0», что означает аналогичный доступ суперпользователя на каждом
машина.

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

Как правило, на веб-сайте все должно принадлежать пользователю, который
это не веб-пользователь и группа, которая не
веб-группа (при условии, что вы используете эти термины для
конфигурации Apache).

Есть четыре типа файлов, которым мы хотим дать
веб-пользователь доступ: каталоги, данные, программы и
сценарии оболочки. веб-пользователь должен иметь сканирование
разрешения на все каталоги, начиная с корня до любого места
доступные файлы есть. Если Apache должен получить доступ к каталогу, это
каталог и все в пути должны иметь x
набор разрешений на другой . Вы делаете это по
ввод:

 %  chmod o+x   каждый-каталог-в-пути  

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

 %  chmod o+r   final-directory  

Вероятно, не должно быть права на запись, установленного для other
:

 %  chmod o-w   final-directory  

Для того, чтобы файл служил данными, включая такие файлы, как
. htaccess (см. главу 3, «На пути к реальному веб-сайту») — файл должен иметь разрешение на чтение для
other :

 %  chmod o+r   file  

И, как прежде, запретить запись:

 %  ch mod o-w   файл  

Чтобы запустить программу, файл должен иметь набор разрешений на выполнение
на other :

 %  chmod o+x   программа  

Для выполнения сценария оболочки файл должен быть прочитан и
набор разрешений на выполнение для другое :

 %  chmod o+rx   скрипт  

2.4.5. Локальная сеть

Воодушевленный
успех site.toddle , теперь мы можем приступить к
более реалистичная установка, пока еще не отважившаяся выйти в неизвестность
воды Сети. Нам нужно запустить две вещи: Apache под
какой-то Unix и браузер с графическим интерфейсом. Есть два основных способа, которыми это может
быть достигнуто:

  • Запустите Apache и браузер (например, Mosaic или Netscape под X) на
    такая же машина. Затем «сеть» предоставляется Unix.

  • Запустите Apache на Unix-системе и браузер на Windows 95/Windows NT/Mac
    ОС, или наоборот, и связать их с помощью Ethernet (что и
    мы сделали для этой книги, используя FreeBSD).

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

2.4.6. Наш экспериментальный Micro Web

Сначала нам нужно было установить сетевую карту на машину FreeBSD. Как это
загружается, он тестирует все свои компоненты и печатает список на
консоли, которая включает в себя карту и название соответствующей
Водитель. Мы использовали карту 3Com, и появились следующие записи:

...
1 плата 3C5x9 на ISA обнаружена по адресу 0x300
ep0 в 0x300-0x30f irq 10 на isa
ep0: aui/bnc/utp[*BNC*] адрес 00:a0:24:4b:48:23 irq 10
... 

Это довольно ясно указывало на то, что водитель был эп.0
,
и что он установлен правильно. Если вы пропустите это в
загрузки, FreeBSD позволяет вам нажимать клавишу Scroll Lock и прокручивать страницу вверх до тех пор, пока вы
увидеть его, затем снова нажмите Scroll Lock, чтобы вернуться к нормальной работе.

После того, как карта заработала, нам нужно было настроить ее драйвер,
эп0 . Мы сделали это с помощью следующих команд:

 ifconfig ep0 192.168.123.2
ifconfig ep0 192.168.123.3 псевдоним маска сети 0xFFFFFFFF
ifconfig ep0 192.168.124.1 псевдоним 

псевдоним
команда делает
ifconfig привязывает дополнительный IP-адрес к тому же
устройство.
команда сетевой маски
необходимо, чтобы FreeBSD не печатала сообщение об ошибке (подробнее об
сетевые маски, см. O’Reilly’s Сеть TCP/IP
Администрация
).

Обратите внимание, что
сеть
Используемые здесь номера подходят для нашей конкретной конфигурации сети.
Вам нужно будет поговорить с вашим сетевым администратором, чтобы определить
подходящие номера для вашей конфигурации. Каждый раз, когда мы запускаем
Машина FreeBSD для игры с Apache, мы должны выполнить эти команды.
Обычный способ сделать это — добавить их в
/etc/rc.local (или аналогичный
местоположение — оно варьируется от машины к машине, но каким бы оно ни было
вызывается, он запускается при каждой загрузке системы).

Если вы следуете установке FreeBSD или чему-то подобному,
вам также необходимо установить IP-адреса и их имена хостов (если мы
быть педантичным, мы бы назвали их
в полной мере
полные доменные имена или полные доменные имена) в файле /etc/hosts.

:

 192.168.123.2 www.butterthlies.com
192.168.123.2 sales.butterthlies.com
192.168.123.3 продажи-не-vh.butterthlies. com
192.168.124.1 www.faraway.com 

Обратите внимание, что www.butterthlies.com
и sales.butterthlies.com оба
иметь один и тот же IP-адрес. Это так, мы можем продемонстрировать новый
NameVirtualHosts в следующей главе. Мы
потребуется sales-not-vh.butterthlies.com в
сайт.twocopy. Также обратите внимание, что этот метод
настройка имен хостов обычно уместна только в том случае, если DNS не
доступно — если вы используете этот метод, вам придется сделать это на
каждая машина, которая должна знать имена.


2.3. сайт.toddle 2.5. Настройка сервера Win32

Copyright © 2001 O’Reilly & Associates. Все права защищены.

Защитите свой сервер Linux/Unix | Документация ITS

Если вам разрешен доступ к конфиденциальным корпоративным данным или их хранение с использованием сервера, которым вы управляете, пожалуйста, соблюдайте минимальные требования, указанные ниже.

Обратите внимание, что, хотя эти инструкции в целом применимы к большинству систем Unix/Linux, показанные конкретные инструкции актуальны для Red Hat Enterprise Linux 7. Вы можете использовать текстовый редактор командной строки по вашему выбору; примеры использования «нано» показаны ниже.

Содержание

  • Начните с CIS-CAT
  • Ознакомьтесь с руководством по конфиденциальным данным и минимальными требованиями к информационной безопасности
  • Конфигурация и управление
  • Доступ и учетные записи
  • Мониторинг
  • Соединения
  • Что еще нужно учитывать

Начните с CIS-CAT

Компания Information Assurance (IA) рекомендует начать процесс укрепления университетских серверов, рабочих станций или баз данных, запустив инструмент оценки конфигурации Center for Internet Security — CIS-CAT. Инструмент просканирует вашу систему, сравнит ее с предустановленным эталоном, а затем создаст отчет, который поможет направить дальнейшие усилия по укреплению безопасности. Информацию о версии инструмента для единой системы обмена сообщениями см. в CIS-CAT для систем UM.

Ознакомьтесь с Руководством по конфиденциальным данным и Минимальными требованиями к информационной безопасности

Используйте Руководство по конфиденциальным данным , чтобы убедиться, что ваш сервер имеет право на доступ или поддержку типов конфиденциальных данных, которые он хранит или обрабатывает. Если вы получаете доступ к данным, классифицированным как Restricted или High , или храните их на своем сервере, вам следует проконсультироваться с IA, обратившись в сервисный центр ITS.

Используйте Минимальные требования к информационной безопасности для систем, приложений и данных, чтобы просмотреть сводку требований, изложенных в политике информационной безопасности UM (SPG 601. 27) и стандартах ИТ-безопасности UM.

Конфигурация и управление

Включить полное шифрование диска.

Полное шифрование диска рекомендуется для всех серверов UM, а для некоторых требуется. Для систем, хранящих конфиденциальные данные, обратитесь к шифрованию (DS-15) для требований к шифрованию данных UM. Шифрование можно использовать для целых дисков, разделов диска или каталогов и файлов, а также включить его во время установки и настройки операционной системы.

Установите уведомление об использовании системы или входе в систему, которое ссылается на SPG 601.07.

Чтобы настроить отображение баннера при каждой попытке подключения по ssh  до  попытка входа в систему:

  1. Откройте окно терминала и введите команду:
    sudo nano /etc/issue.net
  2. Добавьте образец сообщения. Вот, например, хороший текст уведомления для сервера, поддерживаемого университетом:

    **************************************************** *********************************
    * Это сеть Мичиганского университета.
    * Вы должны быть авторизованы для использования этих ресурсов. Несанкционированное или преступное использование
    * запрещено. Используя эти ресурсы, вы соглашаетесь соблюдать
    * «Ответственное использование информационных ресурсов (SPG 601.07)» в дополнение ко всем
    * соответствующим законам штата и федеральным законам.
    * http://spg.umich.edu/policy/601.07
    ************************************* ******************************************************* **>

  3. Отредактируйте конфигурации ssh с помощью команды:
    судо нано /etc/ssh/sshd_config
  4. Найдите Banner  в файле и раскомментируйте строку, в которой он появляется.
  5. Добавить новую строку:
    Баннер /etc/issue.net
  6. Выйдите из nano, нажав ctrl+x и , нажав y , чтобы сохранить.

Ваше сообщение будет отображаться при всех попытках входа в систему.

Настройте заставку так, чтобы она активировалась после определенного периода бездействия и требовала ввода пароля для ее разблокировки.

Чтобы настроить заставку в RHEL 7:

  1. Создайте файл /etc/dconf/db/local.d/00-screensaver со следующим содержимым:​
    [org/gnome/desktop/session
    idle-delay=uint32 180

    [org/gnome/desktop/screensaver]
    lock-enabled=true
    lock-delay=uint32 300

    # Установите оба значения на желаемое количество секунд

  2. Чтобы запретить пользователям изменять эти настройки, создайте /etc/dconf/db/local.db/locks/screensaver  с содержимым:
    /org/gnome/desktop/session/idle-delay
    /org/gnome/desktop/screensaver/lock-delay
  3. Обновите базу данных dconf с помощью команды: dconf update

Установите и используйте расширенное программное обеспечение для защиты конечных точек.

UM-Ann Arbor, UM-Dearborn и UM-Flint используют CrowdStrike Falcon для улучшенной защиты конечных точек. На всех принадлежащих UM системах (операционные системы Windows, macOS и Linux, будь то рабочие станции или серверы) должен быть установлен CrowdStrike Falcon. Для получения дополнительной информации см. CrowdStrike Falcon для юнитов.

Настройте свой хост для синхронизации времени в качестве клиента Network Time Protocol.

Многие интернет-сервисы полагаются на точность часов компьютера. Кроме того, точные отметки времени/даты в зарегистрированных действиях помогают любому криминалистическому анализу и устранению неполадок в системе.

Chrony является демоном NTP по умолчанию в RHEL 7.
1. Установите пакет chrony , если он отсутствует
2. Настройте /etc/chrony.conf так, чтобы он указывал на серверы ntp университета, добавив следующие строки:
   сервер ntp1.itd.umich.edu
   сервер ntp2.itd.umich.edu
   сервер ntp3.itd.umich.edu
3. Включите и запустите хронографию emon с помощью команды:
    sudo systemctl enable --now chronyd

Обновите службы и приложения в течение 30 дней после официального выпуска исправления безопасности поставщиком.

Чтобы настроить автоматические обновления:

  1. Установите пакет yum-cron  
  2. Настройка /etc/yum/yum-cron.conf
  3. Настройте update_cmd с помощью следующих команд:
    1. update_cmd = по умолчанию  – вытащить все обновления; эквивалент ‘yum upgrade’
    2. update_cmd = security  – извлекать только пакеты, отмеченные как обновления безопасности в метаданных yum; эквивалент ‘yum —security update’
    3. update_cmd = security-severity:Critical — извлекать только критические исправления безопасности; эквивалент ‘yum —sec-severity=критическое обновление’ 908:00
  4. Задайте настройки электронной почты. Любые обновления пакетов будут отправлены по электронной почте указанным получателям.
  5. Включите службу yum-cron , выполнив:
    $ sudo systemctl enable yum-cron.service

Сделайте резервную копию ваших данных.

Университет предлагает услугу MiBackup для резервного копирования серверов. Запись Руководства по конфиденциальным данным для MiBackup содержит подробные сведения о том, для каких типов данных можно или нельзя создавать резервные копии с помощью службы MiBackup.

Рекомендации по резервному копированию

  • Определите подходящее расписание резервного копирования на основе того, как часто изменяются данные, хранящиеся в системе.
  • Самая последняя полная резервная копия системы должна храниться вне офиса на случай аварии.
  • Выполняйте одно полное резервное копирование системы один раз в неделю, а дифференциальные резервные копии — через день. Запланируйте резервное копирование на периоды, когда система не используется, чтобы обеспечить захват всех файлов и избежать проблем с производительностью. 908:00
  • Тестовая система регулярно восстанавливается с использованием резервных копий.

Назначьте статический или зарезервируйте IP-адрес DHCP и зарегистрируйте DNS-имя для своего сервера.

Рекомендуется использовать ITS DNS. Кроме того, настройте обратный DNS для сервера и каждой службы, размещенной на сервере. Включите контактную информацию электронной почты в запись DNS. Вы можете получить доступ к Proteus через Bluecat, чтобы добавить эту информацию. Если вам нужна помощь, свяжитесь с мастером хоста UM.

Избегайте запуска локальных версий служб, таких как DHCP, NTP и DNS, которые ITS предоставляет централизованно.

Локальные версии этих служб могут создавать уязвимости для эксплойтов или атак.

Запросите сертификат сервера SSL и разрешите его использование веб-сервером.

Вы можете заказать сертификат сервера SSL в UMWeb. Не используйте сертификаты по умолчанию в рабочей среде.

Отключите все неиспользуемые или ненужные функции сервера или службы/приложения.

Если их нельзя отключить, используйте брандмауэр для ограничения доступа к службам, которые могут быть установлены/включены основными службами, например DNS или NTP, к IP-пространству кампуса UM.

Найдите серверы в центре обработки данных, обслуживаемом ITS.

ITS предоставляет услуги центров обработки данных и может размещать ваши серверы с помощью таких служб, как MiDatabase или MiServer.

Если вы не можете использовать центр обработки данных, обслуживаемый ITS, следуйте этим ожиданиям:

  • Безопасный доступ к физическому серверу . Держите свой сервер в физически запертом пространстве. Не держите свой сервер в общедоступном месте.
  • Поддержание постоянной мощности . Для сохранности серверного оборудования и данных, хранящихся на нем, используйте источник бесперебойного питания для питания сервера. 908:00

Доступ и учетные записи

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

Следуйте этим рекомендациям по созданию надежного пароля. Неавторизованный доступ не должен быть разрешен, будь то неаутентифицированные веб-серверы, анонимные ftp-серверы или открытые сетевые ресурсы, которые разрешают доступ к файловой системе сервера.

Требовать аутентификацию по паролю

  1. Откройте окно терминала и скопируйте папку аутентификации системы в рабочий каталог с помощью этой команды:
    sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.ORI
  2. Отредактируйте файл, введя следующую команду:
    sudo nano /etc/pam.d/system-auth
  3. Найдите строку, которая гласит:
    достаточно auth /lib/security/pam_unix.so likeauth nullok
    remove  nullok  , чтобы строка выглядела следующим образом:
  4. Выход из nano с помощью ctrl+x и нажмите y, чтобы сохранить .

Измените пароли по умолчанию или предоставленные поставщиком на безопасные и уникальные пароли.

Всегда меняйте пароли на собственные. IA рекомендует использовать диспетчер паролей для создания и отслеживания безопасных паролей.

Требовать от новых пользователей изменить пароль по умолчанию.

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

  • Откройте окно терминала и введите следующую команду:
    sudo chage -d 0 {имя пользователя}  
    Эта команда применима только к локальным учетным записям.

Отключить или удалить гостевые учетные записи и учетные записи по умолчанию.

Рекомендуется не разрешать гостевым учетным записям, учетным записям по умолчанию или общим учетным записям доступ к машине. Убедитесь, что в файле /etc/passwd нет подозрительных учетных записей.

Отключить вход root / su — и реализовать sudo.

Внедрение sudo позволит привилегированный доступ по мере необходимости и будет регистрировать все такие действия и связывать определенные действия с конкретными людьми. Он также позволяет избежать общих корневых учетных записей, что может затруднить безопасное лишение доступа для отдельных лиц или предотвратить инциденты безопасности, связанные со скомпрометированными учетными данными.

Примечание:  Многие дистрибутивы Linux уже реализуют функцию входа в систему без полномочий root и принудительно используют sudo. Если используемый вами дистрибутив еще не поддерживает sudo, установите пакет sudo и настройте его соответствующим образом (убедитесь, что «su -» не переключает пользователя на root. Рассмотрим bash, vi и другие приложения, которые могут работать с root).

Запрет удаленного входа в систему с правами root по протоколу SSH

  1. Откройте окно терминала и отредактируйте файл конфигурации демона SSH /etc/ssh/sshd_config  с помощью этой команды:
    sudo nano /etc/ssh/sshd_config
  2. Найдите строку, которая гласит:
    PermitRootLogin yes
    и измените ее на эту:
    PermitRootLogin no
  3. Выйдите из nano с помощью ctrl+x и нажмите y, чтобы сохранить .
  4. Остановите и перезапустите SSH Daemon с помощью следующих команд:
    service sshd stop
    service sshd start

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

  • Ограничить доступ к приложению через группы или sudo. Создайте учетную запись исключительно для демона с определенными ограниченными правами.
  • Не используйте административные учетные записи или учетные записи уровня root для запуска демона или служб.
  • Учетные записи, которые получают доступ к серверу или управляют им, должны иметь минимальные разрешения, необходимые для выполнения соответствующих функций. (т. е. указать, кто может, а кто не может запускать задания cron) 908:00

Требовать централизованную аутентификацию.

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

Внедрение процедур управления жизненным циклом учетной записи.

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

Удалите опцию ctrl-alt-del для перезапуска сервера.

Чтобы отключить стандартное поведение Ctrl-Alt-Del при перезагрузке машины в системе без графического интерфейса:
systemctl mask ctrl-alt-del.target

интерфейс:

  1. Создайте /etc/dconf/db/local.d/00-disable-CAD со следующим содержимым:
    [org/gnome/settings-daemon/plugins/media-keys] logout=''
  2. Обновление база данных dconf с помощью команды:
    обновление dconf  

Начиная с RHEL 7.4, также существует действие CtrlAltDelBurstAction для определения поведения системы при нескольких последовательных нажатиях Ctrl-Alt-Delete.
Чтобы отключить любой ответ, отредактируйте строку CtrlAltDelBurstAction в /etc/systemd/system.conf , чтобы сказать:
CtrlAltDelBurstAction=none

Принудительное время ожидания сеанса.

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

Приведенный ниже файл автоматического выхода реализует 120-минутный тайм-аут бездействия  для оболочки /bin/bash по умолчанию . Обратите внимание, что TMOUT можно установить на 300, чтобы реализовать 5-минутный тайм-аут простоя и так далее.

  1. Открыть окно терминала.
  2. Создайте файл с именем /etc/profile.d/autologout.sh , введя следующую команду:
    sudo touch /etc/profile.d/autologout.sh
  3. Отредактируйте файл с помощью этой команды:
    sudo nano /etc/profile.d/autologout.sh
  4. Добавить следующее:
    TMOUT=7200
    только чтение TMOUT
    экспорт TMOUT
  5. Выйдите из nano с помощью ctrl+x и нажмите y для сохранения.
  6. Установите разрешения с помощью этой команды:
    sudo chmod +x /etc/profile.d/autologout.sh

Приведенный ниже файл автоматического выхода реализует 120-минутный тайм-аут простоя для оболочки C.

  1. Открыть окно терминала.
  2. Создайте файл с именем /etc/profile.d/autologout.csh  введя эту команду:
    sudo touch /etc/profile.d/autologout.csh
  3. Отредактируйте файл с помощью этой команды:
    sudo nano /etc/profile.d/autologout.csh
  4. Добавьте следующее:
    # Выйдите из системы через 2 часа, как рекомендовано
    # https://safecomputing.umich.edu/hardening
    set -r autologout=120
  5. Выйдите из nano с помощью ctrl+x и нажмите y для сохранения.
  6. Установите разрешения с помощью этой команды:
    sudo chmod +x /etc/profile.d/autologout.csh

Если вам нужно оставить сеанс открытым , вы можете запустить «screen» или «top», чтобы предотвратить бездействие сеанса и выход из системы. Это следует делать только в случае необходимости, чтобы автовыход не мешал вашей работе.

Включите двухфакторную аутентификацию, особенно если система будет хранить конфиденциальные данные.

Чтобы реализовать двухфакторную аутентификацию с помощью Duo, см. инструкции:  Указания по установке Duo Unix SSH

Мониторинг

Настройте ведение журнала для уникальных служб и системный журнал для самой серверной системы.

При использовании удаленного ведения журнала убедитесь, что данные шифруются при передаче.

Чтобы настроить журнал аудита службы
  1. Если вы этого не сделали, установите пакет syslog с помощью этой команды:
    sudo yum -y install rsyslog
  2. Редактировать конфигурации системного журнала с помощью этой команды:
    судо нано /etc/rsyslog.conf
  3. Чтобы включить прослушивание портов UDP и TCP, удалите символ комментария # перед каждым оператором $ModLoad и каждым оператором ServerRun , чтобы получить следующее:
    $ModLoad Input
    $UDPServerR ип 514
    . .....
    $ModLoad imtcp
    $InputTCPServerRun 514
  4. Выйдите из nano с помощью ctrl+x и нажмите y, чтобы сохранить .
  5. Перезапустите службу syslog , чтобы изменения вступили в силу с помощью этой команды:
    sudo service rsyslog restart
  6. Настройте машину для отправки журналов на центральный сервер, открыв конфигурации системного журнала с помощью этой команды:
    sudo nano /etc/rsyslog.conf
  7. В конце файла добавьте следующую строку, чтобы указать журнал сообщений клиента на сервер:
    *.info;mail.none;authpriv.none;cron.none @192.168.0.105
  8. Выйдите из nano с помощью ctrl+x и нажмите y, чтобы сохранить .

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

Зарегистрируйте аутентификацию для служб или приложений, размещенных на вашем сервере, с помощью централизованной системы ведения журнала.

Не забудьте включить аудит неудачных и успешных попыток входа в систему.

Включить Enforcing SELinux или Permissive SELinux, если ограничения не позволяют использовать принудительный режим.

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

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

Настройте уведомления для оповещения владельца или администратора системы об остановке или перезапуске системы.

Оповещения должны отправляться группе (несколько человек), если это возможно.

Мониторинг модификаций файловой системы на наличие несанкционированных изменений.

Используйте службу проверки целостности двоичных файлов, например Tripwire или Aide.

Отслеживание и обнаружение попыток подбора пароля

Используйте такую ​​службу, как Fail2ban, для отслеживания журналов на наличие неудачных попыток удаленного доступа и предотвращения атак методом подбора пароля.

Мониторинг с помощью Fail2ban

  1. Откройте окно терминала.
  2. Если вы еще не установили Fail2ban , установите его с помощью этой команды:
    sudo yum install fail2ban
  3. Скопируйте файл конфигурации для редактирования с помощью этой команды:
    cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  4. Измените файл конфигурации с помощью этой команды:
    sudo nano /etc/fail2ban/jail.local
    Значений по умолчанию должно быть достаточно для большинства серверов, но вы можете настроить такие функции, как время бана, попытки до бана и какие адреса всегда заблокирован. Подробные инструкции о том, как это сделать, включены в /etc/fail2ban/jail.conf .
  5. Выйти из nano с помощью ctrl+x и нажмите y, чтобы сохранить .

Сообщать об инцидентах безопасности.

Если ваш сервер или связанные с ним устройства были скомпрометированы, украдены или иным образом получили несанкционированный доступ, сообщите об этом как об инциденте безопасности.

Подключения

Включите локальный брандмауэр, если он не включен по умолчанию.

Firewalld является брандмауэром по умолчанию в RHEL 7. Если он не установлен, установите его с помощью команды:
yum install firewalld
Убедитесь, что он включен с помощью команды:
systemctl enable --now firewalld

    Список подсетей UM можно найти в UMnet , чтобы помочь настроить брандмауэр для доступа к ресурсам UM.

    Отключите неиспользуемые дополнительные сетевые подключения, такие как Wi-Fi или Bluetooth.

    Отключить беспроводную связь
    1. Откройте окно терминала.
    2. Используйте следующую команду для списка всех интерфейсов, использующих беспроводное соединение :
      ifconfig -a
    3. Просмотрите список и отключите все неиспользуемые. Изменить /etc/sysconfig/network-scripts/ifcfg-$DEVICENAME (где $DEVICENAME — это устройство для отключения), чтобы навсегда отключить беспроводную связь на устройстве. Вам может потребоваться отключить несколько устройств, в зависимости от вашей конкретной системы.
    Отключить Bluetooth

    Чтобы отключить автоматическую загрузку модулей ядра Bluetooth: 

       echo "install bnep /bin/true" >> /etc/modprobe.d/disable-bluetooth.conf
    echo "установить bluetooth /bin/true" >> /etc/modprobe.d/disable-bluetooth.conf
    echo "установить btusb /bin/true" >> /etc/modprobe.d/disable-bluetooth.conf
       
     Затем вы можете / также отключить службу Bluetooth с помощью: systemctl disable bluetooth.service
     

    Другие службы, которые вы можете отключить:

    • cupsd или lpd (если не запущен принтер)
    • xinetd

    Безопасное подключение к серверу.

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

    Службы/протоколы открытого текста, которых следует избегать

    Избегайте использования этих служб/протоколов открытого текста для подключения к серверу Linux:

    • FTP
    • Телнет
    • и т. д.

    Если у вас есть экономическое обоснование использования одной из этих служб/протоколов, и вы должны ограничить доступ к определенным сетям и IP-адресам при их использовании.

    Безопасное копирование файлов между системами
    • Для безопасного копирования файлов между системами настоятельно рекомендуется использовать команду scp. Эта команда используется в форме:
      scp [электронная почта защищена]:foobar.txt /some/local/directory
      Где scp [электронная почта защищена]:foobar.txt /some/local/directory  это ваш пункт назначения, foobar.txt  это файл, который вы которые вы пытаетесь отправить, а /some/local/directory — это целевой каталог в целевом аккаунте.

    Ограничьте сетевой доступ к службам только вашей локальной сетью или сетями кампуса UM

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

    Требуются VPN-подключения.

    Настройте брандмауэр (iptables), чтобы разрешить доступ из виртуальной частной сети (VPN) UM и соответствующих сетей кампуса.

    Настройте брандмауэр для разрешения доступа к VPN
    1. Откройте окно терминала.
    2. Сначала сбросьте старые правила с помощью этой команды:
      iptables -F
    3. Заблокируйте все, кроме правил, которые вы собираетесь создать, с помощью следующих трех команд:
      iptables -P INPUT DROP
      iptables -P ПЕРЕДАЧА
      iptables -P ВЫХОД DROP
    4. Разрешить петлевой доступ с помощью этих двух команд:
      iptables -A INPUT -i lo -j ACCEPT
      iptables -A OUTPUT -o lo -j ACCEPT
    5. Примите UM VPN с помощью этой команды:
      iptables -A INPUT -s 141. 213.168.0/21 -j ACCEPT
    6. Наконец, убедитесь, что весь входящий и исходящий трафик использует VPN с помощью следующих команд:
      iptables -A INPUT -j ACCEPT -p udp s Y.Y.Y.Y --sport 1194
      iptables -A OUTPUT -j ACCEPT -p udp d Y.Y.Y.Y --dport 1194
    7. Сохраните правила iptables в файл, загружаемый службой iptables:
      iptables-save > /etc/sysconfig/iptables
    8. Запустите iptables с помощью этой команды:
      запуск службы iptables

    Дополнительную информацию о подсетях UM можно найти на UMnet.

    Ограничение доступа к картам управления удаленным доступом

    Ограничьте доступ к таким устройствам, как интерфейсы IPMI, используемые системными администраторами для внешнего управления. Ограничьте доступ к сетям кампуса UM и потребуйте использования VPN UM для доступа за пределами кампуса.

    Другие вещи, которые следует учитывать

    Ограничьте прямое монтирование NFS определенными IP-адресами кампуса.

    При использовании сетевой файловой системы (NFS) используйте NFS версии 4 или выше и ограничьте прямое подключение кампусом. По умолчанию для монтирования NFS используется «сжатый корень», убедитесь, что он настроен именно так. монтирование nfs root_squash .

    При необходимости ограничьте пользовательские ресурсы и процессы.

    Будь то RHEL или какой-либо другой вариант Unix, отслеживайте и ограничивайте пользовательские ресурсы и процессы. Например, это помогает предотвратить форк-бомбы.

    Разделение жесткого диска.

    Изолируйте конфиденциальные данные на отдельных разделах жесткого диска. Изолируйте загрузочные и важные файлы ОС в отдельных разделах и убедитесь, что загрузочный раздел настроен только для чтения, чтобы снизить риск несанкционированного изменения загрузочных файлов (доступ только для записи root).

    Ограничить источник загрузки в BIOS.

    Настройте BIOS для отключения загрузки с CD/DVD, внешних устройств (USB) или с дисковода гибких дисков, если физическая безопасность сервера может быть скомпрометирована, и установите пароль BIOS для дальнейшего ограничения доступа к системе.

    Добавить пароль загрузчика (GRUB 2)

      1. Запустите команду grub2-setpassword от имени пользователя root:
      2. ~]# grub2-setpassword
      3. Введите и подтвердите пароль:
        Введите пароль:
        Подтвердите пароль:

    Следуя этой процедуре, создается файл /boot/grub2/user.cfg , содержащий хэш пароля. Пользователь для этого пароля, root , определяется в файле /boot/grub2/grub.cfg . С этим изменением для изменения загрузочной записи во время загрузки необходимо указать имя пользователя root и пароль.

    Регулярно сканируйте сервер на наличие уязвимостей.

    IIA предлагает ежемесячное бесплатное сканирование уязвимостей.

    Централизованное управление антивирусом и утилитами обновления.

    Это особенно важно, если серверная сеть большая или распределенная. CrowdStrike Falcon будет вести журналы защиты конечных точек для систем, на которых он запущен.