вторник, 10 ноября 2009 г.

20 советов по повышению безопасности сервера Linux

Оригинал: "20 Linux Server Hardening Security Tips"
Автор: Vivek Gite
Дата публикации: 30 октября 2009 г.
Перевод: Н.Ромоданов
Дата перевода: ноябрь 2009 г.

Поддержание безопасности Linux сервера на высоком уровне важно для сохранения от рук взломщиков (хакеров) ваших данных, интеллектуальной собственности и экономии времени. Системный администратор отвечает за безопасность компьютера с Linux. В этой первой статье из серии, посвященной безопасности серверов Linux, приводится 20 советов по повышению безопасности Linux сервера, установленного с настройками, заданными по умолчанию.

№ 1: Шифруйте передаваемые данные

Все данные, передаваемые через сеть, открыты для мониторинга. По мере возможности зашифровывайте передаваемые данные с использованием пароля или ключей / сертификатов.

  1. Для передачи данных используйте scp / ssh (rsync) / sftp. Вы можете также с помощью специальных средств sshfs и fuse смонтировать в своем домашнем директории файловую систему для доступа к удаленному серверу.
  2. GnuPG, позволяющая зашифровывать и подписывать ваши данные и передаваемую информацию, имеет универсальную систему управления ключами, а также модули доступа для всех видов директорий, использующих открытые ключи.
  3. Fugu является графической оболочкой приложения Secure File Transfer (SFTP - защищенного протокола передачи файлов), работающего из командной строки. SFTP аналогичен FTP, но, в отличие от FTP, вся сессия зашифрована, что означает, что пароли не передаются в виде простой текстовой строки и, таким образом, менее уязвимы от перехвата третьей стороной. Еще одна возможность - FileZilla, кроссплатформенный клиент, который поддерживает протоколы FTP, FTP поверх SSL/TLS (FTPS) и SSH File Transfer Protocol (SFTP).
  4. OpenVPN является недорогой легковесной сетью VPN с использованием SSL.
  5. Конфигурирование и установка протокола SSL (Secure Server Layer) Https на сервере Lighttpd.

№ 1.1. Избегайте использовать FTP, Telnet и Rlogin / Rsh

В большинстве вариантов конфигурации сетей, можно в той же самой сети с помощью сниффера пакетов (packet sniffer) перехватывать имена пользователей, пароли, команды FTP / Telnet / RSH и пересылаемые файлы. Общим решением проблемы является использование OpenSSH , SFTP или FTPS (FTP поверх SSL), которые добавляют к FTP либо SSL, либо шифрование TLS. Для того, чтобы удалить NIS, rsh и другие устаревшие сервисы, наберите следующую команду:

# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

№ 2: Минимизируйте количество установленных приложений для минимизации числа уязвимостей

Вам действительно нужны все виды установленных веб сервисов? Избегайте устанавливать ненужные приложения с тем, чтобы избежать уязвимостей, имеющихся в этих приложениях. Воспользуйтесь менеджером пакетов RPM, таким как as yum, либо apt-get and/or dpkg to review, для просмотра всего набора установленных в системе программ. Удалите все ненужные пакеты.

# yum list installed
# yum list packageName
# yum remove packageName

или

# dpkg --list
# dpkg --info packageName
# apt-get remove packageName

№ 3: Один сетевой сервис на каждую ситстему или экземпляр виртуальной машины

Запускайте различные сетевые сервисы на отдельных серверах или отдельных экземплярах виртуальной машины. Это снизит количество сервисов, которые могут подвергнуться опасности. Например, если атакующий успешно попадает внутрь сервиса Apache , он также сможет получить доступ ко всему серверу, в том числе и к дугим сервисам, таким как MySQL, почтовый сервер и т.п. Описание установки виртуальной машины смотрите по следующим ссылкам:

№ 4: Поддерживайте ядро Linux и программы в обновленном состоянии

Применение всех патчей безопасности - важная часть работы по поддержанию сервера Linux. В Linux есть все необходимые средства для поддержания вашей системы всегда в обновленном состоянии и для легкого перехода к следующим версиям. Все обновления, касающиеся безопасности, должны изучаться и устанавливаться сразу, как для этого появится возможность. Для того, чтобы установить все обновления, касающиеся безопасности, опять воспользуйтесь менеджером пакетов RPM, таким как yum или apt-get и/или dpkg:

# yum update

или

# apt-get update && apt-get upgrade

Вы можете сконфигурировать Red hat / CentOS / Fedora Linux так, что yum будет посылать вам по e-mail напоминание о том, что есть обновление. Другая возможность – выполнять все обновления, относящиеся к безопасности, как задания для cron. Под Debian / Ubuntu Linux Вы можете использовать apticron для отсылки напоминаний, касающихся безопасности.

№ 5: Используйте расширения Linux, повышающие безопасность

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

№ 5.1: SELinux

Я настоятельно рекомендую использовать SELinux, в котором имеются гибкие средства принудительного управления доступом (Mandatory Access Control - MAC). Когда используются стандартные средства избирательного управления доступом (Discretionary Access Control - DAC), то все приложения или процессы, работающие как пользователи (т.е. имеющие идентификатор пользователя UID или суперпользователя SUID), имеют пользовательские права для работы с объектами, такими как файлы, сокеты и другие процессы. Запуск ядра с MAC защищает систему от вредоносных или поврежденных приложений, которые могут нарушить работу системы или полностью вывести ее из строя. Смотрите официальную документацию Redhat, в которой описывается конфигурирование SELinux.

№ 6: Политика пользовательских паролей и сильные пароли

Используйте команды useradd / usermod для того, чтобы создавать и работать с регистрационными записями пользователей. Удостоверьтесь в том, Вы используете политику применения хороших и сильных паролей. Например, длина хорошего пароля должна быть не менее 8 символов и в нем должны присутствовать заглавные и прописные буквы, цифры, специальные символы и т.п. Самое главное - подобрать пароль, который Вы можете запомнить. Используйте такие инструментальные средства, как "John the ripper", для поиска на вашем сервере слабых пользовательских паролей. Используйте pam_cracklib.so to для того, чтобы поверять силу используемых паролей.

№ 6.1: Продолжительность действия паролей

С помощью команды chage можно изменить параметры, определяющие, через какое количество дней надо менять пароль и дату последнего изменения пароля. Эта информация используется системой для определения срока, когда пользователь должен поменять свой пароль. В файле /etc/login.defs определяются конкретные данные, используемые при работе с теневыми паролями, в том числе и продолжительность действия паролей. Для того, чтобы отменить срок действия пароля (сделать его бессрочным – прим.пер.), введите следующее:

chage -M 99999 userName

Для того, чтобы получить информацию о времени окончания действия пароля, введите следующее:

chage -l userName

Наконец, Вы можете в файле /etc/shadow file отредактировать следующие поля:

{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:

Где

  1. Minimum_days: Минимальное количество дней, между сменой паролей, т.е. количество дней, которое должно пройти прежде, чем пользователю будет разрешено сменить свой пароль.
  2. Maximum_days: Максимальное количество дней, в течение которых пароль будет действовать (после этого пользователь будет обязан поменять свой пароль).
  3. Warn : Количество дней перед датой окончания пароля, когда пользователь будет получать предупреждения о необходимости смены пароля. .
  4. Expire : Количество дней, начиная с 1 января 1070 г., после которого регистрационную запись пользователя нельзя будет использовать, т.е. момент, когда вход в систему станет невозможным.

Я рекомендую использовать команду chage вместо редактирования файла /etc/shadow вручную:

# chage -M 60 -m 7 -W 7 userName

Рекомендуемые ссылки:

№ 6.2: Запретите использование старых паролей

В Linux Вы можете запретить пользователям использовать старые пароли. Можно воспользоваться параметром remember модуля pam_unix для того, чтобы указать, какое количество предыдущих паролей нельзя использовать повторно.

№ 6.3: Блокируйте регистрационные записи пользователей после попыток неудачного доступа

В Linux Вы можете использовать команду faillog с тем, чтобы просмотреть записи faillog (о попытках неудачного доступа в систему – прим. пер.), либо чтобы установить предел на число попыток неудач доступа. Команда faillog выдает отформатированное содержимое записей о неудачах, взятых из файла var/log/faillog database / log. Файл можно также использовать для поддержки работы счетчиков неудач и органичить их количество. Для того, чтобы увидеть список попыток неудачного доступа, введите следующее:

faillog

Для того, чтобы разблокировать учетную запись, заблокированную после попыток неудачного доступа, запустите:

faillog -r -u userName

Заметьте, что для блокирования и разблокирования учетных записей Вы можете воспользоваться командой passwd:

# lock account блокирование учетной записи
passwd -l userName
# unlocak account разблокирование учетной записи
passwd -u userName

№ 6.4: Как проверить отсутствие "пустых" паролей

Наберите следующую команду:

# awk -F: '($2 == "") {print}' /etc/shadow

Заблокируйте все учетные записи с "пустым" паролем:

# passwd -l accountName

№ 6.5: Удостоверьтесь, что нет регистрационных записей, отличных от Root, имеющих UID, установленный в 0

Только учетная запись пользователя root имеет UID 0 с полными правами доступа в систему. Для того, чтобы увидеть все учетные записи, у которых UID установлен в 0, наберите следующую команду:

# awk -F: '($3 == "0") {print}' /etc/passwd

Вы должны увидеть только одну следующую строку:

root:x:0:0:root:/root:/bin/bash

Если Вы увидите еще строки, то удалите такие учетные записи, либо удостоверьтесь, что для этих учетных записей разрешено использовать UID 0.

№ 7: Запретите прямой доступ в систему с правами root

Никогда не входите в систему как пользователь root. Для выполнения команд уровня root, если это потребуется, вам следует пользоваться командой sudo. Команда sudo существенно повышает безопасность системы и не требует раздавать пароль root другим пользователям и администраторам. Команда sudo также предоставляет простые средства для аудита и отслеживания событий.

№ 8: Защитите сервер от физического к нему доступа

Вы должны защитить консоли Linux серверов от физического доступа к системе. Сконфигурируйте BIOS и запретите загружаться с таких внешних устройств, как DVDs / CDs / USB. Установите пароль BIOS и пароль загрузки grub с тем, чтобы защитить эти настройки. Все системные блоки должны быть сосредоточены в специально отведенном для этого помещении и персонал прежде, чем получить доступ к вашему серверу, должен пройти в службе безопасности определенную проверку. Смотрите также:

№ 9: Отключите ненужные сервисы

Отключите все ненужные сервисы и демоны (сервисы, запускающиеся в фоновом режиме). Вам нужно будет удалить все ненужные сервисы, запускаемые при старте системы. Для того, чтобы получить список всех сервисов, запускаемых на уровне запуска 3 (run level # 3) во время загрузки системы, наберите следующую команду:

# chkconfig --list | grep '3:on'

Чтобы отключить сервис, введите:

# service serviceName stop
# chkconfig serviceName off

№ 9.1: Определите, какие сетевые порты прослушиваются

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

netstat -tulpn

или

nmap -sT -O localhost
nmap -sT -O server.example.com

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

№ 9.2: Смотрите также следующие ссылки

№ 10: Удалите X Windows

X Windows на сервере не нужен. Так что нет необходимости запускать X Windows на вашем специализированном почтовом или веб (Apache) сервере. Для того, чтобы повысить безопасность и улучшить работоспособность системы, Вы можете отключить и удалить X Windows. Отредактируйте файл /etc/inittab и установите уровень запуска (run level) равным 3. Наконец, удалите систему X Windows, для этого введите следующую команду:

# yum groupremove "X Window System"

№ 11: Сконфигурируйте Iptables и используйте TCPWrapper-ы

Iptables является пользовательским приложением, которое позволит вам сконфигурировать брандмауэр (Netfilter), имеющийся в ядре Linux. Используйте брандмауэр для фильтрации и пропуска только нужного трафика. Также используйте TTCPWrapper-ы - кросс-хостинговые сетевые системы ACL (листы контроля доступа), применяемые для фильтрации доступа из сети в Интернет. С помощью Iptables Вы сможете предотвратить многие атаки вида "denial of service" (отказ в обслуживании):

№ 12: Обезопасьте доступ к файлу ядра Linux /etc/sysctl.conf

Для конфигурирования параметров ядра во время его работы используется файл /etc/sysctl.conf. Linux во время загрузки использует настройки, считываемые из файла /etc/sysctl.conf. Пример файла /etc/sysctl.conf:

# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0
# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1
# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1

№ 13: Используйте различные дисковые разделы

Размещение файлов операционной системы отдельно от пользовательских файлов может, как результат, улучшить работу системы и повысить ее безопасность. Удостоверьтесь в том, что следующие файловые системы смонтированы на отдельных разделах диска:

  • /usr
  • /home
  • /var and /var/tmp
  • /tmp

Создайте отдельные разделы для корневых директорий серверов Apache и FTP. Отредактируйте файл /etc/fstab и не забудьте добавить следующее конфигурационные параметры:

  1. noexec – не разрешается исполнять бинарные файлы (предотвращается исполнение бинарных файлов, но разрешается исполнять скрипты).
  2. nodev - не разрешается указывать посимвольные и специальные устройства (предотвращается использование файлов устройств, таких как zero, sda и т.д).
  3. nosuid – не разрешается иметь доступ для SUID/SGID (предотвращается изменение битов идентификатора пользователя и идентификатора группы).

Пример монтирования /etc/fstab раздела /dev/sda5 (корневой директорий сервера ftp), для которого ограничен пользовательский доступ:

/dev/sda5  /ftpdata          ext3    defaults,nosuid,nodev,noexec 1 2

№ 13.1: Квоты дискового пространства

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

  1. Разрешите определять квоты для каждой файловой системы – для этого измените файл /etc/fstab.
  2. Перемонтируйте файловую систему (системы).
  3. Создайте файлы базы данных квот и сгенерируйте таблицу использования диска.
  4. Назначьте политики квот.
  5. Подробности смотрите в руководстве "Задание квот дискового пространства" (implementing disk quotas).

№ 14: Отключите IPv6

Версия 6 протокола Интернет (IPv6), которая заменяет версию 4 (IPv4), представляет собой новый слой организации протокола TCP/IP, что дает массу преимуществ. В настоящее время нет хороших инструментальных средств, с помощью которых можно было бы проверить безопасность системы, работающей через сеть по протоколу IPv6. В большинстве дистрибутивов Linux протокол IPv6 по умолчанию включен. Взломщики могут воспользоваться и перенаправить трафик по IPv6, поскольку большинство администраторов не осуществляют его мониторинг. Если конфигурация сети не требует использования протокола IPv6, то отключите его, в противном случае сконфигурируйте брандмауэр Linux для работы с IPv6:

№ 15: Уберите все ненужные бинарные файлы SUID и SGID

Если установлены права доступа SUID/SGID и файл, согласно SUID/SGID, исполняемый, то его можно использовать неправильно и это может быть причиной неверной работы системы или проблем с безопасностью. Любой локальный или удаленный пользователь может использовать такой файл. Поэтому нужно знать обо всех таких файлах. Используйте команду find следующим образом:

See all set user id files:
find / -perm +4000
# See all group id files
find / -perm +2000
# Or combine both in a single command
find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls

Вам нужно изучить каждое сообщение о таком файле. Подробности смотрите в страницах man page для темы reported file.

№15.1: Файлы без ограничения на запись

Любой может модифицировать такие файлы, в результате чего могут возникнуть проблемы с безопасностью. Используйте следующую команду для того, чтобы найти такие файлы и взять их на заметку:

find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

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

№ 15.2: Файлы, не имеющие владельца

Файлы, у которых нет владельца и которые не принадлежат ни одной из групп, могут быть причиной проблем с безопасностью. Найдите файлы, которые не принадлежат существующими пользователям и существующим группам, с помощью следующей команды:

find /dir -xdev \( -nouser -o -nogroup \) -print

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

№ 16: Используйте централизованный сервис идентификации

Без централизованной системы авторизации, идентификационные данные о пользователе могут стать противоречивыми и это может привести к устареванию полномочий и появлению забытых регистрационных записей, которые следует удалять в первую очередь. Централизованная служба аутентификации позволит вам осуществлять под Linux / UNIX централизованное обслуживание всех регистрационных записей и идентификационные данных. Вы сможете обеспечивать синхронизацию идентификационных данных между серверами. Не используйте для централизованной идентификации сервис NIS. Используйте OpenLDAP для клиентов и серверов.

№ 16.1: Kerberos

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

№ 17: Протоколирование и аудит

Для того, чтобы собирать сведения о попытках взлома системы и проникновения в нее, вам нужно настроить протоколирование и аудит. По умолчанию системный журнал syslog сохраняет свои данные в директории /var/log/. Полезно также все разузнать о неверном конфигурировании программ, которое может открыть вашу систему для различных атак. Смотрите следующие ссылки, касающиеся протоколирования:

  1. Местонахождение журнальных файлов в системе в Linux .
  2. Как перенаправлять журнальные файлы на удаленный хост.
  3. Как циклически сменять журнальные файлы.
  4. Страницы описаний man pages для syslogd, syslog.conf и logrotate.

№ 17.1: Использование Logwatch / Logcheck для отслеживания подозрительных записей в системном журнале

Читайте свои журналы с помощью logwatch или logcheck. Эти инструменты облегчат вам анализ журналов. Вы будете получать по почте подробные отчеты о необычных записях, обнаруженных в системном журнале syslog. Пример отчета по syslog:

 ################### Logwatch 7.3 (03/24/06) ####################
Processing Initiated: Fri Oct 30 04:02:03 2009
Date Range Processed: yesterday
( 2009-Oct-29 )
Period is day.
Detail Level of Output: 0
Type of Output: unformatted
Logfiles for Host: www-52.nixcraft.net.in
##################################################################

--------------------- Named Begin ------------------------

**Unmatched Entries**
general: info: zone XXXXXX.com/IN: Transfer started.: 3 Time(s)
general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 3 Time(s)
general: info: zone XXXXXX.com/IN: Transfer started.: 4 Time(s)
general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 4 Time(s)

---------------------- Named End -------------------------

--------------------- iptables firewall Begin ------------------------

Logged 87 packets on interface eth0
From 58.y.xxx.ww - 1 packet to tcp(8080)
From 59.www.zzz.yyy - 1 packet to tcp(22)
From 60.32.nnn.yyy - 2 packets to tcp(45633)
From 222.xxx.ttt.zz - 5 packets to tcp(8000,8080,8800)

---------------------- iptables firewall End -------------------------

--------------------- SSHD Begin ------------------------

Users logging in through sshd:
root:
123.xxx.ttt.zzz: 6 times

---------------------- SSHD End -------------------------

--------------------- Disk Space Begin ------------------------

Filesystem Size Used Avail Use% Mounted on
/dev/sda3 450G 185G 241G 44% /
/dev/sda1 99M 35M 60M 37% /boot

---------------------- Disk Space End -------------------------

###################### Logwatch End #########################

Замечание: Результат вывода приведен с сокращениями.

№ 17.2: Системный аудит с помощью auditd

Демон auditd предназначен для выполнения аудита системы. Его назначение – записывать на диск информацию о результатах аудита. Этот демон во время пуска системы считывает правила выполнения аудита из файла /etc/audit.rules. Вы можете открыть файл /etc/audit.rules и сделать в нем изменения, например, указать другое местоположение журнального файла аудита, либо поменять другие настройки. С помощью демона auditd Вы сможете узнать о следующем:

  1. о событиях, происшедших во время запуска и завершения работы системы (перезагрузки, остановки системы);.
  2. о дате и времени, когда это событие произошло;
  3. ответственности пользователя за происшедшее событие (например, попытке доступа к файлу /path/to/topsecret.dat);
  4. о типе события (редактирование, доступ, удаление, запись, модификация файла или выполнение других команд);
  5. оказалось ли событие успешным или неудачным;
  6. посмотреть записи о событиях, которые меняли дату и время;
  7. разузнать, кто сделал изменения, которые меняли сетевые настройки системы;
  8. посмотреть записи о событиях, которые меняли информацию о пользователе / группе;
  9. можно увидеть, кто делал изменения в файле, и т.п.

Смотрите краткое руководство, в котором объясняется, как настроить и использовать сервис auditd.

№ 18: Обеспечьте безопасность сервера OpenSSH

Для удаленного доступа в систему и удаленной передачи файлов рекомендуется использовать протокол SSH. Однако протокол ssh открыт для многих атак. О том, как повысить безопасность сервера OpenSSH, смотрите в статье:

№ 19: Установите и используйте систему обнаружения вторжений

Система обнаружения сетевого вторжения (network intrusion detection system - NIDS) - это система обнаружения вторжения, которая с помощью мониторинга сетевого трафика пытается зафиксировать злонамеренную активность, такую как атаки вида "denial of service" (отказ в обслуживании), сканирование портов и даже попытки проникновения в компьютер.

Хороший практический подход – прежде, чем система будет подключена к сети в режиме эксплуатации, развернуть любую интегрированную программную систему проверки. Если возможно, то прежде, чем система будет подключена какой-либо сети, установите пакет AIDE. AIDE является кросс-хостинговой системой обнаружения вторжения (host-based intrusion detection system - HIDS). Она может осуществлять мониторинг и анализ процессов, происходящих внутри самих компьютерных систем.

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

№ 20: Защитите файлы, директории и почтовые ящики

В Linux предлагаются различные варианты защиты против несанкционированного доступа к данным. Использование прав доступа к файлу и методика MAC (Mandatory Access Control - принудительное управление доступом) предотвращают несанкционированный доступ к данным. Однако, права доступа, устанавливаемые Linux, бесполезны, если атакующий имеет физический доступ к компьютеру и может перенести жесткий диск компьютера на другую систему с тем, чтобы скопировать и проанализировать интересующие его данные. Вы можете легко защитить в Linux файлы и дисковые разделы с помощью следующих инструментальных средств:

№ 20.1: Обеспечьте безопасность почтовых серверов

Вы можете использовать на сервере и на клиенте сертификаты SSL и ключи gpg с тем, чтобы обезопасить переписку по электронной почте:

Другие рекомендации:

Рекомендуемые ссылки:

  1. Red Hat Enterprise Linux - Руководство по безопасности.
  2. Хорошая коллекция рецептов по обеспечению безопасности, предназначенная для начинающих администраторов.
  3. Snort 2.1 Intrusion Detection, Second Edition - Хорошее введение в систему обнаружения вторжения Snort, используемую под Linux.
  4. Hardening Linux - Защита Linux – описываются многие риски, возникающие на работающих Linux хостах в Linux приложениях, и приводятся практические примеры и методы минимизации этих рисков.
  5. Безопасность Linux HOWTO.

В следующей части данной серии будет обсуждаться, как повысить безопасность конкретных приложений (например, Proxy, Mail, LAMP, баз данных), а также несколько других инструментальных средств обеспечения безопасности.

вторник, 27 октября 2009 г.

20 средств мониторинга системы Linux, о которых должен знать каждый системный администратор

Оригинал: "20 Linux System Monitoring Tools Every SysAdmin Should Know"
Автор: Vivek Gite
Дата публикации: июнь 2009 г.
Перевод: Н.Ромоданов
Дата перевода: 21 октября 2009 г.

Вам нужно контролировать функциональные характеристики Linux-сервера? Попробуйте для этого описанные ниже встроенные команды и несколько дополнительных инструментальных средств. В большинстве дистрибутивов Linux есть масса средств мониторинга. Эти средства измеряют характеристики, которые можно использовать для получения информации об активности системы. Вы можете воспользоваться этим инструментарием для поиска причин возникновения проблемы с производительностью. Ниже перечислены лишь некоторые команды из большого числа тех, которые нужны при анализе системы и отладке сервера для поиска следующих проблем:

  1. Узкие места общего характера
  2. Узкие места, связанные с диском (дисковой памятью)
  3. Узкие места, связанные с процессором и оперативной памятью
  4. Узкие места, связанные с сетью

№ 1: top – команда выдачи данных об активности процессов

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

Рис.1: Linux команда - top

Наиболее часто используемые горячие клавиши

При работе команды top можно воспользоваться следующими полезными горячими клавишами:

Горячая клавиша Использование
t Включение и выключение выдачи на экран суммарных данных.
m Включение и выключение выдачи на экран информации об использовании памяти.
A Сортировка строк по максимальному потреблению различных системных ресурсов. Полезна для быстрой идентификации задач, для которых в системе не хватает ресурсов.
f Вход в меню интерактивного конфигурирования данных, выдаваемых на экран командой top. Полезна для настройки команды top для выполнения специфической задачи.
o Позволяет вам интерактивно задавать порядок строк, выдаваемой командой top.
r Изменение приоритета процессов с помощью команды renice.
k Удаление процесса с помощью команды kill.
z Переключение между цветным / монохромным вариантом выдачи изображения.

Ссылки: Как определить загрузку процессора в Linux.

№ 2: vmstat – активность системы, информация о системе и аппаратных ресурсах

Команда vmstat выдает информационный отчет о активности процессов, памяти, свопинга, поблочного ввода/вывода, прерываний и процессора.

# vmstat 3

Пример вывода данных:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0
1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0
0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0
0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0 0
0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0
0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0
0 0 0 2490060 522188 5130640 0 0 0 18 1253 1123 5 1 94 0 0

Выдача статистики использования памяти

# vmstat -m

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

# vmstat -a

Ссылки: Как выявить узкие места в Линукс-системе, исследуя использование ресурсов?

№ 3: w – определяем, кто зарегистрирован и что они делают

Команда w выдает информацию о том, какие пользователи сейчас находятся в системе и какие процессы запущены от их имени.

# w username
# w vivek

Пример вывода данных:

 17:58:47 up 5 days, 20:28,  2 users,  load average: 0.36, 0.26, 0.24
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf
root pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w

№ 4: uptime – сообщает, как долго работает система

Команду uptime можно использовать с тем, чтобы определить, как долго работает сервер. Выдаются: текущее время, сколько времени работает система, сколько в текущий момент зарегистрировано пользователей и какова средняя нагрузка на систему в последние 1, 5 и 15 минут.

# uptime

Выдаются данные:

 18:02:41 up 41 days, 23:42,  1 user,  load average: 0.00, 0.00, 0.00

1 можно рассматриваться как оптимальное значение нагрузки. Нагрузка может меняться от системы к системе. Для системы с одним процессором приемлемым может считаться значение от 1 до 3, для мультипроцессорных систем – от 6 до 10.

№ 5: ps – список процессов

Команда ps выдаст краткий список текущих процессов. Для того, чтобы выбрать все процессы, используете параметр -A или –e:

# ps -A

Пример вывода данных:

  PID TTY          TIME CMD
1 ? 00:00:02 init
2 ? 00:00:02 migration/0
3 ? 00:00:01 ksoftirqd/0
4 ? 00:00:00 watchdog/0
5 ? 00:00:00 migration/1
6 ? 00:00:15 ksoftirqd/1
....
.....
4881 ? 00:53:28 java
4885 tty1 00:00:00 mingetty
4886 tty2 00:00:00 mingetty
4887 tty3 00:00:00 mingetty
4888 tty4 00:00:00 mingetty
4891 tty5 00:00:00 mingetty
4892 tty6 00:00:00 mingetty
4893 ttyS1 00:00:00 agetty
12853 ? 00:00:00 cifsoplockd
12854 ? 00:00:00 cifsdnotifyd
14231 ? 00:10:34 lighttpd
14232 ? 00:00:00 php-cgi
54981 pts/0 00:00:00 vim
55465 ? 00:00:00 php-cgi
55546 ? 00:00:00 bind9-snmp-stat
55704 pts/1 00:00:00 ps

Команда ps подобна команде top, но выдает больше информации.

Показать больше данных

# ps -Al

Для того, чтобы включить режим максимальной выдачи данных (будут показаны аргументы командной строки, переданные в процесс):

# ps -AlF

Показать потоки (LWP и NLWP)

# ps -AlFH

Показать потоки после процессов

# ps -AlLm

Выдать список всех процессов на сервере

# ps ax
# ps axu

Выдать дерево процессов

# ps -ejH
# ps axjf
# pstree

Выдать информацию о параметрах безопасности

# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM

Показать каждый процесс для пользователя Vivek

# ps -U vivek -u vivek u

Настроить выдачу данных в формате, определенном пользователем

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan

Показывать ID процессов, запущенных под Lighttpd

# ps -C lighttpd -o pid=

или

# pgrep lighttpd

или

# pgrep -u vivek php-cgi

Показать имя для PID 55977

# ps -p 55977 -o comm=

Выдать 10 процессов, потребляющих наибольшее количество памяти

# ps -auxf | sort -nr -k 4 | head -10

Выдать 10 процессов, потребляющих наибольший ресурс процессора

# ps -auxf | sort -nr -k 3 | head -10

№ 6: free – использование памяти

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

# free 

Пример вывода данных:

            total       used       free     shared    buffers     cached
Mem: 12302896 9739664 2563232 0 523124 5154740
-/+ buffers/cache: 4061800 8241096
Swap: 1052248 0 1052248

Ссылки:

  1. Как в Linux узнать размер страниц виртуальной памяти
  2. Как в Linux ограничить ресурс процессора, используемый в каждом процессе
  3. Сколько оперативной памяти в моем настольном компьютере, работающем под Ubuntu / Fedora Linux

№ 7: : iostat – средняя загрузка процессора, активность дисков

Команда iostat выдает статистику использования процессора, а также статистику ввода/вывода для устройств, разделов и сетевых файловых систем (NFS).

# iostat 

Пример вывода данных:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)  06/26/2009

avg-cpu: %user %nice %system %iowait %steal %idle
3.50 0.09 0.51 0.03 0.00 95.86

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 22.04 31.88 512.03 16193351 260102868
sda1 0.00 0.00 0.00 2166 180
sda2 22.04 31.87 512.03 16189010 260102688
sda3 0.00 0.00 0.00 1615 0

Ссылки: Как в Linux получить статистику ввода/выводе для NFS-каталога или диска

№ 8: sar – сбор и выдача данных о системной активности

Команда sar используется для сбора информации о системной активности и выдачи ее в виде отчета или ее сохранения. Чтобы увидеть значение считчика сетевой активности, введите:

# sar -n DEV | more

Для того, чтобы увидеть значения счетчиков сетевой активности, начиная с 24-го:

# sar -n DEV -f /var/log/sa/sa24 | more

С помощью команды sar Вы можете также выдавать данные в режиме реального времени:

# sar 4 5

Пример вывода данных:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)   06/26/2009

