CentOS 6
CentOS 6, если её ставить в минимальной конфигурации, ставится уж очень аскетично. В базовую систему даже не входит пакет man, не говоря уже о многих других полезных утилитах. Поэтому решил написать небольшую шпаргалку, что нужно поставить, чтобы получить работоспособный и минимально-настроенный сервер.
Итак, начинаем установку (всё написанное делалось на CentOS 6.5 x64):
выбираем английский язык
когда просят ввести имя хоста, вводим и нажимаем кнопку "Configure Network"
в настройках адаптера включаем "Connect automatically" и настраиваем параметры IPv4
(если этого здесь и сейчас не сделать, то после перезагрузки система будет с отключенной и не настроенной сетью, и придётся править конфигурационные файлы вручную)
выбираем Minimal install
после окончания установки и первой перезагрузки:
yum update
reboot
ставим минимально-необходимый на сервере набор пакетов:
yum -y install man mc telnet bind-utils bzip2 unzip zip wget psmisc
настраиваем синхронизацию времени:
yum -y install ntp
chkconfig --level 345 ntpd on
service ntpd start
выключаем для начала брендмауэр, чтобы он не мешал настройке всего прочего; потом его можно при необходимости настроить и включить
chkconfig ip6tables off
chkconfig iptables off
service iptables stop
service ip6tables stop
можно ещё выключить selinux, написав в файле /etc/selinux/config
SELINUX=disabled
он тоже может помешать настройке сервера
Добавляем дополнительные репозитории EPEL и rpmforge:
yum -y install epel-release
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
yum updateставим оттуда ещё несколько полезных пакетов
yum install bash-completion htop atop iftop
В принципе, это всё, но можно ещё для большей секурности добавить пользователя с правами администратора и отключить возможность root-логина через ssh:
useradd administrator
usermod -a -G wheel administrator
или сразу одной командой:
useradd -G wheel administrator
passwd administrator
в файле /etc/sudoers убираем комментарий в строке:
# %wheel ALL=(ALL) ALL
в файле /etc/ssh/sshd_config убираем комментарий в строке:
#PermitRootLogin yes
и меняем yes на no
Всё. Теперь по ssh можно зайти только пользователем administrator и админить сервер уже через sudo.
Дальше ставятся все остальные необходимые на сервере сервисы и пакеты, в зависимости от назначения этого сервера.
CentOS 7
В CentOS 7 много чего поменялось, но в плане первоначальной настройки сервера изменения не большие.
Инсталлятор вполне интуитивно-понятный. Главное, как и с 6 не забыть сразу настроить сеть. Хотя, в 7 штатно появилась утилита nmtui, которая позволяет наглядно из консоли настроить все необходимые сетевые параметры, не прибегая к ручной правке конфигурационных файлов.
После инсталляции почти всё, как и с шестёркой:
yum -y update
yum -y install mc telnet bind-utils bzip2 unzip zip wget psmisc
В 7 исчезла команда ifconfig. Вместо неё появилась команда ip. Для элементарного просмотра сетевых настроек нужно ввести ip a. Но если хочется старых команд, то нужно поставить ещё один пакет:
yum -y install net-tools.x86_64
Далее настраиваем синхронизацию времени. Тут есть два варианта:
1. Воспользоваться уже имеющимся в системе новым сервисом. (В Centos 7 вместо старого ntpd предустановлен и активирован новый сервис chrony).
Проверяем, работает ли chrony:
systemctl status chronyd
если работает, то разрешаем синхронизацию времени:
timedatectl set-ntp yes
проверяем состояние:
chronyc sources
2. Если chrony не работает или хочется установить вместо него ntpd:
yum -y install ntp
systemctl start ntpd
systemctl enable ntpd
отключаем chrony:
systemctl stop chronyd
systemctl disable chronyd
Добавление репозиториев:
yum -y install epel-release
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
ставим оттуда полезные утилиты:
yum -y update
yum -y install bash-completion htop atop iftop
Далее можно сделать то же, что и в версии 6 касательно создания пользователя администратор и отключения логина root через ssh.
Также для начала отключаем selinux, написав в файле /etc/selinux/config
SELINUX=disabled
и выключаем firewall.
В CentOS 7 вместо привычных iptables появилась надстройка над ними под названием firewalld. Отключается он так:
systemctl stop firewalld
systemctl disable firewalld
Как его настраивать - отдельная тема. Почитать об этом можно, например, тут:
http://bozza.ru/art-259.html
Если нужно вернуть iptables, то делается это так:
yum -y install iptables-services
systemctl enable iptables
Ну и последнее. Можно ещё отключить в системе ipv6, ибо оно пока непонятно зачем нужно в большинстве случаев.
Во-первых, частично это можно было сделать при инсталляции, когда настраивались сетевые параметры, отключив автоматическую настройку ipv6.
Если этого сделано не было, то уже после установки системы делается это так:
Сначала смотрим, какие службы используют ipv6:
netstat -tulnp
Все строки с названием протокола и 6 в конце или ::: это как раз оно. Как правило, на только что установленном сервере этот протокол используют sshd, ntpd и, возможно, postfix.
Для sshd в /etc/ssh/sshd_config находим строки:
#AddressFamily any
#ListenAddress 0.0.0.0
и меняем их на:
AddressFamily inet
ListenAddress 0.0.0.0
Для ntpd в /etc/ntp.conf добавляем в конце строку:
interface ignore ipv6
И отключаем ipv6 в самой CentOS. Открываем файл /etc/sysctl.conf и добавляем туда строки:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
и в файле /etc/sysconfig/network, добавляем:
NETWORKING_IPV6=no
IPV6INIT=no
редактируем файл /etc/default/grub
находим строку GRUB_CMDLINE_LINUX и добавляем в начало ipv6.disable=1, чтобы это выглядело примерно так:
GRUB_CMDLINE_LINUX="ipv6.disable=1 rd.lvm.lv=rootvg/usrlv...
создаём новую конфигурацию grub командой:
grub2-mkconfig -o /boot/grub2/grub.cfg
Для postfix правим файл /etc/postfix/main.cf
Делаем замену
#inet_interfaces = localhost
#inet_protocol = all
на
inet_interfaces = 127.0.0.1
inet_protocol = ipv4
Можно перегружаться и проверить, что ipv6 успешно выключен:
netstat -tulnp
никаких упоминаний об ipv6 там быть не должно.