Skip to content


Порядок настройки свежеустановленной Linux

Здесь описан порядок начальной настройки свежеустановленной операционной системы (на примере RedHat-подобных дистрибутивов, таких как Fedora, CentOS и т.п).

  1. Проверить, что рутовый пароль достаточно сложный, если нет – сделать его таковым.
  2. Настроить сетевые интерфейсы, шлюз, DNS-сервера.
  3. Отключить ipv6, если не планируется его использовать. Для этого в директории /etc/modprobe.d создать файл disableipv6.conf следующего содержания:
    install ipv6 /bin/true
  4. Включить magic key чтобы можно было с клавиатуры делать Sync (Alt-PrintScreen-S) и перегружать машину (Alt-PrintScreen-B) в случае проблем. Для этого в файле /etc/sysctl.conf проверяем наличие строки
    kernel.sysrq = 1
    и говорим

    sysctl -w kernel.sysrq=1

    чтобы эта фича заработала прямо сейчас.

  5. Сделать конфиг firewall-а, добавить в автозагрузку новый сервис (если он называется не iptables, в этом случае нужно также выключить сервис iptables). Важно: если в конфиге firewall-а используются конструкции, работа которых зависит от текущей конфигурации сетевых интерфейсов (например, анализируется вывод команды "/sbin/ip addr show"), то нужно проверить, что сервис firewall-а запускается после сервиса network. Иначе возможны проблемы.
  6. Выключить лишние сервисы. Для 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
  7. Выключить backresolv-ы в sshd. Для этого проверяем, что в файле
    /etc/ssh/sshd_config есть строка
    UseDNS no
  8. Удалить лишние пакеты. Для 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.
  9. Поставить пакет yum-priorities чтобы можно было задавать приоритеты репозиториев yum-а.
  10. Поставить пакет yum-utils, который содержит такие полезные утилиты как yumdownloader (скачивание пакетов с зависимостями без установки) и package-cleanup.
  11. Найти и удалить оставшиеся неиспользуемые/ненужные пакеты с помощью команд:
    /usr/bin/package-cleanup --orphans
    /usr/bin/package-cleanup --problems
    /usr/bin/package-cleanup --leaves
    /usr/bin/package-cleanup --dupes
  12. Удалить sendmail, установить exim, поправить конфиг, добавить в автозагрузку.
  13. Установить ntpd для автоматической синхронизации времени, поправить конфиг, добавить в автозагрузку.
  14. Опционально: выключить selinux, для чего в файле /etc/selinux/config поменять строку "SELINUX=enforcing" на "SELINUX=disabled". Это может потребоваться если используется система виртализации OpenVZ -- там даже в официальной доке пишут, что SELINUX нужно обязательно отключать. Также может быть полезно при необъяснимых ошибках в работе сетевых сервисов (в моей практике встречались случаи, когда включённый SELINUX мешал работе vsftpd, named). Но более разумно всё-таки SELINUX не отключать, а лучше правильно его настроить (читая как минимум /var/log/audit, вывод 'ls -Z' и маны по командам chcon, runcon)
  15. Проверить, что часовой пояс установлен правильно. Для Киева поменять его можно так:
    ln -sf /usr/share/zoneinfo/Europe/Kiev /etc/localtime
    vim /etc/sysconfig/clock
  16. Добавить дополнительные репозитории, такие как 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.

  17. Установить необходимые сервисы (httpd, samba и т.д.) и настроить их.
  18. Обновить систему
    yum update
  19. Включить запись даты и времени в историю команд bash:
    export HISTTIMEFORMAT="%Y%m%d %H:%M:%S " >> ~/.bashrc
  20. Перегрузиться, проверить что все в порядке.
  21. Построить систему резервного копирования, например через fsbackup. А вот здесь можно скачать немного изменённую версию, в которой весь русский текст в комментариях в кодировке UTF-8 (в оригинальной - KOI8-R). Также можно воспользоваться rpm-пакетом, который я наконец-то собрал, взять можно тут: /soft/repo/fsbackup.rpm

Подробное пошаговое руководство для CentOS 5 со скриншотами:
http://www.howtoforge.com/installation-guide-centos5.1-desktop

Posted in *nix, Howto.

Tagged with , , , , , .


12 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Andron says

    Говорят, сервисы readahead_early и readahead_later ускоряют процесс загрузки путём упреждающего чтения файлов с диска, которые нужны для запуска сервисов. Я проверял, в работающей системе ps не показывает readahead в списке процессов, поэтому целесообразность отключения этих двух сервисов мне кажется сомнительной. Хотя, с другой стороны, я и не уверен что они реально что-то ускоряют. Надо будет на досуге потестить с секундомером...

  2. Колян says

    Мне кажется отключение IPV6 - это в наше время не совсем разумно. Лучше правильно настроить firewall (через ip6tables). Очень скоро он будет повсеместно использоваться и тогда придётся везде назад включать...

  3. anonymous says

    >> Выключить selinux
    Дурак чтоли

  4. Admin says

    Нед.

  5. DMB says

    Колян:
    then it's better not to disable anything, in case it could be usefull in a couple of years...

  6. Юрий says

    Вот это круто!
    Особенно список ненужного софта, давно искал что-бы лишнего грохнуть. Хотя я бы dhclient все-же оставил.
    И относительно 3-его пункта еще: ipv6 можно отключить, добавив в /etc/sysconfig/network строку
    NETWORKING_IPV6=no

  7. Admin says

    Что оставить, а что удалить, это каждый решает сам. Мне лично dhclient на серваках со статическими адресами в датацентрах как-то совсем не нужен.

    Не знаю как на других дистрах, а в CentOS, когда я последний раз пробовал, одного только "NETWORKING_IPV6=no" было недостаточно - ipv6 адреса всё равно присутствовали на сетевых интерфейсах.

  8. Alex says

    Графическая оболочка при этом не будет работать?

  9. Admin says

    Alex, если эта самая графическая оболочка была установлена, то будет. Разве что 8-м пункте пакет libX11 и прочие связанные с X-ми в этом случае, пожалуй, удалять не стоит.

  10. botnet says

    selinux выключать не стоит

  11. сайтостроитель says

    Подробное пошаговое руководство для CentOS 6 со скриншотами: http://www.howtoforge.com/perfect-server-centos-6.5-apache2-mysql-php-pureftpd-postfix-dovecot-and-ispconfig3

  12. Петровский says

    Статья про различные варианты black-list-инга модулей ядра
    https://wiki.archlinux.org/index.php/Kernel_modules

    (вариант в пункте 3 статьи не всегда сработает).

You must be logged in to post a comment.