06:45:12 PM CPU %user %nice %system %iowait %steal %idle
06:45:16 PM all 2.00 0.00 0.22 0.00 0.00 97.78
06:45:20 PM all 2.07 0.00 0.38 0.03 0.00 97.52
06:45:24 PM all 0.94 0.00 0.28 0.00 0.00 98.78
06:45:28 PM all 1.56 0.00 0.22 0.00 0.00 98.22
06:45:32 PM all 3.53 0.00 0.25 0.03 0.00 96.19
Average: all 2.02 0.00 0.27 0.01 0.00 97.70

Ссылки: Как собрать в файл информацию об использовании ресурсов в системе Linux

№ 9: mpstat – использование мультипроцессора

Команда mpstat выводит данные об активности каждого имеющегося в наличие процессора, процессор 0 будет первым. Команда mpstat -P ALL выводит данные о среднем использовании ресурсов для каждого из процессоров:

# mpstat -P ALL

Пример вывода данных:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)   06/26/2009

06:48:11 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
06:48:11 PM all 3.50 0.09 0.34 0.03 0.01 0.17 0.00 95.86 1218.04
06:48:11 PM 0 3.44 0.08 0.31 0.02 0.00 0.12 0.00 96.04 1000.31
06:48:11 PM 1 3.10 0.08 0.32 0.09 0.02 0.11 0.00 96.28 34.93
06:48:11 PM 2 4.16 0.11 0.36 0.02 0.00 0.11 0.00 95.25 0.00
06:48:11 PM 3 3.77 0.11 0.38 0.03 0.01 0.24 0.00 95.46 44.80
06:48:11 PM 4 2.96 0.07 0.29 0.04 0.02 0.10 0.00 96.52 25.91
06:48:11 PM 5 3.26 0.08 0.28 0.03 0.01 0.10 0.00 96.23 14.98
06:48:11 PM 6 4.00 0.10 0.34 0.01 0.00 0.13 0.00 95.42 3.75
06:48:11 PM 7 3.30 0.11 0.39 0.03 0.01 0.46 0.00 95.69 76.89

