Настраиваем Ubuntu Server под HomeServer 2

left У меня уже есть статьи на эту тему и даже целых две. Но все меняется, дистрибутивы, предпочтения. И я много чего нового узнал, и хочу поделиться. Тем самым я хочу поддержать "свежесть" этой серии статей. Так же в этом How To я кратко рассмотрю некоторые скрипты, утилиты и еще много чего интересного. Как всегда я буду пытаться предоставить информацию в доступном виде для новичков.

Что нас ждет?

Довольно длинная статья. Я все же не буду переписывать все маны которые найду, а постараюсь просто дать ссылки на более удачные. Тем самым я хочу немного каталогизировать информацию в одном месте для попытки объять необъятное :-) А так же рассказать какие-то мелкие, но интересные вещи. Дистрибутив будет самый последний - Ubuntu Maverick 10.10

Установка Ubuntu Server

Здесь нет ничего сложного и можно разобраться самому. В крайнем случае есть статьи со скринами и полной информацией. Так же есть Вики, например про LVM. Единственное скажу, из дистрибутива лучше стоит выбрать 64битную версию, если конечно она поддерживается. Можно указать еще установку OpenSSH и Samba. Шифрование домашней директории накладывает лишние проблемы, такие как запрос пароля при загрузке ос. Если ваш сервер упадет, скажем из-за перебоя электроэнергии, то перезапуститься до вашего прихода он не сможет.

Сразу после установки нам надо обновить программы. При запросе пароля, вы не будете видеть как он вводиться, это нормально.

sudo apt-get update
sudo apt-get upgrade

Немного системе

Для получения в ubuntu прав Админестраторы (root'a), необходимо перед командами прописывать sudo. Или sudo su что бы зайти под root'ом. Основные конфиги лежат в /etc/. А управления restart, start, stop в /etc/init.d/{program} {command}. Если вы не знаете что за команда и как ей пользоваться, воспользуйтесь ключом --help, потом посмотрите man {program}.

Вам может быть очень неудобно по начало с терминалом, но это пройдет. Для удобства можно, даже нужно, поставить оболочку zsh. Она не только раскрасит консоль, но предоставит авто дополнение путей по tab, замену неправильных команд. И даже сварит кофе, если правда научите :-) Давайте поставим ее.

sudo apt-get install zsh
wget http://isudo.ru/2011/01/ubuntu-server-for-homeserver2/zsh.txt -O ~/.zshrc
chsh -s /usr/bin/zsh    # что бы поставить по default
zsh     # что бы войти в нее сейчас

Если все же вы ну никак не можете без чего нить визуального тогда вам нужен GNU Midnight Commander

sudo apt-get install mc
sudo mc

Ctrl+o - показать/убрать терминал. F4 - открыть для редактирования файл.

Кстати на сайте убунты есть очень хорошая документация - краткая и обо все. Единственное на англ, но зайти в лююом случае стоит.

Полезные команды

mkdir /var/scripts                      # создание директории
usermod -a -G root user                 # добавляем пользователя user в группу root
chmod 775 -R /var/www/default/          # Задаем права
chown www-data:www-data -R /var/www/    # Задаем владельца
./My\ first\ script                     # Файла  в данной директории 'My first script'
cd /../..                               # Переход в некоторую директорию.
cd ../                                  # Переход в директорию выше.
sudo reboot                             # И так думаю понятно.
sudo shutdown -P now                    # И так понятно.

Точнее про chmod смотрим здесь А про chown тут

Первым делом сеть!

Если у вас стоит Router/DHCP, то скорее всего вам при установке не будет выдана настройка статического ip. Следовательно нам надо сделать это самим. Тут поможет родная поддержка. Для проверки самого состояния сети есть утилита ifconfig.

Удаленное управление

Тут мы подошли к самому интересному. Управление будет все тоже - через консоль. Но, теперь мы будем сидеть у себя за любимым компьютером, под любой операционной и наслаждаться прелестями копирование и вставления строк. Cтавим Open-ssh

sudo apt-get install openssh-server openssh-client

В общем настрайка его может на этом и окончиться, если у вас закрыт 22 порт из вне. Но все же стоит попыхтеть и закрыть дыры, ведь если подберут пароль - "прости, прощай" Читаем здесь. После настройки, задвигаем наш сервер в дальний угол. Качаем Pytty, запускаем, бьем ip, в вкладке Translation ставим UTF-8. Сохраняем сессию, жмем Open!

Монтирование дисков

Монтирование используется для реализации возможности динамически присоединять/отсоединять разделы диска к файловой системе во время работы операционной системы. Здесь и говорить нечего, все уже написано - кликаем

