Некоторые тонкости по настройке сервера под себя

Статья про то, как упростить жизнь админа. Ни в коем случай не претендует на учебное пособие, а основана на личном опыте, как и написано в топике «под себя».
Мы получили новый сервер, не важно, арендовали, взяли на колокейшн или ставим у себя в офисе.
Я не буду вдаваться в подробности установки OS, выбора RAID и прочего, каждому свое. Так же я не буду здесь описывать как установить LAMP или тому подобное.
В данном примере будет рассмотрена изначальная настройка CentOS, на сегодняшний день актуальная версия 5.4. Писать буду от первого лица.

И так, есть сервер, есть %admin%, приступим:
Первым долгом, упрощаю себе работу с консолью, я предпочитаю bash, хотя и знаю о всех прелестях zsh.

# vim ~/.inputrc

и добавляем туда пару строчек


"\e[A":history-search-backward
"\e[B":history-search-forward

сохраняем файл и закрываем
Эти настройки существенно упростят работу с консолью, при наборе начала комманды и нажитии стрелок (вверх-вниз), будут проявляться уже набранные команды начинающиеся с набранного начала (каломбур какой-то получился).
далее ставим очень нужный репозиторий отсюда — RPMforge и обновляем систему:

# yum update

Следующим этапом меняем порт на ssh-сервер, для этого, редактирум файл /etc/ssh/sshd_config :

#меняем на понравившийся Вам порт. например 3522
Port 3522
#отключаем возможность захода по ssh из под root
PermitRootLogin no
#Разрешаем вход по ssh только user (если нужно несколько пользователей пускать по ssh, то лучше для этого создать отдельную группу, добавить этих пользователей в нее и сделать AllowGroups)
AllowUsers user
#Проверяем что не разрешен вход с пустым паролем (по умолчанию отключено)
PermitEmptyPasswords no

сохраняем и закрываем
перезагружаем ssh-сервер

# /etc/init.d/sshd restart

выходим из системы и заходим заного по новому порту. Здесь надо быть внимательным, чтоб не остаться без доступа к серваку, вдруг файрволом закрыт этот порт. Проверяйте заранее.
проверяем что у нас в правилах firewall

# iptables -L -n -v —line-numbers (так нагляднее)

обычно изначально правила пусты, сейчас будем их добавлять:

iptables -A INPUT -s ваш_IP -j ACCEPT # разрешаем полный доступ себе, если конечно ip постоянный
iptables -A INPUT -m state —state ESTABLISHED -j ACCEPT # разрешаем уже имеющиеся соединения
iptables -A INPUT -m state —state RELATED -j ACCEPT
iptables -A -i lo -j ACCEPT # разрешаем соединения с локально интерфейса
# далее небольшая махинация с входом по ssh, защищает от попытки перебора паролей
# разрешаем попытки входа по ssh не более 3-х, если привысило, IP заблокируется на 60 сек, заодно логируем и метим,удобно видеть в логах
iptables -A INPUT -p tcp —dport 3522 -m recent —set —name SEC —syn -m state —state NEW -j ACCEPT
iptables -A INPUT -p tcp —dport 3522 -m recent —update —seconds 60 —hitcount 3 —rttl —name SEC -j LOG —log-prefix «BRUTE FORCE »
iptables -A INPUT -p tcp —dport 3522 -m recent —update —seconds 60 —hitcount 3 —rttl —name SEC -j DROP
# далее, надо открыть порты которые будут у нас доступны из-вне
iptables -A INPUT -p tcp -m tcp —dport 80 -j ACCEPT # http-сервер
iptables -A INPUT -p tcp -m tcp —dport 110 -j ACCEPT # pop3-сервер
iptables -A INPUT -p tcp -m tcp —dport 25 -j ACCEPT # smtp-сервер
# короче открываем кому что надо.
# ну и в конце, поставим на цепочки DROP по умолчинию
iptables -P INPUT DROP
iptables -P FORWARD DROP
# цепочку OUTPUT я оставляю в ACCEPT

теперь все это сохраним:

# iptables-save >/etc/sysconfig/iptables

В будущем мы можем отредактировать файл /etc/sysconfig/iptables, добавив что понадобиться, и перезагрузить файрвол:

# /etc/init.d/iptables restart

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

# ssh-keygen
# ssh-copy-id «-p 3522 ip_вашего сервера»

наберете пароль, и key окажеться на сервере в разрешенных, после этого не придеться каждый раз набирать пароль.
Ну, вроде с безопастностью всё.
При наличии кучи серверов, а у меня их около полусотни в целом, просто не имеется физической возможности отслеживать все, и даж заходить на каждый хотя бы раз в день. А следить за всем как-то ведь надо. Для этого прикручиваем logwatch, который будет слать на мыло отчеты за сутки. В итоге мы получим около 50-и писем в день, но просмотреть их одним глазком легче чем заходить на сам сервер. Я приблизительно знаю размеры приходящих логов с каждого сервера, и потому при увеличении или уменьшени размера, просматриваю данный лог более тщательно и при необходимости уже захожу на сервер, чтоб исправить что-то, если это необходимо. Итак

# yum install logwatch
# cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

правим файл под себя

# vim /etc/logwatch/conf/logwatch.conf
MailTo = ваш_email
MailFrom = Logwatch_server_name #(чтоб нагляднее было по приходу писем)
Detail = High #(чтоб подробнее было)

сохраняем и закрываем файл.
проверить работу logwatch можно так:

/etc/cron.daily/0logwatch

отчет сформируется и придет Вам на почту
С логами вроде тож разобрались
Если на сервере есть FTP, то необходимо открыть возможность работы с ним в файрволе, но тут есть некоторая тонкость, если FTP в пассивном режиме, используються высшие порты, поэтому лучше в демоне ftp указать эти порты конкретно, количество портов расчитывается согласно использованию демона, в данном случае выделяется 236 портов:
для proftpd, в секции <Global>:

PassivePorts  60000 60235

для vsftpd:

pasv_min_port=60000
pasv_max_port=60235

далее, открываем всё это дело на файрволе:

iptables -I INPUT -p tcp -m tcp —dport 21 -j ACCEPT # ftp-сервер
iptables -I INPUT -p tcp -m tcp —dport 20 -j ACCEPT # ftp-data для активного режима
iptables -I INPUT -p tcp -m tcp —dport 60000:60235 -j ACCEPT

не забываем сохранить:

# iptables-save >/etc/sysconfig/iptables

Вот и все. Далее уже можно ставить необходимое программное обеспечение. Удачи в настройках.

© shadow_alone


  • Было дело мучался с proftpd… пока не догнал, что он не работает из-за пассивного режима.
    Помогли правила:

    iptables -A INPUT -p tcp -m tcp —dport 60000:60235 -j ACCEPT
    iptables -A OUTPUT -p tcp -m tcp —sport 60000:60235 -j ACCEPT

    Это с поправкой на Ваше кол-во портов. Раньше указывал гораздо больший диапазон.

  • Аноним

    я писал выше что:
    «цепочку OUTPUT я оставляю в ACCEPT»
    посему, в данном случает второе правило, относительно этой статьи неактуально.