Ссылки: Получение данных об использовании индивидуально каждого процессора в мультипроцессорной Linux-системе.

№ 10: pmap – использование процессами оперативной памяти

Команда pmap выдает данные о распределении памяти между процессами. Использование этой команды позволит найти причину узких мест, связанных с использованием памяти.

# pmap -d PID

Для того, чтобы получить информацию об использовании памяти процессом с pid # 47394, введите:

# pmap -d 47394

Пример вывода данных:

47394:   /usr/bin/php-cgi
Address Kbytes Mode Offset Device Mapping
0000000000400000 2584 r-x-- 0000000000000000 008:00002 php-cgi
0000000000886000 140 rw--- 0000000000286000 008:00002 php-cgi
00000000008a9000 52 rw--- 00000000008a9000 000:00000 [ anon ]
0000000000aa8000 76 rw--- 00000000002a8000 008:00002 php-cgi
000000000f678000 1980 rw--- 000000000f678000 000:00000 [ anon ]
000000314a600000 112 r-x-- 0000000000000000 008:00002 ld-2.5.so
000000314a81b000 4 r---- 000000000001b000 008:00002 ld-2.5.so
000000314a81c000 4 rw--- 000000000001c000 008:00002 ld-2.5.so
000000314aa00000 1328 r-x-- 0000000000000000 008:00002 libc-2.5.so
000000314ab4c000 2048 ----- 000000000014c000 008:00002 libc-2.5.so
.....
......
..
00002af8d48fd000 4 rw--- 0000000000006000 008:00002 xsl.so
00002af8d490c000 40 r-x-- 0000000000000000 008:00002 libnss_files-2.5.so
00002af8d4916000 2044 ----- 000000000000a000 008:00002 libnss_files-2.5.so
00002af8d4b15000 4 r---- 0000000000009000 008:00002 libnss_files-2.5.so
00002af8d4b16000 4 rw--- 000000000000a000 008:00002 libnss_files-2.5.so
00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009 zero (deleted)
00007fffc95fe000 84 rw--- 00007ffffffea000 000:00000 [ stack ]
ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ]
mapped: 933712K writeable/private: 4304K shared: 768000K