Переходим к установке ПО.

File Server

Для этих целей у нас есть Samba Server, о нем написано здесь.

FTP Server

В этот раз я поставил PureFTPd и MySQL. Все потому что конфиг намного более прозрачный, а главное очень гибкая работа с MySql. Посмотреть настройку можно тут. Кстати если не заработает, попробуйте поставить DontResolve в yes.

File Share

Если вам мало простого FTP, который еще многим и не понятен, и вам хочется web file share, то вам сюда. В статье я рассказал как объединить пользователей FTP и простой Web морды, гибко распределить права на запись, и многое другое.

Web Server

Большинство пользуются Apache'ем. У него много модулей, большинство php engines заточены под него. Но мне он совсем не нравится. Сложные конфиги, которые как я не пыхтел не смог ни разу нормально настроить, тяжелые процессы которые очень любят кушать память. В итоге я отказался в пользу Nginx. Это клевый легкий сервер, написанный кстати нашим соотечественником. Можно конечно еще и lighttpd, тоже хорош, кстати имеет побольше встроенных модулей нежели Nginx. Если вы решились на Nginx тогда вам сюда.

Torrent client

Тут все довольно сложно. Есть связка rtorrent+rutorrent, такая стояла у меня. Один из главных плюсов - то что можно менять имя папки в которую будет осуществляться закачка. Но такая связка тяжелая и сложная в установке. установка самого клиента, веб морда

С другой стороны есть думаю до боли родная utorrent server с оригинальной веб мородой. Минус в том, что программа еще в развитии и работает только под 32 битной ОС. Но без сомнений пользоваться уже можно.

Есть и третий вариант, легкий transmission. Веб морда очень проста, кстати заточена и под мобильные. У данного решения только один плюс, если вы поставите программы для удаленного управления. В настоящий момент я пользуюсь именно этим вариантом. И по одной очень важной причиной которая описана тут.

Сложно дать определенный совет. Первый вариант вряд ли заработает сразу в неопытных руках, второй легок в настройке, третий где-то между первыми двумя. В общем почитайте про каждый и решайте сами, но я бы посоветовал transmission.

Зашита

Fail2ban

Порыскав в сети я наткнулся на замечательную прогу. Работает просто - смотрит логи, и банит по iptables ботов подбираюших пароли к ssh, ftp, и другим. Ставить обязательно!

sudo apt-get install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.cp      # дублируем конфиг
sudo gedit /etc/fail2ban/jail.conf      # конфигим
sudo /etc/init.d/fail2ban restart

В настройках ничего военного нет. В начале файла. ignoreip - Добавляем ip через пробел, которые будут игнорироваться (свою статику например). bantime - время бана в секундах. maxretry - количесво попыток входа. Это все весчи, которые будут подставляться по дефолту. Так же я нашел в логах findtime - похоже это время между проверками логов, но я нигде не нашел подтверждение этого. Изначально стоит на 600. Если не боитесь можете поменять. Дальше меняем нужные сервисы с false на true. Также можно вставлять для каждого в отдельности параметры бана.

UFW

Ёше стоит задумать о защите портов. Для этого есть программа ufw, она уже по умолчанию установлена. Требуется только, включение, настройка, перезагрузка.

sudo ufw enable                 # включаем
sudo ufw default deny           # запрешаем все по умолчанию
sudo ufw allow [port]           # разрешить порт
sudo ufw allow [присет]         # Присеты смотри так: sudo ufw app list
sudo ufw delete allow [port]    # удалить предыдущею запись
sudo ufw allow 80/tcp           # разрешить порт 80 tcp
sudo ufw deny from [ip address] # запрет адреса
sudo ufw allow from 192.168.0.0/24 to any port 22 # разрешение с некоторых ip
sudo ufw status                 # выведет все настойки
man ufw                         # хелп

О автоматизации

Scripts

Обычно для автоматизации некоторых процессов в unix системах пишут bash cкрипты. И все было хорошо пока я не познал красоту python. Более серьезные доводы почему надо писать на python, а не на bash стоит посмотреть тут.

Так же вам могут понадобится вот такие библиотеки configparser, commands, argparse.

BackUp

Я таки написал человеческий скрипт для резервирования, вот он. Он легок в настройке и легко изменяем.

Послесловие

Тут описано многое, но далеко не все. Эта статью не претендует на "Guru" скорее на стартовый минимум. Если у вас есть дополнения и исправления, я с удовольствием их приму.

Categories: HowTo, Ubuntu Tags: