Пример настройки linux сервера

Базовая настройка *nix сервера на примере Alma Linux в редакции minimal

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

После того как «Красная шапочка» окончательно прикончила проект CentOS, сделав из него по сути бесконечную beta версию своего RHEL, у многих встал вопрос, а что собственно дальше делать и какой теперь дистрибутив использовать?

А в мире .rpm их не так и много, помимо самого RHEL есть ещё Open SUSE, но она не полностью совместима с пакетной базой RHEL и в данной статье рассматриваться не будет. И выбор остаётся не велик, либо Oracle Linux, либо Alma Linux, и тут у Альмы есть серьёзное преимущество. Так как все компоненты в ней не имеют проприетарных лицензий, её можно использовать к коммерческой эксплуатации, как и когда-то CentOS, и Альма 100% совместима с пакетной базой RHEL.

Всё описанное в статье было применено к Alma Linux 8.5 в редакции minimal, а сам дистрибутив взят отсюда.

Статья в первую очередь предназначена для новичков в мире Linux и не претендует на истину в последней инстанции, тем более опытные Linux админы поленятся настраивать сервер руками и сделают это с помощью системы управления конфигурацией типа Ansible или любой другой.

1. Настройка сетевых подключений

В общем случае, сеть в Alma Linux настраивается с помощью NetworkManager и его консольной утилиты nmtui. Она идет в базовой установке системы. Там простой и понятный графический интерфейс.

Для того чтобы туда попасть, пишем следующие команды

Выбираем пункт «Edit a connection»
Выбираем нужный нам интерфейс
Активируем чек-бокс «Automatically connect»

2. Обновление системы

3. Установка текстового редактора nano

А теперь, дабы не испытывать «боль и унижение» от текстового редактора vi, предлагаю установить nano:

4. Исправление русской локализации

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

Читайте также:  Сервер arma 3 linux

Для того чтобы это исправить, делаем простые шаги:

cd /etc 
nano /etc/vconsole.conf

приводим конфиг к такому виду:

5. Добавление репозитория EPEL

dnf -y install epel-release

6. Установка и настройка bash-completion

Чтобы стал доступен весь список команд после ввода пары символов, используется утилита bash-completion. Это реально удобно, TAB и готово!

dnf install bash-completion 
cat /etc/profile.d/bash_completion.sh
source /etc/profile.d/bash_completion.sh

7. Установка необходимых утилит для работы с сетью

в этот пакет входят такие утилиты как:

А теперь поставим утилиту для работы с DNS, которая входит в пакет bind-utils:

8. Дисковое пространство

Для того чтобы понять, что и сколько занимает, а также для чистки/удаления, нам понадобится утилита ncdu :

9. Тop»ы

dnf install iftop 
dnf install htop
dnf install atop

10. Отключение SELinux

Поскольку это руководство для новичков, то тут мы рассмотрим работу без использования SELinux, но отключать его крайне не рекомендуется!

cd /etc/sysconfig/ 
nano selinux
//меняем значение на SELINUX=disabled:
setenforce 0

12. Настройка SSH

Продолжаем настраивать centos. Внесем некоторые изменения в работу ssh для небольшого увеличения безопасности. Хотя речь стоит вести больше не о безопасности, а об удобстве и эффективности.

По-умолчанию, сервис ssh работает на 22 порту и если все оставить как есть, то мы получим огромное количество попыток авторизоваться. Боты сканят непрерывно интернет и подбирают пароли к ssh. Это не доставляет в реальности каких-то серьезных хлопот и тем не менее, подобные запросы забивают лог secure и тратят некоторые ресурсы сервера, как минимум на установку соединения и рукопожатия (handshake).

Чтобы немного закрыть себя от сканов простых ботов, изменим порт, на котором работает ssh. Можно выбрать любой пятизначный номер, это не принципиально. От автоматического сканирования это защитит. Повесим демон ssh на 2222 порт. Для этого редактируем файл /etc/ssh/sshd_config.

Но с начала отключим стандартный Firewall:

systemctl status firewalld 
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

Возвращаемся к ssh. Раскомментируем строку Port 22 и заменим значение 22 на 2222:

cd /etc/ssh/ 
nano /etc/ssh/sshd_config
systemctl restart sshd
netstat -tulpn | grep sshd
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 720/sshd
tcp6 0 0 . 2222 . * LISTEN 720/sshd

13. Отключение суперпользователя по ssh

Для того чтобы отключить, откройте конфигурационный файл ssh:

Измените строку следующим образом:

Сохраните файл и перезапустите сервер SSH, выполнив следующие команды:

Для повторного включения учетной записи суперпользователя, просто поместите символ # для директивы PermitRootLogin в файл и сохраните его. Перезапустите SSH сервер.

