Differences between revisions 112 and 113
Revision 112 as of 2013-10-29 05:03:42
Size: 64229
Editor: ?SergeyBurkov
Comment:
Revision 113 as of 2014-02-15 15:09:32
Size: 64313
Editor: LukeCall
Comment:
Deletions are marked like this. Additions are marked like this.
Line 81: Line 81:
Устанавливаем DebPkg:unattended-upgrades: Устанавливаем DebPkg:unattended-upgrades ([[https://wiki.debian.org/UnattendedUpgrades|wiki.debian.org/UnattendedUpgrades]]):

http://www.debian.org/logos/openlogo-nd-50.png http://www.debian.org/Pics/debian.png

Translation(s): - Русский


Подготовка свежеустановленной системы Debian к использованию

Этот раздел поможет наглядно подготовить чистую систему Debian к полноценному использованию в качестве того, что вы выберите сами. Нижеуказанные настройки рекомендую выполнять в пошаговом режиме. Каждый блок проверен, теория, практика и описания подаются кратко, без излишеств. Если мало, подробности ищите в Google.

Настоятельно рекомендую использовать только чистый Debian, т.е. без "заранее подобранных наборов ПО".

tasksel.jpg

Такой подход наиболее полно реализует преимущества Debian перед Ubuntu и Gentoo - оптимальное сочетание затрат на установку\настройку к эффективности\захламлённости ненужным ПО.


Разработка страницы завершена, новые рецепты добавляются по мере их изучения и отладки


Если есть что добавить, то смело дополняйте разделы новой информацией. Наши опечатки и ошибки в статье также правте смело, не нужно сообщать об этом на почту, просьба соблюдать стилевое оформление этой страницы и использовать разделители разделов (серые линии различной толщины).


Contents

  1. Подготовка свежеустановленной системы Debian к использованию
  2. Система
    1. Политика установки ПО
    2. Дата и время
      1. Настройка
      2. Синхронизация локально
      3. Синхронизация для клиентов в сети
    3. Автоматическое обновление
    4. Пользователи и группы
      1. sudo
    5. Вход в систему
      1. Автологин в консоли с mingetty
      2. Автологин в консоли с стандартным agetty
    6. Локализация
      1. Глобальные параметры локализации системы
      2. Кириллица в консоли
      3. Удаление неиспользуемых файлов локализации
    7. Загрузчик
      1. GRUB2
    8. Управление запуском служб
    9. Сглаживание шрифтов
  3. Аппаратное обеспечение
  4. Интернет и сети
    1. Сетевые настройки
      1. Базовая настройка
      2. Настройка в консольном интерфейсе wicd-curses
    2. Firewall (брандмауэр, межсетевой экран и т.п.)
      1. Общие сведения
      2. Apf-firewall
      3. Vuurmuur
        1. Установка
        2. Настройка rsyslog
        3. Настройка
        4. Подсчёт трафика
        5. Решение проблем.
    3. Диагностика DNS
    4. Нагрузка на сеть
    5. Анонимный доступ в интернет
    6. Динамическая регистрация в DNS
    7. Удаленный доступ к консоли
      1. Авторизация по ключам
        1. Генерация ключей
        2. Настройка сервера
        3. Настройка клиента
        4. Настройка Putty
      2. Усиленные настройки безопасности
      3. Параноидальные настройки безопасности (knock)
    8. Общий доступ к файлам
      1. Тorrent
      2. SMB (CIFS)
        1. Корзина
        2. Аудит
        3. Принтеры
        4. Web интерфейс для администрирования
  5. Работа в консоли
    1. Файловый менеджер
    2. Сессии в консоли
      1. Screen
    3. Просмотр процессов
    4. Просмотр больших текстов в консоли
    5. Вывод сообщений ядра в консоль
  6. Работа в X
    1. Эмулятор терминала
      1. guake
  7. Прочее
    1. SQL сервер
    2. Web-сервер
      1. Apache2
        1. Поддержка PHP5
      2. Lighttpd
        1. Поддержка PHP5
        2. Множество сайтов на одном сервере (virtual host)
        3. Лог доступа
  8. Примечания
    1. Примечание 1 (настройка aptitude)
    2. Примечание 2 (ошибка запуска сети)
    3. Примечание 3 (настройка мс)
    4. Примечание 4 (ошибка pcspkr)
    5. Примечание 5 (setfacl неподдерживаемая операция)

Система


Политика установки ПО


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

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

Запускем программу и настраиваем её параметры.

# aptitude --> F10 --> Параметры --> Предпочтения

См. примечание 1.


Дата и время


Настройка


С консоли время в системе можно установить так:

# date MMDDhhmmCCYY.ss
#или
# date --set 4/13/2004 
# date --set 14:46:27

Где MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды.


Синхронизация локально


Если вам не нужно раздавать время на другие машины, можете довольствоваться пакетом ntpdate, который не запускает свой демон при старте системы.

# aptitude install ntpdate
# ntpdate-debian
# ntpdate-debian -bs

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


Синхронизация для клиентов в сети


Устанавливаем ntp: - комплекс программ, позволяющих получить текущее время со специальных серверов в интернет и стать таким сервером для локальной сети.

# aptitude install ntp

По-умолчанию все настройки рабочие. Время забирается с сервера ntp.pool.org, служба автоматически синхронизирует время сразу после запуска. Настройки службы находятся в файле /etc/ntp.conf. Для включения возможности приёма запросов от клиентов в локальной сети на обновление времени нужно добавить строку

Пример для сети 192.168.0.xx

restrict 192.168.0.0 mask 255.255.255.0 trust notrap nomodify nopeer noquery

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

/etc/init.d/ntp restart

Далее можно прописывать IP адрес компьютера в качестве источника синхронизации.


Автоматическое обновление


Устанавливаем unattended-upgrades (wiki.debian.org/UnattendedUpgrades):

# aptitude install unattended-upgrades

Правим общие настройки обновления:

nano /etc/apt/apt.conf.d/50unattended-upgrades 

// Выбираем все источники обновлений
Unattended-Upgrade::Allowed-Origins {
        "${distro_id} stable";
        "${distro_id} ${distro_codename}-security";
        "${distro_id} ${distro_codename}-updates";
        "${distro_id} ${distro_codename}-proposed-updates";
};
// Список пакетов, которые не должны обновляться, у меня таких нет.
Unattended-Upgrade::Package-Blacklist {
//      "vim";
};
// Возможность оповещения об обновлении на почту пока отключаем.
//Unattended-Upgrade::Mail "root@localhost";
// Удаляем не нужные пакеты
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Автоматически перезагружаем систему, включаем
Unattended-Upgrade::Automatic-Reboot "true";
// Можно ограничить скорость загрузки к примеру в 70 кб в сек., отключаем
//Acquire::http::Dl-Limit "70";

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

nano /etc/apt/apt.conf.d/02periodic

// Включаем обновление
APT::Periodic::Enable "1";
// Проверяем обновления каждый 1 день
APT::Periodic::Update-Package-Lists "1";
// Отключаем загрузку пакетов без установки
APT::Periodic::Download-Upgradeable-Packages "0";
// Применяем обновления каждый 1 день
APT::Periodic::Unattended-Upgrade "1";
// Удаляем устаревшие установочные пакеты каждые 7 дней
APT::Periodic::AutocleanInterval "7";

Логи обновления смотрим тут - /var/log/unattended-upgrades/unattended-upgrades.log.

Указываем время выполнения обновления. Например каждый день в 6:25 утра:

nano /etc/сrontab

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Перезапускаем cron:

/etc/init.d/cron restart


Пользователи и группы


sudo


Устанавливаем sudo: - утилиту для временного получения root прав

aptitude install sudo

Добавляем пользователя в группу sudo

usermod -a -G sudo username

Для применения настроек пока приходится перезагружать систему

Для подробоностей - Гугл в помощь


Вход в систему


Автологин в консоли с mingetty


Устанавливаем Mingetty: - упрощённый вариант стандартной программы agetty, в задачи которой входит управление доступом к физическим и виртуальным терминалам.:

# aptitude install mingetty

Далее меняем строку настроек в консоли по-умолчанию, вместо root можно указать другой логин.

sed -i '/:2345/s/^/\#/; /:2345/a 1:2345:respawn:\/sbin\/mingetty --autologin root --noclear tty1' /etc/inittab

или вручную

nano /etc/inittab

#1:2345:respawn:/sbin/getty 38400 tty1
1:2345:respawn:/sbin/mingetty --autologin root tty1 linux
2:23:respawn:/sbin/getty 38400 tty2


Автологин в консоли с стандартным agetty


Стандартный менеджер входа agetty (util-linux) начиная с v.2.20 содержит функциональность mingetty

Далее настраиваем вход, вместо root пишем нужный логин

nano /etc/inittab

#1:2345:respawn:/sbin/getty 38400 tty2
1:2345:respawn:/sbin/getty --autologin root tty1 linux
2:23:respawn:/sbin/getty 38400 tty2


Локализация


Глобальные параметры локализации системы


Смотрим текущую локаль:

$ locale

Кроме LC_ALL все параметры должны быть ru_RU.UTF-8.

Если это не так, тогда запускаем настройку

# dpkg-reconfigure locales

Если системная локаль не применяется к пользователю, то стоит посмотреть файл настроек интерпретатора командной строки (bash, dash, ash) в домашнем каталоге пользователя.


Кириллица в консоли


См. примечания 2

Настраиваем кириллицу в консоли

Устанавливаем пакет console-cyrillic:

# aptitude install console-cyrillic

Настраиваем все параметры пакета:

# dpkg-reconfigure console-cyrillic


Удаление неиспользуемых файлов локализации


localepurge - утилита для удаления ненужных локализаций, документации и прочего. При установке пакета с помощью debconf выводится список языков в различных кодировках, отметить следует только нужные вам локализации. Рекомендуется сперва сделать backup системы и добавить к нужным английскую локализацию. В дальнейшем утилита будет автоматически запускаться и чистить файлы сразу после установки любых пакетов.

# aptitude install localepurge

Удаление происходит при запуске утилиты:

## localepurge
localepurge: Disk space freed in /usr/share/locale: 345340 KiB
localepurge: Disk space freed in /usr/share/man: 2060 KiB
localepurge: Disk space freed in /usr/share/gnome/help: 65770 KiB
localepurge: Disk space freed in /usr/share/omf: 435 KiB

Total disk space freed by localepurge: 413605 KiB

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

apt-get --reinstall install $(dpkg -S LC_MESSAGES | cut -d: -f1 | tr ', ' '
' | sort -u)


Загрузчик


GRUB2


Управление запуском служб


sysv-rc-conf: - утилита с curses интерфейсом, преназначенная для быстрого управления работой и запуском служб (демонов, сервисов). Очень удобна для просмотра установленных служб в системе.

# aptitude install sysv-rc-conf

Помимо настройки автозапуска, утилита позволяет в реальном времени запускать и останавливать имеющиеся в системе службы.


Сглаживание шрифтов


Смотрим здесь


Аппаратное обеспечение


Читаем здесь


Интернет и сети


Сетевые настройки


Базовая настройка


Этот метод настройки является самым гибким и функциональным, но требует ручной правки конфигурационных файлов.

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

Ищем нашу сетевую карту в списке:

# ifconfig -a

Для более детальной информации о сетевых картах можно воспользоваться специальными программами

Открываем файл конфигурации сети:

# nano /etc/network/interfaces

Строки, начинающиеся со слова "auto", используются для идентификации физических интерфейсов при их подьеме во время запуска ifup с опцией -a. (Эта опция используется сценариями загрузки системы.) Имена физических интерфейсов должны следовать за словом "auto" в той же строке. Может быть несколько строф "auto". ifup поднимет названные интерфейсы в порядке их перечисления.

Строки, начинающиеся с "allow-", используются для идентификации интерфейсов, которые должны быть подняты автоматически различными подсистемами. Это может быть сделано, например, с использованием команды "ifup --allow=hotplug eth0 eth1", которая будет поднимать только eth0 или eth1, если они перечислены в строке "allow-hotplug". Учтите, что "allow-auto" и "auto" - синонимы.

Если настройки статические, тогда, к примеру, заполняем так:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
           address 192.168.1.94
           network 192.168.1.0
           netmask 255.255.255.0
           broadcast 192.168.1.255
           gateway 192.168.1.1

Если настройки сети раздаются через DHCP, тогда, к примеру, заполняем по-другому:

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp 

Если необходимо использовать одновременно несколько IP адресов на одной сетевой карте, тогда, к примеру, добавляем строки:

auto eth0:1
iface eth0:1 inet static
           address 192.168.0.94
           network 192.168.0.0
           netmask 255.255.255.0
           broadcast 192.168.0.255

Для настройки DNS нужно редактировать файл /etc/resolv.conf

Статичный DNS, например:

nameserver 10.30.1.11 212.45.2.5
search gspk
domain bober.gspk

Динамический DNS по DHCP вносится в /etc/resolv.conf автоматически.


Настройка в консольном интерфейсе wicd-curses


wicd - cлужба управления проводными и беспроводными сетями для Linux с Qt, GTK+ и curses интерфейсами. Эта служба наиболее удобна, если часто возникает необходимость в быстром подключении к различным сетям.

После первого запуска wicd автоматические переключает все настройки сети на DHCP.

Для управления службой в консоли необходим curses клиент wicd-curses.

# aptitude install wicd-curses

Запускам настройку:

# wicd-curses

Для применения настроек необходимо нажать "Shift+C"


Firewall (брандмауэр, межсетевой экран и т.п.)


Общие сведения


Межсетевой экран - средство контроля и фильтрации сетевых соединений. В защищенной домашней или корпоративной сети установка firewall не актуальна и может принести больше вреда чем пользы. В случае если Ваш компьютер напрямую подключен к Интернет, то использование сетевого экрана просто обязательно. В Debian эта задача решается с помощью утилиты Iptables. Эту утилиту можно использовать в "чистом" виде путём ручного ввода команд в консоли, или запускать команды в самописном скипте, либо с помощью различных надстроек, облегчающих формирование сложных команд iptables. В зависимости от поставленной задачи каждый из способов имеет свои достоинства и преимущества.


Apf-firewall


Простой аскетичный аpf-firewall для быстрой защиты сервера без самописных скриптов.

Устанавливаем.

aptitude install аpf-firewall

Правим файл конфигурации

nano /etc/apf-firewall/conf.apf 

# чтобы через 5 минут фаерволл не перестал работать
DEVEL_MODE="0"

# Указываем что у нас монолитное ядро 
SET_MONOKERN="1" 

Сетевая которую будем защищать
IFACE_IN="eth0" 
IFACE_OUT="eth0"

# Это Открываем входящие TCP порты
IG_TCP_CPORTS="22"

# Это Открываем входящие UDP порты 
IG_UDP_CPORTS=""

# Отключаем фильтрацию на исходящих портах
EGF="0"

# Открываем исходящие TCP порты, если EGF="1"
EG_TCP_CPORTS="21,25,80,443,43"

# Открываем исходящие UDP порты, если EGF="1"
EG_UDP_CPORTS="20,21,53" 

Разрешаем запуск

nano /etc/default/apf-firewall 

RUN="yes"

Запускаем firewall

/etc/init.d/apf-firewall start


Vuurmuur


Vuurmuur - мощная свободная надстройка к iptables с curses интерфейсом. Псевдографический интерфейс значительно упрощает оперативную работу с сетевым экраном. К сожалению разработка программы продвигается очень медленно. Имеются deb пакеты в репозитории официального сайта. Раньше эти пакеты присутствовали в официальных репозиториях Debian, но были заброшены сопровождающим, что привело к их удалению. Программа полностью документирована и переведена на русский язык.


Аналогов даже близких по функциональности найдено не было. В итоге получаем что vuurmuur это единственный в современном linux интерактивный firewall менеджер c curses интерфейсом. Подобная функциональность оправдывает все усилия по его установке.


Пакеты установки можно взять с сайта разработчика и из репозиториев Ubuntu.

К сожалению оба варианта содержат в себе весьма досадные проблемы:

Репозиторий разработчика:

  • Проблемы отображения кириллицы с системной кодировкой UTF8
  • Собраны в бинарник только для i386

Ubuntu репозиторий:

  • init.d скрипт запуска, как я понял, имеет проблемы совместимости с Debian
  • В консоль постоянно сыпется мусор, который по-идее должен литься только в лог и то не всегда.

Компиляция пакетов - лишь один из вариантов решения проблемы. Оставим его профессионалам. А мы пойдем другим путём:

Основой будет пакет из Ubuntu, пару органов получим из пакета офф.сайта. Такой вот франкенштейн.


Установка


Устанавливаем утилиту просмотра сетевых соединений conntrack

aptitude install conntrack

Качаем 3 пакета из официальных репозиториев Ubuntu (пример для amd64)

wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/universe/v/vuurmuur/vuurmuur_0.7+debian-2_amd64.deb
wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/universe/libv/libvuurmuur/libvuurmuur0_0.7+debian-2_amd64.deb
wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/universe/v/vuurmuur-conf/vuurmuur-conf_0.7+debian-2_amd64.deb

Устанавливаем пакеты:

dpkg -i lib*
dpkg -i vuur*

Далее донором будет вполне подходящий i386 пакет из официального сайта.

Выкапываем тело из официального могильника

wget ftp://ftp.vuurmuur.org/debian/dists/squeeze/main/vuurmuur_0.7-1_i386.deb

Извлекаем внутренности

dpkg -x vuurmuur_0.7-1_i386.deb vrmr

Пересаживаем органы из одного тела в другое

cp vrmr/etc/init.d/vuurmuur /etc/init.d/vuurmuur
cp vrmr/etc/default/vuurmuur /etc/default/vuurmuur

Рисуем магическое заклинание

nano /etc/default/vuurmuur

VUURMUUR_START=1

И оживляем тело.

/etc/init.d/vuurmuur start

Установка завершена. 8)


Настройка rsyslog


Если оставить настройки rsyslog неизмеными, то messages лог будет забит сообщениями ядра о траффике. Перекинем этот поток в отдельный файл

nano /etc/rsyslog.conf

# *.*;auth,authpriv.none    /var/log/syslog
*.*;auth,authpriv.none;kern.!debug    /var/log/syslog
# И добавляем в конец
kern.=debug /var/log/vuurmuur/firewall.log

или одной строкой

sed -i '/\*.\*;auth/s/\(authpriv.none\)/\1;kern.!debug/' /etc/rsyslog.conf && echo "kern.=debug /var/log/vuurmuur/firewall.log" >> /etc/rsyslog.conf

Настраиваем vuurmuur (Настройки vuurmuur --> Ведение журналов)

vuurmuur_conf

vur 0.JPG

Перезапускаем rsyslog

/etc/init.d/rsyslog restart


Настройка


Запускаем конфигуратор

vuurmuur_conf

vur 1.JPG

1. Настраиваем пути к служебным утилитам Vuurmuur Config --> General

vur 2.JPG

2. Настраиваем interfaces, т.е. указываем с какими сетевыми картами будем работать.

Будьте внимательны - опция Active в настройках должна быть Yes, иначе Vuurmuur будет их игнорировать.

vur 3.JPG

3. Смотрим Services, если нет нужных добавляем свои (версия от Ubuntu не содержит служб вообще, но позволяет добавлять новые). Я добавил входящий порт для Web морды SWAT.

vur 4.JPG

4. Настраиваем Zones, т.е. делим и\или объединяем наши сети в "зонах" на "свои" и "чужие". Каждая "зона" может содержать несколько сетей, хостов (т.е. компьютеров в сети) и групп хостов. Я создал две.

vur 5.JPG

5. В каждую из "зон" я добавил по одной соответствующей ей сети: интернет

vur 6.JPG

  • и локальную:

vur 7.JPG

6. В "домашнюю зону" я добавил хост, т.к. для него будут отдельные правила доступа.

vur 8.JPG

7. Настраиваем "rules", т.е. правила доступа в сети. Ниже переброс портов на комп локальной сети временно отключен.

vur 9.JPG

vur 10.JPG

Настройки применяем в главном меню нажав F11.


Подсчёт трафика


В текущей стабильной версии подсчет трафика невозможен из-за бага


Решение проблем.


  • Все попытики соединений можно отследить в логах Logview --> Traffic.log.

  • Пробуйте работу с выключенным Vuurmuur.
  • Для проверки портов из интернет можно использовать ping.eu.
  • К уже настроенным Services в Vuurmuur нужно быть внимательным, т.к. они могут быть настроены с более узкими диапазонами портов (rdp, например).
  • Дополнительные возможности хорошо описаны на русском в /usr/share/doc/vuurmuur
  • Проверье опцию Асtive (нужно Yes)
  • Проверьте включено ли правило (нужно [х])
  • Подумайте как бы выглядело бы правило в самописном скрипте.
  • Гугл в помощь.


Диагностика DNS


Устанавливаем dnsutils: - получаем утилиту nslookup, позволяющую быстро диагностировать проблемы преобрзования доменных имен в IP адреса.

# aptitude install dnsutils

Пример использования: получаем IP адрес сервера lenta.ru. Если dns не работает, либо настроен неправильно, тогда получить такую информацию не удастся

root@tt400:~# nslookup lenta.ru
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   lenta.ru
Address: 81.19.85.116

Или более мощный варинант

dig @8.8.8.8 -p 53 lenta.ru 


Нагрузка на сеть


Устанавливаем nethogs: - получаем утилиту наглядно отображающую какой процесс насколько сильно и какую нагружает сетевую карту.

# aptitude install nethogs

nethogs1.JPG


Анонимный доступ в интернет


_В разработке

aptitude install tor


Динамическая регистрация в DNS


Устанавливаем ddclient: - службу, позволяющую привязать динамический IP от вашего провайдера к бесплатному домену второго уровня (например от dyndns.org)

Регистрируемся на сайте dyndns.org и в итоге бесплатно получаем username, пароль и доменное имя. Я выбрал себе ххххх.dyndns.org

aptitude install ddclient

При установке скармливаем конфигуратору имя, пароль и домен. Для проверки работы этой службы можно использовать сайт http://ping.eu

Теперь служба будет автоматически обновлять Ваш IP в DNS сервере при его изменении.


Удаленный доступ к консоли


Устанавливаем ssh: - комплекс программ, позволяющих соединяться с удалёнными машинами по защищённому каналу и выполнять команды в консоли:

# aptitude install ssh

Этот метапакет содержит программу клиента ssh и службу sshd, обрабатывающую входящие ssh подключения к вашему компьютеру.


Авторизация по ключам


Генерация ключей


Вариaнт 1 (подходит для putty и native ssh клиентов Linux)


Выбираем пользователя на сервере под которым будем логиниться в ssh. Например это будет "user". Входим с его правами в консоль. Далее генерируем ключи, при желании указываем пароль на создаваемый ключ.

ssh-keygen -t rsa -b 2048 -C "комментрий к ключу" -f /user/.ssh/newserver.key

В итоге получаем в "/user/.ssh/" два файла "newserver.key" и "newserver.key.pub"


Вариaнт 2 (для всех + проприетарный Bitvise Tunnelier)


К сожалению, я не нашёл способа сконвертировать OpenSSH ключи в понятный Tunnelier-у формат. Поэтому действовать будем от обратного.

На Windows машине запускаем Bitvise Tunnelier. На вклaдке "Login" выбираем раздел "Authentickation" --> "Use keypair manager". В новом окне жмём "Generate New ...", выставляем опции на свой вкус --> "Generate". Далее выбираем "Export" и сохраняем любым удобным способом публичный ключ в формате OpenSSH в файл /user/.ssh/newserver.key.pub на ssh сервере.

ssh2.JPG

Для использования в других ssh клиентах аналогично экспортируем и закрытый ключ. В итоге получаем в "/user/.ssh/" два файла "newserver.key" и "newserver.key.pub"


Настройка сервера


Перемещаем открытый ключ в список разрешённых ключей Например так

mv /user/.ssh/newserver.key.pub /user/.ssh/authorized_keys

Правим конфигурацию сервера

nano /etc/ssh/sshd_config

# Разрешаем авторизацию по парам ключей
PubkeyAuthentication yes
# Путь к списку отпечатков открытых ключей
AuthorizedKeysFile      %h/.ssh/authorized_keys

Проверяем права доступа, должно быть так

root@gtw:~# ls -g .ssh
итого 4
-rw------- 1 root 392 Мар 24 20:03 authorized_keys

Если права доступа отличаются, то выставляем правильные:

chmod 600 -R .ssh && chown root:root .ssh/authorized_keys

Перезапускаем сервер

/etc/init.d/ssh restart

При появлении проблем доступа смотрим лог

cat /var/log/auth.log | tail


Настройка клиента


Выбираем пользователя на клиенте под которым будем логиниться в ssh. Например это будет "user". Логинимся по юзером. Любым удобным способом копируем сгенерированный ранее файл newserver.key в папку /home/user/.ssh. Если хочется, чтобы ssh клиент подхватывал ключ автоматически, сохраняем ключ с новыми именем "id_dsa"

Выставляем права доступа, иначе ssh клиент проигнорирует ключ.

cd /home/user
chmod 700 ./.ssh
chmod 600 ./.ssh/newserver.key

Запускаем ssh клиента.

ssh -i /home/user/.ssh/newserver.key user@192.168.0.1

Всё должно работать.


Настройка Putty


К сожалению, Putty не понимает ключи в формате OpenSSH. Поэтому загружаем latest development snapshot Puttygen. Обычный Puttygen нам не подойдёт.

Скармливаем проге наш newserver.key (Conversions --> Import key), если нужно вводим пароль для доступа ключу. Получаем окно

ssh1.JPG

Если надо меняем комментарий и пароль доступа к ключу. В разделе "Parameters" рекомендую выбрать SSH-2 RSA и 2048 bits. Далее жмём "Save private key" и получаем ключ в формате ppk, пригодный для скармливания обычному Putty в разделе Сonnection --> SSH --> Auth


Усиленные настройки безопасности


Рекомендую следующие настройки

nano /etc/ssh/sshd_config

#Запрещаем вход под root
PermitRootLogin no
# Меняем порт по умолчанию - может помочь против поверхностного сканирования портов
Port 17854
# Указываем на каком IP слушать порт
ListenAddress 192.168.0.1
# Запрещаем вход по паролям, усложняет брутфорс
PasswordAuthentication no
# Запрещаем пустые пароли
PermitEmptyPasswords no
# Только root может авторизоваться по ssh
AllowUsers root
# Меняем стандартный порт, но мне больше нравится реализовывать это через port mapping
# Port 4422


Параноидальные настройки безопасности (knock)



Общий доступ к файлам


Тorrent


Устанавливаем transmission-daemon: - простой и не прожорливый до ресурсов torrent клиент.

# aptitude install transmission-daemon acl.

Останавливаем службу

/etc/init.d/transmission-daemon stop

Создаём папку для хранения загружаемых файлов

mkdir /mnt/data/downloads

Открываем полный доступ к папке только для пользователя debian-transmission

Если у Вас папка не на разделе ХFS, то смотрим примечание 5

setfacl -m u:debian-transmission:rwx /mnt/data/downloads

Правим файл конфигурации

nano /etc/transmission-daemon/settings.json

    "blocklist-enabled": false, 
    "download-dir": "/mnt/data/downloads", 
    "encryption": 1, 
    "peer-port": 52413, 
    "preallocation": 1, 
    "rpc-authentication-required": true, 
    "rpc-enabled": true, 
    "rpc-password": "password", 
    "rpc-port": 8091, 
    "rpc-username": "user", 
    "rpc-whitelist-enabled": false, 

Чтобы не засорять daemon.log настраиваем вывод в отдельный лог файл:

mkdir -p /var/log/transmission
echo > /var/log/transmission/transmission.log
setfacl -m u:debian-transmission:rwx /var/log/transmission

Указываем путь к лог файлу (можно и в /dev/zero)

nano /etc/default/transmission-daemon
...
OPTIONS="--config-dir $CONFIG_DIR --logfile /var/log/transmission/transmission.log"

Запускаем службу для применения новых настроек

/etc/init.d/transmission-daemon stop start

Далее можно управляеть загрузками по адресу http:\\ip_сервера:8091, либо с помощью клиентских программ. Также не забываем открыть порт 52413 для входящих соединений.


SMB (CIFS)


Устанавливаем samba: - набор утилит и служб, которые реализуют протокол SMB/CIFS в системах Unix, позволяя обслуживать запросы к файлам и принтерам

Устанавливаем

aptitude install samba samba-common-bin acl:
dpkg-reconfigure samba
dpkg-reconfigure samba-common

Выставляем базовые настройки:

nano /etc/samba/smb.conf

[global]
# сначала требуем вход с локальными логином и паролем клиента
security = user
# Если будет получен неправильный пароль, то клиенту будет дан гостевой доступ.
map to guest = Bad Password
# Принуждаем клиентов заходить под своим именем
client schannel = Yes
# Используем защищенную процедуру аутентификации
server schannel = Yes
# Работает только на нужной сетевой карте
interfaces = eth1
# Чтобы корректно отображались имена файлов, заканчивающиеся на точку
mangled names = no

Далее для примера решаем 2 типовые задачи:

1. Открываем папку для любых пользователей с правом на запись.

Создаём папку и выставляем разрешения

mkdir /mnt/data/share && chmod 777 /mnt/data/share

Вносим новые настройки в файл /etc/samba/smb.conf

# nano /etc/samba/smb.conf

[share]
path = /mnt/data/share/
browsable = yes
read only = no
guest ok = yes

2. Открываем папку только для пользователя Ivan с правом на запись.

Смотрим список пользователей в системе и в БД samba

cat /etc/passwd | cut -d: -f1
pdbedit -L

Создаём локального пользователя без права входа в систему и задаем пароль

useradd -c "Ivan" -m -g users Ivan -s /bin/false && passwd Ivan

Создаём пользователя в базе пользователей samba.

smbpasswd -a Ivan

Автоматически для пользователя будет создана и расшарена домашняя папка /home/Ivan доступная по сети только ему. Если надо отменяем расшаривание домашних папкок, удаляя или комментируя раздел [homes] в /etc/samba/smb.conf

Создаём папку и выставляем разрешения

Если у Вас папка не на разделе ХFS, то смотрим примечание 5

mkdir /mnt/data/doc && setfacl -m u:Ivan:rwx /mnt/data/doc

Вносим новые настройки в файл /etc/samba/smb.conf

# nano /etc/samba/smb.conf

[doc]
path = /mnt/data/doc/
browsable = yes
read only = no
guest ok = no

Перезапускаем samba для применения новых настроек

smbcontrol smbd reload-config

Если надо смотрим подключенных к шарам пользователей

smbstatus


Корзина


Добавляем строки в раздел [global]

nano /etc/samba/smb.conf

recycle:repository = .deleted/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 0
recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.~??|*.trace
recycle:exclude_dir = /tmp|/temp|/cache
recycle:noversions = *.doc|*.ppt|*.dat|*.ini

Добавляем к каждой из выбранных расшаренных папок строки (или лишь один раз в [global]):

nano /etc/samba/smb.conf
...
vfs object = recycle

Примечание: наличие опции "vfs object" в настройках шары полностью игнорирует опцию "vfs object" в разделе [global] Перезапускаем samba для применения новых настроек

/etc/init.d/samba restart

Теперь в каждой так настроенной шаре при удалении создаться каталог .deleted/пользователь и в нём будут храниться все удалённые файлы. Чистить эту «Корзину» нужно вручную


Аудит


Можно будет узнать что, где, когда и кто сделал на Samba шаре.

nano /etc/samba/smb.conf
...
[global]
...
#Отключаем запись сообщений в syslog.
syslog = 0
#Количество сообщений, записываемых в лог-файлы, для всех VFS модулей.
log level = 0 vfs:2
# Снимаем ограничение на max размер log файла.
max log size = 0

# Добавляем модуль к "vfs objects" модуль аудита
vfs objects = full_audit
# Указываем дополнительные параметры модулю full_audit. Префикс, сообщений в лог-файле,каждая строка будет начинаться с user|ip_adress
full_audit:prefix = %u|%I
#Какие ошибки должны отображаться в лог-файле: none не протоколируем ошибки.
full_audit:failure = none
#Действия пользователей, которые записываются в лог-файл:
full_audit:success = connect, open, mkdir, rmdir, unlink, write, rename
full_audit:failure = connect, open, mkdir, rmdir, unlink, write, rename
#Параметры, позволяющие управлять записью в журналы демоном syslogd:
full_audit:facility = local5
full_audit:priority = notice

Вместо [global] все строки, начиная с vfs objects можно добавить в описание шары. В этом случае аудит будет проводиться только для этого ресурса.

Далее переносим лог аудита из /var/log/syslog в /var/log/samba/audit.log

Для этого правим /etc/rsyslog.conf

nano /etc/rsyslog.conf

#*.*;auth,authpriv.none           -/var/log/syslog
*.*;local5,auth,authpriv.none     -/var/log/syslog

local5.notice                   -/var/log/samba/audit.log

В последнюю очередь настраиваем ротацию логов чтоб audit.log не разрастался и был удобен для поиска нужного события

nano /etc/logrotate.d/samba-audit

/var/log/samba/audit.log {
dateext
compress
copytruncate
daily
missingok
notifempty
rotate 300
}

И перезапускаем samba для применения новых настроек

smbcontrol smbd reload-config


Принтеры


Сперва настраиваем принтер

Далее вносим настройки:

nano /etc/samba/smb.conf

[global]
...
load printers = yes
printing = cups
printcap name = cups
...
[printers]
browseable = yes
printable = yes
guest ok = yes

Перезапускаем samba для применения новых настроек

smbcontrol smbd reload-config

Далее для Windows клиентов принтер устанавливается также, как и любой другой расшаренный из Windows принтер


Проблемы, которые не удалось решить


  • Подключённый через samba принтер в Windows оснастке всегда будет иметь статус "Нет доступа, подключиться не удалось." При этом принтер вполне успешно будет печатать.
  • Из-за ошибки result was WERR_UNKNOWN_PRINTER_DRIVER не удалось обеспечить автоматическую установку драйверов из print$. Интеграция драйверов проводилась по Руководству


Web интерфейс для администрирования


Устанавливаем swat: - веб-инструмент управления Samba.

Примечание - после установки SWAT 2:3.5.6 аккуратно подхватывает настройки из smb.conf, вносит свои и удаляет ВСЕ параметры которые система использует по-умолчанию. Очень полезный способ наглядного изучения многих настроек Samba

Устанавливаем swat и документацию к samba

aptitude install swat samba-doc

После установки SWAT будет доступен по адресу http:\\ip_сервера:901.

Для применения внесённых изменений в SWAT изменений нужно на вкладке STATUS нажать кнопку "Перезапустить всё"

Совместная работа с аудитом и корзиной не тестировалась


Работа в консоли


Файловый менеджер


Устанавливаем Midnight commander mc: - утилита ставшая стандартом де-факто для быстрой навигации по файловой системе компьютера:

aptitude install mc

См. примечание 3


Сессии в консоли


Screen


Устанавливаем screen: - утилиту-мультиплексор, предоставляющую пользователю доступ к нескольким консолям в рамках одной сессии.:

# aptitude install screen

Далее настраиваем:

nano /etc/screenrc

# Отключаем приветствие
startup_message off
# Производить отключение сессии при разрыве связи с терминалом
autodetach on
# Включаем строку состояния
hardstatus on
# Параметры строки состояния
hardstatus alwayslastline "%{+b wk} %c $LOGNAME@%H %=[ %w ] "

или одной командой:

sed -i 's/^#startup_message.*/startup_message off/; s/^#autodetach.*/autodetach on/; s/^hardstatus off.*/hardstatus on/; s/^hardstatus string.*/hardstatus alwayslastline "%{+b wk} %c $LOGNAME@%H %=[ %w ] "/' /etc/screenrc


Просмотр процессов


Устанавливаем htop: - "Диспетчер задач" для нашей системы

# aptitude install htop


Просмотр больших текстов в консоли


Устанавливаем less: - позволяет прокручивать текст на экране вверх\вниз

# aptitude install less

Пример использования

# ifconfig -a | less
     Клавиши ↑ и ↓ позволят прокручивать текст
     Для выхода нужно нажать Esc


Вывод сообщений ядра в консоль


По-умолчанию все сообщения ядра выводятся в консоль, что может мешать нормальной работе. Это можно отключить

nano /etc/sysctl.conf

#Расскоментируем строчку
kernel.printk = 3 4 1 4

Или одной командой

sed -i '/kernel.printk/s/#//' /etc/sysctl.conf


Работа в X


Эмулятор терминала


guake


Устанавливаем guake: - удобный терминал для Х. Достоинства: вкладки, горячие клавиши,

# aptitude install guake


Прочее


SQL сервер


Устанавливаем mysql-server: - попyлярный сервер БД, требует не менее 256 МБ памяти. Необходим для множетсва Web интерфейсов. Устанавливаем

aptitude install mysql-server mysql-client

Не забываем написать где-нибудь пароль root доступа к серверу БД.


Web-сервер


Apache2


Устанавливаем apache2: - самый функциональный и популярный Web сервер в мире. Рекомендуется для отдачи динамического содержимого. Также рекомендуется новичкам, т.к. многие Web интерфейсы (например Zabbix, Mantiss и т.д.)по-умолчанию подстроены именно по него.

Сперва нужно определиться, что нам важнее - стабильность или скорость? Если скорость тогда так

aptitude install apache2-mpm-worker apache2

если надёжность и совместимость, то

aptitude install apache2-mpm-prefork apache2

Далее можно очень просто открыть доступ к файлам по протоколу http.

Например хотим открыть доступ к /mnt/data/

ln -s /mnt/data /var/www

Далее в браузере открываем адрес http://ip_адрес/data


Поддержка PHP5


Устанавливаем php5: - скриптовый язык программирования общего назначения. Необходим для множества Web-интерфейсов.

aptitude install php5 libapache2-mod-php5

Перезапускаем Apache2

/etc/init.d/apache2 restart

Создаём файл для проверки

nano /var/www/test.php

# test.php
<?php phpinfo(); ?>

Или одной командой

echo "# test.php" > /var/www/test.php && echo -n "<?php phpinfo(); ?>" >> /var/www/test.php

Далее в браузере открываем адрес http://ip_адрес/test.php. Если всё работает, то увидим много интересного.


Lighttpd


Устанавливаем lighttpd: - быстрый и простой Web сервер. Рекомендуется для отдачи статического содержимого.

aptitude install lighttpd

Настройки по-умолчанию вполне работоспособны и находятся в файле /etc/lighttpd/lighttpd.conf

Далее можно очень просто открыть доступ к файлам по протоколу http.

Например хотим открыть доступ на чтение /mnt/data/

ln -s /mnt/data /var/www

Далее в браузере открываем адрес http://ip_адрес/data


Поддержка PHP5


Работа PHP обеспечивается с помощью FastCGI

aptitude install php5-cgi

Чтобы обеспечить работу PHP5 в Lighttpd, открываем /etc/php5/cgi/php.ini и раскомментируем строку cgi.fix_pathinfo=1:

nano /etc/php5/cgi/php.ini

cgi.fix_pathinfo=1

или одной командой

sed -i '/cgi.fix_pathinfo=1/s/;//' /etc/php5/cgi/php.ini

Далее включаем поддержку

lighttpd-enable-mod fastcgi 
lighttpd-enable-mod fastcgi-php

При этом создаётся символическая ссылка к файлу /etc/lighttpd/conf-enabled/10-fastcgi.conf в каталоге /etc/lighttpd/conf-available

Смотрим результат:

ls -l /etc/lighttpd/conf-enabled

Перезапускаем Lighttpd

/etc/init.d/lighttpd force-reload

Создаём файл для проверки

nano /var/www/test.php

# test.php
<?php phpinfo(); ?>

Или одной командой

echo "# test.php" > /var/www/test.php && echo -n "<?php phpinfo(); ?>" >> /var/www/test.php

Далее в браузере открываем адрес http://ip_адрес/test.php. Если всё работает, то увидим много интересного.


Множество сайтов на одном сервере (virtual host)


Создаём папки для сайтов

mkdir /var/www/firstsite.home
mkdir /var/www/secondsite.home

Создаём страницы заглушки

cd /var/www/
echo 'Welcome on firstsite.home server!' > firstsite.home/index.html
echo 'Welcome on secondsite.home server!' > secondsite.home/index.html

Добавляем строки в файл настроек /etc/lighttpd/lighttpd.conf. Оба примера демонстрируют 2 разных способа описания виртуальных сайтов.

$HTTP["host"] == "(\w+\.)?firstsite.home" {
server.document-root = "/var/www/test.home/"
}

$HTTP["host"] == "(secondsite.home|www.secondsite.home" {
server.document-root = "/var/www/secondsite.home/"
server.errorlog = "/var/log/lighttpd/secondsiteError.log"
accesslog.filename = "/var/log/lighttpd/secondsiteAccess.log"
}

Перезапускаем Web сервер

/etc/init.d/lighttpd restart

Настраиваем dns в файле HOSTS или на DNS сервере Пример для dnsmasq - добавляем строки в dnsmasq.conf

address=/firstsite.home/192.168.0.100
address=/secondsite.home/192.168.0.100

Перезапускаем dns сервер

/etc/init.d/dnsmasq restart


Лог доступа


Включаем модуль accesslog

lighttpd-enable-mod accesslog

Перезапускаем Lighttpd

/etc/init.d/lighttpd force-reload

Лог доступа смотрим в /var/log/lighttpd/access.log


Примечания



Примечание 1 (настройка aptitude)


По-умолчанию aptitude устанавливает рекомендумемые пакеты. Если это не нужно, к консольной команде установки следует добавить ключ "-R", либо в curses интерфейсе в настройках запретить автоустановку.

}}}


