Защищенная установка соединения



Для первоначальной настройки OPIE используется команда opiepasswd:

% opiepasswd -c

[grimreaper] ~ $ opiepasswd -f -c

Adding unfurl:

Only use this method from the console; NEVER from remote. If you are using

telnet, xterm, or a dial-in, type ^C now or exit with no password.

Then run opiepasswd without the -c parameter.

Using MD5 to compute responses.

Enter new secret pass phrase:

Again new secret pass phrase:

ID unfurl OTP key is 499 to4268

MOS MALL GOAT ARM AVID COED

В приглашениях Enter new secret pass phrase: или Enter secret password:, введите пароль или фразу. Запомните, это не тот пароль, с которым вы будете входить, он используется для генерации одноразовых паролей. Строка ''ID'' содержит информацию для вашего конкретного случая: имя пользователя, счетчик цикла и ключ. При входе система запомнит эти параметры и отправит их вам, поэтому их не надо запоминать. В последней строке находится одноразовый пароль, соответствующий этим параметрам и секретному паролю; если вы войдете в систему сразу, используйте этот одноразовый пароль.

Незащищенная установка соединения

Для инициализации или изменения защищенного пароля через незащищенное соединение, вам потребуется существующее защищенное соединение куда-то, где вы сможете запустить opiekey; это может быть shell на компьютере, которому вы доверяете. Вам потребуется также установить значение счетчика цикла (100 возможно подойдет), и задать ключ или использовать сгенерированный. Через незащищенное соединение (к компьютеру, на котором производится настройка), используйте команду opiepasswd:

% opiepasswd

 

Updating unfurl:

You need the response from an OTP generator.

Old secret pass phrase:

   otp-md5 498 to4268 ext

   Response: GAME GAG WELT OUT DOWN CHAT

New secret pass phrase:

   otp-md5 499 to4269

   Response: LINE PAP MILK NELL BUOY TROY

 

ID mark OTP key is 499 gr4269

LINE PAP MILK NELL BUOY TROY

Чтобы принять ключ по умолчанию нажмите Enter. Затем, перед вводом пароля доступа введите те же параметры в вашем защищенном соединении или средстве доступа OPIE:

% opiekey 498 to4268

Using the MD5 algorithm to compute response.

Reminder: Don't use opiekey from telnet or dial-in sessions.

Enter secret pass phrase:

GAME GAG WELT OUT DOWN CHAT

Теперь переключитесь на незащищенное соединение и скопируйте одноразовый пароль, сгенерированный соответствующей программой.

Создание одного одноразового пароля

Как только вы настроите OPIE, во время входа появится приглашение вроде этого:

% telnet example.com

Trying 10.0.0.1...

Connected to example.com

Escape character is '^]'.

 

FreeBSD/i386 (example.com) (ttypa)

 

login: <username>

otp-md5 498 gr4269 ext

Password:

Кроме того, у OPIE есть полезная особенность (не показанная здесь): если вы нажмете Enter в приглашении на ввод пароля, включится эхо, и вы сможете увидеть то, что вводите. Это может быть очень полезно, если вы пытаетесь ввести пароль вручную, например с распечатки.

В этот момент вам потребуется сгенерировать одноразовый пароль, чтобы ввести его в приглашение. Это должно быть выполнено на защищенной системе, в которой вы можете запустить opiekey (есть версии для DOS, Windows и Mac OS). Им требуются значения счетчика цикла и ключ в качестве параметров командной строки. Вы можете скопировать и вставить их прямо из приглашения login компьютера, на который входите.

В защищенной системе:

% opiekey 498 to4268

Using the MD5 algorithm to compute response.

Reminder: Don't use opiekey from telnet or dial-in sessions.

Enter secret pass phrase:

GAME GAG WELT OUT DOWN CHAT

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

Создание нескольких одноразовых паролей

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

% opiekey -n 5 30 zz99999

Using the MD5 algorithm to compute response.

Reminder: Don't use opiekey from telnet or dial-in sessions.

Enter secret pass phrase: <secret password>

26: JOAN BORE FOSS DES NAY QUIT

27: LATE BIAS SLAY FOLK MUCH TRIG

