Translation(s): DeutschEnglishFrançaisItalianoEspañolPortuguês Brasileiro

ToDo: merge (and translate) this page and the french one (more complete)

  1. Introduction
  2. Installation
  3. Installation of the client
  4. Installation of the server
  5. Configuration files
  6. Regenerating host keys
  7. Remote login
  8. With password
  9. Using shared keys
  10. Keys management
  11. Using GUI
  12. Securing
  13. SSH Server
  14. Good practices with SSH Server
  15. Configuration Options
  16. External Utilities
  17. SSH Client
  18. Good practices with SSH Client
  19. Additional Functions
  20. View files in GUI
  21. Additional Commands
  22. scp
  23. sftp
  24. text mode
  25. graphical mode
  26. ssh-agent and ssh-add
  27. keychain
  28. ssh-askpass
  29. libpam-usb
  30. Remote commands
  31. Good practices of SSH usage
  32. Troubleshooting
  33. OpenSSL version mismatch. Built against 1000105f, you have 10001060
  34. SSH hangs
  35. Resolution with IPQoS 0x00
  36. Resolution with netcat
  37. Keep SSH connection alive
  38. For Debian 7.x server
  39. See also
  40. Система
  41. Политика установки ПО
  42. Дата и время
  43. Настройка
  44. Синхронизация локально
  45. Синхронизация для клиентов в сети
  46. Автоматическое обновление
  47. Пользователи и группы
  48. sudo
  49. Вход в систему
  50. Автологин в консоли с mingetty
  51. Автологин в консоли с стандартным agetty
  52. Локализация
  53. Глобальные параметры локализации системы
  54. Кириллица в консоли
  55. Удаление неиспользуемых файлов локализации
  56. Загрузчик
  57. GRUB2
  58. Управление запуском служб
  59. Сглаживание шрифтов
  60. Аппаратное обеспечение
  61. Интернет и сети
  62. Сетевые настройки
  63. Базовая настройка
  64. Настройка в консольном интерфейсе wicd-curses
  65. Firewall (брандмауэр, межсетевой экран и т
  66. Общие сведения
  67. Apf-firewall
  68. Vuurmuur
  69. Установка
  70. Настройка rsyslog
  71. Настройка
  72. Подсчёт трафика
  73. Решение проблем.
  74. Диагностика DNS
  75. Нагрузка на сеть
  76. Анонимный доступ в интернет
  77. Динамическая регистрация в DNS
  78. Удаленный доступ к консоли
  79. Авторизация по ключам
  80. Генерация ключей
  81. Настройка сервера
  82. Настройка клиента
  83. Настройка Putty
  84. Усиленные настройки безопасности
  85. Параноидальные настройки безопасности (knock)
  86. Общий доступ к файлам
  87. Тorrent
  88. SMB (CIFS)
  89. Корзина
  90. Аудит
  91. Принтеры
  92. Web интерфейс для администрирования
  93. Работа в консоли
  94. Файловый менеджер
  95. Сессии в консоли
  96. Screen
  97. Просмотр процессов
  98. Просмотр больших текстов в консоли
  99. Вывод сообщений ядра в консоль
  100. Работа в X
  101. Эмулятор терминала
  102. guake
  103. Прочее
  104. SQL сервер
  105. Web-сервер
  106. Apache2
  107. Поддержка PHP5
  108. Lighttpd
  109. Поддержка PHP5
  110. Множество сайтов на одном сервере (virtual host)
  111. Лог доступа
  112. Примечание 1 (настройка aptitude)
  113. Примечание 2 (ошибка запуска сети)
  114. Примечание 3 (настройка мс)
  115. Примечание 4 (ошибка pcspkr)
  116. Примечание 5 (setfacl неподдерживаемая операция)


remote_host=<the remote computer>
remote_user=<your user name on $remote_host>


Installation of the client

Normally the client is installed by default. If not it suffices to run as root:

apt install openssh-client

Installation of the server

The server allows to connect remotely and gets installed by running as root:

apt install openssh-server

Configuration files

The main configuration files are in the directory /etc/ssh :

  • ssh_config : client configuration file

  • sshd_config : server configuration file

  • /etc/ssh/ssh_config.d/*.conf : client configuration file

  • /etc/ssh/sshd_config.d/*.conf : server configuration file

These have been enabled with the Include parameter in ssh_config and sshd_confg. Making changes locally using these directories can ease configuration management, and avoid issues with upgrades that make changes to package managed configuration files.

In addition the /etc/ssh directory contains the private/public key pairs identifying your host :

  • ssh_host_dsa_key
  • ssh_host_rsa_key

Since OpenSSH 5.73, a new private/public key pair is available:

  • ssh_host_ecdsa_key

Since OpenSSH 6.54, a new private/public key pair is available:

  • ssh_host_ed25519_key

Regenerating host keys

rm /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server

Remote login

With password

ssh $remote_user@$remote_host

and then type in your password.

ssh $remote_host

If this is the first time you login to the remote computer, ssh will ask you whether you are sure you want to connect to the remote computer. Answer ‘yes’ after you verified the remote computer’s fingerprint, type in your password, and ssh will connect you to the remote host.

Using shared keys

One of the functions of ssh is using a pair of private/public keys to connect to a remote host. Also known as SSH keys. This method allows you to login to a remote host without typing your password every time. To do this you must generate a pair of private/public keys on your local machine and deposit the public key on the remote host.

ssh-keygen -t rsa

This program generates a pair of private/public keys in the directory ~/.ssh. The program first asks for the destination files for the keys, by default located in ~/.ssh. Afterwards a passphrase is requested.

Note: We recommend not to leave the passphrase empty. An attacker who gets hold of your private key can otherwise connect to the hosts where you deposited you public key since the passphrase is empty. Choose a long and complex passphrase.

Your private key is id_rsa (don’t give it to someone else), your public key is

You copy your public key to a remote host with the command ssh-copy-id

ssh-copy-id -i ~/.ssh/ $remote_user@$remote_host

Now you can connect simply to the remote host and the passphase is asked for. Once done, you get connected to the remote host. In case of a new connection the passphrase does not get asked for again during your entire session.

Keys management

Using GUI


SSH Server

By default a SSH server is relatively secure. With the help of some good practices, configuration options, and external utilities it is possible to make it even harder for ‘robots’ and crackers

Good practices with SSH Server

Configuration Options

(!) One should edit the file /etc/ssh/sshd_config to change the parameters and then restart the ssh server with

service ssh restart
  • Deactivate using passwords for authentication (PasswordAuthentication no).

  • Deactivate using the root account (PermitRootLogin no).

sshd -T | sort

External Utilities

SSH Client

Good practices with SSH Client

Additional Functions

View files in GUI

In file managers like Konqueror, Dolphin, Krusader and Midnight Commander you can use FISH to view files in a GUI using:


Additional Commands


scp is a command line utility allowing to transfer files between two machines.

  • Sending a file:
scp $source_file $remote_user@$remote_host:$destination_file
  • Copying a file to the local machine:
scp $remote_user@$remote_host:$source_file $destination_file


text mode

graphical mode

ssh-agent and ssh-add

# Check if ssh-agent is running
env | grep -i ssh

You will still need to tell the agent to manage your keys.

# List keys managed by the agent
ssh-add -l
# Add your ssh key
ssh-add ~/.ssh/your_private_key

When a private key is first needed, you are prompted for its passphrase. ssh-agent will then remember the key so that your passphrase doesn’t get asked anymore.



ssh-askpass is an utility to simply the question for the password of a private key when using it. Several implementations exist:

  • x11-ssh-askpass : version for X11

  • kaskpass : integration of ssh-askpass into the KDE environment

  • ssh-askpass-gnome : integration of ssh-askpass into the Gnome environment


libpam-usb is an utility (only available up to Debian Jessie) allowing authentication with an USB stick. This package includes a useful utilty : pamusb-agent. This utility, once correctly configured, allows to load the SSH keys present on the USB stick once it is connected and to unload them when it is disconnected.

Remote commands

If you just want to run one command on the remote computer, you don’t need to login. You can tell ssh to run the command without login, for instance,

ssh $remote_user@$remote_host 'ls *.txt'

Good practices of SSH usage

You must read this:

Configure your ~/.ssh/config to send only the right key.

    User account
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes


OpenSSL version mismatch. Built against 1000105f, you have 10001060

If you get an error message like this when starting the ssh daemon, you need to run:

apt install openssh-server openssh-client

Also see bug #732940.

SSH hangs

You are trying to SSH into a remote computer. But during SSH log-in the session hangs/freezes indefinitely. Thus you are not presented with the command prompt. And you are not able to use any SSH commands :( When using SSH debug mode the session hangs at this line debug2: channel 0: open confirm rwindow 0 rmax 32768

With some routers behind NAT and when using OpenSSH. During session setup, after the password has been given, OpenSSH sets the TOS (type of service) field in the IP datagram. The router choke on this. The effect is that your SSH session hangs indefinitely. In other words, SSH commands or connections are seldom working or not working at all.

Resolution with IPQoS 0x00

Until your router manufacturer fix their firmware. Here is one option to resolve that issue:

  1. Double check your openssh-server and openssh-client version are 5.7 or more recent. For example the resolution below should work with Debian 7.11 Wheezy or more recent as it comes with OpenSSH version 6.0.

  2. ~/.ssh/config

    File content before

    Host *

    File content after

    Host *
      IPQoS 0x00

  3. If you have any Terminal/Console window(s) already open. Fully close all of them. Doing so will close any active SSH sessions.
  4. No need to restart OpenSSH or your Debian. Try again to SSH into any remote server. It should work. Done you have successfully fixed that issue :)

    Thanks to Joe and catmaker for this tip :)

    Related documentation at

Resolution with netcat

/! WARNING: It is suggested to consider using that other resolution with IPQoS 0x00 instead of using netcat/ProxyCommand nc %h %p option. Because IPQoS 0x00 is the official built-in OpenSSH option. Also IPQoS 0x00 is a more direct way to resolve that issue, and potentially more secure option. Because IPQoS 0x00 uses SSH’s built in encryption for secure transfers. Compare to netcat’s not encrypted transfers. Sources: 1 2. If you choose to use netcat/ProxyCommand nc %h %p option read on.

ProxyCommand nc %h %p

Keep SSH connection alive

For security reason, by default a SSH connection is automatically closed after a set period of time. But in some cases you want to keep that connection open. Such as cloud storage over SSH connection.

For Debian 7.x server

Steps to keep SSH connection alive.

# Keep client SSH connection alive by sending every 300 seconds a small keep-alive packet to the server in order to use ssh connection. 300 seconds equal 5 minutes.
ClientAliveInterval 300
# Disconnect client after 3333 "ClientAlive" requests. Format is (ClientAliveInterval x ClientAliveCountMax). In this example  (300 seconds x 3333) = ~999,900 seconds = ~16,665 minutes = ~277 hours = ~11 days.
ClientAliveCountMax 3333
service sshd restart

Please note that on recent Debian systems (e.g. Wheezy 7 with current updates as of Nov. 2015), the above command no longer works and returns the error:

sudo service sshd restart
sshd: unrecognized service
sudo service ssh restart
[ ok ] Restarting OpenBSD Secure Shell server: sshd.

See also

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

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

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


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

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

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


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

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

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

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

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

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

Дата и время


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

# date
# 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

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

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

restrict mask trust notrap nomodify nopeer noquery

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

/etc/init.d/ntp restart

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

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

Устанавливаем unattended-upgrades (

# 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 )
/etc/init.d/cron restart

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


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

aptitude install sudo

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

usermod -a -G sudo username

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

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

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

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

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

# aptitude install mingetty
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

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)



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

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

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

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp 

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

auto eth0:1
iface eth0:1 inet static

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

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

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. В зависимости от поставленной задачи каждый из способов имеет свои достоинства и преимущества.


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

aptitude install аpf-firewall

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

nano /etc/apf-firewall/conf.apf 

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

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

Сетевая которую будем защищать

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

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

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

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

# Открываем исходящие UDP порты, если EGF="1"
nano /etc/default/apf-firewall 

/etc/init.d/apf-firewall start


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

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

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

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

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

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

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


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

aptitude install conntrack

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

dpkg -i lib*
dpkg -i vuur*

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

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

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


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

/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 —> Ведение журналов)


vur 0.JPG

/etc/init.d/rsyslog restart



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», т.е. правила доступа в сети. Ниже переброс портов на комп локальной сети временно отключен.

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

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

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

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

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

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

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

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

# aptitude install dnsutils

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

root@tt400:~# nslookup

Non-authoritative answer:

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

dig @ -p 53 

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

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

# aptitude install nethogs


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

aptitude install tor

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

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

aptitude install ddclient

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

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

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

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

# aptitude install ssh

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

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

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

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

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

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

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


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

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

mv /user/.ssh/ /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 клиент проигнорирует ключ.

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

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

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

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

Настройка Putty

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

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


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

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

nano /etc/ssh/sshd_config

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

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

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


Устанавливаем 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 для входящих соединений.


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

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

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

nano /etc/samba/smb.conf

# сначала требуем вход с локальными логином и паролем клиента
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

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

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

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

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

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

# nano /etc/samba/smb.conf

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

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

smbcontrol smbd reload-config

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



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
nano /etc/samba/smb.conf
vfs object = recycle
/etc/init.d/samba restart

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


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

nano /etc/samba/smb.conf
#Отключаем запись сообщений в 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

Далее переносим лог аудита из /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 {
rotate 300

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

smbcontrol smbd reload-config


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

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

nano /etc/samba/smb.conf

load printers = yes
printing = cups
printcap name = cups
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: — утилиту-мультиплексор, предоставляющую пользователю доступ к нескольким консолям в рамках одной сессии.:

# 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: — удобный терминал для Х. Достоинства: вкладки, горячие клавиши,

# aptitude install guake


SQL сервер

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

aptitude install mysql-server mysql-client

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



Устанавливаем 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
/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: — быстрый и простой 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


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

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
/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


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

/etc/init.d/dnsmasq restart

Лог доступа

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

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

Дополнительно:  Android root через recovery
Оцените статью
Master Hi-technology
Добавить комментарий