Пришла ко мне рассылка от hetzner. Дескать, дорогой валуабный клиент, сделали мы новую линейку серверов. Памяти больше, проц быстрее, диски толще а денег надо меньше. Приходи и заказывай. Походил я кругами и заказал. А то на старом уже диски сыпаться начали и своп образовываться.
Но просто так переносить сервисы абсолютно не интересно: на старом сервере у меня стоит OpenVZ и весь перенос будет заключаться в паре команд, да смене имен в DNS. Где же развитие и толчок вперед? В общем, потыкался я и решил:
– Сменить основную OS с CentOS 6 на CentOS 7. systemd, firewalld и прочие d в полном изобилии. Некий опыт есть, но чего-то в голову лезут пошлые мысли про RHCE.
– Привести в порядок DNS. Сейчас у меня часть серверов тут, часть там, часть вообще через одно место. Пусть все будет одинаковым и у меня.
– ipv6. Не очень-то и надо, но смотреть выше про развитие.
– SNI. Хватит тратить ipv4 адреса на каждый SSL сервер (да и дешевле будет).
– Да и вообще, надо все закриптовать. А то стыдоба – личный SVN голым ходит.
– Ну и KVM надо. Иногда жутко как требуется винда “в прекрасном и далеком”, а городить туннели не охота. Заодно получится бесплатный терминальный сервер для меня любимого.
– OwnCloud тоже не помешал бы, как и OpenVPN сервер для разностей нехороших.
– Ну и остальное по вкусу.
Практика прошлых лет показала, что принцип “ставим один сервер, выкидываем с него лишнее, а все сервисы в виртуалки” оправдал себя на все 100%. Да, при настройке чуть-чуть подумать надо, но зато потом абсолютно никаких проблем и заморочек. Ни с хакерами, ни с распределением нагрузки, ни с резервным копированием … да вообще ни с чем. Так буду и тут делать.
Идем в админку и заказываем новый сервер. Ждем получения письма, в котором пишут радостное:
Заходим, нас пускают …
Для приличия делаем passwd root и начинаем осматриваться. Сразу замечаю, что немцы стойко держат флаг “мы делаем нах ордунг” и сделали два больших рейда по 2Тб. Один отдали под /, другой под /home. Интересно, какой у них был сценарий использования? Но в любом случае, мне такое не надо.
Идем опять в консоль и перегружаемся в rescue
Выглядит именно тем, что я и заказывал (каюсь, да, не посмотрел раньше). Поэтому сразу набираем installimage
Там нам дают в mcedit поправить конфиг. Там я меняю имя сервера на tower.multik.org и ниже я показал, как указываю 16 гигов свопа, 512 мегабайт для /boot и все остальное отдать в LVM. В LVM прошу создать раздел / размером в 16 гигов. Остальное оставить нетронутым. Почему так мало? Так потому что все остальное – в виртуалки! В корне сервера делать лишнему абсолютно нечего, тут будут только штуки, связанные с внешним миром типа фаирволла.
Сохраняю (F2 или ESC-2), выхожу (ESC-0 или F10) и жду перезаливки сервера
Потом reboot, снова захожу (про ключи и их смену не говорю) и вуаля! Я в новом сервере.
Опять меняю пароль root.
Итак, на этом этапе я получил пустой и голый сервер. Что он умеет? Да ничего. Добрые немцы выкусили из образа вообще все (вот тут реально молодцы!) и на сервере есть только ssh и настроенная ipv4/ipv6 сеть.
Первым (опять первым, но тут все такое) делом обновляемся. yum update
Добавляем полезные программки yum install mc screen bind-utils iotop iftop
Включаем синхронизацию времени systemctl start ntpd && systemctl enable ntpd
и переходим к фаирволлу. yum install firewalld ; systemctl enable firewalld ; systemctl start firewalld
(Почему firewalld? Потому что мне лень править правила для ipv4 и ipv6 одновременно. Ну и редхатом проталкивается)
Внешне ничего не изменилось, но теперь снаружи на машину можно зайти только по 22му порту. Проверить можно посмотрев правила iptables. Но я-то двигаюсь вперед, поэтому все должно быть по фен-шую.
systemctl status firewalld
и побалуемся с командой firewall-cmd
Если я правильно понял, то никаких активных правил нет, просто стоит public по умолчанию, в которой разрешен только dhcp-клиент и ssh. Все остальное запрещено. Вполне логичные правила, но опять же, мне не сильно подходят. Будем менять.
Для начала попробую
firewall-cmd --zone=public --change-interface=eth0 --permanent
firewall-cmd --get-active-zones
И вижу фигу. Ничего не изменилось. Оказывается, это фича. Скрипт видит, что зона public и так применена (ну и что, что по умолчанию, поэтому ничего не делает).
Меняю зону на home и обратно. Вот теперь показывает
Но лично мне не нужно, что бы было правило для dhcp клиента
firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent
firewall-cmd --list-all
Ну вот теперь хорошо. Ничего лишнего, все закрыто и замуровано. Остался последний шаг – применить все, что я тут натворил, в реальность
firewall-cmd --reload
Все, теперь и iptables показывает именно то, что полагается.
Как говорится, первый шаг сделан. Следующим – виртуализироваться. Но виртуализироваться хардкорно, поэтому ставим SELINUX=permissive
для начала и перезагружаемся, проверяя правильность всего преднастроенного.
У меня выползла одна единственная проблема – предустановленный немцами chrony мешался ntpd. Удаляем его (yum remove chrony
) и все.
PS В запоминалку: настроить монитор raid.