Настройка Debian Lenny в качестве сервера
Устанавливаем Debian в конфигурации ("Базовая система"). Загружаемся.
Задача №1. Доступ в Internet через PPPoE.
Устанавливаем пакеты pppoe и pppoeconf. Последний запустит мастер, который спросит обо всём, необходимом для настройки соединения, и сразу его подключит. Можно после установки убедиться, что в системе появился новый сетевой интерфейс, с помощью команды ifconfig -a (у меня это был ppp0)
Задача №2. Делаем удалённый доступ к серверу.
Устанавливаем пакет openssh-server. После установки можно подключаться к нашему серверу удалённо через ssh (из Windows с помощью, например, программки putty)
Задача №3. Быстрая (начальная) настройка пакетного фильтра (файрвола) iptables.
Для начала создаём в каталоге /etc/network/if-pre-up.d (чтобы правила фильтрации сетевых пакетов применялись ещё до поднятия сетевых интерфейсов) файл iptables следующего содержания:
#! /bin/sh
iptables -F
iptables -X
iptables-restore < /etc/rc.firewall
Делаем этот файл исполняемым (иначе не будет работать). После этого создаём собственно правила. Вводим от имени root'a следующие команды:
Для очистки таблицы правил
iptables -F
iptables -X
Добавляем правила по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
Разрешаем доступ по интерфесу обратной петли
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Эти правила служат для того, чтобы для каждого разрешающего правила не пришлось прописывать обратное ему (для прохождения ответных пакетов). Короче говоря, позволяют входящие и исходящие соединения, инициированные уже установленными соединениями
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Далее действуем по мере необходимости (кому что нужно). Разрешаем доступ к серверу из локальной сети по протоколу ssh (у меня внутренний интерфейс eth1, внешний - eth0, через него устанавливается PPPoE-соединение ppp0)
iptables -A INPUT -p tcp -m tcp -i eth1 --dport 22 -j ACCEPT
Разрешаем пинговать сервер из локальной сети (чтобы понять, работает он или нет
)
iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -i eth1 -j ACCEPT
iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-reply -o eth1 -j ACCEPT
Разрешаем серверу доступ к внешним (интернетовским) DNS-серверам
iptables -A OUTPUT -p tcp -m tcp -o ppp0 --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp -o ppp0 --dport 53 -j ACCEPT
Разрешаем серверу доступ к внешним http-серверам (чтобы Debian мог скачивать обновления безопасности)
iptables -A OUTPUT -p tcp -m tcp -o ppp0 --dport 80 -j ACCEPT
Даём доступ к серверу по http из интернета
iptables -A INPUT -p tcp -m tcp -i ppp0 --dport 80 -j ACCEPT
Даём доступ к нашему серверу из интернета по протоколу ftp (с поддержкой пассивного режима)
iptables -A INPUT -p tcp -m tcp -i ppp0 --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -i ppp0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -i ppp0 --dport 1024:65535 --sport 1024:65535 -j ACCEPT
Теперь сохраняем наши правила в файл rc.firewall (если такой файл существует, можно задать другое имя, но тогда надо будет его указать в файле /etc/network/if-pre-up.d/iptables):
iptables-save > /etc/rc.firewall
Задача №4. Маршрутизация между сетями (локальной и интернетом).
Добавляем в файл /etc/rc.local строку:
echo 1 > /proc/sys/net/ipv4/ip_forward
Update: Можно вместо этого в файле /etc/sysctl.conf раскомментировать строчку net.ipv4.ip_forward=1
А в правила пакетного фильтра следующее:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j SNAT --to-source 12.34.56.78
(Здесь подразумевается, что адрес нашей локальной сети 192.168.0.0 с сетевой маской 255.255.255.0, а адрес внешнего интерфеса ppp0 - 12.34.56.78). И не забываем добавить новое правило в файл rc.firewall:
iptables-save > /etc/rc.firewall
Задача №5. Установка веб-сервера Apache с поддержкой PHP и MySQL.
Устанавливаеи пакеты apache2, libapache2-mod-php5 и php5-mysql. Всё остальное само установится по зависимостям. После установки Apache будет настроен таким образом, что будет показываться содержимое подкаталогов сервера. Избавиться от этого можно, исправив файл /etc/apache2/sites-available/default (у меня почему-то эта настройка была в этом файле, а не в /etc/apache2/apache2.conf). Надо найти в нём секцию и исправить там строку Options +Indexes на Options -Indexes, тогда при попытке зайти в подкаталоги на веб-сервере будет выдаваться ошибка 403. Либо можно в подкаталогах создавать пустые файлы index.html
Задача №6. Установка фтп-сервера proftpd с поддержкой кириллицы в названиях файлов.
Стандартный proftpd версии 1.3.1, который содержится в репозиториях Lenny, не поддерживает различных кодировок. Поэтому скачиваем версию 1.3.2 с сайта proftpd. Распаковываем архив и устанавливаем отуда пакет proftpd-basic. Затем настраиваем сервер через файл /etc/proftpd/proftpd.conf. В нём, в частности, для того, чтобы на стороне клиента показывались кириллические имена файлов, необходимо включить перекодировку (пример для используемой на сервере кодировки UTF-8):
LangEngine on
UseEncoding UTF-8 CP-1251
Задача №7. Резервное копирование сервера.
Предположим, что у нас есть несколько разделов жесткого диска: для /, boot, usr, var, home, tmp и т. д.
Пользовательские данные можно копировать или архивировать без проблем в любое удобное время, поэтому создадим схему архивации системы (для восстановления после сбоя). В этом случае каталог /home архивироваться не должен, значит можно его использовать для хранения архивов (с последующей их записью куда-то на сторонний носитель) и с него же запускать скрипт архивации. Создадим в каталоге /home файл (например backup.sh) следующего содержания:
#!/bin/sh
# отключаем все не нужные разделы
umount /tmp
# далее перемонтируем все, что можно, в режиме "только для чтения"
mount -o remount, ro /boot
mount -o remount, ro /usr
mount -o remount, ro /var
# теперь создаем собственно сам архив
tar -czvf backup_`date +%y%m%d`.tar.gz / --exclude=/home --exclude=/proc --exclude=/sys
# перезагрузка компьютера, поскольку скрипт выполняется в runlevel 1
reboot
Если используются файловые системы ext2/ext3, то в команду tar можно добавить еще параметры: --exclude=/lost+found --exclude=/boot/lost+found --exclude=/usr/lost+found --exclude=/var/lost+found
Теперь делаем этот файл исполняемым. После чего можно выполнять архивацию, которая делается так: входим в систему с правами суперпользователя, даём команду init 1, вводим пароль суперпользователя на запрос, далее
cd /home
./backup.sh
Будет создан архивный файл с именем backup_<текущая дата в формате ггммдд>.tar.gz и компьютер перезагрузится
Далее делает каждый как ему удобнее - я например предпочитаю восстанавливать систему из архива (буде возникнет такая необходимость), загрузившись с Knoppix LiveCD/LiveDVD и распаковывая архив оттуда
http://konungr.ru (c) 25.11.2009-10.12.2009