28: SALT TIN ANTI LOON NEAL USE

29: RIO ODIN GO BYE FURY TIC

30: GREW JIVE SAN GIRD BOIL PHI

Параметр -n 5 запрашивает пять паролей, 30 указывает значение последнего счетчика цикла. Обратите внимание, что пароли печатаются в обратном по сравнению с обычным использованием порядке. Если вы действительно параноик, перепишите результат вручную; иначе скопируйте и передайте его lpr. Обратите внимание, что каждая линия содержит как счетчик цикла, так и одноразовый пароль; вам может показаться удобным отрывать пароль после использования.

14.5.5. Ограничение использования UNIX® паролей

OPIE может ограничивать использование паролей UNIX на основе IP адреса. Соответствующий файл называется /etc/opieaccess, он существует по умолчанию. Обратитесь к opieaccess(5) за более подробной информацией об этом файле и о предосторожностях, которые вы должны предпринять при использовании этого файла.

Вот пример файла opieaccess:

permit 192.168.0.0 255.255.0.0

Эта строка позволяет пользователям, чей IP адрес (который подвержен подделке) соответствует указанному значению и маске, входить с паролем UNIX.

Если ни одно из правил в opieaccess не сработало, поведением по умолчанию является запрет всех не-OPIE входов.

TCP Wrappers

Каждый, кто знаком с inetd(8), возможно когда-то слышал о TCP Wrappers. Но немногие полностью понимают их полезность в сетевой среде: большинство используют брандмауэр. Хотя его применимость очень широка, есть вещи, с которыми брандмауэр не может работать, такие как отправка текста обратно вызывающей стороне. Программное обеспечение уровня TCP может делать это и многое другое. В следующих нескольких разделах обсуждаются многие возможности TCP Wrappers, и, когда это необходимо, даются примеры настроек.

Программное обеспечение TCP Wrappers расширяет возможность inetd по поддержке каждого даемона. С ним становится возможным протоколирование, возврат сообщений вызывающей стороне, ограничение подключений внутренней сетью и т.п. Хотя некоторые из этих возможностей могут быть реализованы брандмауэром, TCP Wrappers не только предоставляют дополнительный уровень защиты, но и дают больше контроля над системой, чем это возможно с брандмауэром.

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

Поскольку рассматривается расширение к настройкам inetd, предполагается, что читатель ознакомился с разделом о настройке inetd.

Замечание: Хотя программы, запускаемые из inetd(8), на самом деле не соответствуют термину ''даемоны'', существует традиция называть их именно так. Этот термин и используется в данном разделе.

Начальная настройка

Единственное требование для использования TCP Wrappers в FreeBSD это наличие в rc.conf параметров запуска inetd -Ww; это настройки по умолчанию. Конечно, ожидается также наличие правильной настройки /etc/hosts.allow, но syslogd(8) отправит сообщения в системный протокол если что-то не так.

Замечание: В отличие от других реализаций TCP Wrappers, использование hosts.deny не поддерживается. Все параметры настройки должны быть помещены в /etc/hosts.allow.

В простейшей конфигурации, политика подключения сводится к разрешению или блокированию в зависимости от параметров в /etc/hosts.allow. Настройка в FreeBSD по умолчанию заключается в разрешении подключения к любому даемону, запущенному из inetd. Изменение этого поведения будет обсуждаться только после рассмотрения базовой настройки.

Базовая настройка обычно принимает форму daemon : address : action, где daemon это имя даемона, который запускается inetd. В поле address может находиться имя хоста, IP адрес, или IPv6 адрес, заключенный в квадратные скобки ([ ]). Поле action может принимать значения allow или deny, чтобы соответственно разрешать или запрещать доступ. Помните, что поиск правил производится до первого совпадения. При обнаружении совпадения применяется соответствующее правило и поиск прерывается.

Существуют и другие параметры, но они будут описаны в следующих разделах. Простая конфигурация может быть, например, такой: для разрешения соединений по протоколу POP3 к даемону mail/qpopper, в hosts.allow необходимо добавить следующие строки:

# This line is required for POP3 connections:

qpopper : ALL : allow

