Здесь описан порядок начальной настройки свежеустановленной операционной системы (на примере RedHat-подобных дистрибутивов, таких как Fedora, CentOS и т.п).
- Проверить, что рутовый пароль достаточно сложный, если нет – сделать его таковым.
- Настроить сетевые интерфейсы, шлюз, DNS-сервера.
- Отключить ipv6, если не планируется его использовать. Для этого в директории /etc/modprobe.d создать файл disableipv6.conf следующего содержания:
install ipv6 /bin/true
- Включить magic key чтобы можно было с клавиатуры делать Sync (Alt-PrintScreen-S) и перегружать машину (Alt-PrintScreen-B) в случае проблем. Для этого в файле /etc/sysctl.conf проверяем наличие строки
kernel.sysrq = 1
и говоримsysctl -w kernel.sysrq=1
чтобы эта фича заработала прямо сейчас.
- Сделать конфиг firewall-а, добавить в автозагрузку новый сервис (если он называется не iptables, в этом случае нужно также выключить сервис iptables). Важно: если в конфиге firewall-а используются конструкции, работа которых зависит от текущей конфигурации сетевых интерфейсов (например, анализируется вывод команды "/sbin/ip addr show"), то нужно проверить, что сервис firewall-а запускается после сервиса network. Иначе возможны проблемы.
- Выключить лишние сервисы. Для centos-сервера лишними, на мой взгляд, являются нижеперечисленные:
for serv in anacron atd autofs bluetooth cups firstboot gpm ip6tables isdn mcstrans mdmonitor netfs nfslock pcscd portmap readahead_early readahead_later restorecond rpcgssd rpcidmapd sendmail yum-updatesd hidd lvm2-monitor ; do chkconfig $serv off ; done
- Выключить backresolv-ы в sshd. Для этого проверяем, что в файле
/etc/ssh/sshd_config есть строка
UseDNS no - Удалить лишние пакеты. Для CentOS 5.3 на сервере я считаю лишними следующие:
avahi bluez-gnome bluez-utils bluez-libs cadaver cairo cups GConf2 libnotify gtk2 libwnk pango notification-daemon paps redhat-lsb cups-libs dhcpv6-client irda-utils isdn4k-utils iptables-ipv6 firstboot-tui system-config-securitylevel-tui nfs-utils-lib nfs-utils pcmciautils portmap ypbind yp-tools wireless-tools NetworkManager rhpl wpa_supplicant system-config-network-tui sendmail ORBit2 anacron aspell ccid fbset hesiod ifd-egate dhclient dhcdbd libX11 libXext libXxf86vm mesa-libGL startup-notification.i386 nss_ldap nscd oddjob-libs oddjob rng-utils rp-pppoe wvdial. - Поставить пакет yum-priorities чтобы можно было задавать приоритеты репозиториев yum-а.
- Поставить пакет yum-utils, который содержит такие полезные утилиты как yumdownloader (скачивание пакетов с зависимостями без установки) и package-cleanup.
- Найти и удалить оставшиеся неиспользуемые/ненужные пакеты с помощью команд:
/usr/bin/package-cleanup --orphans /usr/bin/package-cleanup --problems /usr/bin/package-cleanup --leaves /usr/bin/package-cleanup --dupes
- Удалить sendmail, установить exim, поправить конфиг, добавить в автозагрузку.
- Установить ntpd для автоматической синхронизации времени, поправить конфиг, добавить в автозагрузку.
- Опционально: выключить selinux, для чего в файле /etc/selinux/config поменять строку "SELINUX=enforcing" на "SELINUX=disabled". Это может потребоваться если используется система виртализации OpenVZ -- там даже в официальной доке пишут, что SELINUX нужно обязательно отключать. Также может быть полезно при необъяснимых ошибках в работе сетевых сервисов (в моей практике встречались случаи, когда включённый SELINUX мешал работе vsftpd, named). Но более разумно всё-таки SELINUX не отключать, а лучше правильно его настроить (читая как минимум /var/log/audit, вывод 'ls -Z' и маны по командам chcon, runcon)
- Проверить, что часовой пояс установлен правильно. Для Киева поменять его можно так:
ln -sf /usr/share/zoneinfo/Europe/Kiev /etc/localtime vim /etc/sysconfig/clock
- Добавить дополнительные репозитории, такие как rpmforge (в котором есть много всяких полезностей). Для этого создаем файл /etc/yum.repos.d/rpmforge.repo со следующим содержимым (для CentOS):
# Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag # URL: http://rpmforge.net/ [rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag #baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge #mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge enabled = 1 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 1 priority = 10
Для основных репозиториев значение параметра priority лучше ставить меньшее, чем для сторонних. Это повысит приоритет основных репозиториев.
Update: идеологически более правильным методом является установка пакета rpmforge-release – тогда и repo-файл сам создастся и публичные ключи в директории /etc/pki/rpm-gpg появятся. Подробнее тут: https://rpmrepo.org/RPMforge/Using.
Также иногда полезно включить репозиторий EPEL.
- Установить необходимые сервисы (httpd, samba и т.д.) и настроить их.
- Обновить систему
yum update
- Включить запись даты и времени в историю команд bash:
export HISTTIMEFORMAT="%Y%m%d %H:%M:%S " >> ~/.bashrc
- Перегрузиться, проверить что все в порядке.
- Построить систему резервного копирования, например через fsbackup. А вот здесь можно скачать немного изменённую версию, в которой весь русский текст в комментариях в кодировке UTF-8 (в оригинальной - KOI8-R). Также можно воспользоваться rpm-пакетом, который я наконец-то собрал, взять можно тут: /soft/repo/fsbackup.rpm
Подробное пошаговое руководство для CentOS 5 со скриншотами:
http://www.howtoforge.com/installation-guide-centos5.1-desktop
Говорят, сервисы readahead_early и readahead_later ускоряют процесс загрузки путём упреждающего чтения файлов с диска, которые нужны для запуска сервисов. Я проверял, в работающей системе ps не показывает readahead в списке процессов, поэтому целесообразность отключения этих двух сервисов мне кажется сомнительной. Хотя, с другой стороны, я и не уверен что они реально что-то ускоряют. Надо будет на досуге потестить с секундомером...
Мне кажется отключение IPV6 - это в наше время не совсем разумно. Лучше правильно настроить firewall (через ip6tables). Очень скоро он будет повсеместно использоваться и тогда придётся везде назад включать...
>> Выключить selinux
Дурак чтоли
Нед.
Колян:
then it's better not to disable anything, in case it could be usefull in a couple of years...
Вот это круто!
Особенно список ненужного софта, давно искал что-бы лишнего грохнуть. Хотя я бы dhclient все-же оставил.
И относительно 3-его пункта еще: ipv6 можно отключить, добавив в /etc/sysconfig/network строку
NETWORKING_IPV6=no
Что оставить, а что удалить, это каждый решает сам. Мне лично dhclient на серваках со статическими адресами в датацентрах как-то совсем не нужен.
Не знаю как на других дистрах, а в CentOS, когда я последний раз пробовал, одного только "NETWORKING_IPV6=no" было недостаточно - ipv6 адреса всё равно присутствовали на сетевых интерфейсах.
Графическая оболочка при этом не будет работать?
Alex, если эта самая графическая оболочка была установлена, то будет. Разве что 8-м пункте пакет libX11 и прочие связанные с X-ми в этом случае, пожалуй, удалять не стоит.
selinux выключать не стоит
Подробное пошаговое руководство для CentOS 6 со скриншотами: http://www.howtoforge.com/perfect-server-centos-6.5-apache2-mysql-php-pureftpd-postfix-dovecot-and-ispconfig3
Статья про различные варианты black-list-инга модулей ядра
https://wiki.archlinux.org/index.php/Kernel_modules
(вариант в пункте 3 статьи не всегда сработает).