Differences between revisions 1 and 113 (spanning 112 versions)
Revision 1 as of 2011-03-13 20:40:08
Size: 2447
Editor: ?zorg
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 2: Line 2:
Подготовка чистой Debian 6 к использованию
(Страница находится в активной разработке)

<<TableOfContents(3)>>

= Локализация =
1. Глобальные параметры локализации системы:

Что такое локаль смотрите [[http://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C]].

Смотрим текущую локаль:
{{{
locale
||<tablestyle="width: 100%; text-align: center; border: 0px hidden"> {{http://www.debian.org/logos/openlogo-nd-50.png}} {{http://www.debian.org/Pics/debian.png}}||
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: - Русский -~
----
= Подготовка свежеустановленной системы Debian к использованию =

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

Настоятельно рекомендую использовать только чистый Debian, т.е. без "заранее подобранных наборов ПО".
||<tablestyle="width: 20%; text-align: center; border: 10px hidden"> {{attachment:tasksel.jpg}}||

Такой подход наиболее полно реализует преимущества Debian перед Ubuntu и Gentoo - оптимальное сочетание затрат на установку\настройку к эффективности\захламлённости ненужным ПО.
-----
__Разработка страницы завершена, новые рецепты добавляются по мере их изучения и отладки__
----------
Если есть что добавить, то смело дополняйте разделы новой информацией. Наши опечатки и ошибки в статье также правте смело, не нужно сообщать об этом на почту, просьба соблюдать стилевое оформление этой страницы и использовать разделители разделов (серые линии различной толщины).
----------
<<TableOfContents(10)>>
----------
= Система =
----------
== Политика установки ПО ==
----------
[[WikiPedia:ru:Aptitude|aptitude]] - локализованный менеджер пакетов с псевдографическим интерфейсом, который используется для наглядной и функциональной установки программ в Debian.

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

Запускем программу и настраиваем её параметры.
{{{
# aptitude --> F10 --> Параметры --> Предпочтения
}}}
См. примечание [[#prim1|1]].
----------
== Дата и время ==
------
=== Настройка ===
------
С консоли время в системе можно установить так:
{{{
# date MMDDhhmmCCYY.ss
#или
# date --set 4/13/2004
# date --set 14:46:27
}}}
Где MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды.
------
=== Синхронизация локально ===
------
Если вам не нужно раздавать время на другие машины, можете довольствоваться пакетом DebPkg:ntpdate, который не запускает свой демон при старте системы.
{{{
# aptitude install ntpdate
# ntpdate-debian
# ntpdate-debian -bs
}}}
Вторая команда выдает разницу во времени с дебиановскими серверами, а третья - однократно синхронизирует время на вашей машине с одним из них. Можно также использовать другие сервера.
------
=== Синхронизация для клиентов в сети ===
------
Устанавливаем DebPkg: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 адрес компьютера в качестве источника синхронизации.

----------
== Автоматическое обновление ==
----------
Устанавливаем DebPkg:unattended-upgrades ([[https://wiki.debian.org/UnattendedUpgrades|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 ===
----------

Устанавливаем DebPkg:sudo: - утилиту для временного получения root прав
{{{
aptitude install sudo
}}}
Добавляем пользователя в группу sudo
{{{
usermod -a -G sudo username
}}}
Для применения настроек пока приходится перезагружать систему

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

----------
== Вход в систему ==
----------
=== Автологин в консоли с mingetty ===
-----
Устанавливаем DebPkg: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 (DebPkg: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
}}}
---------
== Локализация ==
----------
=== Глобальные параметры локализации системы ===
-----
Смотрим текущую [[WikiPedia:ru:Локаль|локаль]]:
{{{
$ locale
Line 18: Line 200:
Запускаем настройку
{{{
$ dpkg-reconfigure locales
Если это не так, тогда запускаем настройку
{{{
# dpkg-reconfigure locales
Line 23: Line 205:

2. Поддержка кириллицы в консоли:

2.1 Настраиваем aptitude на быстрый выход и на отключение автоустановки нам ненужных, но рекомендуемых программ:

Что такое aptitude смотрите [[http://ru.wikipedia.org/wiki/Aptitude]].
{{{
aptitude
       "F10" --> "Параметры" --> "Предпочтения"
       1. "Настройки интерфейса" --> "Запрашивать подтверждение при выходе" --> "Выкл" (Снимаем крестик)
       2. "Работа с зависимостями" --> "Автоматически устанавливать рекомендуемые пакеты" --> "Выкл" (Снимаем крестик)
}}}
2.2 Настраиваем кириллицу в консоли

Что такое console-cyrillic смотрите [[http://packages.debian.org/squeeze/console-cyrillic]].

Устанавливаем пакет:
{{{
aptitude install console-cyrillic
}}}
В качестве шрифта рекомендую "Sans"
------
=== Кириллица в консоли ===
------
См. примечания [[#prim2|2]]

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

Устанавливаем пакет DebPkg:console-cyrillic:
{{{
# aptitude install console-cyrillic
}}}
Line 47: Line 219:
dpkg-reconfigure console-cyrillic
}}}


#= Служебные программы =
#= Настройка отображения консоли =
#= Файловые системы =
#= Установка программ =
#= Настройка сети =
# dpkg-reconfigure console-cyrillic
}}}
------
=== Удаление неиспользуемых файлов локализации ===
------
DebPkg: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 ===
----------
== Управление запуском служб ==
------
DebPkg:sysv-rc-conf: - утилита с curses интерфейсом, преназначенная для быстрого управления работой и запуском служб (демонов, сервисов). Очень удобна для просмотра установленных служб в системе.
  
{{{
# aptitude install sysv-rc-conf
}}}

Помимо настройки автозапуска, утилита позволяет в реальном времени запускать и останавливать имеющиеся в системе службы.
------------
== Сглаживание шрифтов ==
------------
[[ru/PatchCairo| Смотрим здесь]]
----------
= Аппаратное обеспечение =
----------
[[ru/Hardware | Читаем здесь]]
----------
= Интернет и сети =
----------
== Сетевые настройки ==
----------
=== Базовая настройка ===
-----
Этот метод настройки является самым гибким и функциональным, но требует ручной правки конфигурационных файлов.

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

Ищем нашу сетевую карту в списке:
{{{
# ifconfig -a
}}}

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

Открываем файл конфигурации сети:
{{{
# 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 ===
-----
DebPkg:wicd - cлужба управления проводными и беспроводными сетями для Linux с Qt, GTK+ и curses интерфейсами. Эта служба наиболее удобна, если часто возникает необходимость в быстром подключении к различным сетям.

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

Для управления службой в консоли необходим curses клиент DebPkg:wicd-curses.
{{{
# aptitude install wicd-curses
}}}

Запускам настройку:
{{{
# wicd-curses
}}}

Для применения настроек необходимо нажать "Shift+C"
------------
== Firewall (брандмауэр, межсетевой экран и т.п.) ==
------
=== Общие сведения ===
------
[[WikiPedia:ru:Межсетевой экран|Межсетевой экран]] - средство контроля и фильтрации сетевых соединений. В защищенной домашней или корпоративной сети установка firewall не актуальна и может принести больше вреда чем пользы. В случае если Ваш компьютер напрямую подключен к Интернет, то использование сетевого экрана просто обязательно.
В Debian эта задача решается с помощью утилиты [[WikiPedia:ru:Iptables|Iptables]]. Эту утилиту можно использовать в "чистом" виде путём ручного ввода команд в консоли, или запускать команды в самописном скипте, либо с помощью различных надстроек, облегчающих формирование сложных команд iptables. В зависимости от поставленной задачи каждый из способов имеет свои достоинства и преимущества.
------
=== Apf-firewall ===
------
Простой аскетичный DebPkg:а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
}}}
||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 0.JPG}}||

Перезапускаем rsyslog
{{{
/etc/init.d/rsyslog restart
}}}
----
==== Настройка ====
----
Запускаем конфигуратор
{{{
vuurmuur_conf
}}}
||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 1.JPG}}||

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

||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 2.JPG}}||

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

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

||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 3.JPG}}||

3. Смотрим Services, если нет нужных добавляем свои (версия от Ubuntu не содержит служб вообще, но позволяет добавлять новые). Я добавил входящий порт для Web морды SWAT.
||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 4.JPG}}||

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

||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 5.JPG}}||
5. В каждую из "зон" я добавил по одной соответствующей ей сети: интернет

||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 6.JPG}}||

 и локальную:

||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 7.JPG}}||

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

||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 8.JPG}}||

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

||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 9.JPG}}||
||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:vur 10.JPG}}||
Настройки применяем в главном меню нажав F11.
----
==== Подсчёт трафика ====
----
В текущей стабильной версии подсчет трафика невозможен из-за бага
----
==== Решение проблем. ====
----

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

 * Пробуйте работу с выключенным Vuurmuur.

 * Для проверки портов из интернет можно использовать ping.eu.

 * К уже настроенным Services в Vuurmuur нужно быть внимательным, т.к. они могут быть настроены с более узкими диапазонами портов (rdp, например).

 * Дополнительные возможности хорошо описаны на русском в /usr/share/doc/vuurmuur

 * Проверье опцию Асtive (нужно Yes)

 * Проверьте включено ли правило (нужно [х])

 * Подумайте как бы выглядело бы правило в самописном скрипте.

 * Гугл в помощь.