Примечание 2 (ошибка запуска сети)


Если установка проводилась по сети с настройкой по DHCP, то после перезагрузки сетевой интерфейс eth0 может не запуститься автоматически, а значит вы не сможете устанавливать новые пакеты из сети. Для решения проблемы настраиваем eth0:

 nano /etc/networking interfaces
     Перед строкой "iface eth0 inet dhcp" добавляем новую строку "auto eth0"

Применяем настройки:

# /etc/init.d/networking restart


Примечание 3 (настройка мс)


Яркие синие цвета в mc некоторым уже могли надоесть. Чтобы изменить цвета нужно закрыть mc (чтобы настройка не затёрлась самим мс ). Папка .mc создаётся в домашней директории вашего пользователя при первом запуске mc.

sed -i 's/^base_color=.*/base_color=normal=cyan,default::selected=black,cyan:directory=cyan,default:marked=brightgreen,default:errors=red,default:marked=yellow,default:executable=brightred,default:marked=brightgreen,default:link=grey,default:marked=brightgreen,default:device=brightmagenta,default:marked=brightgreen,default:menuhot=black,cyan:menusel=cyan,black:menuhotsel=gray,black:menu=black,cyan:helpnormal=cyan,black:editnormal=cyan,black:editbold=yellow,black:editmarked=cyan,black/; s/^confirm_delete=1*/confirm_delete=0/; s/^confirm_exit=1.*/confirm_exit=0/' /root/.mc/ini


Примечание 4 (ошибка pcspkr)


В Debian 6 при запуске ядро по-умолчанию пытается загрузить уже задействованный модуль системного динамика, о чём и выдает ошибку. Исправляем баг.

echo "blacklist pcspkr" >> /etc/modprobe.d/blacklist.conf


Примечание 5 (setfacl неподдерживаемая операция)


Для устранения ошибки файловая система должна быть смонтирована с опцией acl. Для XFS эта опция применяется по-умолчанию.