Linux: Мои первые 15 минут на сервере

linux
Любой опытный администратор может сказать вам, что по мере роста количества серверов и разработчиков, администрирование, а в частности деплой новых машин, из приятного времяпрепровождения становится бременем.

Если в организации используется виртуализация или развернута одна из систем централизованного управления: 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

Дальше, в зависимости от типа сервера доставляются и настраиваются необходимые службы, но об этом в другой раз.

Вы можете оставить комментарий ниже.