Последняя строка очень важна:

  • mapped: 933712K общее количество памяти, отведенного под файлы
  • writeable/private: 4304K общее количество приватного адресного пространства
  • shared: 768000K общее количество адресного пространства, которое данный процесс использует совместно другими процессами.

Ссылки: Использование команды pmap для определения распределения памяти по программам / процессам в Linux

№ 11 и № 12: netstat и ss – сетевая статистика

Команда netstat выдает информацию о сетевых соединениях, таблицах маршрутизации, статистике по интерфейсам, маскарадинге соединений и многоадресных рассылках. Команда ss используется для выдачи в дамп статистики о сокетах. Она позволяет выдавать информацию, аналогичную выдаваемой командой netstat. Подробное описание команд ss и netstat смотрите по следующим ссылкам:

№13: iptraf – сетевая статистика в режиме реального времени

Команда iptraf запускает цветной интерактивный монитор, следящий за сетевыми IP. Этот монитор сетевых IP базируется на команде ncurses, которая выдает различную сетевую статистику, в том числе информацию о TCP, ведет подсчет UDP, выдает сведения о ICMP и OSPF, информацию о нагрузке на Ethernet, статистику по узлам сети, данные об ошибках контрольных сумм пакетов IP и многое другое. Монитор предоставляет в удобном для чтения виде следующие данные:

  • Статистику сетевого трафика по TCP подключениям
  • Статистику IP трафика по сетевым интерфейсам
  • Статистику сетевого трафика по протоколам
  • Статистику сетевого трафика по портам TCP/UDP и по размерам пакетов
  • Статистику сетевого трафика по адресам протоколов второго уровня

Рис.02; Общая статистика по интерфейсам: статистика трафика IP по сетевым интерфейсам


Рис.03: Статистика сетевого трафика по TCP подключениям

№14: tcpdump – детальный анализ сетевого трафика

Команда tcpdump – простая команда, выдающая дамп сетевого трафика. Однако, вам нужно хорошо понимать протоколы TCP/IP для того, чтобы использовать это средство. Например, для того, чтобы показать информацию о трафике DNS, введите следующее:

# tcpdump -i eth1 'udp port 53'

Для того, чтобы показать все IPv4 HTTP пакеты, идущие на порт и с порта 80, т.е. выдать только те пакеты, которые содержат данные, и, например, не учитывать пакеты SYN и FIN и пакеты ACK-only, введите следующее:

# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<2))>>2)) != 0)'

Для того, чтобы показать все сессии FTP для адреса 202.54.1.5, введите следующее:

# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'

Для того, чтобы показать все сессии HTTP для адреса 192.168.1.5, введите следующее:

# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'

Введите следующую команду и используйте для просмотра подробностей программу анализа wireshark:

# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

№ 15: strace – системные вызовы

Трассировка системных вызовов и сигналов. Это средство полезно для отладки веб сервера и решения других серверных проблем. О том, как использовать это средство и для чего нужна трассировка процессов, смотрите по ссылке strace.

№ 16: Директорий /Proc – различная статистика ядра

В директории /proc имеется подробная информация о различных устройствах и ядре Linux. Подробности смотрите в документации Linux kernel /proc. Самые общие примеры:

# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts

№ 17: Nagios – мониторинг сервера и сети

Nagios – популярное open source приложение, предназначенное для мониторинга компьютерных систем и сетей. Вы можете легко следить за всеми своими хостами, сетевым оборудованием и сервисами. Приложение может посылать предупреждающее сообщение, когда что-то идет не так, как надо, а затем – еще одно, когда ситуация исправляется. Имеется приложение FAN - "Fully Automated Nagios" ("Полностью автоматизированный Nagios"). Назначение FAN – обеспечить установку Nagios, в том числе и инструментария, предоставляемого сообществом Nagios. FAN распространяется в виде CD образа в стандартном формате ISO, что упрощает установку сервера Nagios. Вдобавок на дистрибутиве имеется масса инструментальных средств, повышающих практическую отдачу от использования Nagios.

№ 18: Cacti – инструментальное веб приложение, используемое для мониторинга

Пакет Cacti является полностью сетевым графическим решением, созданным для добавления графической оболочки к мощному средству хранения данных RRDTool. В пакете Cacti уже "из коробки" имеются средства быстрой регистрации, графические шаблоны с расширенными возможностями, множество методов для сбора данных и пользовательские функции управления. Все это помещено в интуитивно понятный и удобный для использования интерфейс, что имеет смысл при установке в локальных сетях вплоть до сложных сетей с сотнями устройств. Пакет предоставляет данные о сети, процессоре, памяти, зарегистрированных пользователях, серверах Apache, DNS и многое другое. По следующей ссылке смотрите описание, как под CentOS / RHEL установить и сконфигурировать сетевое графическое средство Cacti.

№ 19: KDE System Guard – графический монитор, выдающий сведения о системе в режиме реального времени

KSysguard – сетевое приложение для KDE, осуществляющее мониторинг системы и задач. Это средство может работать в ssh сессии. В нем имеется масса возможностей, например, такие, как клиент/серверные технологии, что позволяет осуществлять мониторинг локальных и удаленных хостов. В графической оболочке используются так называемые сенсоры, которые собирают информацию, выдаваемую приложением. Сенсор может возвращать либо простое значение, либо более сложно сформированные данные, например, таблицы. Для каждого вида данных предлагается один или несколько вариантов выдачи данных. Изображаемые данные сгруппированы в виде отдельных листов, которые можно сохранять и загружать независимо друг от друга. Таким образом, KSysguard не только менеджер простых задач, но также и мощное средство для управления большим серверным хозяйством.

Рис.05: KDE System Guard (рисунок взят из Википедии)

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

№ 20: Gnome System Monitor – графическое средство выдачи информации о системе в режиме реального времени

