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


Термины по теме: UNIX, Linux, FreeBSD, Ubuntu, CentOS
Описанные ниже действия стоит выполнить в первую очередь после установки операционной системы на базе UNIX (например, Ubuntu, CentOS, FreeBSD) вне зависимости от того, как планируется его использовать.
Работа с пользователями
Задать имя сервера
Обновление системы
Настройка времени и его обновления
Автозавершение ввода команд
Настройка SSH
История
1. Работа с пользователями
Задаем пароль для пользователя root следующей командой:
passwd root
Создаем нового пользователя для работы с сервером.
Linux:
useradd kdo -G wheel -m
* где kdo — имя учетной записи; wheel — группа, которая позволяет запускать команды в привилегированном (sudo) режиме (стоит отдельно отметить, что на некоторых системах нет группы wheel и команда вернет ошибку — в таком случае wheel нужно заменить на sudo).
BSD:
pw useradd kdo -G wheel -m
После того, как создали пользователя, обязательно задаем пароль:
passwd kdo
2. Имя сервера
Linux:
vi /etc/hostname
server.dmosk.ru
или одной командой:
hostnamectl set-hostname server.dmosk.ru
BSD:
ee /etc/rc.local
hostname="server.dmosk.ru"
3. Обновление
Ручное
CentOS / Red Hat
yum update
Ubuntu / Debian
apt-get update && apt-get upgrade
FreeBSD
pkg update && pkg upgrade
Автоматическая загрузка обновлений
Для удобства обновления системы, установим следующий пакет:
yum install yum-cron
После установки данного пакета, будет создано задание в cron.daily, которое будет искать обновления для системы и загружать их. В будущем, это сократит время ожидания на скачивание файлов.
4. Правильное время
Настраиваем временную зону:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* в данном примере мы задаем зону по московскому времени.
Устанавливаем утилиту для синхронизации времени:
yum install ntpdate
apt-get install ntpdate
pkg install ntpdate
* соответственно, для 1) CentOS / Red Hat - 2) Ubuntu / Debian - 3) BSD
Создаем задание в CRON для ежедневной синхронизации времени:
crontab -e
0 0 * * * /sbin/ntpdate ru.pool.ntp.org
* путь до ntpdate может быть другой — проверяем командой which ntpdate.
Выполняем синхронизацию времени вручную:
/sbin/ntpdate ru.pool.ntp.org
5. Автозавершение ввода команд
Значительно упрощает работу с консолью. Выполняется только на Linux — на BSD настроен по умолчанию.
Открываем на редактирование следующий файл:
vi /etc/inputrc
И добавляем:
set show-all-if-ambiguous On
"\e[A": history-search-backward
"\e[B": history-search-forward
Выходим их системы и входим снова для применения настроек.
6. Настройка SSH
Все настройки выполняем в файле:
vi /etc/ssh/sshd_config
Безопасность
Отключаем SSH-вход от пользователя root:
PermitRootLogin no
* в системе должна быть другая учетная запись, под которой можно войти по SSH. В противном случае, возможность удаленного управления будет потеряна.
Можно даже явно указать пользователей и группы, которым можно подключаться удаленно:
AllowGroups wheel developer
AllowUsers kdo operator
При необходимости, заставляем SSH слушать на определенном адресе или сетевом порту:
Port 4444
ListenAddress 192.168.0.15
Производительность
Немного увеличим производительность:
UseDNS no
GSSAPIAuthentication no
GSSAPICleanupCredentials yes
Для применения настроек перезагружаем службу:
systemctl restart sshd
или
service sshd restart
7. Настройка хранения истории команд
По умолчанию, history возвращает историю команд в неудобном формате — без возможности увидеть дату и время. Чтобы исправить ситуацию, открываем на редактирование следующий файл:
vi /etc/environment
И добавляем следующие строки:
export HISTTIMEFORMAT='%F - %H:%M:%S '
export HISTSIZE=1000
export HISTFILESIZE=1000
* где HISTTIMEFORMAT добавит перед каждой командой дату и время ее выполнения; HISTSIZE — количество команд, которые хранятся в истории; HISTFILESIZE — количество команд, хранящихся в файле с историей.