LXF78:Вопрос? Ответ!
Seafox (обсуждение | вклад) (→Криптографомания) |
Seafox (обсуждение | вклад) (→Где модем?) |
||
Строка 109: | Строка 109: | ||
fdisk /mbr | fdisk /mbr | ||
Если у Вас Windows XP, то вместо fdisk запустите fixmbr. ''НБ'' | Если у Вас Windows XP, то вместо fdisk запустите fixmbr. ''НБ'' | ||
+ | |||
+ | ---- | ||
+ | ===Синхронология=== | ||
+ | |||
+ | '''Вопрос:''' <br /> | ||
+ | У меня есть старый компьютер с Mandrake 8.2, который служит домашним сервером для шести компьютеров. Мы все еще на ISDN, поскольку в широкополосном Интернете для нас нет насущной необходимости. Последние несколько месяцев я использовал NTP для еженедельной синхронизации времени на сервере. Я создал простое задание в Cron, по которому сервер соединяется с Интернетом, синхронизирует время с помощью ntpdate, а затем разрывает соединение. | ||
+ | |||
+ | Следующий шаг – синхронизировать домашние компьютеры с сервером. Я не могу использовать для этого ntpdate (это ведь не демон), у меня работает ntpd. Я наконец разобрался, как его настроить – документация к NTP выглядит как диссертация по астрофизике, а не как руководство пользователя – и действительно могу синхронизировать компьютеры с сервером, но ntpd сам пытается синхронизироваться с Интернет-серверами каждые несколько минут, а так как соединения при этом нет, то он завершается аварийно. | ||
+ | |||
+ | Как можно настроить ntpd, чтобы он синхронизировался с Интернет-сервером только в заданное время? Или можно сделать так, чтобы для синхронизации времени использовалось мое задание с ntpdate, а сам ntpd раздавал на компьютеры локальное время сервера? | ||
+ | ''Мэтью Вайз'' | ||
+ | |||
+ | |||
+ | '''Ответ:''' <br /> | ||
+ | Дизайн большинства NTP-серверов, включая ntpd и openntpd, рассчитан на постоянное подключение к Интернету. Поддержка связи с другими серверами времени является неотъемлемой частью алгоритма их работы, что делает их бесполезными в Вашем случае. | ||
+ | |||
+ | Для обеспечения сервиса синхронизации времени с непостоянным или вообще отсутствующим Интернет-доступом создан Chrony. Он содержит две программы: chronyd, демон, раздающий клиентам локальное время сервера, и chronyc, который служит для синхронизации локального времени сервера с другими серверами времени. Последнюю версию пакета можно взять с http://chrony.sunsite.dk. Вам придется скомпилировать его из исходных текстов, но это простой процесс и он отлично описан в файле INSTALL. | ||
+ | |||
+ | Документация довольно многословная, однако простой сервер настроить очень легко. Просто поместите в /etc/chrony.conf следующие строки, заменяя nnn.nnn.nnn. | ||
+ | nnn IP-адресом Вашего сервера:<br /> | ||
+ | |||
+ | server nnn.nnn.nnn.nnn offline | ||
+ | server nnn.nnn.nnn.nnn offline | ||
+ | server nnn.nnn.nnn.nnn offline | ||
+ | keyfile /etc/chrony.keys | ||
+ | commandkey 1 | ||
+ | driftfile /etc/chrony.drift | ||
+ | allow 192.168.1 | ||
+ | |||
+ | Список доступных серверов можно получить следующей командой: | ||
+ | |||
+ | netselect -s 3 pool.ntp.org | ||
+ | |||
+ | Параметр offline пресечет попытки Chrony синхронизироваться с Интернет-серверами. Команда allow задает диапазон IP-адресов, которым разрешено получать время с этого сервера. Установите пароль: | ||
+ | echo >/etc/chrony.keys `1 | ||
+ | somepassword’ | ||
+ | |||
+ | Теперь запустите демон с помощью init-скрипта: Ваш сервер будет раздавать компьютерам из домашней сети свое локальное время. Для корректного обновления локального времени лучше исправить Cron-задание, дописав в сценарий cron после соединения такие строки: | ||
+ | /usr/local/bin/chronyc <<EOF | ||
+ | password somepassword | ||
+ | online | ||
+ | EOF | ||
+ | |||
+ | Проделайте это еще раз после разрыва соединения, заменив online на offline. ''НБ'' |
Версия 15:00, 4 апреля 2008
|
|
|
Содержание |
Вопрос? Ответ!
- Если вы завязли в какой-то проблеме и чтение HOWTO не помогает, почему бы не написать нам? Наши эксперты помогут вам разобраться даже в самых сложных проблемах.
Безbashенному
Вопрос:
Я пытаюсь писать bash-скрипты с использованием утилит, требующих ввода с клавиатуры. Например, здесь без этого не обойтись:
update-alternatives --config xxx
Хотелось бы автоматизировать этот процесс с помощью параметра, передаваемого скрипту. На данный момент мое лучшее решение – записать в файл то, что нужно ввести с клавиатуры, запустить update-alternatives, направив поток ввода из этого файла, а затем удалить сам файл. Но должен быть другой путь. Как можно ввести параметр с клавиатуры, не записывая его во временный файл? Аноним, с форума LXF
Ответ:
Запомните закон Linux (и Unix): «Все на свете – файлы», включая стандартные потоки ввода и вывода. Для них предусмотрены дескрипторы: &0 для стандартного ввода stdin, а &1 – для стандартного вывода stdout (кстати, &2 – это поток ошибок, stderr) . Вот что Вам нужно:
echo «A» | update-alternatives --config xxx <&0
Здесь «А» – параметр, вводимый с клавиатуры. echo посылает его в stdout, далее канал (|) перенаправляет его следующей команде: &0 – дескриптор для stdin, а <&0 направляет ввод на команду.
Согласно другому неписаному закону Linux, «для любой задачи существуют как минимум два способа выполнения». Вместо &0, &1 и &2 Вы можете указать /dev/stdin, /dev/stdout и /dev/stderr соответственно. Версии с & короче набирать, но /dev будут понятнее, если Вы откроете свой скрипт через полгодика. НБ
Вдохнуть Ethereal
Вопрос:
Только что приобрел ваш журнал и установил SUSE Linux на списанный компьютер, потому что очень хочу разобраться в Linux. Установка была очень простой, и руководства в журнале очень полезные. Однако я сетевой инженер, поэтому теперь хочу установить Ethereal [анализатор сети]. Поскольку я новичок в Linux и у меня очень мало опыта, не могли бы вы подсказать, что нужно скачать, чтобы скомпилировать и установить Ethereal в SUSE Linux?
Линден Данлоп
Ответ:
Собрать из исходных текстов любую открытую программу очень легко. Однако у дистри бутивов вроде SUSE Linux есть замечательное свойство: большинство необходимого имеется на дисках или в репозитариях пакетов.
Для установки Ethereal запустите YaST из меню SUSE, перейдите на вкладку Программное обеспечение (Software) и выберите Управление программным обеспечением (Software Management). Теперь просто напечатайте «ethereal» в строке поиска, выберите найденные пакеты и нажмите Принять (Accept) для запуска установки. Если у программы есть какие-нибудь зависимости (другие программы или библиотеки), они установятся автоматически.
По умолчанию YaST знает лишь о тех пакетах, которые есть на установочных дисках. Вы можете добавить репозитарии с дополнительными пакетами, выбрав Источники установки (Installation Sources). Список зеркал SUSE можно найти на сайте http://www.opensuse.org/Mirrors_Released_Version. Выберите себе сервер и добавьте его в YaST, чтобы иметь доступ к самым свежим версиям пакетов. НБ
Уловка-22
Вопрос:
Я уезжаю работать за границу на несколько месяцев и хотел бы иметь удаленный доступ к своей сети. Установил FreeNX на SUSE 9.3 и перенаправил пакеты с порта 22 на нужную машину на роутере Netgear. Теперь я без проблем могу соединяться со своей машиной, просматривать почту и запускать приложения.
Этим утром я просмотрел /var/log/messages и увидел, что кто-то пытается атаковать меня по 22-му порту. Там были сотни сообщений от sshd вида
`Invalid user <xxx> from :: ffff:195.90.196.20’.
На моей системе зарегистрированы только 2 пользователя, root и я (вряд ли хакеры могут угадать мое имя). Я использую сильные пароли, комбинируя буквы верхнего и нижнего регистра с цифрами, их нет ни в каком словаре.
Беспокоиться ли насчет этих атак? Можно ли предупредить sshd, чтобы он отклонял соединения после X неудачных попыток входа за N секунд, или лучше просто отследить злоумышленника и отклонять вообще все пакеты с его ip-адреса? Лео Палваст
Ответ:
Такие атаки – обычное дело, если Вы открываете миру порт 22 для внешнего ssh-доступа.
Есть несколько приемов, уменьшающих вероятность проникновения злоумышленника. Сложные пароли – только первый шаг. Так как Вы используете SSH для удаленной пользовательской работы, root-доступ Вам скорее всего не нужен, вот и отключите его в /etc/ssh/sshd_config.
Для этого найдите строку
PermitRootLogin yes
и замените yes на no. Если понадобится, сможете получить права суперпользователя через su, а вот взломщику для этого придется взломать уже два пароля – сначала Ваш пользовательский, затем пароль суперпользователя.
Или включите yes для without-password. root-доступ откроется, но только для того, у кого верный ssh-ключ. Посмотрите man-страницы для ssh и ssh-keygen, чтобы побольше узнать об этом. Вы можете потребовать проверки ключа для всех пользователей, но тогда придется скопировать ключ на все компьютеры, с которых Вы захотите иметь ssh-доступ – это не здорово. Решение сработает, если Вы заходите по ssh только со своего ноутбука.
Для включения этой опции найдите строку с «PasswordAuthentication» и приведите ее к такому виду:
PasswordAuthentication no
Еще Вы можете запускать ssh-сервер на каком-нибудь нестандартном порту, изменив строку «Port 22» в sshd_config и разрешив этот порт в nxclient и knx. Все эти методы позволят Вам сделать Вашу систему практически недосягаемой для хакеров.
Есть несколько программ, блокирующих IP-адреса, с которых пытаются подобрать пароли для SSH и других сервисов: http://breakinguard.sf.net, http://daemonshield.sourceforge.net или http://www.csc.liv.ac.uk/~greg/sshdfilter.
Криптографомания
Вопрос:
У нас в офисе – внутренний почтовый сервер на Dovecot. Мы бы хотели обеспечить нашим сотрудникам шифрованный доступ к нему, чтобы они могли подключаться к серверу из дома, но беспокоимся о безопасности этого шага. Можете ли вы рассказать о том, как разрешить безопасное соединение через надежные email-протоколы?
Мичил Гир
Ответ:
Шифрование базовых сервисов совсем не трудно, несмотря на то, что математические аспекты криптографии очень сложны для понимания. Нужно только создать SSL-сертификат и убедиться, что сервер работает с созданными нами сертификатами. Сертификат можно и купить, но вряд ли это будет оправдано в случае исключительно внутренних нужд. Будь это общедоступный сервис, Вам потребовался бы сертификат, распознаваемый большинством распространенных почтовых клиентов.
Для создания сертификата воспользуемся пакетом OpenSSL (http://www.openssl.org), который есть в большинстве дистрибутивов. Команда openssl сама по себе малопонятна, но есть простой интерактивный интерфейс, через который можно создать сертификат для Вас. Для этого имеется скрипт mkcert.sh, поставляемым вместе с Dovecot, но, имея дело с файлами OpenSSL, можно изготовить ключи и сертификаты другого вида.
От лица суперпользователя перейдите в директорию /etc/pki/tls/certs (/usr/share/ssl/certs для SUSE или /etc/ssl для Mandriva). Если наберете make в командной строке, получите напоминание о том, какие сертификаты будут созданы. Обычно сначала создается ключ, а затем на его основе генерируется сертификат. А вот команда make dovecot.pem создаст ключ и сертификат для Dovecot, оба в одном файле. Все, что Вам нужно – в ответ на подсказку ввести информацию (значения по умолчанию будут показаны в квадратных скобках). Самое важное из заполняемых полей – Common Name, тут следует вписать домен Вашего почтового сервера, а с остальными разобраться нетрудно.
Теперь перенесем созданный сертификат в директорию, указанную в файле конфигурации Dovecot – /etc/dovecot.conf, параметры ssl_cert_file и ssl_key_file – это те самые сертификат и ключ.
Просто скопируем файл с этой парой в /etc/pki/dovecot/dovecot.pem и в /etc/pki/dovecot/private/dovecot.pem, удалив при этом автоматически сгенерированные файлы. Уникальный сертификат готов – наслаждайтесь безопасным сервером Dovecot. КК
Где модем?
Вопрос:
После месяцев сомнений я наконец набрался смелости установить SUSE 10. Установка прошла нормально, но система настойчиво считала, что я в локальной сети (хотя у меня никакой сети нет), да еще она не нашла мой модем.
Я испробовал все советы из вашего журнала и все, что нашел в различных форумах, однако без толку (честно говоря, многого из того, что мне советовали, я просто не понял). Я даже хотел удалить Linux с жесткого диска, но теперь уже долгое время я не могу загрузиться в Windows, потому что не запускается какой-то Grub.
Если вы сможете мне помочь, я попытаюсь еще раз. Если нет, то как я могу удалить SUSE Linux? Лес Вуд
Ответ:
Во-первых, важное замечание. Пока Вы не сообщите как можно больше информации о Вашей системе, мы будем блуждать в потемках. Чтобы помочь, мы должны знать конфигурацию компьютера, на который Вы устанавливаете Linux. Есть в Вашем компьютере сетевая карта? Если да, тогда понятно, почему SUSE думал, что Вы в сети. Решение этой ИСКЕ проблемы очень простое: запустите YaST, зайдите в Сетевое оборудование (Network Devices) > Сетевая карта (Network Card), выделите сетевой интерфейс и нажмите Удалить (Delete).
Теперь займемся модемом. Скорее всего SUSE его не распознает, потому что у Вас так называемый Winmodem. Это примитивные устройства, и большинство их функций перекладывается на центральный процессор и Windows-драйвер. Некоторые из них можно уговорить поработать в Linux, некоторые – нет, поскольку их изготовители не выкладывают спецификаций, которые нужны для создания драйвера.
Для начала определите, что у Вас за модем, с помощью утилиты Scanmodem, которая включена на диск этого журнала. Вставьте диск, запустите терминал и выполните такую команду:
sh /media/cdrom/Magazine/Answers/scanModem
Скрипт создаст директорию Modem с несколькими текстовыми файлами, содержащими информацию о Вашем модеме, о подходящем драйвере и о том, где его найти. Дополнительная информация имеется на сайте http://linmodems.org.
С другой стороны, можно приобрести обычный COM-модем (с некоторыми USB-моделями также возникают сложности). COM-модемы без проблем работают абсолютно в любой операционной системе.
Ваша проблема с удалением Linux не уникальна. Когда Вы установили его, в главную загрузочную запись прописался Grub, позволяющий выбрать загрузку Linux или Windows. Linux Вы стерли, а Grub остался, но необходимые ему файлы были удалены. Поэтому он и не может нормально запуститься. Если у Вас Windows 98, загрузитесь с аварийной дискеты или диска и запустите fdisk следующим образом:
fdisk /mbr
Если у Вас Windows XP, то вместо fdisk запустите fixmbr. НБ
Синхронология
Вопрос:
У меня есть старый компьютер с Mandrake 8.2, который служит домашним сервером для шести компьютеров. Мы все еще на ISDN, поскольку в широкополосном Интернете для нас нет насущной необходимости. Последние несколько месяцев я использовал NTP для еженедельной синхронизации времени на сервере. Я создал простое задание в Cron, по которому сервер соединяется с Интернетом, синхронизирует время с помощью ntpdate, а затем разрывает соединение.
Следующий шаг – синхронизировать домашние компьютеры с сервером. Я не могу использовать для этого ntpdate (это ведь не демон), у меня работает ntpd. Я наконец разобрался, как его настроить – документация к NTP выглядит как диссертация по астрофизике, а не как руководство пользователя – и действительно могу синхронизировать компьютеры с сервером, но ntpd сам пытается синхронизироваться с Интернет-серверами каждые несколько минут, а так как соединения при этом нет, то он завершается аварийно.
Как можно настроить ntpd, чтобы он синхронизировался с Интернет-сервером только в заданное время? Или можно сделать так, чтобы для синхронизации времени использовалось мое задание с ntpdate, а сам ntpd раздавал на компьютеры локальное время сервера? Мэтью Вайз
Ответ:
Дизайн большинства NTP-серверов, включая ntpd и openntpd, рассчитан на постоянное подключение к Интернету. Поддержка связи с другими серверами времени является неотъемлемой частью алгоритма их работы, что делает их бесполезными в Вашем случае.
Для обеспечения сервиса синхронизации времени с непостоянным или вообще отсутствующим Интернет-доступом создан Chrony. Он содержит две программы: chronyd, демон, раздающий клиентам локальное время сервера, и chronyc, который служит для синхронизации локального времени сервера с другими серверами времени. Последнюю версию пакета можно взять с http://chrony.sunsite.dk. Вам придется скомпилировать его из исходных текстов, но это простой процесс и он отлично описан в файле INSTALL.
Документация довольно многословная, однако простой сервер настроить очень легко. Просто поместите в /etc/chrony.conf следующие строки, заменяя nnn.nnn.nnn.
nnn IP-адресом Вашего сервера:
server nnn.nnn.nnn.nnn offline server nnn.nnn.nnn.nnn offline server nnn.nnn.nnn.nnn offline keyfile /etc/chrony.keys commandkey 1 driftfile /etc/chrony.drift allow 192.168.1
Список доступных серверов можно получить следующей командой:
netselect -s 3 pool.ntp.org
Параметр offline пресечет попытки Chrony синхронизироваться с Интернет-серверами. Команда allow задает диапазон IP-адресов, которым разрешено получать время с этого сервера. Установите пароль:
echo >/etc/chrony.keys `1 somepassword’
Теперь запустите демон с помощью init-скрипта: Ваш сервер будет раздавать компьютерам из домашней сети свое локальное время. Для корректного обновления локального времени лучше исправить Cron-задание, дописав в сценарий cron после соединения такие строки:
/usr/local/bin/chronyc <<EOF password somepassword online EOF
Проделайте это еще раз после разрыва соединения, заменив online на offline. НБ