Любой опытный администратор может сказать вам, что по мере роста количества серверов и разработчиков, администрирование, а в частности деплой новых машин, из приятного времяпрепровождения становится бременем.
Если в организации используется виртуализация или развернута одна из систем централизованного управления: cfengine, chef, puppet, — то все определенно проще, но что делать с машинами которые не подходят под эти требования?
Для себя я составил небольшой мануал по командам, которые необходимо в обязательном порядке выполнить, ими я и поделюсь с вами. Как правило на все хватает 15 минут!
Итак поехали…
Я поклонник CentOS, поэтому все команды ориентированы на данную систему, хотя могут быть переделаны и под другие Linux дистрибутивы.
- Меняем пароль администратора на что-то более сложное, в особенности если пароль был прислан из все. Нам не нужно будет помнить его, достаточно просто хранить его где-то в безопасности — это пароль будет необходим, только если мы потеряем возможность войти по SSH.
passwd root
- Обновляем системы до последних версий пакетов и делаем первый ребут (из которого машина может и не выйти, у некоторых хостеров бывает и такое, в любом случае это лучше, чем если бы вы потратили пару часов, почти запустили продакшен, и не вышли из ребута):
yum update reboot
- Добавляем дополнительного пользователя, от которого мы будем в дальнейшем работать:
adduser username usermod -a -G wheel username
- Одна из моих вредных привычек — я люблю работать в Midnight Commander (MC), ставим:
yum install mc
- Снимаем комент с «# %wheel ALL=(ALL) NOPASSWD: ALL» в /etc/sudoers, через редактор или командную строку:
/bin/sed -ie "s/# %wheel\tALL=(ALL)\tNOPASSWD: ALL/%wheel\tALL=(ALL)\tNOPASSWD: ALL/g" /etc/sudoers # на всякий случай делаем проверку grep "NOPASSWD: ALL" /etc/sudoers
- Добавляем к ранее созданному пользователю публичный ключ «my_public_key»:
mkdir /home/username/.ssh echo "my_public_key" >>/home/username/.ssh/authorized_keys chmod 700 /home/username/.ssh chmod 600 /home/username/.ssh/authorized_keys chown username:username /home/username/.ssh -R
- Логинимся под пользователем «username», проверяем sudo, если все хорошо вносим изменения в /etc/ssh/sshd_config
Выставляем «PermitRootLogin yes» в «no» и по желанию, секьюрность системы будет зависеть от сложности паролей ваших пользователей, так что лучше все-таки ставить, «PasswordAuthentication no»
/bin/sed -ie "s/#PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config /bin/sed -ie "s/#PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config # Делаем проверку grep RootLogin /etc/ssh/sshd_config grep PasswordAut /etc/ssh/sshd_config #Если все хорошо, то service sshd restart
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm #Делаем проверку yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile epel/metalink | 15 kB 00:00 * base: mirror.itc.virginia.edu * epel: epel.mirror.constant.com * extras: mirror.atlanticmetro.net * updates: mirror.atlanticmetro.net epel | 3.9 kB 00:00 epel/primary_db | 5.7 MB 00:00 repo id repo name status base CentOS-6 - Base 6381 epel Extra Packages for Enterprise Linux 6 - x86_64 10022 extras CentOS-6 - Extras 13 updates CentOS-6 - Updates 1555 repolist: 17971 #Можно еще раз обновить пакеты yum update
- Ставим защиту от перебора паролей к SSH
yum install denyhosts service denyhosts restart chkconfig denyhosts on
- Добавляем алиас, для того чтобы рутовая почта выпалась наружу, а не оседала внутри системы:
echo "root: username@testhost.ru" >>/etc/aliases newaliases
- Ставим logwatch.
Logwatch это демон, который отслеживает логи. Бывает очень полезно для отслеживания и обнаружения вторжений. Как правило помогает разобрать инцидент если кто-то получил доступ к вашему серверу и логи на вашем сервере были скомпрометированы.
yum install logwatch
Дальше, в зависимости от типа сервера доставляются и настраиваются необходимые службы, но об этом в другой раз.