------
== Диагностика DNS ==
------
Устанавливаем DebPkg: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
}}}
<<Anchor(diag)>>
------
== Нагрузка на сеть ==
------
Устанавливаем DebPkg:nethogs: - получаем утилиту наглядно отображающую какой процесс насколько сильно и какую нагружает сетевую карту.
{{{
# aptitude install nethogs
}}}
||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:nethogs1.JPG}}||
------
== Анонимный доступ в интернет ==
------
___В разработке____
{{{
aptitude install tor
}}}
------
== Динамическая регистрация в DNS ==
------
Устанавливаем DebPkg:ddclient: - службу, позволяющую привязать динамический IP от вашего провайдера к бесплатному домену второго уровня (например от dyndns.org)

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

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

Теперь служба будет автоматически обновлять Ваш IP в DNS сервере при его изменении.
----------
== Удаленный доступ к консоли ==
------
Устанавливаем DebPkg: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 машине запускаем [[http://dl.bitvise.com/Tunnelier-Inst.exe|Bitvise Tunnelier]]. На вклaдке "Login" выбираем раздел "Authentickation" --> "Use keypair manager". В новом окне жмём "Generate New ...", выставляем опции на свой вкус --> "Generate". Далее выбираем "Export" и сохраняем любым удобным способом публичный ключ в формате OpenSSH в файл /user/.ssh/newserver.key.pub на ssh сервере.
||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment: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.
[[http://tartarus.org/~simon/putty-snapshots/x86/puttygen.exe|Поэтому загружаем latest development snapshot Puttygen]]. Обычный Puttygen нам не подойдёт.

Скармливаем проге наш newserver.key (Conversions --> Import key), если нужно вводим пароль для доступа ключу. Получаем окно
||<tablestyle="width: 50%; text-align: center; border: 0px hidden"> {{attachment:ssh1.JPG}}||
Если надо меняем комментарий и пароль доступа к ключу.
В разделе "Parameters" рекомендую выбрать SSH-2 RSA и 2048 bits.
Далее жмём "Save private key" и получаем ключ в формате ppk, пригодный для скармливания обычному [[http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe|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 ===
------
Устанавливаем DebPkg:transmission-daemon: - простой и не прожорливый до ресурсов [[WikiPedia:ru:BitTorrent|torrent]] клиент.

{{{
# aptitude install transmission-daemon acl.
}}}

Останавливаем службу
{{{
/etc/init.d/transmission-daemon stop
}}}

Создаём папку для хранения загружаемых файлов
{{{
mkdir /mnt/data/downloads
}}}

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

Если у Вас папка не на разделе ХFS, то смотрим примечание [[#prim5|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) ===
------
Устанавливаем DebPkg: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, то смотрим примечание [[#prim5|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
}}}
------
==== Принтеры ====
------
Сперва настраиваем [[ru/SystemPrinting|принтер]]

Далее вносим настройки:
{{{
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$. Интеграция драйверов проводилась по [[http://www.sergeysl.ru/freebsd-samba-printer-drivers/|Руководству]]
------
==== Web интерфейс для администрирования ====
------
Устанавливаем DebPkg: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 DebPkg:mc: - утилита ставшая стандартом де-факто для быстрой навигации по файловой системе компьютера:
{{{
aptitude install mc
}}}

См. примечание [[#prim3|3]]
------
== Сессии в консоли ==
------
=== Screen ===
------
Устанавливаем DebPkg: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
}}}
------
== Просмотр процессов ==
------
Устанавливаем DebPkg:htop: - "Диспетчер задач" для нашей системы
{{{
# aptitude install htop
}}}

------
== Просмотр больших текстов в консоли ==
------
Устанавливаем DebPkg: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 ===
------
Устанавливаем DebPkg:guake: - удобный терминал для Х. Достоинства: вкладки, горячие клавиши,
{{{
# aptitude install guake
}}}
----------
= Прочее =
----------
== SQL сервер ==
------
Устанавливаем DebPkg:mysql-server: - попyлярный сервер БД, требует не менее 256 МБ памяти. Необходим для множетсва Web интерфейсов.
Устанавливаем
{{{
aptitude install mysql-server mysql-client
}}}
Не забываем написать где-нибудь пароль root доступа к серверу БД.
------
== Web-сервер ==
------
=== Apache2 ===
------
Устанавливаем DebPkg: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 ====
------
Устанавливаем DebPkg: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 ===
------
Устанавливаем DebPkg: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
------------
= Примечания =
------------
<<Anchor(prim1)>>
------------
== Примечание 1 (настройка aptitude) ==
------
По-умолчанию [[WikiPedia:ru:Aptitude|aptitude]] устанавливает '''рекомендумемые''' пакеты. Если это не нужно, к консольной команде установки следует добавить ключ "-R", либо в curses интерфейсе в настройках запретить автоустановку.

}}}
<<Anchor(prim2)>>
------
== Примечание 2 (ошибка запуска сети) ==
------
Если установка проводилась по сети с настройкой по DHCP, то после перезагрузки сетевой интерфейс eth0 может не запуститься автоматически, а значит вы не сможете устанавливать новые пакеты из сети.
Для решения проблемы настраиваем eth0:
{{{
 nano /etc/networking interfaces
     Перед строкой "iface eth0 inet dhcp" добавляем новую строку "auto eth0"
}}}
Применяем настройки:
{{{
# /etc/init.d/networking restart
}}}
<<Anchor(prim3)>>
------
== Примечание 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
}}}
<<Anchor(prim4)>>
------
== Примечание 4 (ошибка pcspkr) ==
------
В Debian 6 при запуске ядро по-умолчанию пытается загрузить уже задействованный модуль системного динамика, о чём и выдает ошибку. Исправляем баг.

{{{
echo "blacklist pcspkr" >> /etc/modprobe.d/blacklist.conf
}}}
<<Anchor(prim5)>>
------
== Примечание 5 (setfacl неподдерживаемая операция) ==
------
Для устранения ошибки файловая система должна быть смонтирована с опцией ''acl''. Для XFS эта опция применяется по-умолчанию.
<<Anchor(prim6)>>
----------

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 эта опция применяется по-умолчанию.