Начальная настройка сервера Fedora 22

Свежий сервер Fedora 22 не готов к производству. Прежде чем приступить к работе с ним, следует сначала выполнить ряд рекомендаций по базовой настройке и защите (например, включить брандмауэр).

Данное руководство покажет, как защитить свежий сервер Fedora 22 и подготовить его к использованию.

Требования

Для выполнения руководства необходим новый ненастроенный сервер Fedora 22, права root и SSH-ключи.

1: Создание пользователя

Войдите на сервер:

ssh root@your_server_ip

Постоянное использование root-аккаунта – серьёзная угроза безопасности сервера, потому для повседневной работы рекомендуется создать не-рутового пользователя с расширенными правами sudo.

Примечание: В этом руководстве используется условное имя пользователя 8host; замените это имя своим.

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

adduser 8host

Установите надёжный пароль при помощи следующей команды (пароль нужно ввести дважды):

passwd 8host

Затем добавьте нового пользователя в группу wheel, чтобы дать ему доступ к sudo:

gpasswd -a 8host wheel

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

ssh-copy-id 8host@your_server_ip

Примечание: Полезные инструкции по настройке SSH-ключей можно найти в специальном разделе этого сайта.

Вернитесь на сервер и авторизуйтесь как новый пользователь. Обратите внимание: система не запрашивает пароль, поскольку для авторизации используются SSH-ключи.

ssh 8host@your_server_ip

2: Отключение root-логина и пароля

Теперь нужно отключить авторизацию на основе пароля и запретить root-логин, что сделает авторизацию на основе SSH-ключей ещё более надёжной.

Для редактирования конфигурационных файлов необходим текстовый редактор; в этом руководстве используется nano.

Сначала примите доступные обновления с помощью команды:

sudo dnf update

Затем установите nano:

sudo dnf install -y nano

Теперь откройте конфигурационный файл демона SSH для редактирования:

sudo nano /etc/ssh/sshd_config

В этом файле найдите директиву PermitRootLogin. Раскомментируйте её (уберите символ # в начале строки) и задайте значение no:

PermitRootLogin no

Выполните эти действия и для директивы PasswordAuthentication:

PasswordAuthentication no

Сохраните и закройте файл, а затем обновите настройки, чтобы изменения вступили в действие:

sudo systemctl reload sshd

Теперь никто не сможет войти на сервер как пользователь root; при попытке авторизоваться как root на экране появится сообщение:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

3: Настройка часового пояса

На данном этапе нужно настроить часы системы согласно локальному часовому поясу. По умолчанию время устанавливается по Гринвичу (UTC).

Все доступные часовые пояса находятся в каталоге /usr/share/zoneinfo/. Откройте этот каталог и ознакомьтесь с файлами и каталогами, хранящимися в нём.

ls /usr/share/zoneinfo/

Чтобы перевести часы в локальный часовой пояс, найдите в этом каталоге специальный файл, предназначенный для вашей страны или географической области, а затем создайте символьную ссылку на каталог /etc/localtime. К примеру, пользователь, живущий в центральной части США (а следовательно – пребывающий в часовом поясе CST), должен выбрать файл /usr/share/zoneinfo/US/Central.

Чтобы создать символьную ссылку на каталог /etc/localtime, используйте команду:

sudo ln -sf /usr/share/zoneinfo/your_zone_file /etc/localtime

Убедитесь, что часы идут правильно, запросив дату при помощи команды date:

date

Вывод будет выглядеть примерно так:

Wed Mar 25 14:41:20 CST 2015

Обратите внимание: команда выводит и выбранный часовой пояс (в данном случае это CST).

4: Настройка фаервола

На свежем сервере Fedora 22 нет активных приложений брандмауэра.

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

Пакет IPTables предварительно установлен на сервер Fedora. Но его нельзя включить без пакета iptables-services; установите необходимый пакет:

sudo dnf install -y iptables-services

Теперь можно включить фаервол IPTables (он будет автоматически запускаться вместе с сервером):

sudo systemctl enable iptables

Чтобы запустить IPTables, используйте:

sudo systemctl start iptables

В системе Fedora 22 брандмауэр IPTables поставляется со стандартным набором правил, одно из которых разрешает SSH-трафик. Чтобы просмотреть список стандартных правил, введите:

sudo iptables -L

На экране появится:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Эти правила действительны в течение одной сессии  и будут потеряны после перезагрузки системы. Чтобы сохранить текущие правила для постоянного использования (даже после перезагрузки), введите:

sudo /usr/libexec/iptables/iptables.init save

Теперь правила сохранены в файл iptables в каталоге /etc/sysconfig.

5: Разрешение трафика HTTP и HTTPS (опционально)

Пр необходимости можно отредактировать стандартные правила фаервола, чтобы разрешить трафик HTTP и HTTPS (порты 80 и 443 соответственно).

Стандартные правила IPTables разрешают только трафик SSH, но сервис HTTP и его относительно более безопасный аналог HTTPS используются многими приложениями, потому их трафик также рекомендуется разрешить.

Для этого откройте правила фаервола:

sudo nano /etc/sysconfig/iptables

В этот файл нужно добавить два правила, которые откроют порты 80 и 443; внесите эти правила сразу после строки для SSH-трафика (порт 22). Ниже приведён фрагмент конфигурационного файла брандмауэра, содержащий правила для HTTP и HTTPS, которые выделены красным:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

Чтобы обновить набор правил, перезапустите IPTables:

sudo systemctl restart iptables

6: Установка Mlocate (опционально)

Команда locate – это очень удобная утилита для определения местонахождения файла в системе. Чтобы, к примеру, найти файл по имени example, достаточно набрать:

locate example

Эта команда просканирует систему и сообщит о месте (или местах) хранения запрашиваемого файла. Конечно, существуют и более продвинутые способы использования утилиты locate.

Чтобы иметь доступ к этой команде, нужно установить пакет mlocate:

sudo dnf install -y mlocate

Затем запустите команду updatedb, чтобы обновить базу данных, на основе которой работает locate.

sudo updatedb

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

Заключение

Теперь сервер Fedora 22 надёжно защищён и подготовлен к дальнейшему использованию.

Tags: , , ,

2 комментария

  • Николай Иваничев says:

    Хорошее описание очень, очень, очень… первоначальной настройки сервера. Я бы поменял порт 22 на другой свободный “экзотический” для уменьшения возможность взлома сервера, путём подбора паролей, например, для SSH назначил бы порт 34632. И ещё, современные версии Fedora используют firewalld, в нём настройки более логичные и простые, например, добавляем порт 34632, “firewall-cmd –permanent –add-port=34632/tcp”. Далее, современные версии Fedora используют дополнительную защиту системы, SELinux, я думаю этим пренебрегать не стоит, я не встречал ещё ни одного вменяемого описания настройки SELinux, все блоггеры предпочитают обойти эту тему и просто предлагают отключить SELinux, поэтому я, что называется, “варился в собственном соку”, в итоге сумел настроить домашний сервер на Fedora 28, с работающей SELinux, правда, пока только в разделах защиты доступа по SSH и доступа через Samba. Настройки SELinux нашёл на одном из англоязычных сайтов, сейчас занимаюсь переводом. И, самое главное, настройки Samba, ведь главная задача любого сервера, например, файлового, или сервера приложений – раздавать ресурсы в общее пользование, виде файлов, или приложений, а учитывая, что большинство компьютеров сети работают под Windows, это супер-насущная необходимость.

  • Николай Иваничев says:

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

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