You are viewing linuxbook

user@desktop ~ $


Многим из нас для счастья вполне достаточно включить компьютер да и работать себе. И все бы отлично; ну, а вдруг компьютер заартачится? Или - вы знаете, что желаемое возможно, но не уверены в умении реализовать это? Лишние знания бывают крайне опасны, но и крайне полезны, если вы пытаетесь заставить свою Linux-машину плясать под вашу дудку.
Наши ожидания от компьютеров со временем меняются, и если ваш дом похож на наш, он нашпигован хитрыми сетевыми устройствами, там явно не один компьютер плюс масса алчных до электроэнергии ящиков, мигающих лампочками и соединяющих все это добро между собой. Управление такими системами представляется жутью, и, будучи линуксоидом, вы можете ощутить себя в изоляции. И зря! Есть масса информации вам в помощь - и этот реусурс один из таких источников, с массой ценныйх заклинаний, которые помогут вам добиться поставленных целей. Читайте наше сообщество LinuxBook - и вы узнаете, какое могучее волшебство таится в вашем Linux-ящике.

Получать журнал [info]linuxbook на E-mail:



SSH-атаки

Когда ваш компьютер доступен через Internet, каждая свинья рвется получить к нему доступ.

     Открыв доступ к своей машине через Internet – скажем, вы хотите работать на своем домашнем компьютере, будучи в отъезде, или держите web-сервер – вы поразитесь количеству зондирующих атак злоумышленников. Проверки ради, за 60 минут онлайн мы насчитали 43 потенциальных взломщика, каждый из которых неоднократно пытался войти на SSH-сервер.
     Есть несколько простых вещей, которые можно сделать, чтобы отражать атаки. Во-первых, проставьте другой порт в файле настройки SSH взамен стандартного 22. Это малость осложняет, поскольку потом нужно будет запомнить номер порта и вручную вводить его при каждой регистрации. Во-вторых, можно блокировать регистрацию с паролем. Но тогда придется установить ключи SSH, чтобы иметь возможность регистрироваться, причем доступ будет выдаваться только известным компьютерам.
     Еще один трюк – включать SSH только тогда, когда это действительно требуется. Мы однажды пробовали метод секретного кодового слова, которое отправляли на специальный адрес электронной почты. Кодовое слово перехватывал скрипт на сервере и на час включал SSH. Это было очень хитро, но канительно. Но каким бы вариантом вы ни воспользовались, все равно понадобится развернуть скрипт fail2ban. Он будет читать ваши журналы и определять, кто предпринял неудавшиеся попытки регистрации.
     После некого числа неудачных попыток регистрации – скажем, шести за 10 минут – скрипт активизирует iptables, чтобы блокировать соединение с вашим компьютером с этого хоста на заданный промежуток времени. По умолчанию, это 10 минут – вроде и недолго, но большинство таких атак осуществляется скриптами, которые через несколько неудачных попыток прекращают атаку и переключаются на другую мишень. Скрипт fail2ban вы найдете на сайте sourceforge: www.fail2ban.org/wiki/index.php/Main_Page. Внимательно прочтите документацию по настройке этого сервиса и не отделывайтесь значениями по умолчанию. В порядке бонуса, скрипт дает возможность наблюдать за попытками взлома и других сервисов.

Чтобы допускать к определенным инсталляциям и вообще к загрузке компьютера только доверенных пользователей!

     Большинство основных дистрибутивов переходят или уже перешли на загрузчик Grub 2 (заметное исключение – Fedora). Это позволяет установить аутентификацию пользователей для пунктов загрузочного меню и как минимум отчасти защитить систему(ы) от несанкционированного доступа: например, разрешить только некоторым пользователям загружать конкретные ядра. Во время загрузки меню отображается как обычно, но когда кто-то попытается вызвать защищенный пункт загрузочного меню, ему предложат ввести имя пользователя и пароль. Выполнить эту настройку не так уж просто, но мы рискнем.
     Первый порт вызова – заголовочный файл. Он находится в /etc/grub.d/ и называется 00‑header или похоже. Откройте его для редактирования в любимом текстовом редакторе и добавьте в его конец текст:

cat << EOF
set superusers=”myname”
password myname 1234
EOF


     Он устанавливает пользователя (myname) и его пароль (1234). Имейте в виду, что если вы здесь что-то напутаете, обвинять будет некого, кроме себя, поэтому позаботьтесь, чтобы в меню был пункт, из которого вы сможете загрузиться и исправить дело, если что-то пойдет не так. Теперь отредактируйте файл 10‑linux из того же каталога. Вам нужны записи, начинающиеся с:

menuentry “$1” {
или с
printf “menuentry \”${title}\” --class linux {


      Добавьте в эти строки переключатель --users и укажите имя пользователя сразу же после открывающей фигурной скобки или элемента меню, например:

menuentry “$1” --users myname {

или

printf “menuentry \”${title}\” --class linux --users myname {
Сохраните файл и обновите Grub командой:
sudo update-grub


     Теперь вы готовы перезагрузить компьютер и протестировать новое загрузочное меню, защищенное паролем. Можете даже подшутить над любителями влезать в вашу машину: не говорите им, что защитили загрузочное меню паролем, и дождитесь, чтобы они прибежали к вам с вопросами. Вот, кстати, и причина не делать пароли слишком простыми для угадывания – например, просто ‘password’ или ваш день рождения.

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

     Преимущество современных дистрибутивов Linux – отличная поддержка драйверов. Серьезно, взять произвольное устройство и добиться его работы с Linux намного проще, чем с Windows или Mac OS X, потому что Linux добавляет функции драйверов в ядро посредством модулей. Код модулей открыт, и, за исключением особых обстоятельств, вам ничто не мешает обновить код старого драйвера, чтобы он поладил с новейшей версией ядра. Вы можете выяснить, какие модули работают в вашей системе, командой lsmod. Она покажет вам загруженные на данный момент модули, а также список модулей, от которых те зависят. Например, модуль kvm_intel зависит от наличия модуля kvm, а модуль snd – от модуля sndcore. При необходимости можно удалить драйверы из работающей системы с помощью rmmod и вновь загрузить их с помощью modprobe. Например, чтобы отключить и вновь включить джойстик, скомандуйте:

sudo rmmod joydev sudo modprobe joydev

     Знайте также, что иногда при загрузке модулей доступны опции. Драйверы web-камер часто имеют необязательные параметры, позволяющие отключить инфракрасные светодиоды или изменить размер кадра либо частоту смены кадров. Вы можете прочесть документацию о модуле либо применить команду modinfo. Как правило, список доступных параметров приводится в конце, например:

$ modinfo gspca_ov519
filename: /lib/modules/2.6.35.10-74.fc14.x86_64/kernel/
drivers/media/video/gspca/gspca_ov519.ko
license: GPL
description: OV519 USB Camera Driver

alias: usb:v041Ep4003d*dc*dsc*dp*ic*isc*ip*
depends: gspca_main
vermagic: 2.6.35.10-74.fc14.x86_64 SMP mod_unload
parm: frame_rate:Frame rate (5, 10, 15, 20 or 30 fps) (int)


     Отсюда видно, что при загрузке модуля можно указать частоту смены кадров вручную. Конечно, неплохо иметь такую возможность; ну, а если вы хотите задать эти опции по умолчанию?

sudo rmmod gspca_ov519
sudo modprobe gspca_ov519 frame_rate=20


     Для этой цели предусмотрен специальный файл – обычно он называется /etc/modules.d/options.conf. (Если он не существует, создайте его.) Добавьте в него такую строку:

options gspca_ov519 frame_rate=20

     Она гарантирует, что данные опции будут браться при каждой загрузке модуля, если вы не отмените их вручную. Кстати, в том же каталоге обычно имеется и файл blacklist. conf – он пригодится, если понадобится отключить проблемное оборудование или драйверы, которые норовят предъявить права на аппаратные устройства первыми.

Чтобы ускорить вашу систему или приспособить ее к обстоятельствам.

     Раздел подкачки очень важен для Linux- систем, или, по крайней мере, бывает очень важным. Он позволяет ядру отложить в сторонку информацию, которая не является необходимой в данный конкретный момент, и освободить ОЗУ системы под работающие процессы. Старое эмпирическое правило гласит, что объем этого раздела должен быть не меньше объема физического ОЗУ, а желательно – вдвое больше, но это правило больше не покрывает все варианты.
     Во-первых, в наши дни вы, скорее всего, богаты физическим ОЗУ, поскольку цены на них стали вменяемыми и при желании вполне можно всадить на материнскую плату 8, а то и 16 ГБ. Поэтому слишком большой раздел подкачки уже ни к чему, но системные администраторы считают идеальным объем около 2 ГБ. Чтобы узнать фактически используемый объем раздела подкачки, запустите либо команду free, либо команду swapon, например:

swapon -s


     Выведется полный объем раздела подкачки в байтах. Однако, возможно, вам потребуется более эффективно управлять разделом подкачки, если вы запускаете много экземпляров параллельно работающих сервисов (например, баз данных или web-серверов). Создав для подкачки дополнительный раздел, можно добавить его к текущему (считая, что новый раздел подкачки – sdb2) командами:

mkswap /dev/sdb2

swapon /dev/sdb2

echo ‘/dev/sdb2 swap swap sw 0 0 ‘ >> /etc/fstab


     Последняя строка добавляет новый раздел подкачки на постоянной основе, и он будет монтироваться при загрузке. Интересно, что ядру хватает ума на чередование доступа к разделам подкачки, и вы можете серьезно повысить производительность, предусмотрев разделы подкачки на всех быстрых жестких дисках, имеющихся у вас в системе. Кроме того, можно использовать для подкачки файл. Хотя обычно это не лучший способ решения проблемы, он помогает в ситуациях, когда требуется временно удалить диск из системы или обеспечить себе дополнительное место для подкачки (например, при визуализации огромной и детальной 3D-сцены). Чтобы обзавестись файлом подкачки, можно создать пустой файл командой dd, а затем его смонтировать:

dd if=/dev/zero of=/var/swapfile bs=1024 count=2097152

mkswap /var/swapfile

swapon /var/swapfile


     Наконец, создание раздела подкачки на медленных устройствах – например, USB-брелках – идея отнюдь не здравая. Ядро, конечно, съест и такое, если добавить его к системе, но скорость USB 2.0, около 400 Mbps, существенно снизит производительность. А вот быстрый твердотельный диск – идеальное место.

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

     Linux и ряд других Unix-подобных операционных систем включают в свой состав очень полезную команду под названием dmesg: она отображает все системные сообщения, имеющие отношение к проблемам, в своем журнале. Это ценная информация, в частности, о драйверах устройств, а также о том, загружены ли они корректно, плюс еще набор полезных сведений. Для просмотра журнала просто запустите команду dmesg из оболочки.
     Запуск dmesg сразу же после добавления аппаратного устройства сообщит вам, загружен ли драйвер устройства и работает ли он правильно, или о том, где были выделены ресурсы; но иногда бывает нужно просмотреть журнал. Здесь неплохой идеей будет перенаправить вывод команды dmesg команде less:

dmesg | lessа

     Если вы ищете что-то конкретное – например, устройство SCSI или USB – всегда можно просеять журнал через grep и перенаправить его в less:

dmesg | grep ‘usb’ | less

Чтобы клонировать свой ПК или сделать полную резервную копию.

     Существует далеко не один рецепт, как приготовить яичницу; то же касается создания копий системы Linux. Возможно, простейший из них – применить команду dd, обычно используемую для поблочного копирования больших файлов. Однако, раз уж в Linux практически все является файлами, ту же команду можно применить и для копирования всего диска. Содержимое одного жесткого диска IDE копируется на другой при помощи команды:

dd if=/dev/hda of=/dev/hdb conv=noerror,sync

     Дополнительные опции этой команды позволяют пропускать ошибки чтения (что удобно при копировании порченого диска) и принудительно синхронизировать копии.
     Работать-то она работает, но по ряду причин стоит ее избегать. Во-первых, это процесс весьма долгий – команда dd копирует каждый блок диска, включая и неиспользуемое пространство. Другая проблема – в том, что ваш второй жесткий диск должен быть по возможности идентичен с первым. При использовании данного метода копируется вся информация, и если второй жесткий диск имеет больший размер, окажется, что вы зря теряете дисковое пространство.
     Еще одна потенциальная проблема – при таком копировании установки Linux скопируется и содержимое виртуальных файловых систем, например, /proc, что тоже чревато неприятностями.
     Если вам нужна копия файловой системы диска, лучше возьмите команду rsync:

rsync -av /source /target

     В особом случае копирования корневой файловой системы, где содержится загружаемая копия Linux, вы, возможно, захотите исключить из копирования часть файлов – например, те, что система генерирует при загрузке. Для этого сгенерируйте список файлов и назовите его blacklist.lst:

# файлы для включения
+ /dev/console
+ /dev/initctl
+ /dev/null
+ /dev/zero
# файлы для исключения
- /dev/*
- /proc/*
- /sys/*
- /tmp/*


     Некоторые записи dev включены явно, поскольку они не воссоздаются повторно, как и каталог /proc и некоторые другие каталоги: содержимое каталога регенерируется, а сам каталог – нет. Теперь запустите команду rsync со следующими параметрами:

rsync -av --delete-excluded --exclude-from=blacklist.lst / /destination


Учтите, что это можно сделать и через сеть, но тогда надо сперва должным образом настроить rsync.

Чтобы добавить полномочий пользователям или процессам.

     Команда sudo временно предоставляет привилегии root пользователям или процессам, чтобы те смогли выполнить задачу, разрешенную только root. Это особенно важно для систем типа Ubuntu: там нет пользователя root, и без команды sudo далеко не уйдешь.
     Сведения о том, какие права должны быть предоставлены и кому, хранятся в каталоге /etc, в файле под названием – вы удивитесь – sudoers. Его можно править в Vi, Gedit или любом другом редакторе, но рекомендуется применять Visudo. Данный текстовый редактор гарантирует, что ваш файл sudoers останется цел, пока вы будете его редактировать, поскольку запрещает одновременные правки и проверяет синтаксические ошибки. Это огромное преимущество в случае сбоев или просто человеческих ошибок, способных сделать файл sudoers нечитаемым, вынудив вас восстанавливать его из резервной копии.
     Здесь действуют примерно те же правила, что и в Vi. Если вы с ними не знакомы – это означает, что перемещаться по файлу можно с помощью клавиш курсора (а также Page Up / Page Down), для перехода в режим ввода необходимо нажать клавишу i, после чего можно начинать вводить текст. Завершив ввод, наберите последовательность Esc : wq <return>. Если при редактировании файла вы допустите ошибку, часто бывает проще закрыть его без сохранения, а затем попытаться вызвать его еще раз. Для выхода из редактора введите комбинацию клавиш Esc:q! <return>.
     Например, чтобы дать через sudo пользователю ukcap все права root без необходимости вводить его пароль – это опасно, но экономит время – добавьте

evilnick ALL=(ALL) NOPASSWD: ALL

     Движемся дальше. Посмотрев в начало файла, вы обнаружите, что там определены некие группы. По сути, это метки, применяемые к списку исполняемых файлов (с полными именами путей). При желании вы можете создать собственные группы, но уже готовые обычно определены очень хорошо.
     Вместо отдельных пользователей можно также указать и группы, просто поместив символ % перед именем группы. Например, если вы хотите разрешить пользователям из группы users доступ к командам из группы Networking, которые обычно определяются здесь через sudo, и позволить пользователю xar загружать драйверы ядра через modprobe, добавьте такие строки:

%users ALL=NETWORKING
mike ALL=/sbin/modprobe


Заметьте, что первое ALL относится к хосту, так как файлы sudoers часто предоставляются в общий доступ через сеть, и при желании здесь можно указывать отдельные хосты.

Проверка нагрузки

Чтобы узнать, потянет ли ваш компьютер требуемые задачи.

     Запустив команду uptime или заглянув в файл /proc/loadavg, вы увидите набор из трех чисел, указывающих среднюю нагрузку на ваш Linux-компьютер. И что же эти числа означают?
     Во-первых, их три, потому что они получены усреднением по трем разным временным интервалам – одной, пяти и 15 минутам. Число указывает количество процессов, использующих CPU или ждущих своей очереди на его использование. Так, если ваша средняя нагрузка – 0,25, это значит, что процессор активно использовался в течение 25 % соответствующего временного интервала.
     Для многоядерных машин ситуация чуть усложняется, поскольку число ядер не учитывается, и надо разделить на это число результат, показанный в файле /proc/loadavg или в выводе команды uptime. Например, средняя нагрузка 1 на четырехъядерную машину на самом деле будет означать то же самое – средняя нагрузка равна 0,25, то есть каждое ядро работает 25 % времени.
     Средняя нагрузка – не самый точный показатель скорости CPU, так как процессы могут оказаться подвешены просто из-за медленного ввода/вывода; но дает представление о времени ожидания для пользователей. В идеале средняя нагрузка настольного компьютера должна быть меньше количества ядер. На сервере этот показатель может быть и превышен, но если средняя нагрузка постоянно высока, необходимо дальнейшее расследование.

Запуск задач из Anacron

Чтобы ваш компьютер не был постоянно включен.

     Anacron – это напарник Cron, системного планировщика. Cron – отличный инструмент, гарантирующий, что необходимые задачи выполнятся. Но вот беда: задачи Cron назначаются на выполнение в конкретное время. Если ваш компьютер в этот момент будет выключен, Cron не сможет их запустить.
     Выход – обратиться к Anacron. Когда система стартует, этот инструмент проверяет, нет ли невыполненных задач, и если они есть, пытается их запустить. Этот инструмент использует более простой метод планирования задач – ежедневных, еженедельных или ежемесячных – и при каждом запуске проверяет, были ли выполнены эти задачи в течение соответствующего временного интервала.
     Итак, вы должны указать для Anacron временной интервал, задержку, идентификатор задачи и команду. Интервал – это количество дней между запусками задачи (например, для еженедельного это 7), а задержка – это временная отсрочка (в минутах) с момента старта сервиса Anacron, чтобы все события разом не навалились на систему во время ее загрузки. Идентификатор задачи – это метка, необходимая для идентификации процесса в системных сообщениях или журналах, а команда – просто команда оболочки. Они перечисляются в файле /etc/anacrontab в виде списка, разделенного пробелами, который может выглядеть примерно так:

# / etc / anacrontab: файл настройки anacron
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# Максимальная случайная задержка относительно базового запаздывания заданий
RANDOM_DELAY=45
# Задания начнут запускаться только в указанные часы:
START_HOURS_RANGE=3-22
# Период в днях; задержка в минутах; индентификатор
задания; команда
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.
monthly
7 55 anacron.backup /usr/sbin/ mybackupscript
     Чтобы экономить системные ресурсы или добавить требуемые функции.

     При запуске вашего Linux-компьютера происходит инициализация большого количества программ. Многие из них настроены как сервисы – обычно это код, который незаметно работает в фоновом режиме, выполняя задачи вроде синхронизации системных часов или управления web-сервером. Многие из этих сервисов жизненно важны для безопасной работы вашего компьютера (например, Cron), но есть и избыточные – они подключаются при установке дистрибутива, потому что когда-нибудь могут понадобиться. Некоторые сервисы вообще могут бесить – например, сервис ntp, который синхронизирует ваши часы со службой точного времени через Internet. Это, возможно, и неплохо, если ваша машина постоянно сидит в сети, но годится не всем.
     Практически во всех дистрибутивах имеется система управления сервисами. В Fedora это делается через опции System > Administration > Services. А Ubuntu имеет инструмент System > Administration > Startup Applications, хотя он настраивает не все сервисы в вашей системе. Но это не проблема: можно настроить систему и из командной строки.
     «За кадром» эти системы запускают скрипты, содержащиеся в /etc/init.d, и иногда вы можете захотеть проделать то же самое.
     Скрипты различаются друг с другом, поскольку поставляются пакетами, к которым относятся, но все они следуют общим правилам. Каждый предлагает возможность запуска или останова сервиса. Одни могут сообщать текущий статус, а другие умеют выполнять принудительный перезапуск – это бывает удобно после выполнения правок. Например, ваши изменения, внесенные в конфигурацию Apache, не войдут в силу, пока вы не перезапустите сервер, вот так:

sudo /etc/init.d/httpd restart
---
Информационные страницы – это расширенные версии man-страниц, разбитые на тематические разделы и подразделы с удобной навигацией. Правда, удобна эта навигация, только если знать, на какие магические кнопки жать. К счастью, для них есть своего рода интерактивное руководство. Скомандуйте

info info


и нажмите клавишу h, чтобы начать процесс ознакомления.

Tags:

Profile

linuxbook
Linux: the choice of a GNU generation.

Tags

Счетчик посещений


Проверить тиц
Яндекс цитирования
Powered by LiveJournal.com
Designed by Lilia Ahner