После добавления этой строки, inetd необходимо перезапустить. Это можно выполнить командой kill(1) или скриптом /etc/rc.d/inetd с параметром restart.

Расширенная конфигурация

У TCP Wrappers имеются дополнительные параметры; они дают дополнительные возможности контроля над соединениями. Иногда бывает полезно возвращать комментарий определенным хостам или при подключении к определенным даемонам. В других случаях может быть необходимо добавить запись в лог файл, или отправить письмо администратору. В определенных ситуациях сервис должен использоваться только для локальных соединений. Все это возможно с использованием параметров c шаблонами, символами подстановки и путем выполнения внешних команд. Следующие два раздела посвящены этим типам настроек.

Внешние команды

Предположим ситуацию, в которой соединение должно быть запрещено, а о причине необходимо сообщить вызывающей стороне. Как это можно сделать? Соответствующую возможность предоставляет параметр twist. При попытке подключения выполняется команда или скрипт, заданный этим параметром. Пример дан в файле hosts.allow:

# The rest of the daemons are protected.

ALL : ALL \

   : severity auth.info \

   : twist /bin/echo "You are not welcome to use %d from %h."

В этом примере сообщение, ''You are not allowed to use daemon from hostname.'' будет возвращено от всех даемонов, которые не были предварительно настроены в файле доступа. Обратите внимание, что возвращаемое сообщение должно быть заключено в кавычки; из этого правила нет исключений.

Внимание: Возможна реализация DoS атаки, когда группа атакующих производит множество запросов на подключение.

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

# We do not allow connections from example.com:

ALL : .example.com \

   : spawn (/bin/echo %a from %h attempted to access %d >> \

     /var/log/connections.log) \

   : deny

отклонит все попытки соединения из домена *.example.com; имя хоста, IP адрес и даемон протоколируются в файл /var/log/connections.log.

Помимо приведенных выше символов подстановки, например %a, существует еще несколько символов. Обратитесь к странице hosts_access(5) справочной системы за полным списком.

Параметры – шаблоны

До этого момента в примерах использовался шаблон ALL. Существуют и другие параметры, функциональность которых в дальнейшем может быть расширена. ALL соответствует любому даемону, домену или IP адресу. Другой доступный шаблон это PARANOID, который соответствует хосту, IP адрес которого может быть подделан. Другими словами, paranoid может быть использован для определения действия с хостами, IP адрес которых не соответствует имени хоста. Вот пример применения этого параметра:

# Block possibly spoofed requests to sendmail:

sendmail : PARANOID : deny

В этом примере все запросы на подключения к sendmail от хостов, IP адрес которых не соответствует имени хоста, будут отклонены.

Предостережение: Использование PARANOID невозможно, если у клиента или сервера неправильно настроен DNS. В таких случаях необходимо вмешательство администратора.

Более подробная информация о шаблонах и их возможностях дана на странице hosts_access(5) справочной системы.

Для того, чтобы любая выбранная конфигурация заработала, в hosts.allow необходимо закомментировать первую строку настройки. В начале раздела об этом не упоминалось.

KerberosIV

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

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

Установка KerberosIV

Kerberos это опциональный компонент FreeBSD. Простейший способ установки этой программы это выбор krb4 или krb5 из sysinstall во время первой установки FreeBSD. Будет установлен ''eBones'' (KerberosIV) или ''Heimdal'' (Kerberos5) вариант Kerberos. Включение этих реализаций объясняется тем, что они разработаны вне США/Канады и доступны вне этих стран, поскольку на них не влияют ограничения на экспорт криптографического кода из США.

Кроме того, реализация MIT Kerberos доступна из Коллекции Портов в виде пакета security/krb5.

Создание базы данных

Это необходимо сделать только на сервере Kerberos. Во-первых, убедитесь что не осталось старой базы данных Kerberos. Войдите в каталог /etc/kerberosIV и убедитесь, что в нем находятся только эти файлы:

# cd /etc/kerberosIV

# ls

README     krb.conf   krb.realms

Если присутствуют еще какие-то файлы (такие как principal.* или master_key), используйте команду kdb_destroy для удаления старой базы данных Kerberos, или, если Kerberos не запущен, просто удалите эти файлы.