Приложение System Monitor позволит вам получить базовую информацию о системе, а также следить за системными процессами, использованием системных ресурсов и системными файлами. Вы также можете использовать System Monitor для изменения характеристик своей системы. Хотя это не такое мощное приложение, как System Guard для KDE, оно предоставляет основную информацию, которая может быть полезной для пользователей – новичков:

  • Отображается различная основная информация об аппаратном и программном обеспечении компьютера
  • Версия ядра Linux
  • Версия GNOME
  • Аппаратные средства
  • Установленная оперативная память
  • Процессоры и их скорость
  • Статус системы
  • Имеющееся в наличии дисковое пространство
  • Процессы
  • Память и пространство своппинга
  • Использование сети
  • Файловые системы
  • Список всех смонтированных файловых систем вместе с основной информацией о каждой из них

Рис.6: Приложение Gnome System Monitor


Бонус: Дополнительные инструментальные средства

И еще несколько инструментальных средств:

  • nmap - сканирует ваш сервер на предмет открытых портов..
  • lsof - перечисляет открытые файлы, сетевые соединения и еще многое.
  • ntop - инструментальное веб средство ntop является наилучшим средством, следящим за использованием сети, причем это делается точно так, как с помощью команды top просматриваются процессы, т.е. это программное обеспечение мониторинга сетевого трафика. Вы можете следить за состоянием сети и распределением трафика по различным протоколам, таким как UDP, TCP, DNS, HTTP и другим.
  • Conky - Еще одно хорошее средство мониторинга, предназначенное для использования в X Window. Оно хорошо конфигурируемое и позволяет следить за многими системными переменными, в том числе состоянием процессора, памяти, пространства свопинга, дисковыми носителями, температурой, процессами, сетевыми интерфейсами, зарядом батареи, системными сообщениями, поступающими письмами и т.д.
  • GKrellM - Может использоваться для мониторинга состояния процессоров, оперативной памяти, жестких дисков, сетевыми интерфейсами, локальными и удаленными почтовыми ящиками и многими другими вещами.
  • vnstat - vnStat является консольным монитором сетевого трафика. Она позволяет для выбранных интерфейсов вести журнал сетевого трафика в течение часов, дней и месяцев.
  • htop - улучшенная версия интерактивного просмотрщика процессов top. htop позволяет просматривать процессы в виде дерева процессов.
  • mtr - mtr объединяет в одной сетевой инструментальной программе функциональность программ traceroute и ping.

Не упустил ли я чего-либо? Пожалуйста, добавьте в комментариях свои любимые средства мониторинга системы.

Комментарии

Приведены выборочно только те, в которых сообщается об инструментальных программах, не указанных в основном списке – прим.пер.

№ 3, Chris: … для систем с небольшим количеством машин я рекомендую использовать Munin. Его легко устанавливать и конфигурировать. Мое любимое средство мониторинга linux кластера - Ganglia.

№ 4, Ftaurino: Еще один полезный инструмент - dstat , который выдает столько же данных, как вместе взятые vmstat, iostat, ifstat и netstat, и даже больше…

№ 10, Amr El-Sharnoby: Я убедился, что самое лучшее средство для отслеживания узких мест, связанных с процессами, процессором, памятью и жесткими дисками, причем все в одном, – это atop… Но само средство может вызвать массу проблем на сильно загруженных серверах, поскольку учет процессов идет непрерывно и сервис работает постоянно…

Для того, чтобы в системах RHEL, CentOS использовать это средство эффективно, выполните следующее:
1 - подключите rpmforge repo,
2 - установите atop с помощью # yum
3 – уничтожьте процесс с помощью # killall atop,
4 – отключите atop с помощью # chkconfig,
5 – удалите rf /tmp/atop.d/ и /var/log/atop/,
6 – после это не запускайте его с помощью команды "atop", вместо этого используйте команду #ATOPACCT="atop".

Этот инструмент сэкономил мне сотни часов времени, помог найти узкие места и решить связанные с ними проблемы …

№ 14, Cristiano: … хотелось бы добавить IFTOP, это действительно простое и не требующее значительных ресурсов средство, оно очень полезно, когда Вы хотите узнать, откуда был последний доступ к серверу и куда идет трафик…

№ 21, Ponzu: vi – инструметальное средство (хорошо известный мощный текстовый редактор - прим. пер.), используемое для проверки и модификации практически любого конфигурационного файла.

№ 22, Eric Schulman: … стоит упомянуть о dtrace, которое пригодится требовательным хакерам, желающим больше узнать об операционной системе и о внутренней структуре ее программ…

№ 25, Adrian Fita: … мне бы хотелось добавить iotop, отслеживающий использование диска различными процессами, и jnettop – очень простое средство, отслеживающее разделение ширины сетевого канала между различными подключениями в системе Linux …

№ 27, Praveen K: … я бы добавил команды whoami ,who am i, finger, pinky , id …

№ 29, Mathieu Desnoyers: … еще инструмент который, как мне кажется, пропущен в этом списке, - это LTTng. Это общесистемное средство трассировки, которое поможет разобраться со сложными проблемами, возникающими в многопоточных многопроцессорных приложениях, многократно обращающихся к ядру. Проект доступен по ссылке http://www.lttng.org. Трасировщик входит в состав последних версий дистрибутивов SuSE, WindRiver, Monta Vista и STLinux. Стандартный способ его использования – установить пропатченное ядро. Оно идет вместе с анализатором трассировок LTTV, который является прекрасным средством слежения за поведением системы…

№ 33, Kburger: … если Вы обсуждаете веб сервер, то прекрасное средство следить за активностью сервера Apache - apachetop

№ 34, Ram: … Вы забыли самое важное - net-snmpd. С его помощью Вы можете собрать сырые данные. Затем с помощью snmpwalk и скриптов Вы можете сделать свой собственный веб NMS, который будет собирать обычные данные, такие как прохождение пингов, использование дискового пространства, падение сервисов…

№ 35, Kartik Mistry: …"iotop" – прекрасное средство, которое следовало бы включить в список. Я очень часто использую "vnstat" для отслеживания закачек данных …

№ 37, Feilong: … обратите внимание на очень мощное средство, называемое nmon. Я использую его в системе AIX IBM, но сейчас оно работает на всех современных системах GNU/linux…

№ 40, Ken McDonell: …Если ваша "система " большая и / или распределенная и вопросы производительности, которыми Вы занимаетесь, сложные, вам желательно использовать Performance Co-Pilot (PCP). В нем Вы получите все данных, которые можно получить с помощью упомянутых вами инструментальных средств (и даже больше), его можно расширить добавляя новые приложения и слои сервисов, он работает по сети, пригоден для оценки кластеров и выдает как информацию в режиме реального времени, так и выполняет ретроспективный анализ. Смотрите http://www.oss.sgi.com/projects/pcp . PCP входит в состав дистрибутивов на основе Debian и в дистрибутив SUSE; вероятнее всего в ближайшем будущем он появится в дистрибутивах RH. В качестве бонуса PCP может выполнять мониторинг платформ не на базе Linux (Windows и некоторые производные от систем Unix).

№ 45. Aleksey Tsalolikhin: … я бы еще упомянул "ngrep" – сетевой (network) grep…

№ 48, Komradebob: …удивлен, что среди предложений не обнаружил следующий инструментарий: bmon – отображает / отслеживает в режиме реального времени сетевую активность / ширину пропускания канала; etherape – отличный визуальный индикатор, показывающий сетевой трафик; wireshark – tcpdump на стероидах; multitail – отслеживание в одном терминальном окне состояния многих файлов; swatch – отслеживает состояние регистрационных файлов и выдает оповещения.

№ 50, Jay: … phpsysinfo – еще один прекрасный и не требующий много ресурсов веб инструмент, осуществляющий мониторинг. Очень прост в настройке и использовании …

№ 51, Manuel Fraga: Osmius - инструментальное средство мониторинга (open source) - C++ и Java. С невероятной производительностью мониторит все, что подключается к сети …

№ 55, Balaji: … trafmon – еще одно полезное средство …

№ 56, Stefan: А для тех, кому нравятся несложные и компактные графические средства измерения, - xosview +disk -ints –bat

№ 63, Tman: Для профессионального мониторинга сетей используйте Zenoss: Zenoss Core (open source): http://www.zenoss.com/product/network-monitoring

№ 65, Eddy: Я не вижу в списке ifconfig или iwconfig

№ 66, Kestev: openNMS

воскресенье, 4 октября 2009 г.

Браузер и ссылки dchub:// и magnet://

1. Пишем "about:config"

2. Правой клавишей --> Создать ---> Строка