14. Настраиваем синхронизацию времени через chrony

dnf install chrony 
//Запускаем chrony и добавляем в автозагрузку: systemctl start chronyd
systemctl enable chronyd
//Проверяем, нормально ли запустился:
systemctl status chronyd

15. Настройка хранения истории bash

Как известно, история команд в Linux хранится в файле ~/.bash_history . Для редактирования пишем:

Читайте также:  Mpv player linux настройка

Размер файла ограничен списком из 500 последних выполненных команд, которые затираются по мере заполнения этого файла.

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

Чтобы увеличить размер хранимой истории, необходимо в файл ~/.bashrc добавить строки:

export HISTSIZE=10000 
export HISTFILESIZE=10000
//HISTSIZE — количество команд, которые необходимо запоминать в списке истории (по умолчанию — 500);// //HISTFILESIZE — максимальное количество строк, содержащееся в файле истории ~/.bash_history (по умолчанию — 500);

Теперь у нас будет храниться история последних 10 тыс. команд. Для применения настроек нужно выполнить:

Идем дальше, если вы выполните команду history, то заметите, что выполненные подряд одни и те же команды повторяются в истории. Это жутко неудобно, давайте отключим такое поведение. Для этого в файл ~/.bashrc добавим строку:

export HISTCONTROL=ignoreboth:erasedups

Опция HISTCONTROL контролирует каким образом список команд сохраняется в истории.

  • ignorespace — не сохранять строки, начинающиеся с символа ;
  • ignoredups — не сохранять строки, совпадающие с последней выполненной командой;
  • ignoreboth — использовать обе опции ‘ignorespace’ и ‘ignoredups’;
  • erasedups — удалять ВСЕ дубликаты команд из истории.

Не забываем выполнить source ~/.bashrc для применения настроек на лету.

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

Давайте не будем сохранять в истории команды ls, ps и history с доп. опциями. Для этого в файл ~/.bashrc добавим строку:

export HISTIGNORE='ls:ps:history*' 
source ~/.bashrc

По умолчанию, Bash записывает историю команд в ~/.bash_history только при завершении сессии. Если Ваша сессия будет отключена некорректно, то как правило история команд в текущем сеансе не сохраниться — это неудобно. Чтобы это исправить нужно добавить в ~/.bashrc следующую строку:

Как вы уже заметили, вывод истории команд не учитывает дату и время выполнения этой команды, а иногда бывает очень нужно понимать, когда же Вы выполнили эту команду. Но все можно поправить, чтобы добавить дату к списку команд, нужно изменить формат вывода истории, для этого в ~/.bashrc нужно добавить строку:

export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S:'
source ~/.bashrc

И в конце, все вышеописанные опции можно добавить в ~/.bashrc с помощью одной команды:

cat > ~/.bashrc 
export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTCONTROL=ignoreboth:erasedups
PROMPT_COMMAND='history -a'
export HISTIGNORE='ls:ps:history*'
export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S: '
EOT
source ~/.bashrc

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

Читайте также:  Где хранятся пакеты python linux

Если нужно удалить конкретную строку в истории, то выполните:

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

Если нужно очистить историю команд только для текущей сессии, то выполните:

Следует обратить внимание, что если вы сохраняете историю сразу по факту выполнения команды (настройка PROMPT_COMMAND=’history -a’ ), а не по выходу из сессии, как это предусмотрено по умолчанию, то полную очистку истории указанными выше способами (опции -c и -r) вы не сделаете, история в файле ~/.bash_history сохраниться. Тогда для полной очистки истории команд нужно очистить файл ~/.bash_history , для этого выполните:

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

По умолчанию, история команд включена всегда и все введенные команды можно использовать повторно, не затрачивая времени на их набор. Но при желании функцию ведения истории можно временно отключить. В Bash история команд в текущей сессии отключается с помощью команды:

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

16. Автоматическое обновление системы

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

dnf install dnf-automatic 
systemctl enable --now dnf-automatic.timer

Дефолтный таймер настроен на запуск dnf-automatic через час после загрузки сервера и ежедневное повторение. Конфиг таймера живет тут — /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.

17. FireWall или межсетевой экран!

Итак, самое интересное я оставил напоследок, по поводу «какой межсетевой экран лучше» написано много статей и там в основном сравнивают iptables с nftables и кто-то даже рассказывает, что один безопаснее другого.

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

Но тут мы рассмотрим другой более удобный и современный инструмент для взаимодействия с NetFilter, а именно UFW.

Установим межсетевой экран:

Проверим список доступных приложений:

Источник

Оцените статью
Adblock
detector