debian — установка типового сервера

Собраны типовые изменения стандартной конфигурации Debian 7 Wheezy. Что-то вроде chreck-list.

Обновления безопасности для debian

Как это ни удивительно, но в некоторых реализациях (DigitalOcean) я обнаружил отсутствие этих строк в свежесозданном VPS.

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

joe

Установить редактор joe :

#!bash
aptitude install joe

apt-spy

apt-spy найдёт самые быстрые зеркала. Полностью полагаться на него нельзя.

#!bash
aptitude install apt-spy
apt-spy update
apt-spy -d wheezy -a Europe
# или только для российских:
apt-spy -d wheezy -s ru

postfix

Установить и переправить на себя рутовую почту.

#!bash
aptitude install postfix
joe /etc/aliaces
postalias /etc/aliaces

Установить postgrey (только для серверов, которым действительно может попасть спам) , postfix-pcre

#!bash
aptitude install postgrey postfix-pcre

Добавить в /etc/postfix/main.cf

smtpd_recipient_restrictions =  
        permit_mynetworks  
        reject_unauth_destination  
        check_policy_service inet:127.0.0.1:10023
header_checks = pcre:/etc/postfix/header_checks

/etc/postfix/header_checks содержит шаблоны для выводимых в логи заголовков.

cat /etc/postfix/header_checks

/^subject:/      WARN 
/^to:/           WARN 
/^from:/         WARN 
/^message-id:/   WARN 

После всех настроек перезапустить postfix и послать себе почту для проверки:

#!bash
/etc/init.d/postfix restart
mail -s "postfix test from host "\`hostname\` user@examle.com </dev/null

cron-apt

#!bash
aptitude install cron-apt

В /etc/cron-apt/config добавить свой адрес и условия отсылки:

MAILTO=user@example.com  
MAILON=changes # error upgrade  changes output  always

В /etc/cron-apt/action.d/4-upgrade положить:

#!bash
echo "upgrade -y  -o quiet=2" >/etc/cron-apt/action.d/4-upgrade

logcheck

#!bash
aptitude install logcheck

/etc/cron.d/logcheck : изменить время на более частую проверку логов. Проверка происходит в течении нескольких секунд, так что отрицательный эффект только больше почты.

#!bash
joe /etc/cron.d/logcheck

@reboot         logcheck    if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck -R; fi  
**0-59/5** * * * *       logcheck    if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck; fi

Добавить самодельный файл с правилами

Добавить список отслеживаемых логов в /etc/logcheck/logcheck.logfiles (как минимум /var/log/mail.log или mail.err)

logrotate

В /etc/logrotate.d/rsyslog и некоторые другие файлы добавить и заменить стандартные команды на:

maxage 30
maxsize 100000
daily
dateext
olddir olddir
missingok
notifempty
compress     
delaycompress

dateext принудит logrotate создавать файлы с именем, включающим текущую дату (типа kern.log-20131206 ), вместо малопонятных kern.log.1 kern.log.2 kern.log.3

minsize принудит ежедневно ротировать только логи больше указанного размера. Если есть способ сохранения ротируемых логов на удалённом сервере, то minsize использовать нельзя во избежание сохранения на сервере-источнике коротких логов навсегда.

Подробности про logrotate - /linux-logrotate.html. После изменения всех настроек надо запустить проверку:

#!bash
logrotate /etc/logrotate.conf

fail2ban

#!bash
aptitude install fail2ban

rkhunter

#!bash
aptitude install rkhunter  
rkhunter --update
rkhunter --check

Дописать свою почту в /etc/rkhunter.conf

#!bash
joe */etc/rkhunter.conf*

ssh

В /etc/ssh/sshd_config добавить ограничение поиска в DNS имени хоста и ограничение на подключения:

UseDNS no  
AllowUsers  \*@10.1.\*.* *@192.168.0.1

mtr-tiny

Просто установить

#!bash
aptitude install mtr-tiny

webmin

Добавить в /etc/apt/sources.list (или в /etc/apt/sources.list.d/webmin.list):

#!bash
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Добавить ключи и установить:

#!bash
wget -O - http://www.webmin.com/jcameron-key.asc | apt-key add -
aptitude update
aptitude install webmin

если установлен webmin, то желательно сделать его не-автозапускаемым:

#!bash
update-rc.d  -f webmin remove

zabbix

#!bash
wget -O - http://repo.zabbix.com/zabbix-official-repo.key|apt-key add -
echo "deb http://repo.zabbix.com/zabbix/2.2/debian wheezy main contrib" >/etc/apt/sources.list.d/zabbix.list 
echo "deb http://repo.zabbix.com/zabbix/3.2/ubuntu xenial main contrib" >/etc/apt/sources.list.d/zabbix.list 
aptitude update
aptitude install zabbix-agent
aptitude install zabbix-server-mysql

monit

#!bash
aptitude install monit

rcconf - редактирование запускаемых при загрузке системы скриптов

#!shell
apt-get install rcconf

locales

#!shell
dpkg-reconfigure locales

Настройка времени

#!shell
dpkg-reconfigure tzdata

и выбираем UTC

swap

Если нужно.

#!shell
dd if=/dev/zero of=/swapfile bs=1M count=500
mkswap /swapfile
swapon /swapfile
chown root:root /swapfile
chmod 0600 /swapfile
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

Всякие полезные пакеты

#!shell
aptitude install build-essential deborphan htop iftop nmap dig dnsutils netcat lynx wget curl 
aptitude install tcpdump mc rcconf ntp monit zabbix-agent  mtr-tiny  fail2ban cron-apt postfix-pcre postfix

Ссылки на сторонние ресурсы

 Особенности установки VPS от DigitalOcean

Leave a Reply