3. Имя строки : network.protocol-handler.app.magnet
Значение: /usr/bin/azureus ( или другая программа).

4. Правой клавишей --> Создать ---> Логическое

5. Имя строки : network.protocol-handler.handler.external.magnet
Ввести значение : yes

6. Перезагрузить FF и радоваться.

По мотивам http://www.linuxquestions.org/questions/linux-newbie-8/how-to-add-magnet...

Подобным способом можно настроить все что угодно.

пятница, 4 сентября 2009 г.

Восстановление GRUB после переустановки Винды

более-менее универсальное средство:
1) грузимся с ливсиди.
2) выполняем следующее:
Код:
sudo grub
find /boot/grub/stage1 # эта команда выдаст (hdx,y) x и y это циферки, которые надо дальше подставить
root (hdx,y)
setup (hdx)
quit
3) ребут, и теперь мы можем грузиться в Ubuntu.

Пример
Код:
sudo grub
find /boot/grub/stage1 //выдает (hd1,4)
root (hd1,4)
setup (hd1)
quit

Восстановление Grub или MBR Windows

Не знаю как вы, а я люблю экспериментировать с различными ОС.

Если у вас стоит Ubuntu + Windows, то при загрузке в Grub вы можете выбрать ОС. Но если вы переустановите Windows, то Grub перестанет загружаться, в этом случае его нужно переустановить.

Еще один вариант: надоел Ubuntu, захотелось его удалить и сделать так, чтобы Windows автоматически загружался по-умолчанию, как это было раньше. В этом случае вам нужно переустановить Windows MBR.


  • Восстановление Grub
  • Восстановление Windows MBR

Восстановление Grub

Для восстановления Grub нам понадобится диск, с которого вы ставили Ubuntu, чтобы зайти в режим LiveCD.

Загрузились, открыли терминал и выполняем следующую команду:

sudo grub

Мы зашли в программу работы с grub, все последующие действия будем выполнять здесь.


Для начала выполним команду:

find /boot/grub/stage2

Обратите внимание на значение, которое выдаст результат команды.


У меня это (hd0,5), но у вас может быть и что-нибудь другое.

В следующих командах подставляем ваше значение вместо (hd0,5) !

Выполняем команду:

root (hd0,5)

Обратите особое внимание на то, что после root идет пробел, а потом никаких пробелов нет.


Ну и последняя команда:

setup (hd0)

После setup идет пробел, потом пробелов нет. На этот раз вместо (hd0,5) пишем только первую часть: (hd0)! Естественно, подставляем то значение, которое вы получили после команды find.

Вот собственно и все. Можно перегружаться. Все легко и просто.

Восстановление Windows MBR

Данный способ работает в Windows XP. Если вам нужно восстановить mbr в Windows Vista - идем сюда.

Для восстановления Windows MBR нам понадобится диск, с которого вы ставили Windows. Загружаемся с него. Если у вас мультизагрузочный диск - выбирайте пункт установки Windows, как если бы вы решили ее поставить.

Нам нужно зайти в консоль восстановление. Многие путают консоль восстановления и ASR (автоматическое восстановление системы).


Не выбирайте пункт "Автоматическое восстановление системы"!

Это не консоль, нам нужно другое!

Через определенное время вы попадете в такое меню:


Нам нужно зайти в консоль восстановления, нажимайте клавишу R (или то, что будет написано у вас).

Спустя некоторое время консоль загрузится. Выбирайте ту операционную систему, которая стоит у вас. Если у вас ситуация как у меня, просто введите 1 и нажмите ввод.


Теперь нужно ввести пароль администратора, который вы задавали при установке Windows.


Все, мы находимся в консоли восстановления.


Теперь нам нужно ввести следующую команду:

fixmbr

Читаем предупреждение, долго думаем, соглашаемся и жмем ввод.


На этом все. Прощай линукс. Frown

Для выхода из консоли выполняем команду:

exit


среда, 12 августа 2009 г.

Удаленный доступ к рабочему столу между Ubuntu/Linux и Windows

Часть I. О том, что использовать

Оригинал: Remote Desktop Between Ubuntu/Linux and Windows, Part I
Автор: Eric Geier
Дата публикации: вторник, 19 января 2009г. 10:43:53
Перевод: Коваленко А.М.
Дата перевода: 4 августа 2009 г.

Вы используете как Windows, так и Linux? Можете ли вы удаленно управлять Windows из Linux (Ubuntu либо другого дистрибутива) или Linux из Windows? Несомненно, можете. Подобно тому, как используется Подключение к удаленному рабочему столу между платформами Microsoft (или удаленное управление между машинами с Linux), возможно и управление рабочим столом из разных платформ. Вы можете щелкать мышью на рабочем столе и запускать приложения, точно так же, как если бы вы сидели прямо перед компьютером.

Мы обсудим несколько различных возможностей, которые вы можете получить, используя подключение к удаленному рабочему столу. Плюс к этому, мы пошагово рассмотрим метод установки подключения к удаленному рабочему столу с использованием бесплатных инструментов. Итак, давайте начнем.

Выбор протокола удаленного рабочего стола

Приложения удаленного рабочего стола обычно используют либо Протокол Удаленного рабочего стола (RDP), либо протокол Виртуальной Вычислительной Сети (VNC). Для установки удаленного подключения оба узла (сервер и клиент) должны поддерживать один и тот же протокол. Проблема заключается в том, что не все операционные системы (ОС) используют одинаковые протоколы по умолчанию. Вдобавок к этому, некоторые дистрибутивы Linux и некоторые редакции Windows не содержат в себе ни серверного, ни клиентского приложения удаленного рабочего стола, либо не содержат приложение удаленного рабочего стола вообще.

Вашей первой задачей должно стать определение протокола, который уже поддерживается на ваших компьютерах. Дополнительно к исследованию вашей ОС, поиску документации, ссылкам на шпаргалки, вы должны иметь возможность понимать, что есть что и где. Затем, уже в конце, вы должны выбрать протокол для использования на всех ваших компьютерах.

Платформа Протокол Клиент Сервер
Windows Home Edition RDP X
Windows XP Professional RDP X X
Windows Vista Home Basic & Premium RDP X
Windows Vista Business & Ultimate RDP X X
Most Linux Distros VNC X X

Обратите внимание:

  • Удаленный рабочий стол VNC обычно медленнее, чем RDP соединения, тем не менее, VNC обычно легче реализовать на различных платформах.
  • Для лучшей производительности и безопасности, вы можете использовать свободный сервер и клиентов NoMachine's NX или сервер и клиентов FreeNX, но он более сложный в настройке, здесь требуется думать.
  • Возможно также, обеспечить поддержку RDP соединений на машинах с Linux, например, используя xrdp сервер.

Открытие брандмауэра (межсетевого экрана)

Перед тем, как перейти к установке удаленных соединений или к их приему, вам необходимо настроить программное обеспечение вашего брандмауэра. На компьютерах, к которым вы хотите подключиться удаленно, необходимо разрешить трафик VNC или RDP через брандмауэр.

В Windows, при старте сервера, вы должны получить запрос на Блокирование или Разрешение доступа к сети приложению сервера удаленного рабочего стола. Если нажать кнопку "Разрешить", все должно заработать. Если вы не получили запрос, то можете зайти в свойства брандмауэра Windows и добавить разрешение для этого приложения вручную, используя номера портов, указанных ниже.

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

  • RDP использует TCP порт 3389
  • VNC использует порты, начиная с 5900 (каждое удаленное соединение к серверу использует разные порты; дисплей 1 использует порт 5901, дисплей 2 использует порт 5902, и т. д.). Лучшим методом, поэтому, будет определение области портов (таких как 5900 - 5905), когда вы создаете правило брандмауэра или исключения.

Теперь вы имеете возможность удаленно подключаться к компьютерам в вашей локальной сети. Для удаленного соединения через Интернет вы должны также, настроить ваш маршрутизатор. Мы обсудим это в следующей части.

Использование VNC сервера и клиента в Ubuntu

Если вы используете Ububntu, то вы уже имеете установленные и готовые к использованию клиент и сервер VNC. (Эта статья базируется на дистрибутиве Ubuntu Desktop 8.10 Intrepid Ibex.) Для того, чтобы иметь возможность принимать удаленные соединения, просто выберете в меню Система > Свойства > Удаленный рабочий стол. В диалоговом окне настройте желаемые ресурсы общего пользования и параметры безопасности. Список команда/адрес представлен вам для указания других компьютеров в локальной сети с установленным Ubuntu или другим дистрибутивом Linux, с которых будет производиться подключение.