Затем отредактируйте файлы krb.conf и krb.realms, введя ваши данные. В этом примере уникальный идентификатор EXAMPLE.COM, сервер grunt.example.com. Отредактируем или создадим файл krb.conf:

# cat krb.conf

EXAMPLE.COM

EXAMPLE.COM grunt.example.com admin server

CS.BERKELEY.EDU okeeffe.berkeley.edu

ATHENA.MIT.EDU kerberos.mit.edu

ATHENA.MIT.EDU kerberos-1.mit.edu

ATHENA.MIT.EDU kerberos-2.mit.edu

ATHENA.MIT.EDU kerberos-3.mit.edu

LCS.MIT.EDU kerberos.lcs.mit.edu

TELECOM.MIT.EDU bitsy.mit.edu

ARC.NASA.GOV trident.arc.nasa.gov

В этом примере другие идентификаторы введены для иллюстрации настройки c несколькими хостами. С целью упрощения настройки вы можете не включать их.

Первая строка содержит идентификатор, под которым работает эта система. Остальные строки связывают идентификаторы с именами хостов. Сначала указывается идентификатор, затем хост под этим идентификатором, работающий как ''центр распространения ключей''. Слова admin server с последующим именем хоста означают, что этот хост также является сервером администрирования базы данных. За дальнейшей информацией об этих терминах обратитесь к страницам справочника по Kerberos.

Мы добавили grunt.example.com к идентификатору EXAMPLE.COM и кроме того сопоставили всем хостам в домене .example.com идентификатор EXAMPLE.COM. Файл krb.realms будет выглядеть так:

# cat krb.realms

grunt.example.com EXAMPLE.COM

.example.com EXAMPLE.COM

.berkeley.edu CS.BERKELEY.EDU

.MIT.EDU ATHENA.MIT.EDU

.mit.edu ATHENA.MIT.EDU

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

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

Теперь мы готовы к созданию базы данных. Потребуется всего лишь запустить сервер Kerberos (или центр распространения ключей). Используйте для этого kdb_init:

# kdb_init

Realm name [default ATHENA.MIT.EDU ]: EXAMPLE.COM

You will be prompted for the database Master Password.

It is important that you NOT FORGET this password.

 

Введите главный ключ Kerberos:

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

# kstash

 

Enter Kerberos master key:

 

Current Kerberos master key version is 1.

 

Master key entered. BEWARE!

Этой командой зашифрованный главный пароль сохранен в /etc/kerberosIV/master_key.

Запуск Kerberos

Для каждой системы, защищаемой Kerberos, в базу данных должны быть добавлены две записи. Это kpasswd и rcmd. Они добавляются вместе с именем системы.

Эти даемоны, kpasswd и rcmd позволяют другим системам изменять пароли Kerberos и запускать такие команды как rcp(1), rlogin(1), rsh(1).

Теперь добавим эти записи:

# kdb_edit

Opening database...

 

Enter Kerberos master key:

 

Current Kerberos master key version is 1.

 

Master key entered. BEWARE!

Previous or default values are in [brackets] ,

enter return to leave the same, or new value.

 

Principal name: passwd

Instance: grunt

 

<Not found>, Create [y] ? y

 

Principal: passwd, Instance: grunt, kdc_key_ver: 1

New Password:               <---- enter RANDOM here

Verifying password

 

New Password: <---- enter RANDOM here

 

Random password [y] ? y

 

Principal's new key version = 1

Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?

Max ticket lifetime (*5 minutes) [ 255 ] ?

Attributes [ 0 ] ?

Edit O.K.

Principal name: rcmd

Instance: grunt

 

<Not found>, Create [y] ?

 

Principal: rcmd, Instance: grunt, kdc_key_ver: 1

New Password:      <---- enter RANDOM here

Verifying password

 

New Password:      <---- enter RANDOM here

 

Random password [y] ?

 

Principal's new key version = 1

Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?

Max ticket lifetime (*5 minutes) [ 255 ] ?

Attributes [ 0 ] ?

Edit O.K.

Principal name:    <---- null entry here will cause an exit


Дата добавления: 2018-10-26; просмотров: 191; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!