Установка подчинённого сервера

Итак, приступим...
(сразу оговорюсь - ставил на Ubuntu 9.10):

Место выделенное на диске:
swap – 512 Мб
/ - 6 Гб (реально используется 1.8 Гб)
/var/log – 3.5 Гб (реально используется 152 Мб)
Всего 10 Гб (весь диск)

1. Устанавливаем сервер
2. Настраиваем сетевой интерфейс:

$sudo nano -w /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.10.10.1
  netmask 255.255.255.0
  network 10.10.10.0
  broadcast 10.10.10.255
  gateway 10.10.10.2

3. Настраиваем DNS:

$sudo nano -w /etc/resolv.conf

domain Ваш домен
search Ваш домен
nameserver ip-адрес вашего dns сервера
nameserver ip-адрес вашего dns сервера (таких записей может быть несколько)

после чего перезапускаем сеть и проверяем всё ли работает.

$sudo /etc/init.d/networking restart
$ping -c3 ya.ru

4. Натсраиваем firewall

$sudo iptables -F
$sudo iptables -P INPUT DROP
$sudo iptables -P OUTPUT ACCEPT
$sudo iptables -P FORWARD DROP
$sudo iptables -A INPUT -m -state --state INVALID -j DROP
$sudo iptables -A OUTPUT -m -state --state INVALID -j DROP
$sudo iptables -A INPUT -m -state --state RELATED,ESTABLISHED -j ACCEPT
$sudo iptables -A INPUT -i lo -j ACCEPT
$sudo iptables -A INPUT -i lo -j ACCEPT
$sudo iptables -A INPUT -p icmp -i eth0 -j ACCEPT
$sudo iptables -A INPUT -p tcp -i eth0 -m multiport --dports 22,67,68 -j ACCEPT

сохраним настройки в файл

#iptables-save > /etc/firewall.conf

Создадим скрипт для автоматического подъёма правил

$sudo nano -w /etc/network/if-pre-up.d/00-iptables

#!/bin/bash
iptables-restore < /etc/firewall.conf

Сделаем его исполняемым

$sudo chmod +x /etc/network/if-pre-up.d/00-iptables

5. Настраиваем apt

$sudo nano -w /etc/apt/apt.conf

Acquire::http::Proxy "http://ip-address:port/";

либо можно сделать файлик с таким же содержимым по пути /etc/apt/apt.conf.d/proxy
не забудьте про /etc/apt/sources.list

$sudo aptitude update
$sudo aptitude dist-upgrade

6. Накатываем пакеты.

$sudo aptitude install most mc ssh exim4 heirloom-mailx dhcp3-server ntpdate sysv-rc-conf

7. Перенаправляем лог DHCP-сервера

$sudo mkdir /var/log/dhcp
$sudo touch /var/log/dhcp/dhcp.log

Разбираемся с демоном rsyslogd

$sudo nano -w /etc/rsyslog.d/50-default.conf

local7.debug /var/log/dhcp/dhcp.log

Рестартуем сервис

$sudo service rsyslog restart

8. Подключаемся к проекту ManyDHCP.
Скрипт для обслуживания новых настроек

$sudo nano -w /root/ManyDHCP-monitor

#!/bin/bash
#Script for managing DHCP server via ManyDHCP programm

if [ -e /home/pk/dhcpd.conf ] ; then
cd /etc/dhcp3/;
tar -czf /var/log/dhcp-old-conf/dhcpd$(date +"_%Y-%m-%d_%H:%M:%S").conf.tgz dhcpd.conf
mv /home/pk/dhcpd.conf /etc/dhcp3/dhcpd.conf;
sleep 2;
/etc/init.d/dhcp3-server force-reload
sleep 10;
ps aux|grep dhcp|mail -s "DHCP-server on Derbenevskoy" -a /etc/dhcp3/dhcpd.conf it-cfg@domain.ru
echo `date +"%Y-%m-%d_%H:%M:%S"` "Проверка на наличие нового конфига => файл найден, изменения произведены"
else echo `date +"%Y-%m-%d_%H:%M:%S"` "Проверка на наличие нового конфига => файл не найден"
fi

Скрипт для периодической проверки занятости диска

$sudo nano -w /root/Disk-monitor

#!/bin/bash
#Script for monitoring disk

find /var/log/dhcp-old-conf/ -name "dhcpd*.tgz -mtime +30 -delete"
df -h|mail -s "Sizes on disk, DHCP-server on Derbenevskoy" it-cfg@domain.ru

Меняем права запуска на файлы и делаем служебные директории и файлы

$ sudo chown root:root /root/ManyDHCP-monitor
$ sudo chown root:root /root/Disk-monitor
$ sudo chmod +x /root/ManyDHCP-monitor
$ sudo chmod +x /root/Disk-monitor
$ sudo mkdir /var/log/dhcp-old-conf
$ sudo mkdir /var/log/manydhcp
$ sudo touch /var/log/manydhcp/manydhcp.log

9. Делаем задания в crontab

$ sudo crontab -u root -e

*/15 * * * * /bin/bash /root/ManyDHCP-monitor >> /var/log/manydhcp/manydhcp.log
15 12 1 1-12 * /bin/bash /root/Disk-monitor > /dev/null 2>&1

sudo nano /etc/cron.daily/ntpdate

#!/bin/bash
ntpdate 172.30.1.6

Делаем файл исполняемым

#chmod 755 /etc/cron.daily/ntpdate

Говорим демону Cron, что у него обновились задания

$ sudo /etc/init.d/cron reload

10.Настраиваем Logrotate

$sudo nano -w /etc/logrotate.d/manydhcp

/var/log/manydhcp/manydhcp.log {
rotate 4
daily
compress
missingok
notifempty
create
}

$sudo nano -w /etc/logrotate.d/dhcp

/var/log/dhcp/dhcp.log {
rotate 4
daily
compress
missingok
notifempty
create
postrotate
  /usr/bin/killall -HUP syslogd
endscript
}

Проверяем работоспособность

$ sudo logrotate -d /etc/logrotate.d/manydhcp
$ sudo logrotate -d /etc/logrotate.d/dhcp

Включаем ротацию

$ sudo logrotate -v -f /etc/logrotate.d/manydhcp
$ sudo logrotate -v -f /etc/logrotate.d/dhcp

Настраиваем агента пересылки почты Exim4

$sudo dpkg-reconfigure exim4-config

я использую вариант: отправка почты через smarthost; локальная почта отсутствует

$sudo dpkg-reconfigure postfix (если используем posfix)

11. Покрасим консольный вывод манов

$sudo nano -w .bashrc

export MANPAGER="/usr/bin/most -s"

12.Подсветка типов файлов в консоли

$sudo nano -w .bashrc

alias l='ls --color=auto'
alias ll='ls -l --color=auto'
alias la='ls -la –color=auto'

13.Если у нас несколько сетевых интерфейсов, то нужно указать dhpc серверу какие из них нужно слушать

$ sudo nano -w /etc/default/dhcp3-server

INTERFACES="eth1 eth2 eth3 eth4"

Наброски по OpenSUSE 11.2

Для установки и конфигурирования основных параметров используем YAST, плюс правим несколько файлов:

# nano -w /etc/sysconfig/dhcpd

DHCPD_INTERFACE="eth0" (указываем демону какой интерфейс слушать)

# nano -w /etc/ssh/sshd_config

PasswordAutentication yes (разрешаем упр. серваку логиниться по паролю)

Рестартуем оба сервиса
Не забываем сказать

# chkconfig --set dhcpd 345

И на всякий случай: dhcpd.conf лежит по пути /etc/dhcpd.conf