Для использования VNC вьюера (просмотрщика) на Ubuntu, выберите Приложения > Служебные > Терминал. Если вы подключаетесь к компьютеру, на котором установлен Ubuntu, наберите команду предлагаемую Ubuntu. Если производится подключение к компьютеру, на котором установлен другой дистрибутив Linux, применяется следующий формат команды:

$ vncviewer Имя_Компьютера_или_IP_адрес:#

так как показано на рисунке 1. Эта строка содержит команду, vncviewer, за которой следует имя или IP адрес компьютера (или Internet IP, если подключение производится через web), оканчиваясь двоеточием и ID (идентификатором) дисплея (туннеля). Если производится подключение к компьютеру, на котором установлен Windows, то двоеточие и номер дисплея не указываются, в этом случае формат команды следующий:

$ vncviewer ИмяКомпьютера_или_IP_адрес

рисунок 1

Установка VNC Клиента и Сервера на другие дистрибутивы Linux

Если вы используете дистрибутив Linux, отличный от Ubuntu, поищите в его хранилищах соответствующие пакеты для установки VNC сервера и клиента. Если таких пакетов нет, то вы можете скачать TightVNC напрямую с их веб-сайта и следовать инструкциям по сборке и установке.

Сервер TightVNC/RealVNC не имеет графического интерфейса, вы должны использовать командную строку, но не беспокойтесь - это легко. Просто откройте Терминал, наберите vncserver и нажмите Enter. При первом запуске вам будет предложено создать пароль для VNC соединений. После того, как вы установили пароль, будет автоматически настроен дисплей или туннель, как показано на рисунке 2.

рисунок 2

VNC поддерживает множество дисплеев для обеспечения доступа большого количества пользователей и/или для определения вариантов атрибутов, таких, как разрешение экрана, команд, выполняемых при запуске и т.д. Каждый раз при запуске, команда vncserver создает новый туннель, с номером обычно начинающимся с 1, который увеличивается на единицу при каждом последующем запуске команды.

Ниже даны различные опции команды vncserver, которые полезно запомнить:

  • Для получения помощи используйте опцию -help или введите команду man vncserver.
  • Используя опцию -name desiredname вы можете назначить имя определенному туннелю или дисплею, которое отображается в строке заголовка VNC клиента, когда производится удаленное подключение к этому дисплею.
  • Поправка :# позволяет вам вручную определить номер туннеля или дисплея.
  • Используя опцию -geometry WxH вы можете установить ширину и высоту экрана для отображения удаленного рабочего стола.
  • Добавив -depth # вы можете установить глубину цвета от 8 до 32 бит на пиксель.
  • Для закрытия VNC туннеля используйте опцию -kill :#, заменив значок решетки желаемым идентификатором туннеля (дисплея).

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

Для графического интерфейса вы можете, как правило, настроить опции из диалогового окна. Когда подключаетесь к машине с дистрибутивом Linux, наберите имя компьютера или IP адрес удаленной машины (или Internet IP когда подключаетесь через web), затем двоеточие, ID туннеля или дисплея и нажмите Enter. Например, ericlinuxbox:1 или 192.168.0.122:1. Если подключаетесь к машине с Windows, двоеточие и номер дисплея не требуется. Для подключения из терминала, введите vncviewer и информацию об узле, таким же образом как показано на рисунке 1 ранее.

Установка VNC клиента/сервера в Windows

TightVNC также предлагает клиента и сервер в версии для Windows на его странице для скачивания. После установки TightVNC вы можете запустить сервер из меню Пуск (прим. переводчика: Пуск > Все Программы > TightVNC), выбрав Запустить TightVNC сервер. При этом появится диалоговое окно свойств (см. рисунок 3), где вы должны назначить пароль для входящих сессий.

рисунок 3

После проверки всех установок нажмите ОК. Сервер будет запущен и готов к приему входящих соединений, одновременно в системном трее появится иконка сервера. Еще раз напомню, не используйте двоеточие и номер дисплея, когда подключаетесь к компьютеру с Windows из любой платформы.

Если вы подключаетесь к удаленному компьютеру из Windows, выберите ярлык TightVNC Вьюер из стартового меню. Подобным образом, для подключения из других платформ, введите имя или IP адрес удаленного компьютера (или Internet IP адрес, когда подключаетесь через web), и когда подключаетесь к компьютеру с Linux включите в команду двоеточие и номер дисплея.

вторник, 4 августа 2009 г.

Формат Flash в ФС NTFS в GParted

GParted не хочет форматировать флэшку в NTFS. Ext и fat пожалуйста, а вот в ntfs увольте.
Нужно поставить пакет ntfsprogs, тогда GParted нормально умеет работать с NTFS

пятница, 26 июня 2009 г.

NagiOS

Nagios — программа с открытым кодом, предназначенная для мониторинга компьютерных систем и сетей.

Она следит за указанными узлами и службами, и оповещает администратора в том случае, если какие-то из служб прекращают (или возобновляют) свою работу.

Nagios (произносится как «нагиос»), первоначально созданная под именем Netsaint, разработана Этаном Галстадом (Ethan Galstad). Он же поддерживает и развивает систему сегодня, совместно с командой разработчиков, которые занимаются как официальными, так и неофициальными плагинами.

Первоначально Nagios была разработана для работы под GNU/Linux, но она также хорошо работает и под другими Unix-подобными ОС.

Nagios распространяется по лицензии GNU General Public License Version 2.

Обзор возможностей

  • Мониторинг сетевых служб (SMTP, POP3, HTTP, NNTP, ICMP, SNMP)
  • Мониторинг состояния хостов (загрузка процессора, использование диска, системные логи). В большинстве сетевых операционных систем, даже Microsoft Windows с модулем NRPE_NT
  • Поддержка удаленного мониторинга через шифрованные туннели SSH или SSL
  • Простая архитектура модулей расширений (плагинов) позволяет, используя любой язык программирования по выбору (Shell, C++, Perl, Python, PHP, C# и другие), легко разрабатывать свои собственные способы проверки служб
  • Параллельная проверка служб
  • Возможность определять иерархии хостов сети с помощью «родительских» хостов, позволяет обнаруживать и различать хосты, которые вышли из строя, и те, которые недоступны
  • Отправка оповещений в случае возникновения проблем со службой или хостом (с помощью почты, пейджера, смс, или любым другим способом, определенным пользователем через модуль системы)
  • Возможность определять обработчики событий произошедших со службами или хостами для проактивного разрешения проблем
  • Автоматическая ротация лог-файлов
  • Возможность организации совместной работы нескольких систем мониторинга с целью повышения надёжности и создания распределенной системы мониторинга
  • Включает в себя утилиту nagiostats, которая выводит общую сводку по всем хостам, по которым ведется мониторинг.

Название

Согласно официальному FAQ Этана Галстада на сайте Nagios, N.A.G.I.O.S. это рекурсивный акроним, расшифровка которого в переводе звучит так: «Nagios не собирается настаивать на святости». Это камень в огород программы, послужившей основой для Nagios, Netsaint.


ТипМониторинг сети
РазработчикЭтан Галстад
ОСUNIX-подобные
Версия3.1.0 — 25 января, 2009
ЛицензияGNU General Public License
Сайтwww.nagios.org

среда, 24 июня 2009 г.

скрипт для быстрого обновления системы

я так обленился, что мне даже лень два раза писать
$ sudo aptitude update
$ sudo aptitude upgrade


поэтому я сделал удобный скриптик, который обновляет систему в одну команду:)
$ sudo nano /usr/local/bin/upgrade-system
туда пишем:
1
2
3
#!/bin/bash
sudo aptitude update
sudo aptitude upgrade

даем права:
$ sudo chmod +x /usr/local/bin/upgrade-system

теперь для обновления всей системы достаточно в системе выполнить:
$ upgrade-system

p.s. это должно продемонстрировать, насколько просто можно создавать свои сценарии.
например, аналогично можно организовать запуск 2gis. вместо большой цепочки из wine и пути до exe'шника.
Взято с http://welinux.ru/post/959/