diff options
| author | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
|---|---|---|
| committer | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
| commit | e5abc1fe99340b979b18864d978179f71fe8f5c5 (patch) | |
| tree | 98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /LINUX/__FLENOV.md | |
First
Diffstat (limited to 'LINUX/__FLENOV.md')
| -rw-r--r-- | LINUX/__FLENOV.md | 1582 |
1 files changed, 1582 insertions, 0 deletions
diff --git a/LINUX/__FLENOV.md b/LINUX/__FLENOV.md new file mode 100644 index 0000000..9940655 --- /dev/null +++ b/LINUX/__FLENOV.md @@ -0,0 +1,1582 @@ +#========================================== +**/ - основной раздел +/bin - основные исполняемые файлы системы +/boot - файлы необходимые для загрузки системы +/dev - представления для подключенных устройств +/etc - конфигурационные системные файлы +/home - пользовательские папки и файлы (лучше выносить на другой физический диск!) +/lib - библиотеки ядра ОС +/opt - дополнительные програмные пакеты +/proc - раздел для монтирования виртуальной файловой системы +/sbin - исполняемые файлы ROOTa +/tmp - временные файлы +/usr - системные файлы +/var - журналы, буферные или заблокированные файлы (лучше выносить на другой физический диск!) +Swap - раздел подкачки + +Если /home и /var вынесены на отдельные диски, то для корневого каталога хватит 3Gb, но можно и больше. + +#================================== + +`sudo apt update + +Собрать зависимости: +`sudo apt build-dep имя_программы + +Если вы не хотите реально устанавливать пакеты, а только посмотреть, что будет +устанавливаться, го можно использовать ключ -s (simulate, симулировать установку): +`sudo apt-get -s install me + +Для проверки зависимостей нужно выполнить команду: +`sudo apt-get check + +Если нужно исправить зависимости: +`sudo apt-get -f install + +Если нужно исправить зависимости: +`sudo apt-get -f install + +Для удаления программы или пакета используем: +`sudo apt remove имя_программы + +Если какая-то программа была удалена, но остались зависимости, то можно авто +матически удалить все лишнее: +`sudo apt-get autoremove + +Для установки обновлений уже установленных программ выполняем следующую +команду: +`sudo apt-get upgrade + +Чтобы обновить саму ОС, выполняем команду: +`sudo apt-get dist-upgrade + +Следующую тройку команд желательно выполнять регулярно для установки об +новлений: +`sudo apt-get update +`sudo apt-get upgrade +`sudo apt-get dist-upgrade + +Все эти команды позволят вам содержать вашу копию релиза Ubuntu и установлен +ных программ в обновленном состоянии, но на новый релиз автоматически вы так +не перейдете. +Если вышел новый релиз, а не просто обновление существующего, то +на него можно перейти командой: +`sudo do-release-upgrade + +Чтобы узнать, какие вообще в системе уже установлены пакеты, можно выполнить +следующую команду +`sudo apt list —installed + +*which* - определить где находится программа: +`which ls` + +#========================================== +### GRUB2 + +В Linux сейчас самым популярным загрузчиком является GRUB2. Конфигурация +этой программы чаще всего содержится в файле +`/boot/grub/grub.cfg` +но можно встретить дистрибутивы, где этот путь выглядит так: +`/boot/grub2/grub.cfg. +В файле загрузчика записаны настройки, определяющие, нужно ли показывать меню выбора варианта загрузки, и каким должно быть это меню, а также указываются сами варианты +загрузки и предписывается, какую версию ядра следует загрузить (мы уже говори +ли, что в Linux может быть более одного ядра). +После этого может формироваться `initrd` — виртуальный диск в оперативной памя +ти (ramdisk) для временной файловой системы, используемой ядром Linux при на +чальной загрузке. Дело в том, что если ядро скомпилировано в минимальном вари +анте и все его возможности подключаются в дальнейшем с помощью модулей, то +в этот момент у ядра не будет возможности работать со специфичными жесткими +дисками, и оно не сможет загружать дальнейшие данные. Поэтому сначала грузит +ся диск /boot/initrd.xxxx, который загружает критически важные модули, и, если я не +ошибаюсь, именно он и загружает красивую картинку, которую показывает ОС во +время старта системы. +Теперь у ядра есть все необходимое для загрузки самой системы. Появляется кра +сивая картинка, которая прячет выводимый в консоль лог дальнейшей загрузки, +и управление передается программе /sbin/init. +Программа init загружает файл /etc/inittab — конфигурационный файл, в котором +прописан процесс инициализации ОС Linux, и выполняет все предусмотренные +в нем операции. + +#========================================== +### Работа с модулями ядра + +Система должна загружаться только с теми модулями, которые применяются. Все +остальные следует подгружать по мере необходимости и отключать, когда они не +используются. +модули ядра — это немного другое. Они выполняются на более низком уровне, который в основном позволяет работать с устройствами, управлять памятью и т. п. При модульной +компиляции вы можете включать и выключать функции уровня ядра с помощью +следующих команд: +`lsmod` — эта команда выведет список загруженных модулей. +`modinfo` — очень трудно разобраться, какие модули нужны в системе, а какие +нет. А ведь необходимо загружать только то, что действительно используется, +иначе увеличивается время старта системы, понапрасну расходуются ресурсы +компьютера и т. д. Так как же в этом разобраться? Необходимо знать каждый +модуль «в лицо» и понимать, для чего он нужен. +Получить информацию о модуле и помогает команда modinfo. В качестве пара +метра нужно передать ей имя интересующего модуля, и на экран будет выведена +информация о нем. Например, следующая команда запрашивает у системы ин +формацию о модуле ext3: +`modinfo ext3 + +В ответ на это мы увидим примерно следующее: +filename: +/lib/modules/2.4.18-5asp/kernel/fs/ext3/ext3.о +description: "Second Extended Filesystem with journaling extensions" +author: +"Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, +Theodore Ts’o and others" +license: +"GPL" +parm: +do_sync_supers int, description "Write superblocks +synchronously" + +Таким образом, нам становятся известными имя и расположение файла, его опи +сание, автор, лицензия и т. д. Количество отображаемой информации сильно +зависит от модуля, и, если честно, в некоторых случаях она настолько скудна, +что предназначение модуля остается непонятным; +`modprobe` — эта команда в основном используется системой для загрузки уста +новленных модулей, но можно это делать и самостоятельно. В качестве един +ственного параметра нужно передать команде имя модуля, который надо за +грузить. +Например, следующая команда загружает модуль `iptabie_nat` +`modprobe iptable_nat +`rmmod` — эта команда выгружает модуль, имя которого указано в качестве пара +метра. Если вы воспользовались модулем для выполнения определенных дейст +вий, то не забудьте по окончании работы его выгрузить. + +#========================================== +### Переменная $РАТН + +`echo $РАТН +В результате вы должны увидеть список папок, разделенных двоеточиями: +`/usr/local/bin:/bin:/usr/bin +Соответственно, когда мы отдаем в командной строке команду is, то система нахо +дит ее исполняемый файл в каталоге `/bin` и запускает его. +При запуске программ из командной строки Linux нужно обязательно указывать **./** +перед именем программы или скрипта. Например, допустим, что в текущем катало +ге есть исполняемый файл publish — тогда для его запуска нужно в консоли выпол +нить следующую команду: +./publish +В Windows и в Linux точка указывает на текущий каталог, а, значит, приведенная +команда просит запустить publish именно из текущего каталога. Впрочем, в Windows при запуске программ из текущего каталога можно ничего не указывать, по +тому что эта ОС сначала ищет файлы в текущей папке, а потом уже в системных. +Но из-за этого у Windows были проблемы с безопасностью. +ОС Linux ведет себя немного иначе, и из текущего каталога по умолчанию ничего +не запускает, а ищет в папках, указанных в переменной $PATH +Linux можно заставить «смотреть» и в текущую папку — просто для этого точку +нужно добавить в переменную $PATH: +`PATH = $РАТН:. +Не уверен, что в реальности делать что-то подобное — хорошая идея. Но я привел +этот пример, для того чтобы показать, как добавлять папку к переменной $PATH. +Если у вас есть программа `/usr/local/myprogram/publish` и вы не хотите при каждом +запуске писать этот полный путь, то можно добавить путь /usr/local/myprogram/ +в переменную $PATH: +`РАТН=$РАТН:/usr/local/myprogram/ +Смысл этой команды в том, что мы присваиваем переменной новое значение, кото +рое состоит из уже существующего, плюс двоеточие и новая папка. Если просто +написать: +PATH=/usr/local/myprogram/ +то текущее значение $PATH будет потеряно, и теперь $PATH станет равна лишь +/usr/local/myprogram/. + +#========================================== +### Права на файлы и папки + +Права можно задавать и последовательностью нулей и единиц. Если в определен +ном месте стоит 1 (указан один из символов г, w или х), то операция разрешена, а +если 0 (указан дефис) — действие запрещено. Давайте попробуем записать права +rwxr-xr— в виде нулей и единиц. Запишите вместо букв единицы, а вместо дефи +сов — нули. Должно получиться 111101100. Разобьем эту комбинацию на три час +ти: 111, 101 и 100. Теперь каждую тройку переведем в восьмеричную систему по +следующей формуле: + +Цифра1 ★ 4 + Цифра2 ★ 2 + ЦифраЗ + +У нас получатся три цифры: 7, 5 и 4, которые можно рассматривать как десятичное +число 754. Запомните его, оно нам пригодится при назначении прав на файлы и ка +талоги. Чтобы вам в дальнейшем было проще регламентировать доступ, предлагаю +все возможные варианты значений для отдельного разряда числа: +□ О — запрещено все; +□ 1 — разрешено выполнение; +П 2 — разрешена запись; +□ 3 — разрешены запись и выполнение; +□ 4 — разрешено чтение; +□ 5 — разрешены чтение и выполнение; +□ 6 — разрешены чтение и запись; +□ 7 — разрешено все. + +#### chmod +chmod параметры права файл +Компонент параметры может включать комбинацию следующих значений: +□ и — изменить права владельца; +□ g — изменить права группы; +□ о — изменить права остальных пользователей; +□ а — изменить все права (то же самое, что передать значение: ugo). + +**Внимание! +Если вы решили использовать символьные ссылки, то всегда помните особенность +формирования прав доступа на файлы. Можете даже выбить на мониторе надпись: +«Ссылки на файлы создаются с полными правами!!!» + +#========================================== +### Редактирование пользователя + +Для редактирования параметров учетной записи можно напрямую корректировать +файл /etc/passwd, но я советую использовать команду `usermod`. У нее такие же клю +чи, что и у `useradd`, но она не создает пользователя, а изменяет параметры уже су +ществующего. +С помощью `usermod` вы можете добавлять уже имеющегося пользователя в ранее +созданную группу. Давайте проделаем такую процедуру с учетной записью robert и +определим ее в группу root. Это позволит пользователю robert выполнять некото +рые административные функции: + +`usermod -G root robert + +Здесь мы выполняем команду с ключом -G. Этот ключ позволяет указать, членом +каких групп должен быть пользователь. Можно указать несколько групп, разделен +ных запятыми. В нашем случае мы добавляем пользователя только в одну группу +root. Для получения более подробной информации о команде `usermod` выполните +команду: + +`man usermod + +### Удаление пользователя + +Для удаления пользователя служит команда `userdel`. В качестве параметра ей пере +дается только имя учетной записи, которую надо удалить, и можно распрощаться +с ней навсегда. Например: + +`userdel Denver + +Если пользователь в этот момент находится в системе, будет выдано сообщение об +ошибке. +Необходимо учитывать, что удаление пользователя не уничтожает его домашний +каталог — вы должны сделать это вручную. Если же указать в команде ключ -г, то +вместе с пользователем будут удалены и его файлы в домашнем каталоге: + +`userdei -г Denver + +**Совет +Никогда не указывайте этот ключ. Выполняйте операцию только вручную, просмотрев +содержимое каталога и убедившись, что там нет нужных файлов. + +#========================================== +### Порты / протоколы + +HTTP 80 +HTTPS 443 +SMTP 25 +SMTPS 465 +LDAP 329 +LDAPS 636 +TELNET 23 +TELNETS 992 +SHELL 514 +SSH 22 +FTP 21 +FTPS 990 +FTP-DATA 20 +FTPS-DATA 989 +IMAP 143 +IMAPS 993 +POP3 110 +POP3S 995 +IRC 194 +IRCS 994 + +#========================================== +### Шифрование файлов + +В качестве примера зашифруем список паролей `/etc/passwd` в файл `/home/passwd` по +алгоритму DES. Для этого выполним команду: + +`/usr/bin/openssl des -in /etc/passwd -out /home/passwd + +В ответ на эту директиву программа попросит вас указать пароль и затем повторить +его ввод, чтобы исключить возможные ошибки. +Выполните команду: `cat /home/passwd` и убедитесь в том, что содержимое этого +файла нечитаемо. + +Для расшифровки файла выполните команду: + +`/usr/bin/openssl des -d -in /home/passwd -out /etc/passwd + +Таким нехитрым способом мы можем безопасно хранить копию файла с паролями. + +#========================================== +### Основные параметры конфигурации сервера SSH + +```sh +#Port 22 +#Protocol 2,1 +#ListenAddress 0.0.0.0 +#ListenAddress : : +# HostKey for protocol version 1 +# Ключ для первой версии протокола +#HostKey /etc/ssh/ssh_host_key +# HostKeys for protocol version 2 +# Ключи для второй версии протокола +#HostKey /etc/ssh/ssh_host_rsa_key +#HostKey /etc/ssh/ssh_host_dsa_key +# Lifetime and size of ephemeral version 1 server key +# Время жизни и размер регенерируемого серверного ключа версии 1 +#KeyRegenerationInterval 3600 +#ServerKeyBits 768 +# Logging +# Ведение логов +#obsoletes QuietMode and FascistLogging +#SyslogFacility AUTH +SyslogFacility AUTHPRIV +#LogLevel INFO +``` +Рассмотрим основные параметры, которые вам могут пригодиться: +□ Port — порт, на котором ожидаются подключения. По умолчанию — 22. Неко +торые администраторы любят изменять значение по умолчанию, перенося сер +вер на другой порт. В какой-то степени это оправданно. Например, если у вас +нет веб-сервера, то можно поместить SSH на порт 80. Хакеры будут думать, что +это веб-сервер, и не станут его ломать; +□ Protocol — поддерживаемые протоколы. Обратите внимание, что первым идет +число 2, а затем 1. Это значит, что сервер будет сначала пытаться подключиться +по второй версии протокола, и только затем по первой. Я рекомендую убрать +знак комментария с этой строки и удалить число 1, чтобы использовалась только +последняя версия. Уже давно пора обновить клиентское программное обеспече +ние и перейти на более безопасные технологии. Зацикливание на старых про +граммах приносит только убытки; +□ ListenAddress — адрес для прослушивания подключения. У вашего сервера мо +жет быть несколько сетевых карт. По умолчанию идет прослушивание всех ин +терфейсов. Вы должны указать только те, с которых будете подключаться по +SSH. Например, очень часто одна сетевая карта смотрит во внутреннюю сеть, а +другая — в Интернет. Если вы будете подключаться по SSH-протоколу лишь из +внутренней сети, то следует прослушивать только этот адрес (задается в формате +адрес:порт). Разрешается включать несколько таких записей, чтобы указать тре +буемые интерфейсы; +□ HostKey — путь к файлам, содержащим ключи шифрования. Нужно прописывать +только закрытые ключи, которые использует сервер для расшифровки пакетов; +□ KeyRegenerationintervai — интервал времени, через который сервер обновляет +ключи. В версии 1 во время сессии ключи могут регенерироваться. Это позволяет сделать невозможным раскрытие пакетов за счет смены ключей, которые по +умолчанию меняются каждые 3600 секунд. Если установить 0, то регенерации +не будет. Так как мы отказались от первой версии протокола (см. параметр +Protocol), то этот атрибут не влияет на работу; +□ serverKeyBits — длина серверного ключа. По умолчанию установлено 7 68, мини +мальное значение — 512; +□ SysiogFaciiity — тип сообщений, которые будут сохраняться в журнале; +□ LogLevei — уровень событий, которые будут попадать в журнал. Возможные +уровни соответствуют системным, которые мы будем рассматривать в разд. 12.5; +□ LoginGraceTime— интервал времени, в течение которого пользователь должен +ввести правильный пароль, иначе соединение будет разорвано; +□ РеrmitRootLogin— флаг, определяющий, разрешено (yes) или запрещено (по) +входить в систему по протоколу SSH под пользователем root. Мы уже говорили, +что root — это бог в системе, и его возможности нужно использовать аккуратно. +Если в систему нельзя входить с такими правами, то и по SSH тем более. Срочно +меняйте этот параметр на по; +□ strictModes — флаг, регламентирующий необходимость проверки состояния +файлов и их владельцев, пользовательских файлов и домашнего каталога до ввода +пароля. Желательно установить yes, потому что многие начинающие пользовате +ли делают все свои файлы доступными для записи; +□ RSAAuthentication— разрешена ли аутентификация по алгоритму RSA. Пара +метр действует для первой версии протокола; +□ PubkeyAuthentication— дозволена ли аутентификация по публичному ключу. +Параметр действует для второй версии протокола; +□ AuthorizedKeysFile — файл с публичным ключом, который может использовать- +ся для аутентификации; +□ RhostsAuthentication — флаг, разрешающий аутентификацию по файлам $НОМЕ/ +.rhosts и /etc/hosts.equiv. По умолчанию стоит по, и без особой надобности менять +этот параметр не стоит, потому что это небезопасно; +□ ignoreRhosts — флаг, запрещающий читать файлы -/.rhosts и -/.shosts. Без необ +ходимости значение лучше не изменять, потому что это может повлиять на +безопасность; +□ AuthorizedKeysFile— файл для хранения списка авторизованных ключей. Если +пользователь входит в систему с имеющимся в этом файле ключом, то его пус +тят автоматически без ввода дополнительных паролей; +□ RhostsRSAAuthentication— флаг, регламентирующий использование при аутен +тификации ключа хоста из каталога /etc/ssh/ssh_known_hosts. Параметр применя +ется в первой версии SSH; +□ ignoreUserKnownHosts — параметр, указывающий на необходимость игнориро +вания пользовательских списков доверенных компьютеров. Если он равен по, то необходимо доверять компьютерам из списка ~/.ssh/known_hosts при аутентифика +ции RhostsRSAAuthentication. Не верьте никому, поэтому параметр лучше всего +изменить на yes; +□ PasswordAuthentication — требование пароля. Если значение равно yes, то будет +требоваться пароль. При использовании авторизации через ключи параметр +можно отключить; +□ РеrmitEmptyPasswords — разрешение пустых паролей. По умолчанию установле +но по, что запрещает использование пустых паролей, и изменять это значение не +стоит; +□ KerberosAuthentication— использование проверки подлинности по протоколу +Kerberos. В последнее время именно эта аутентификация набирает большую по +пулярность благодаря своей безопасности; +□ KerberosOrLocaiPasswd— если пароль Kerberos не был принят, то включается +проверка локального файла паролей из файла /etc/shadow; +□ KerberosTicketcieanup— удаление билета Kerberos из кэша при выходе из сис +темы; +□ Banner— позволяет указать файл, в котором находится текст приветствия, ото +бражаемого пользователям. + +#### Параметры доступа к серверу sshd +Кроме директив, можно использовать следующие: +□ AllowGroups — позволить вход в систему только пользователям указанных групп +(указываются через пробел в одной строке); +□ Allowusers — разрешить вход в систему пользователям, имена которых указаны +через пробел; +□ DenyGroups— запретить вход в систему пользователям указанных через пробел +групп; +□ DenyUsers — запретить вход в систему пользователям, имена которых указаны +через пробел. Этот параметр бывает удобен, когда дано разрешение на вход +группе, но нужно отказать в подключении к SSH-серверу одному из ее пользо +вателей. +Я рекомендую вам явно прописать группы или имена пользователей, которые мо +гут входить в систему по SSH. + +#### Конфигурирование клиента SSН + +Настройки SSH-клиента содержат еще меньше параметров. В файле `/etc/ssh/ssh_config` находятся глобальные настройки для всех пользователей в системе. Но вы +можете для любого из них переопределить произвольный параметр в файле +`ssh_config` из каталога пользователя. + +#### Вход по ключу + +```sh +ssh-keygen +# -t - тип ключа (rsa, dsa, rsa1) +# -f - файл в котором будет сохранен закрытый ключ +# -b - длина ключа (не менее 512. по умолч = 1024) + +ssh-keygen -t rsa -f ~/.ssh/mykey + +cd /home/vlapa +mkdir .ssh +``` +Получив ключи, вы должны отправить файл `~/.ssh/mykey.pub` на удаленный ком +пьютер, чтобы SSH-сервер мог использовать его для аутентификации. + +Администратор сервера должен добавить содержимое публичного ключа в файл +`ssh/authorized_keys`. Для этого можно выполнить на сервере следующую команду: +`cat myrsakey.pub » .ssh/authorized_keys` +Теперь можно подключаться к серверу, используя публичный ключ для подтвер +ждения личности. Но перед этим убедитесь, что в конфигурационном файле серве +ра включены следующие директивы: + +RSAAuthentication yes +PubkeyAuthentication yes + +Для подключения к серверу выполните команду: + +`ssh -i ~/.ssh/myrsakey` + +С помощью параметра -i мы указываем файл публичного ключа. Если этого не +сделать, то будет использоваться id_rsa— файл по умолчанию, его имя задает +директива identityFile в конфигурационном файле SSH-клиента. +Теперь сервер будет запрашивать у вас не пароль, а слово (фразу), которое вы ука +зали при генерации публичного ключа: +`Enter passphrase for key` +Если в конфигурационном файле SSH-сервера изменить параметр PasswordAuthen- +tication на по, то пароль проверяться не будет, а связь станет устанавливаться +только на основании ключей. Для обеспечения безопасной связи этого достаточно. + +#========================================== +### Анализ безопасности дистрибутива + +```sh +sudo apt-get install lynis +sudo lynis audit system +# -c - выполнить все проверки (check all) +``` + +#========================================== +### SAMBA + +Основным конфигурационным файлом для Samba является `smb.conf`, который мож +но найти в каталоге `/etc/samba/` (в некоторых дистрибутивах это может быть каталог +`/etc`). Кроме него, в этом каталоге находится файл `Imhosts`, с помощью которого про +исходит сопоставление IP-адресов и имен компьютеров, — аналогично файлам +`/etc/hosts` в Linux и `[Диск:]\Windows\System32\dnvers\etc\lmhosts.sam` в Windows. +Дополнительно в этом же каталоге можно создать следующие файлы (некоторые из +них могут существовать): + +□ smbusers — список пользователей, которым разрешено подключаться к серверу +Samba; + +□ smbpasswd — пароли пользователей из файла smbusers. + +Как видите, у Samba — свои конфигурационные файлы для хранения списка +пользователей. Если вы создаете их вручную, то убедитесь, что права на чтение и +запись установлены правильно. Файл должен быть доступен только администра +тору, т. е. владельцем может быть лишь root и никто иной. +Конфигурационный файл `smb.conf` содержит не так много директив +#### Основные настройки +Конфигурационный файл разбит на секции. Самой первой идет секция +[global], +в которой описываются глобальные настройки сервера. В ней можно увидеть сле +дующие директивы: +□ workgroup = имя — имя группы, в которую входит сервер. Когда в Windows вы +входите в сетевое окружение, то можете увидеть все доступные ресурсы, разби +тые на категории. В каждой группе могут быть свои компьютеры или серверы; +□ netbios name = имя — имя, которое пользователи будут видеть в сетевом окру +жении для этого сервера, оно не должно совпадать с именем рабочей группы; +□ server string = описание — Свободный ТеКСТ, КОТОрЫЙ МОЖНО будет увидеть В +поле Description (Комментарий) свойств сервера или окне сетевого окружения +в режиме Details (Таблица). В этом поле вы можете поместить комментарий, +описывающий содержимое сервера, — например: Файловый архив Сергея; +□ hosts allow = адреса — указание (через пробел) IP-адресов или сетей, которым +разрешен доступ к Samba-серверу. Например, чтобы открыть доступ всем компьютерам сети 192.168.1.x и одному компьютеру с адресом 192.168.2.2 из другой +сети, надо написать следующую строку: +hosts allow = 192.168.1. 192.168.2.2 +□ printcap name = файл — файл описания принтеров, подключенных к системе. По +умолчанию это `/etc/printcap` +□ load printers = yes — установка режима (yes) автоматического включения +принтеров в список открытых ресурсов. Если в этом нет надобности, то укажи +те по; +□ printing = система— тип системы печати. Здесь можно использовать одно из +Следующих Значений: bsd, sysv, pip, lprng, aix, hpux ИЛИ qnx. +#### Безопасность +□ guest account = имя — определяет учетную запись, с правами которой пользо +ватель сможет входить в систему. Если ваш сервер не содержит секретной ин +формации и используется для открытого обмена файлами, то можно завести гос +тевую учетную запись, иначе такой вход небезопасен; +□ log file = файл — задает название файла-журнала. Например, можно написать: +/var/iog/samba/%m. log. Обратите внимание, что в имени присутствует символ +процента, за которым следует буква т. Эта комбинация во время работы будет +заменена именем пользователя, активность которого сохраняется. Так, напри +мер, для пользователя robert будет создан журнал /var/log/samba/robert.log; +□ max log size = n— определяет максимальный размер журнала в килобайтах. +Укажите значение о, если ограничения не должно быть; +□ sysiog only — предписывает использовать для журналирования только syslog; +□ security = уровень — определяет степень доступа. Параметр уровень может +принимать одно из следующих значений: +• user — доступ на уровне пользователя; +• share — аутентификация на основе имени и пароля; +• server— проверка пароля производится сторонним smb-сервером. Имя сер +вера, на котором хранятся пароли, задается с помощью директивы: +password server = ИмяСервера +что позволяет держать пароли на другом smb-сервере, который и будет осу +ществлять проверку пароля; +• domain — включает сервер в домен Windows NT, а пароль для доступа указы +вается в файле, определенном с помощью директивы: +smb passwd file = ИмяФайла +□ encrypt passwords = yes — позволяет шифровать пароли, передаваемые по сети. +Если вы работаете в режиме с шифрованными паролями, то при авторизации +будет использоваться файл /etc/samba/smbpasswd (это можно изменить с помощью +директивы: smb passwd file). Такой файл необходим из-за различий в шифрова +нии Windows и Linux; +***Совет +Не применяйте открытые пароли без особой надобности. Не забывайте о существова +нии программ-снифферов, которые анализируют сетевой трафик и позволяют найти +пароли, передаваемые по сети. Если они не зашифрованы, то злоумышленник сможет +проникнуть в вашу систему.*** +□ smb passwd file = файл— указывает на расположение файла с паролями. По +умолчанию он находится в том же каталоге, где расположены конфигурацион +ные файлы Samba; +□ ssi с а certFile = файл— задает файл сертификата, необходимый для работы +протокола SSL, гарантирующего безопасность передачи данных; +□ unix password sync = yes — разрешает пользователям Windows менять пароль +Samba, одновременно обновляя системные пароли в Linux. Если в этом нет необходимости, установите значение параметра по. Для работы этой директивы +нужно указать программы, которые будут изменять пароли (параметр: passwd +program) и сообщения, появляющиеся перед пользователем (параметр: passwd +chat). +Приведу пример использования: +```sh +unix password sync = Yes +passwd program = /usr/bin/passwd %u +passwd chat = *New*password* %n\n *Retype*new*password* %n\n +*passwd:*al^authentication*tokens*updated*successfully* +``` +Помимо ЭТОГО, необходимо использовать директивы: encrypt passwords И smb +passwd file; +□ username map = файл — указание на файл, где хранится список пользователей +сервера Samba для клиентов Windows 9х (о нем подробнее мы поговорим в +разд. 6.3)\ +□ usershare max shares — максимальное количество пользовательских каталогов, +которые могут быть открыты для общего доступа; +□ usershare allow guests = yes — еСЛИ ЭТОТ параметр ВКЛЮЧен, ТО ГОСТИ системы +смогут получить доступ к открытым ресурсам. По умолчанию этот параметр от +ключен, чтобы доступ к открытым ресурсам получали только авторизованные +пользователи. +#### Сеть +В этом разделе мы изучим директивы настройки сетевого протокола: +□ include = файл— позволяет подключить дополнительный конфигурационный +файл, например, с другого компьютера или содержащий настройки для конкрет +ного подключающегося компьютера. В последнем случае имя файла обычно +задается в формате: путь.%т. Здесь путь— это начало полного имени файла, а +%т — NetBIOS-имя компьютера. Например: /etc/samba/smb.conf.robert; +□ socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192— Задает Парамет +ры протокола и размер входного и выходного буферов. Здесь: +• t c p_n o d e l a y — позволяет быстрее (без задержек) передавать данные; +• s o_r c v bu f — размер принимающего буфера; +• s o_s n d b u f — размер передающего буфера; +□ interfaces = интерфейсы— если у вас установлены две сетевые карты, которые +направлены на разные сети, то с помощью этой директивы можно позволить +работать с Samba пользователям из какой-то конкретной или из обеих сетей; +□ bind interfaces only— позволяет привязаться только к именованным интер +фейсам или сетям, указанным в параметре interfaces. Если ваша сеть не защи +щена сетевым экраном, то настоятельно рекомендуется использовать этот параметр, чтобы доступ к серверу Samba имели только компьютеры из вашей сети, а +не любой удаленный пользователь из Интернета. +#### Замена сервера Windows +Если посмотреть на параметры, описанные в этом разделе, можно увидеть, что +Samba способна полностью заменить Windows-сервер, и рабочие станции на базе +Windows не заметят неудобств: +□ local master = yes — позволяет сделать Samba-сервер основным браузером сети; +□ domain master = yes — дает возможность сделать Samba-сервер главным брау +зером домена. Не устанавливайте значение yes, если в вашей сети уже есть кон +троллер домена Windows NT; +□ logon script = файл— если директива domain logons включена, то в этом па +раметре можно указать файл bat-сценария, который будет выполняться на ком +пьютере клиента при входе в систему. Сценарий может, например, задаваться +в виде %m.bat (заменяется именем компьютера) или %u.bat (подменяется на имя +пользователя); +□ logon path = путь — определяет место хранения пользовательских профилей. +При использовании этой директивы необходимо убрать комментарии с секции +[Profiles], которую можно найти в файле конфигурации по умолчанию. +#### Поддержка WINS и DNS +WINS (Windows Internet Naming Service, служба имен Интернета для Windows) — это +сервис для сопоставления имен компьютеров и IP-адресов. База данных WINS чем-то +напоминает DNS (Domain Name Service), только в ней хранятся NetBIOS-имена ком +пьютеров, a DNS обслуживает доменные имена. +Для настройки работы через WINS служат следующие директивы: +□ wins support ~ yes — разрешить использование WINS-сервера; +□ wins server = w.x.y.z — IP-адрес WINS-сервера; +□ d n s Proxy = yes— если эта опция разрешена, то нераспознанные NetBIOS- +имена можно попытаться определить через DNS-сервер; +□ name resolve order — последовательность, в которой будет производиться по +иск адреса хоста по его имени. В конфигурационном файле можно найти сле +дующий пример: +name resolve order = lmhosts host wins beast +Если использовать это значение, то при поиске адреса система сначала будет ис +кать имя хоста в файле lmhosts, затем в hosts, потом будет задействован файл wins +и последним — beast (broadcast, или широковещательный запрос). +#### Отображение файлов +В Linux и Windows применяются разные правила именования файлов. Например, +в Linux названия чувствительны к регистру, а в Windows — нет. Это значит, что +файлы DATA.TXT и data.txt в Windows будут восприняты как один и тот же файл, +чего не скажешь о Linux. +Для решения этой проблемы есть несколько команд: +□ case sensitive = no — не принимать во внимание различие в регистре; +□ default case = lower — отображать все файлы в нижнем регистре; +□ preserve case = по И short preserve case = no — запретить сохранение имен +файлов с учетом регистра. +Если у вас в сети работают пользователи Windows-систем, то рекомендуется оста +вить указанные значения. Для однородной Linux-сети можно разрешить сохранять +регистр. +#### Описание объектов +После определения основных параметров Samba-сервера можно описывать объек +ты, к которым может получать доступ пользователь. Это делается в отдельных сек +циях, которые идут после секции [Global], рассмотренной в разд. 6.1. +#### Пора домой +Конечно же, любой пользователь захочет работать со своим каталогом. Для этого +он должен иметь учетную запись в Linux, с которой и будет связан его каталог. Об +ращение к такому каталогу будет выглядеть так: \\сервер\имя, где сервер — это имя +сервера или его IP-адрес, а имя — это имя пользователя, домашний каталог которо +го необходимо увидеть. +Чтобы разрешить пользователям работать с собственными каталогами, нужно опи +сать раздел [homes]. Рассмотрим пример такой секции: +[homes] +comment = Home Directories +browseable = no +writable = yes +valid users = %S ; %S - строка с перечислением пользователей +create mode = 0750 +directory mode = 0775 +В этой секции могут присутствовать следующие директивы: +□ comment — текстовый комментарий, который не влияет на работу; +□ browseable = по— режим отображения ресурса в списке просмотра. Если ука +зать yes, то в сетевом окружении будут видны папки пользователей; +□ writable = yes — предикат записи в домашний каталог. При значении по созда +ние и изменение файлов станет невозможным; +□ create mode = 0750 — права доступа для создаваемых файлов. В этом случае +владелец файла имеет полные права, пользователи группы могут читать и выпол +нять его, а остальные — бесправные. Иногда следует понизить значение параметра +до 740, чтобы пользователи группы могли только читать; +□ directory mode = 0775 — права доступа для создаваемых каталогов. В этом слу +чае у пользователей группы тоже слишком высокие права, и я бы понизил их +до 755, чтобы запретить им создавать файлы в новом каталоге. Остальные мо +гут только просматривать каталог, но и это может оказаться лишним, и для боль +шей безопасности лучшим решением будет значение 750; +□ valid users = пользователи — список пользователей, которым разрешен доступ +к домашним каталогам. Значения разделяются пробелом. По умолчанию доступ +имеют все, но в реальных условиях это необходимо только некоторым. Поэтому я +рекомендую в явном виде прописать имена тех пользователей, которые нуждаются +в работе со своим домашним каталогом. +#### Доменный вход +Если вы настроили сервер Linux так, чтобы пользователи Windows могли входить +в систему через smb, используя его как сервер домена, то необходимо убрать ком +ментарии С секции [netlogon]: +; [netlogon] +; comment = Network Logon Service +; path = /usr/local/samba/lib/netlogon +; guest ok - yes +; writable = no +В этой секции также присутствуют комментарий и директива writable. Пользова +тели не должны иметь право записи в этот каталог, потому что здесь хранятся сце +нарии, которые выполняются при входе в систему. Файлы из этого каталога должен +изменять только администратор. +Помимо этого, есть еще две команды: +□ path = путь — полный путь к каталогу netlogon; +□ guest ok = yes — разрешение гостевого входа. +Также нужно убрать комментарии в секции [Profiles], которая выглядит следую +щим образом: +; [Profiles] +; path = /usr/local/samba/profiles +; browseable = no +; guest ok = yes +В этом каталоге хранятся профили пользователей, и он не должен быть виден в +сетевом окружении Windows, поэтому директива browseable = по запрещает отображение. +#### Распечатка +Чтобы пользователям стали доступны принтеры, подключенные к Linux-c^ +нужно настроить следующую секцию: +[printers] +comment = All Printers +path = /var/spool/samba +browseable = no +guest ok = no +writable = no +printable = yes +Обратите внимание, что по умолчанию секция открыта, и зарегистрированные +пользователи уже имеют доступ к принтерам. Если вы хотите, чтобы +смогли использовать принтер, то добавьте строку public = yes. Однако я не ремендую это делать, потому что такая добавка предоставит пользователям возможность для подшучивания. Например, в моей сети был случай, когда +ник рассылал на все принтеры с общим доступом разные картинки. Вроде ' +но, а работу тормозит, и бесполезно расходуются картриджи. +#### Общий доступ +Чаще всего на сервере необходим каталог, через который любой пользователь с +жет обмениваться файлами с другими участниками сети. Для настройки такого +талога служит секция [tmpj: +; [tmp] +; comment = Temporary file space +; path = /tmp +; read only = no +; public = yes +По умолчанию секция закрыта, и для разрешения доступа к ней необходимо убрать +комментарии. Обратите внимание на путь к открытому каталогу. Это /tmp — ката +лог для хранения временных файлов пользователей. С помощью директив read +only (значение по) и public (значение yes) мы указываем серверу Samba, что ката +лог открыт, и в него могут записывать и из него читать файлы все пользователи. +Несмотря на удобства, которые предоставляет этот каталог, я рекомендую исполь +зовать его только в закрытых сетях. Если у вас есть выход в Интернет, то с помо +щью сетевого экрана необходимо ограничить доступ к Samba. Так как в каталог +разрешено записывать любым пользователям, злоумышленник может записать +в него свои файлы, которые помогут ему получить на сервере права администратора. +#### Личные каталоги +Все рассмотренные ранее разделы (секции) конфигурационного файла имеют усто +явшиеся имена и предназначены для решения определенных задач. Но в некоторых +случаях вы можете изменить имя раздела, и на работе сервера это не скажется. +Однако я не рекомендую это делать, потому что в одной версии Samba все будет +работать хорошо, а при обновлении программ сервера ситуация может измениться, +и потом трудно будет найти ошибку, из-за которой Samba станет работать неверно. +Тем не менее вы можете создавать собственные разделы, в которых будете описы +вать некоторые права. Например, вам понадобится организовать общий каталог, +в котором файлы будут доступны всем пользователям, но записывать туда смогут +только пользователи определенной группы. Допустим, что в этом каталоге должны +храниться какие-то картинки. Для решения такой задачи можно создать раздел +[shareimages] следующим образом: +[share images] +comment = Share Images +path = /home/samba/images +public = yes +writable = yes +write list = @staff +printable = no +Для этого раздела задаются следующие директивы: +□ path = /home/samba/images — каталог, который МЫ ХОТИМ Открыть; +□ public = yes — признак доступности; +□ writable = yes — запись в каталог разрешена; +□ write list = Gstaff — определяет группу staff, которая может записывать +файлы. Для всех остальных каталог открыт только для чтения. +В таких объявлениях каталогов можно использовать любые директивы, которые мы +рассматривали в этой главе. +#### Управление пользователями +Для начала разберемся с именами пользователей. По умолчанию для доступа к сер +веру Samba применяются имена из системного файла /etc/passwd. Но вы можете за +вести отдельные записи Samba-сервера, которые будут соответствовать реальным, +однако их можно будет использовать только для подключения к Samba, а не к сис +теме. +Имена Samba описываются в файле /etc/samba/smbusers, расположение и название +которого могут быть изменены директивой username map файла smb.conf. Содержимое файла /etc/samba/smbusers может быть, например, таким: +```sh +# Unix_name = SMB_namel SMB_name2 +root = administrator admin +nobody = guest pcguest smbguest +``` +У списка имен несколько предназначений. Во-первых, с его помощью вы можете +отразить имена, привычные для пользователей DOS и Windows, на учетные записи +Linux. Например, в Windows максимальные права принадлежат пользователю +Administrator, а в Linux это root. И во второй строке приведенного примера уста +навливается соответствие имен administrator и admin пользователю root. +Во-вторых, использование этого файла позволяет аккумулировать несколько имен +на одной учетной записи. Например, у вас есть группа пользователей, которым +должны быть назначены одинаковые права. Для этого заводим в Linux только одну +учетную запись nobody (под ней будут работать пользователи), а в Samba прописы +ваем ДЛЯ нее неСКОЛЬКИХ пользователей: guest, pcguest И smbguest— под этими +именами они будут входить в систему. +Несмотря на то что мы отразили имена пользователей administrator и admin, и это +разные учетные записи, для них будет использоваться один пароль — назначенный +пользователю root. +Информация о пользователях, которым разрешен доступ, хранится в файле +/etc/samba/smbpasswd. Его расположение и имя могут быть изменены с помощью директивы smb passwd file файла smb.conf. \ +Рассмотрим пример содержимого файла: +fienov:0:813D6593C11F1173ED98178CA975D79:[UX ]:LCT-41FA818F +robert:500:813D6593C11F1173ED98178CA975D79:[UX ]:LCT-41FA818F +Сразу видно, что файл чем-то похож на /etc/passwd. Он также разделен двоеточиями +на несколько колонок. Наиболее интересны из них первые три: имя пользователя, +его UID в системе Linux и пароль. +Но добавлять пользователей вручную не очень удобно, потому что требуется за +шифровать и прописать пароль, что не так уж и просто. Чтобы облегчить задачу, +в пакет Samba включена утилита smbpasswd, которая принимает следующие пара +метры: +□ -а — добавить пользователя в систему. Учетная запись должна уже существо +вать в файле /etc/passwd. Например, давайте пропишем Роберта, с которым мы +уже не раз работали: +smbpasswd -a robert +В ответ на это программа попросит вас дважды ввести пароль. Указанная вами +комбинация никак не влияет на системный пароль и используется только для +доступа к Samba. Таким образом, пароли могут отличаться друг от друга. Я даже +рекомендую сделать их различными. ОС Windows умеет запоминать пароли и +хранить в своей системе, и версии Windows 9х делают это небезопасным спосо +бом. Если злоумышленник сможет украсть пароль на Samba, то он проникнет и +в систему; +□ -х — удалить пользователя. Чтобы исключить Роберта из системы, выполните +команду: smbpasswd -х robert; +□ -d — деактивировать пользователя. Если необходимо временно отключить дос +туп для пользователя, не удаляя его из системы, выполните команду smbpasswd +-d robert. Давайте посмотрим на строку, соответствующую Роберту, после вы +полнения этой команды: +robert:500:813D6593C11F1173ED98178CA975D79:[DUX ]:LCT-41FA818F +Обратите внимание, что в четвертой колонке в квадратных скобках появилась +буква D. Она как раз и указывает на то, что запись деактивирована. Так вы легко +можете определить, какие записи активны, а какие нет; +□ -е — активирЪвать пользователя. С помощью этой команды можно подключить +деактивированного ранее пользователя: smbpasswd -е robert. +Если запустить smbpasswd без параметров, то вы сможете поменять свой пароль, +и это можно будет сделать с текущими правами. Выполнение всех остальных +команд требует прав администратора, поэтому их придется выполнять с использо +ванием sudo. +Напоминаю, что файл /etc/samba/smbpasswd используется, если пароли передаются +по сети в зашифрованном виде. В этом случае, чтобы предоставить доступ к Samba +всем пользователям системы, необходимо для каждого выполнить команду: +smdpasswd. +#### Использование Samba +Сервис Samba в основном создавался для пользователей Windows, но и поклонники +Linux тоже оценили все преимущества этой технологии, тем более что ОС Linux +управляет совместным доступом к файлам по сети не хуже Windows, а в чем-то да +же лучше. Для работы с Samba из ОС Linux служит команда: smbciient. +Чтобы подключиться к серверу, необходимо указать как минимум два ключа: -L +(адрес сервера) и -и (имя пользователя). В ответ на это программа запросит ввести +пароль. Если вы не используете шифрование, то необходимо ввести системный па +роль, в противном случае воспользуйтесь тем, который вы указали при переносе +пользователя в файл /etc/samba/smbpasswd (при запуске команды smbpasswd). +Итак, выполните следующую команду для тестирования сервера: +smbciient -L localhost -U root +После ввода пароля пользователя root вы должны увидеть все открытые ресурсы +сервера. +Вы должны учитывать, что в этом списке находятся не все каталоги. Если, например, у домашних каталогов из раздела [homes] файла конфигурации директива +browseable установлена в значение по (см. разд. 6.2.7), таких каталогов видно не +будет. Это вполне логично, потому что злоумышленнику нельзя давать возмож +ность лицезреть имена каталогов, особенно если они соответствуют именам поль +зователей или содержат конфиденциальные данные. Никогда не изменяйте этот +параметр, чтобы хакер не знал, что он должен сломать. +Для подключения к открытому ресурсу сервера нужно подать команду: smbciient, +передав ей имя ресурса, которое задается в формате UNC (Universal Naming +Convention, универсальное именование объектов) с применением следующего синтаксиса: +\\ИмяСервера\ресурс +Например, вы хотите подключить домашний каталог пользователя flenov. Его адре +сом будет: +\\192.168.1. l\flenov +Но здесь надо сделать одно замечание: в Linux обратная косая черта (\) является +служебным символом, поэтому каждый такой знак должен заменяться двумя сим +волами \\ (т. е. каждый знак \ экранируется еще одним знаком \). Поскольку в на +чале UNC-имени идут два знака \\, то они заменяются на четыре обратных косых +черты, и приведенный здесь адрес должен быть введен так: +WW192.168.1. lWflenov. +Итак, для подключения к ресурсу выполняем команду: +smbclient \\\\192.168.1. lWflenov +Если вы обращаетесь к ресурсу, который требует авторизации, необходимо указать +имя пользователя, обладающего правами: +smbclient \W\192.168.1. lWflenov -U flenov +При удачном подключении к открытому ресурсу вы увидите такое приглашение: +Smb: \> +Теперь можно выполнять различные операции над файлами. Чтобы узнать, какие +команды доступны, введите директиву help или знак вопроса (?). Команды, кото +рые вы увидите, очень похожи на команды FTP (более подробно с FTP мы позна +комимся в главе 10, см. также приложение /). Для отключения от ресурса необхо +димо выполнить команду exit. + +#========================================== +### Настройка sendmail + +Основной конфигурационный файл, который вам понадобится, — `/etc/sendmail.cf` или +`/etc/mail/sendmail cf`. Если файла не существует, то, скорей всего, sendmail не установ +лен, что случается в установке дистрибутива по умолчанию. Устанавливаем: +`sudo apt-get install sendmail +После установки сразу же должна начаться автоматическая настройка. Если и по +сле этого файла конфигурации не оказалось в системе, то выполните эту команду: +sudo sendmaiIconfig +Программа начальной настройки запросит пути к конфигурационным файлам* Со +гласитесь со значениями по умолчанию, но обратите внимание, какие пути у вас +спрашивают. В последнем релизе дистрибутива Ubuntu версия sendmail предлагает +использовать путь /etc/mail/ для всех файлов. +Сервер sendmail имеет плохую репутацию в связи со сложностью его настройки. +Действительно, стоит лишь взглянуть на размер файла sendmail.cf, и становится жут +ко — это 32 килобайта (более 1000 строк). А если заглянуть внутрь файла, то станет +еще страшнее от непонятных ключей и директив. +В файле конфигурации sendmail все параметры сгруппированы по разделам. Раз +биение оформляется в виде следующих строк: +```sh +################## +# Local info # +################## +``` +Столь «красивое» оформление означает, что далее следует раздел Local info. По +добных секций несколько — в частности, обычно присутствуют такие: +□ Local info — локальная информация, основные сведения о сервере и домене; +□ options — настройки работы программы sendmail; +□ Message precedences — приоритеты сообщений; +□ Trusted users — доверенные пользователи; +□ Format of headers — форматы Заголовков. +Рассмотреть все настройки в этой книге невозможно — в моей системе этот конфи +гурационный файл занимает 50 Кбайт. Если расписывать каждый параметр, понадо +бится отдельное издание. Наша цель— эффективность и безопасность, поэтому +рассмотрим только те настройки, которые касаются этих вопросов, и испытаем +sendmail в действии. +Для упрощения конфигурирования sendmail в последних версиях этого почтового +сервиса используется новый файл — sendmail.mс (МС означает Minimal Configuration или +минимальная конфигурация), который можно найти в каталоге /etc/mail. +```sh +divert(-1) +dnl This is the sendmail macro config file. If you make changes to this +dnl file, you need the sendmail-cf rpm installed and then have to +dnl generate a new /etc/sendmail.cf by running the following command: +dnl Это файл макроконфигурации sendmail. Если вы делаете изменения в этом +dnl файле, вам нужна инсталляция rpm sendmail-cf, с помощью которой можно +dnl сгенерировать новый /etc/sendmail.cf, запустив команду: +dnl +dnl +m4 /etc/mail/sendmail.me > /etc/sendmail.cf +dnl +include('/usr/share/sendmail-cf/m4/cf .m4’) +VERSIONID('linux setup for ASPLinux’)dnl +OSTYPE('linux') +dnl Uncomment and edit the following line if your mail needs to be +dnl sent out through an external mail server: +dnl Раскомментируйте следующую строку, если вам нужно посылать почту +dnl через внешний почтовый сервер: +dnl define('SMART_HOST','smtp.your.provider') +define('confDEF_USER_ID',''8:12'')dnl +undefine('UUCP_RELAY')dnl +undefine('BITNET_RELAY')dnl +``` +Файл sendmail.me имеет более простой формат по сравнению со старым sendmail.cf, +благодаря чему уменьшается вероятность допустить ошибку при его конфигуриро +вании. После внесения изменений его необходимо скомпилировать (перевести файл +sendmail.mс в формат sendmail.cf) специальной командой, в результате чего получает +ся файл /etc/sendmail.cf. +Мы в основном будем рассматривать параметры, которые нужно устанавливать +в файле sendmail.cf, а если описывается параметр файла sendmail.mс, я буду явно указывать на это. +Иногда при неправильных настройках загрузка Linux может зависать при старте +сервиса sendmail. Это происходит из-за того, что ваш почтовый сервер не может +определить имя компьютера. Откройте файл /etc/hosts. В нем чаще всего будет в наличии только одна строка: +127.0.0.1 localhost.localdomain localhost + +Подробно с этим файлом мы познакомимся в главе 77, когда станем рассматривать +DNS. Сейчас нам надо знать, что эта строка описывает IP-адрес 127.0.0.1, который +соответствует имени localhost. В любой системе такие адрес и имя указывают на +вашу локальную машину. Когда в сетевых программах вы указываете localhost, то +это имя преобразуется в IP-адрес 127.0.0.1. +Настройка DNS может быть очень важна для правильной отправки почты. Допустим, что у меня есть домен www.flenov.ru. Этот домен может загружать веб-сайт, а +может отправлять почту, если послать что-либо на почтовый ящик info@flenov.ru +(в реальности такой ящик не существует). В обоих 'случаях домен один и тот же, но +веб-сервер и почтовый сервер могут находиться на разных серверах с разными IP. +Настройка DNS позволяет указать, какой IP-адрес у веб-сервера и какой адрес +у почтового. +Для почтового сервера нужно будет в настройки DNS добавить следующие строки: +IN MX 10 mx.flenov.ru. +mx.flenov.ru. IN АААА 1р_адрес_в_формате^6 +mx.flenov.ru. IN А 1р_адрес_в_формате^4 +Домен Fienov.ru поменяйте здесь на свой, и точка после него не случайна. +Ну и домен этот должен быть прописан в host-файле: +127.0.0.1 flenov.ru +Пока мы с DNS еще не знакомы, поэтому в sendmail можно для тестов использовать +имя компьютера, которое вы указали во время установки ОС Linux. Выполните +команду hostname, чтобы это имя узнать. В моем случае это FienovM. Но на деле все +сетевые обращения происходят не по имени, а по IP-адресу, и если sendmail не может определить адрес по имени FienovM, происходит зависание. Чтобы исправить +эту ситуацию, добавьте в файл /etc/hosts строку вида: +192.168.77.1 FlenovM +FlenovM +Не забудьте только заменить приведенный здесь параметр FienovM на имя вашего +компьютера и, разумеется, указать свой IP-адрес. После этого программу sendmail +можно помещать в автозапуск, и она будет работать великолепно даже с настрой +ками по умолчанию. +Для каждого пользователя системы автоматически создается почтовый ящик, и ес +ли сервис sendmail запущен, то им уже можно пользоваться. Все почтовые ящики +хранятся в каталоге /var/spool/mail/. Их имена соответствуют именам пользователей. +Так, для учетной записи root ящик будет расположен в файле /var/spool/mail/root. +Для работы с почтой нам нужен почтовый клиент, который будет отправлять пись +ма серверу и принимать от него новые сообщения. Таких программ существует +множество, и в некоторых дистрибутивах Linux предлагается аж семь различных +клиентов. Какой выберете вы, зависит только от личных предпочтений. +В общем-то можно обойтись и без клиента, а соединение с сервером осуществлять +напрямую через сервис Telnet, благо команды SMTP достаточно просты и ими легко пользоваться. В этом случае для отправки почты нужно подключиться к порту 25 (порт SMTP), а для получения — к 110 (порт POP3). +#### Полезные команды +Давайте рассмотрим некоторые команды, которые помогут вам в администрирова +нии sendmail-сервера: +□ hoststat— показать состояние хостов, которые недавно работали с локальным +почтовым сервером. Команда является эквивалентом sendmail -bh, которая по +умолчанию неактивна; +□ mailq — отобразить краткую информацию о сообщениях в очереди, ожидающих +обработки. Пример результата выполнения команды: + +/var/spool/mqueue (1 request) +--- Q-ID----—Size—------Q-Time----- ---- Sender/Recipient----- +jOIAnST11838 6 Tue Jan 18 13:49 <flenov@flenovm.ru> +(host map: lookup (flenovm.ru): deferred) +<root@flenovm.ru> + +Из первой строки видно, что в очереди находится одно сообщение. Вторая строка включает дату посылки и адрес отправителя: fienov@fienovm.ru. В последней +строке отображается получатель сообщения: root@f lenovm. ru; +□ mailstats — отобразить статистику сообщений и количества байтов; +□ sendmail — запустить сервер sendmail. Используя эту команду с различными +ключами, можно увидеть достаточно много полезной информации. За более +подробной справкой следует обратиться к документации: man sendmail. +#### Только отправка почты +Очень часто почтовые сервисы используют только для отправки почты. Например, +на веб-серверах sendmail может стоять лишь для того, чтобы можно было отослать +письмо прямо из сценариев на Perl или РНР. Если ваш сервер не должен принимать +писем, то необходимо запретить режим приема. Для этого откройте файл /etc/ +sysconfig/sendmail и измените его содержимое: +DEAMON=yes +QUEUE=”qlh” +Вторая строка задает параметры, которые будут передаваться программе sendmail +при запуске. Чтобы возобновить прием почты, измените значение qih на ьа. +Если у вас нет файла /etc/sysconfig/sendmail (он используется не во всех дистрибути +вах), то придется редактировать сценарий /etc/rc.d/init.d/sendmail. Найдите в этом фай +ле параметры, которые передаются программе, и измените их на qih прямо в тексте +сценария. + +Для защиты сервера от DoS-атак со стороны хакера нам помогут следующие пара +метры сервиса sendmail: +□ MaxDeamonChiidren— ограничение количества одновременно запущенных про +цессов. С помощью этого параметра мы можем защитить ресурсы сервера (про +цессор) от излишней перегрузки. По умолчанию установлено значение 12, но +для мощного компьютера его можно повысить, чтобы эффективнее использо +вать процессор, а для слабого — уменьшить; +□ connectionRateThrottie— максимальное количество открываемых соединений +в секунду. По умолчанию этот параметр равен 3, и повышать его без особой на +добности не стоит, разве что вы уверены в производительности сервера. + +#========================================== +### Локальный файл hosts + +Мы уже знаем, что изначально для сопоставления имен и адресов использовался +файл /etc/hosts. Это текстовый файл с записями типа: +127.0.0.1 localhost.localdomain localhost +192.168.77.1 FlenovM +Каждая строка — это соответствие IP-адреса его имени. По умолчанию в файле +будет всего две строки, как в приведенном примере. Первая строка — это «пет +ля». Напоминаю, что во всех компьютерах имя localhost и IP-адрес 127.0.0.1 ука +зывают на текущую машину. Это значит, что, если нужно выполнить ping, адре +совав запросы на локальный компьютер, можно написать: +ping 127.0.0.1 +Во второй записи устанавливается соответствие между IP-адресом, заданным для +вашего сетевого интерфейса, и символьным именем. Здесь моей сетевой карте при +своен адрес 192.168.77.1, И ему соответствует ИМЯ FlenovM. Это значит, что при вы +полнении команды ping можно указывать или IP-адрес, или имя компьютера. +Следующие две команды идентичны: +ping 192.168.77.1 +ping FlenovM +При выполнении второй команды сначала происходит обращение к файлу /etc/hosts, +который вернёт программе адрес 192.168.77.1 и уже на него направится эхо-запрос. +А что будет использоваться для поиска адреса первым: файл /etc/hosts или DNS-база +данных? Это зависит от настроек ОС. Посмотрим на файл /etc/host.conf. В нем нахо +дится строка: +order hosts,bind +Директива order как раз и задает порядок просмотра. В нашем случае на первом +месте находится файл /etc/hosts, и только после этого будет запущена команда bind +для выполнения запроса к DNS-серверу. Что это нам дает? А то, что можно увели +чить скорость доступа к основным серверам. Допустим, что вы каждый день посе +щаете сайт www.redhat.com. При этом каждый раз происходит запрос к DNS- +серверу, что может приводить к задержке в пару секунд перед началом загрузки +страницы. Чтобы ускорить этот процесс, можно вручную прописать в файле +/etc/hosts следующую запись: +209.132.183.105 +www.redhat.com +Вн и м ан и е! +Адрес 209.132.183.105 действительно соответствует сайту www.redhat.com на мо +мент подготовки этого издания книги, но может измениться. +Еслй сайт по каким-либо причинам перестал загружаться, то необходимо удалить +Соответствующую ЗаПИСЬ ИЗ файла hosts И С ПОМОЩЬЮ КОМаНДЫ ping redhat.com +проверить связь с сервером, а заодно и уточнить его адрес. В ответ на эту директи +ву на экране обязательно отображается реальный IP-адрес, с которым происходит +обмен эхо-сообщениями. Благо IP-адреса у большинства сайтов изменяются редко, +так что, один раз добавив такую запись в локальный файл /etc/hosts, можно сэконо +мить достаточно много времени и нервов в случае проблем с DNS-сервером, пото +му что запросов к нему отправляться не будет. +#### Внешние DNS-серверы +Если в локальном файле /etc/hosts не найдено записи о нужном имени, то компьютер +должен запросить эту информацию у DNS-сервера. Для этого нужно знать IP-адрес +этого самого сервера. Как система его узнает? Из файла /etc/resolv.conf, который +должен выглядеть примерно следующим образом: +search' FlenovM +domain domain.name +nameserver 10.1.1.1 +nameserver 10.1.1.2 + +В первой строке находится команда search с параметром (сервер поиска имени хос +та). В вашем файле, скорее всего, есть эта запись, и в качестве сервера вписано имя +вашего компьютера. Здесь может быть перечислено несколько серверов, разделен +ных пробелами или символами табуляции. Например: +search FienovM MyServer +Поиск на локальном сервере происходит довольно быстро, а вот на удаленных — +может отнять достаточно много времени. +Вторая строка содержит команду domain с параметром. Пользователи иногда любят +задавать имя компьютера без указания домена — например, redhat вместо +redhat. com. Вы должны задать полное имя узла. Чаще всего этот параметр настраи +вается в локальных сетях со специфичным именем домена. +Оставшиеся две строки содержат команду nameserv с параметром. Это внешний +DNS-сервер, которому будут направляться запросы. В системе их может быть не +сколько (в настоящее время для большинства дистрибутивов не более трех). Они +будут опрашиваться в порядке указания в файле, пока искомый адрес не будет +найден. +В большинстве случаев достаточно и одного сервера, потому что все они работают +рекурсивно. Но я рекомендую указывать два. Бывают случаи, когда один DNS- +сервер выходит из строя, тогда второй спасает положение и вступает в работу. +#### Настройка DNS-сервиса +В настоящее время наиболее распространенным сервисом DNS для Linux является +bind. Для этого сервиса существует программа bindconf, которая имеет графический +интерфейс и проста в использовании. Зайдите в графическую оболочку и в консоли +выполните команду: +bindconf & +Знак & говорит о том, что, запустив программу, консоль не должна дожидаться ее +завершения. Это очень удобно при запуске графических утилит, чтобы они не оста +навливали работу консоли. Учтите, что если закрыть окно консоли, то все про +граммы, запущенные с ключом &, тоже закроются. +На рис. 11.2 изображено запущенное приложение для настройки DNS-сервиса. +В центре показано окно, которое открывается по нажатию кнопки Добавить. Как +видите, достаточно только выбрать тип зоны и ввести имя домена — и все готово. +Несмотря на наличие простой графической программы, мы рассмотрим конфигура +ционные файлы, которые могут использоваться сервисом DNS. Их прямое редакти +рование позволит сделать более тонкую настройку, и вы лучше будете понимать +процесс работы DNS. +Настройка DNS-сервера начинается с файла /etc/named.conf. Пример его содержимо +го приведен в листинге 11.1. +```sh +options { +directory "/var/named/"; +}; +zone ”." { +type hint; +file "named.ca" ; +}; +zone "sitename.com" { +type mastery +file "sitename.zone"; +}; +zone "10.12.190.in-addr.arpa" { +type mastery +file "10.12.190.in-addr.arpa.zone"; +}; +``` +В этом примере файл разбит на четыре раздела, каждый из которых имеет следую +щий формат: +тип имя { +Параметр1; +Параметр2; +}; +Давайте рассмотрим назначение разделов. Первым идет options: +options { +directory "/vaг/named/"; +}; +В фигурных скобках только один параметр— directory, который указывает на +домашний каталог DNS-сервера. Все его файлы будут располагаться там. +Остальные разделы имеют тип zone и через пробел в кавычках содержат имя зоны. +В каждом из них по два параметра: type (определяет тип зоны) и file (файл, в ко +тором содержится описание). +Самая первая зона в нашем примере— zone ".". Что это за зона в виде точки? +Вспомните структуру DNS, которую мы рассматривали в начале главы. В базе дан +ных DNS так обозначается корень иерархии. Получается, что раздел описывает +корневую зону. Тип зоны hint, т. е. здесь хранятся лишь ссылки на DNS-cepfeepw. +Поскольку это корневая зона, то и ссылки будут на корневые серверы. +В параметре file указывается имя файла, содержащего все ссылки на корневые +серверы. В системе этого файла может и не быть, потому что информация в нем +подвержена изменениям, и лучше всего получить его последнюю версию с сервера +internic.net. Для этого выполните команду: +dig 0rs.internic.net . ns > named.са +А можно скачать этот файл непосредственно с FTP-сервера internic.net по адресу +ftp://ftp.rs.internic.net/domain/named.root и поместить в каталог /var/named. +Перейдем к следующему разделу zone "sitename.com". Здесь описывается зона +sitename.com. Тип записи master, значит, ваш DNS-сервер будет главным, а все +остальные станут только сверяться с ним и кэшировать информацию. Сведения об +этой зоне будут храниться в файле sitename.zone рабочего каталога. В нашем случае +это: /var/named. +Следующая зона описывает обратное преобразование IP-адресов 190.12.10.* в име +на. Тип записи — снова master, и в последней строке указан файл, где будет находиться описание зоны. + +#========================================== +### Журналирование + +В Linux работают одновременно сразу несколько журналов, и по содержащейся +в них информации вы сможете вычислить хакера и увидеть, когда он проник в сис +тему, а также узнать еще много интересного. Так как журналирование — один из +инструментов обеспечения безопасности, мы рассмотрим журналы достаточно +подробно. Это позволит вам лучше контролировать свои владения. +#### Основные команды +Информация о текущих пользователях системы сохраняется в файле /var/run/utmp. +Если попытаться посмотреть его содержимое, например, командой cat, то ничего +хорошего нашему взору не откроется. Этот журнал хранит данные не в текстовом, +а бинарном виде, и получение информации из него возможно только с помощью +специализированных программ (команд). +who +Команда who позволяет узнать, кто сейчас зарегистрирован в системе и сколько вре +мени он в ней находится. Информация, как уже было отмечено, извлекается из +файла /var/run/utmp. Введите эту команду, и на экране появится список примерно сле +дующего вида: +robert , ttyl +Dec 8 10:15 +root +tty2 +Dec 8 11:07 +Из этого списка становится ясно, что пользователь robert работает за первым тер +миналом (ttyl) и вошел в систему 8 декабря в 10 часов 15 минут, а через 52 минуты +со второго терминала вошел пользователь root. +Большинство хакеров при входе в систему выполняют эту команду, чтобы выяс +нить, есть ли сейчас в системе администратор. Если пользователь root присутству +ет, то начинающие хакеры часто уходят, т. к. опасаются, что их знаний не хватит, +чтобы остаться незамеченными. При этом, вероятно, потом они вернутся. +А это еще одна причина, по которой администратор не должен входить в систему +под учетной записью root. Лучше всего работать как простой пользователь, а когда +не хватает прав, то переключаться на привилегированного. На такой случай я создал +учетную запись, для которой установил UID равным нулю. Она позволяет получить +доступ ко всей системе, и при этом имеет имя, отличное от root, и не вызывает по +дозрений, когда я под ним работаю. Так что в моей системе никогда нельзя увидеть +пользователя root. +users +Команда users также позволяет вытащить из журнала /var/run/utmp список всех поль +зователей, которые сейчас зарегистрированы в системе. +В этом журнале информация хранится временно — только в период присутствия +пользователя. Когда он выходит из системы, соответствующая запись удаляется. +После этого выяснить, кто и когда работал, удастся только из журнала /var/log/wtmp. +Это также бинарный файл, и его содержимое можно увидеть с помощью специали +зированных программ. +last +Команда last позволяет выяснить, когда и сколько времени определенный пользо +ватель находился в системе. В качестве параметра ей передается интересующее +имя. Например, следующая директива отображает время входа и продолжитель +ность нахождения в системе пользователя robert: +last Robert +Выполнив команду, вы увидите на экране примерно следующий текст: +robert +ttyl +Thu Dec 2 12:17 - 12:50 (00:33) +По этой записи можно понять, что robert находился за терминалом (ttyl), зашел +в систему 2 декабря на 33 минуты (с 12:17 до 12:50). Если пользователь работал не +локально, а через сеть, то будет отображена информация о хосте, с которого он +входил в систему. +Если выполнить эту команду для себя, то может вывалиться такой список, что чи +тать его будет невозможно, потому что вы довольно часто работаете в системе. +Чтобы ограничить выводимые данные, можно указать ключ -п и количество ото +бражаемых строк. Например, следующая команда выдаст информацию о последних +пяти входах: +last -п 5 robert +history +Команда history выводит историю выполненных в консоли команд. Список может +быть достаточно большим. Вы можете ограничить список, указав после имени +команды число. Следующий пример покажет только последние 10 выполненных +в консоли команд: +history 10 +lastlog +Если выполнить команду lastlog, то она выведет на экран перечень всех пользова +телей с датами их последнего подключения к системе. Пример результата ее вы +полнения можно увидеть в листинге 12.1. +Список состоит из четырех колонок: +“1 имя пользователя из файла/etc/passwd; +□ порт или терминал, на который происходило подключение; +□ адрес компьютера, если вход был по сети; +□ время входа. +С помощью lastlog удобно контролировать системные записи. У них дата послед +него входа должна быть **Never logged in**, потому что под ними нельзя войти +в систему (в качестве командных оболочек установлены /bin/false, /dev/null, /sbin/nologin +и др.). Если вы заметили, что кто-либо вошел в систему через одну из этих учетных +записей, то это значит, что хакер использует ее, изменив настройки. +Простая замена командной оболочки в файле /etc/passwd может открыть хакеру +«потайную дверь», и администратор не заметит этой трансформации. Но после +выполнения команды lastlog все неявное становится явным. +Обращайте внимание на тип подключения и адрес. Если что-то вызывает подозре +ние, то можно выявить атаку на этапе ее созревания. +Isof +С помощью команды lsof можно определить, какие файлы и какими пользователя +ми открыты в текущий момент. Результат ее выполнения приведен в листинге 12.2. +Это далеко не полный результат. Даже если вы сейчас один работаете с системой, +количество открытых файлов может исчисляться парой десятков, и число их замет +но растет, если в системе несколько пользователей, — ведь один файл может от +крываться несколько раз каждым из них. Это касается в основном системных кон +фигурационных файлов. +#### Пользовательские журналы +Все команды, выполненные пользователем, сохраняются в файле .bash_history (если +используется интерпретатор команд /bin/bash), который находится в пользователь +ском домашнем каталоге. Когда вы определили, под какой учетной записью в сис +теме находился взломщик, его действия можно проследить по этому журналу. +Вы сможете узнать, какие команды или программы выполнялись, и эта информация +подскажет, как злоумышленник проник в систему и что изменил. Если хакер добавил +пользователя или модифицировал какой-либо важный системный файл, то вы это +увидите, сможете вернуть все в исходное состояние и тем самым быстро закрыть +«двери» в системе, которые открыл хакер. + +#========================================== +### Резервирование в Linux + +Самый простой вариант создания резервной копии — использование команды ср +(копирование файлов). Только при копировании необходимо обязательно сохранять +права доступа к файлу. Вот как может выглядеть команда, сохраняющая каталог +/home на примонтированный к системе диск /mnt/resdisk: +ср -a /home /mnt/resdisk +Здесь я использовал ключ -а, который равносилен указанию сразу трех ключей +(-dpR): +□ -d — не следовать по символьным ссылкам. Мы копируем каталог в таком виде, +как он есть; +□ -р — сохранять права доступа к файлу; +□ -R — копировать каталоги рекурсивно, чтобы на архивный диск попали все фай +лы и подкаталоги. +Получается, что команда, показанная ранее, идентична следующей: +ср -dpR /home /mnt/resdisk +С помощью этой директивы мы создаем полную копию каталога. А как можно со +хранить изменения? Для этого необходимо произвести копирование на тот же диск, +только с указанием ключа -и: +ср -аи /home /mnt/resdisk +При этом будут скопированы все файлы из каталога /home, дата изменения которых +позже, чем у документов из каталога /mnt/resdisk. +#### Утилита tar +Копировать по одному файлу не очень удобно. Лучше, когда все находится под од +ной крышей. В Linux есть утилита tar, которая собирает все файлы в один. Этот +процесс называют архивированием, но вы должны учитывать, что tar не сжимает +файлы. Если вы объединяете файлы общим размером в 2 Мбайт, то архив будет +иметь размер чуть больше (размер всех файлов плюс заголовок tar). +Преимущество сборки целого каталога в один файл состоит в том, что им проще +потом управлять и сжимать специализированными программами. +Для архивирования как минимум нужно выполнить команду: +tar cf архив.tar каталог +Здесь у нас два параметра: +П с — указывает на необходимость создания архива; +□ f — назначает архивный файл или устройство. По умолчанию используется уст +ройство /dev/rmtO. +Итак, для архивирования каталога /home выполняем следующую команду: +tar cf backup.tar /home +При использовании параметров cf в архиве сохраняется и путь к файлам. Если рас +паковать созданный нами архив, то в результате в текущем каталоге будет создан +каталог home, а в нем уже будут располагаться все пользовательские каталоги. На +пример, если запустить команду разархивирования в каталоге /home, то каталоги +пользователей окажутся в /home/home, а если находиться в /etc, то пользователи уви +дят свои каталоги в /etc/home. +Чтобы добиться правильного результата, нужно перейти в корень диска и выпол +нять команду там: +cd / +tar xf /home/backup.tar +Здесь мы из корневого каталога разархивируем резервную копию, которая находит +ся в файле /home/backup.tar. +Помимо этого, для архивных операций могут пригодиться следующие ключи ути +литы tar: +□ v— вывести на экран информацию об архивируемом (или распаковываемом) +в данный момент файле; +□ z — найти и обработать при распаковке GZIP-архивы; +□ р — разархивировать всю информацию о безопасности; +□ d — найти различия между архивом и файлами системы; +О t — просмотреть содержимое архива; +□ и — обновить файлы в архиве, которые были изменены; +□ n date — добавить в архив только те файлы, которые изменены позже указанной +даты. Параметр date должен быть заменен необходимой датой; +□ р — не удалять первый символ /. В этом случае, в каком каталоге вы ни запусти +те разархивирование, файлы попадут на свое родное место. +С помощью утилиты tar можно архивировать сразу несколько каталогов. Следую +щая команда помещает в архив каталоги /home и /etc: +tar cf backup.tar /home /etc +Чтобы просмотреть содержимое архива, можно выполнить команду: +tar tvf backup.tar +В ответ на это на экране будут показаны все файлы и каталоги архива, их права +доступа и владельцы. +Посмотрите на последнюю колонку, где показано расположение файла. Обратите +внимание, что путь не начинается с символа /, указывающего на корень диска. По +этому такой архив нужно распаковывать в корне, иначе он будет создаваться +в текущем каталоге. +С помощью tar очень удобно и легко создавать резервные копии, которые содержат +только изменения. Для этого мы просто задаем ключ -д и указываем какой-то файл, +который будет использоваться для отслеживания того, какие файлы уже резервиро +вались и какая версия уже находится в архиве. +Давайте рассмотрим все это на примере: +tar -cf backupO.tar -g home-flenov.snar /home/flenov +Здесь: +□ c — указывает на необходимость создания архива; +□ f — указывает на то, что мы хотим задать определенное имя файла и это имя +идет сразу после ключа: backupO.tar; +□ g — указывает на то, что нужно копировать только изменения. После этого клю +ча надо указать файл, где будут храниться изменения. В качестве его имени я +использую полный путь к нему, просто вместо слэшей указываю символ тире. +Я заметил, что очень часто таким файлам дают расширение snar. Я точно не +знаю, но мне кажется, что это объединение двух слов: sn, которое указывает +на слово snapshot (снимок), и аг, которое указывает на архив tar. Возможно, я тут +не прав, но в любом случае расширение может быть и другим; +□ ну и в конце идет каталог, резервную копию которого вы хотите создать. +Запустите команду: tar создаст полную резервную копию, если файл flenov.snar не +существует. +Теперь попробуйте изменить пару файлов или создать новый и снова выполнить +команду: +tar -cf backupl.tar -g home-flenov.snar /home/flenov +Я увеличил число в имени файла архива с 0 до 1. В этот файл уже попадут только +изменения с момента последней резервной копии. +#### Утилита gzip +В ОС Linux есть достаточно много различных утилит для упаковки данных. Наибо +лее популярной из них является gzip. Преимущество архивирования перед простой +упаковкой данных заключается в том, что результирующая копия занимает меньше +места, а значит, носитель для резервирования понадобится меньшего объема. +Чаще всего копируются документы, размер которых в заархивированном виде мо +жет уменьшаться на 90%. Текстовые данные сжимаются намного лучше, чем про +граммы. +Недостаток архивирования — возрастает нагрузка на процессор, и может потребо +ваться больше времени на создание полной копии. Однако за счет того, что архив +занимает намного меньше места, его копирование на сетевые ресурсы или запись +на съемные носители (ZIP, JAZ, CD-R/RW, DVD-R/RW и др.) производится быст +рее. В итоге может выйти, что затраты времени на копирование и процессорного +времени на архивирование окажутся идентичны затратам на копирование без архи +вирования или даже меньше. +Прежде чем сжимать какой-либо файл, рекомендуется подготовить TAR-архив. По +том достаточно выполнить команду упаковки: +gzip -уровень файл.tar +В качестве ключа -уровень нужно указать степень компрессии. Максимальный уро +вень равен 9. После этого указывается имя TAR-архива. Давайте сожмем архивный +файл, который мы создали из каталога /home, применяя наибольшую компрессию. +Выполните следующую команду: +gzip -9 backup.tar +Теперь просмотрите содержимое каталога (команда is). Обратите внимание, что +файла backup.tar больше нет. Вместо него появился файл backup.tar.gz, размер кото +рого значительно уменьшился. +Чтобы разархивировать такой файл, можно пользоваться все той же командой tar, +только необходимо указать ключи xf z: +cd / +tar xfz /home/backup.tar. gz +Эта команда сначала разархивирует GZ-файл и тут же распакует TAR-архив. +Если необходимо из GZ-файла снова получить TAR-архив (без его распаковки), то +можно выполнить команду: +gzip -d /home/backup.tar.gz +После этого вы снова увидите файл backup.tar, а файл backup.tar.gz исчезнет. +Теперь вы готовы написать свой сценарий, который будет собирать каталоги для +архивирования в TAR-файл, а затем сжимать его, чтобы уменьшить размер. Но +можно не использовать две команды, а обойтись одной. Вот как это делается: +tar cvf - /home | gzip -9с > backup.tar.gz +Здесь мы собираем в TAR-архив каталог /home и тут же сжимаем его утилитой gzip. +Помимо gzip для архивирования иногда используется утилита compress, но ее воз +можности по сжатию ниже, и к тому же вокруг нее возникали скандалы и разбира +тельства по поводу лицензии. Большинство администраторов уже перешли на ис +пользование gzip, и я вам рекомендую с самого начала привыкать к этой программе. +#### Утилита dump +Все предыдущие команды, которые мы рассматривали в этой главе, не являются +специализированными командами резервирования. Это просто команды копирова +ния и архивирования файлов. А вот утилита dump предназначена именно для соз +дания резервной копии файловой системы Ext (поддерживаются версии, начиная со +второй). +Для выполнения резервной копии нужно как минимум указать: +□ -п — уровень резервной копии, где п может изменяться от о до 9. При значе +нии о создается полная резервная копия. Уровни выше о означают формирова +ние резервной копии изменений, произошедших с момента последней полной +резервной копии или создания копии с меньшим уровнем; +□ -и— требование при удачном завершении резервирования обновить файл +/etc/dumpdates, в котором хранятся даты создания резервных копий; +□ -f файл— имя файла или устройство, на которое нужно производить резервное +копирование. +Итак, простейшая команда создания полной резервной копии выглядит следующим +образом: +dump -Ou -f /home/backup.bak +Для сохранения изменений нужно изменить уровень, указав значение больше нуле +вого, например: +dump — lu -f /home/backup.bak +Для восстановления файлов из архива служит команда restore. Но прежде чем ее +запускать, вы должны убедиться, что находитесь в каталоге, который принадлежит +восстанавливаемой файловой системе. +В команде restore достаточно только указать ключ -f и файл, который нужно вос +становить. Если применить ключ -i, то вы попадаете в интерактивный режим, +в котором можно задать файлы для восстановления. Интерактивный режим похож +на режим командной строки, только вместо реальной файловой системы в нем вы +путешествуете по архиву. При этом можно выполнять следующие директивы: +□ help — вывести краткую помощь по доступным командам; +□ is — отобразить содержимое текущего каталога; +□ pwd — показать текущий каталог; +□ add каталог — добавить в список для восстановления указанный в качестве ар +гумента каталог; +□ cd — сменить текущий каталог; +□ delete каталог — удалить из списка восстановления каталог, указанный в каче +стве параметра; +□ extract — восстановить все файлы из созданного списка; +□ quit — ВЫХОД. + +#========================================== +### CHAGE + +Как заставить пользователя менять пароли через определенные промежутки време +ни? Нет, не нужно ходить и нудить ему над ухом — есть способ проще и намного +эффективнее. В Linux имеется утилита chage, которая запускается следующим об +разом: +chage параметры пользователь +В качестве параметра можно указывать следующие ключи: +□ -mN— минимальное число дней (n ) д о смены пароля. Указав это значение чуть +меньше, чем максимальный период (см. следующий параметр), вы защитите +систему от нежелательной смены паролей. Это значит, что если хакер захватит +учетную запись, он не сможет изменить пароль. Конечно же, злоумышленник +тоже может выполнить команду chage, но только если у него есть права админи +стратора. Три-четыре дня разницы между минимальным и максимальным значе +нием необходимы для того, чтобы пользователь смог сменить пароль, пока он не +устарел. Устанавливать разницу меньше трех дней нежелательно, потому что +существуют выходные, и если срок действия попадет на воскресенье, пользо +ватель не успеет сменить пароль. По умолчанию используется значение -1, что +соответствует отсутствию проверки; +□ -м N — максимальный диапазон в днях (n ), в течение которого действует пароль. +После этого пароль считается недействительным, и пользователь не сможет вой +ти в систему. По умолчанию установлено 99999, что соответствует бесконечно +сти, а значит, пароль никогда не устареет; +□ -d N— дата последнего изменения пароля. Параметр N указывает количество +дней начиная с 1 января 1970 года. Если установить юоо, то получится 27 сен +тября 1972 года. Чтобы не высчитывать дату в днях, можно указать ее явным +образом в формате ГГГГ-ММ-ДЦ; +□ -Е дата — дата окончания действия пароля; +□ -I N— период в днях, после которого неиспользуемая учетная запись блокиру +ется. Рекомендую указать не менее 3 и не более 4 дней, чтобы приостановить +действие записи на время отпуска или болезни работника; +□ -w n — количество дней до окончания срока действия пароля, когда пользовате +лю будет выводиться предупредительное сообщение. Нежелательно указывать +менее 3 дней, чтобы не попасть на выходные; +□ -1 пользователь — с этим параметром команда может вызываться любыми поль +зователями и позволяет им узнать информацию о времени жизни их пароля. +Чтобы получить сведения о пароле root, выполните директиву: +chage -1 root. +Результат выполнения команды имеет следующий вид: +Password Expires: Never +Password Inactive:Never +Minimum: +-1 +Maximum: +99999 +Warning: +Inactive: +-1 +-1 +Last Change: +Feb 04, 2004 +Account Expires: +Never +Здесь отображаются следующие значения: +• Minimum — минимальный срок действия пароля; +• Maximum— максимальный период для пользования паролем; +• warning— количество дней, за которые будет выдаваться предупреждение +о завершении срока действия пароля; +• inactive— максимальное количество дней, в течение которых учетная за +пись может не активироваться; +• Last change — последняя дата изменения; +• Password Expires — дата окончания действия пароля; +• Password inactive — дата, когда пароль стал неактивным; +• Account Expires — дата окончания действия учетной записи. +Чтобы задать максимальное количество дней жизни пароля в 60 дней, выполните +команду: +chage -М 60 robert +Слишком частая смена паролей приводит к тому, что пользователи просто не успе +вают запомнить их. Из-за этого сложные комбинации начинают писать на бумаге, +чтобы случайно не забыть, или просто меняют пароль на старый. Ваша задача — +контролировать замену, и в то же время не стоит заставлять пользователя делать +это слишком часто. Период в 2-3 месяца (или 60-90 дней) считается вполне прием +лемым. +А как проверить, что выбран достаточно сложный пароль и при этом не указан снова +старый? В этом нам поможет РАМ-модуль pam_cracklib.so, который выполняет +основные проверки и позволяет сделать их сложнее. Например, нельзя будет устано +вить старый пароль или воспользоваться большей его частью. + +#========================================== |
