среда, 4 сентября 2013 г.

Новый дистрибутив Backtrack: встречайте Kali Linux

(c) http://habrahabr.ru/post/172657/

Известный дистрибутив для пентестинга BackTrack меняет название на Kali Linux и переезжает с Ubuntu на Debian. Kali Linux является передовым Linux дистрибутивом для проведения тестирования на проникновение и аудита безопасности.

Kali является полной повторной сборкой BackTrack Linux, полностью придерживаясь стандартов разработки Debian. Вся инфраструктура была пересмотрена, все инструменты были проанализированы и упакованы, также используется Git.

Более 300 инструментов для проведения тестирования на проникновение: После рассмотрения каждого инструмента, который был включен в BackTrack, было устранено большое количество инструментов, которые либо не работают или дублируют другие инструменты, с похожей функциональностью.

Kali Linux, как и его предшественник, является полностью бесплатным и всегда будет таким. Вам никогда, не придется платить за Kali Linux.

Открытый исходный код.

FHS совместимый: Kali был разработан, чтобы придерживаться Filesystem Hierarchy Standard, что позволяет всем пользователям Linux легко найти исполняемые файлы, файлы поддержки, библиотеки и т.д.

Обширная поддержка беспроводных устройств.

Безопасная среда разработки: Команда разработчиков Kali Linux состоит из небольшой группы доверенных лиц, которые могут записать пакеты и взаимодействовать с хранилищами только при использовании нескольких защищенных протоколов.

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

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

Поддержка ARMEL и ARMHF: ARM-системы становятся все более и более распространенным и недорогими, в результате чего созданы рабочие инсталляции для ARMEL и ARMHF систем. Kali Linux имеет ARM репозитории интегрированные с основным дистрибутивом, так инструменты для ARM будут обновляться вместе с остальными дистрибутивами. Кали в настоящее время доступна для следующих ARM-устройств: rk3306 mk/ss808, Raspberry Pi, ODROID U2/X2, MK802/MK802 II, Samsung Chromebook.

Офф. сайт
Скачать

воскресенье, 11 августа 2013 г.

Endian Firewall Community. OpenVPN с использованием X.509 certificate

В одной из "статей" на нашем форуме Перенос OpenVPN сервера на Endian Firewall Community, "Твики" настройки EFW 2.5.1 мы писали о том как перенести существующий OpenVPN сервер на EFW, использовав при этом tls-auth. Сегодня я расскажу о том, как правильно сконфигурировать OpenVPN сервер на Endian'е с поддержкой аутентификации по X.509 certificate, а также как избежать распространенной ошибки: TLS_ERROR: BIO read tls_read_plaintext error: error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned, т.е.:

Предположим что мы создали все ключи и сертификаты, также экспортировали серверный ключ и сертификат (server.key, server.crt), а также ca.crt в PKCS12 и получили server.p12, который успешно загрузили в наш EFW. Под ОС Windows это можно сделать с помощью bat'ника build-key-pkcs12.bat в комплекте Easy RSA Tools. После чего создаем клиентские ключи, конфиги и убеждаемся в том, что клиент не коннектится к EFW из-за пресловутой TLS Error: TLS handshake failed. А всё почему ... в конфигах сервера (посмотреть можно /etc/openvpn/openvpn.conf) стоит опция ns-cert-type client. Т.е. клиентский сертификат должен обязательно в поле Тип сертификата Netscape содержать - "SSL-проверка подлинности клиента (80)". Обратите внимание на картинку:


Как же сгенерировать клиентский сертификат таким образом, чтобы он обеспечивал SLL проверку подлинности клиента? Нет ничего проще. Вносим изменения в наш openssl.cnf, дописывая туда строки:

[ client ]
basicConstraints=CA:FALSE
nsCertType = client
nsComment = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always

После чего, в bat'нике для генерации клиентского серфтификата и ключа build-key.bat при генерации сертификата дописываем ключ -extensions client, т.е. вот так:

openssl ca -days 3650 -out %KEY_DIR%\%1.crt -in %KEY_DIR%\%1.csr -extensions client -config %KEY_CONFIG%

И нам остается только создать правильный клиентский конфиг (client.ovpn):

# OpenVPN Config File (c) Decker 
dev tap 
# dev-node "OpenVPN"  
proto udp  
remote mydomain1.org 8888  
route-delay 3  
client  
#tls-client  
ns-cert-type server  
ca .\\ca.crt  
cert .\\user1.crt  
key .\\user1.key  
#tls-auth .\\ta.key 1  
comp-lzo  
tun-mtu 1500  
tun-mtu-extra 32  
mssfix 1450  
ping-restart 60  
ping 10  
# status .\\openvpn-status.log  
# log C:\\OpenVPN\\log\\openvpn.log  
verb 3  

После этого клиент успешно соединится с OpenVPN сервером на EFW:




среда, 7 августа 2013 г.

Установка сервера 1С Предприятие 8.2 на Linux

Данный пост - это не полноценная статья, скорее компиляция некоторой полезной информации и ссылок, касающихся установки сервера 1С:Предприятие 8.2 на ОС Linux. Для начала несколько ссылок, которые существенно облегчат жизнь:
Ну и так как все это добро может в один прекрасный день невзначай кануть в /dev/null позволю себе выложить приведенные в списке мануалы в архиве, в виде mht-файлов (т.е. web-страниц, сохраненных полностью). Скачать все три мануала одним архивом.

В нашем случае пришлось столкнуться с установкой сервера 1С Предприятие на CentOS x64, дистрибутив которой можно взять на http://mirror.yandex.ru/, а если конкретнее, то - CentOS-6.4-x86_64-LiveDVD.iso, либо в виде торрент-файла. Установка CentOS x64 практически ничем не отличается от установки любого другого Linux дистрибутива. Единственное, после выбора языка системы, если вы выбираете русский, полезно знать что настройка для переключения раскладки клавиатуры по-умолчанию - два шифта, т.е. левый и правый shift одновременно.

Ну а теперь про сложности, трудности и т.п. и т.п. За основу при установке сервера мы взяли первый мануал с Хабра, т.к. в нем наиболее подробно рассмотрены все возможные варианты, возникающие ошибки, описание настройки samba и масса других вещей. Единственное, т.к. у нас была x64 версия ОС, то для подключения доп. репозитариев - RPMforge, EPEL, ATrpms, мы воспользовались следующими командами:

su -c 'rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm'
su -c 'rpm -Uvh http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm'
su -c 'rpm -Uvh http://dl.atrpms.net/all/atrpms-repo-6-6.el6.x86_64.rpm'

Пакет postgresql-9.0.3-3.1C.src.rpm скачался, поставился и от'rpmbuild'ился без каких-либо проблем.

yum install icu libicu libicu-devel
yum install rpm-build wget glibc-devel bison flex readline-devel zlib-devel openssl-devel pam-devel gettext gcc make 
wget http://v8.1c.ru/overview/postgresql_patches/9-0-3/postgresql-9.0.3-3.1C.src.rpm
rpm -ihv postgresql-9.0.3-3.1C.src.rpm
ln -s /usr/lib64/libicui18n.so /usr/local/lib64/libicui18n.so.46 && ln -s /usr/lib64/libicudata.so /usr/local/lib64/libicudata.so.46 && ln -s /usr/lib64/libicuuc.so /usr/local/lib64/libicuuc.so.46
rpmbuild -bb --define 'runselftest 0' ~/rpmbuild/SPECS/postgresql-9.0-1C.spec
cd /root/rpmbuild/RPMS/x86_64/

В резульате в /root/rpmbuild/RPMS/x86_64/ мы получили все необходимые для дальнейшей установки rpm пакеты (собственно и поставили их в рекомендуемом порядке):


rpm -ihv postgresql-9.0.3-3.1C.x86_64.rpm postgresql-contrib-9.0.3-3.1C.x86_64.rpm postgresql-devel-9.0.3-3.1C.x86_64.rpm postgresql-docs-9.0.3-3.1C.x86_64.rpm postgresql-libs-9.0.3-3.1C.x86_64.rpm postgresql-server-9.0.3-3.1C.x86_64.rpm postgresql-test-9.0.3-3.1C.x86_64.rpm

Далее конфигурирование PostgreSQL согласно первому мануалу, создание символических ссылок, смена пароля PostgreSQL и перезапуск сервера. Для установки сервера 1С Предприятия, кстати, можно было, находясь в папке с распакованными rpm'ами, выполнить команду:

yum localinstall ./*.rpm 

Ну а уже далее переходить к установке шрифтов и решению проблем с запуском /opt/1C/v8.2/i386/utils/config_server. Перед установкой шрифтов и первым запуском ./config_server лучше всего сделать:

yum install ImageMagick glib2-devel unixODBC
yum install ttf2pt1
yum install rpm-build cabextract
yum install ttmkfdir
yum install glibc.i686

Последняя строчка также необходима, несмотря на то что у нас x64 дистрибутив ОС. Это поможет избежать многих проблем при запуске config_server. Все эти "полезности" есть также в файле man.txt в архиве с мануалами, выложенном в начале этого поста.

Еще важный момент (!), когда будете задавать hostname для linux сервера, проследите чтобы ПК с таким NETBIOS именем, если вы используете рабочую группу, не было в сети. Имя выбирайте заранее. Потому как, если вы потом решите зачем-то сменить имя хоста с Linux OS - то это чревато множественными проблемами и ошибками. Лучше сразу выбрать имя и впоследствии его не менять!

воскресенье, 4 августа 2013 г.

Первые айтишные олимпийские игры

Середина лета в этом году ознаменовалась несколькими значимыми событиями в сфере IT. О грустных (например, о вступлении с 1 августа в силу закона о произвольной блокировке сайтов) мы уже писали на страницах нашего блога и форума, теперь пора перейти к более радостным. По традиции, в день системного администратора, в последнюю пятницу июля неподалеку от базы отдыха "Лаврово-Песочня" под Калугой прошел 8-й Всероссийский Слет Системных Администраторов. Лично у меня посетить это мероприятие в "полном объеме" в этом году не получилось, хотя я участник ДСА с 2008 года ... как-то и времени не особенно много было, да и погода, честно говоря, подвела. На поляну слета мы приезжали только в первый день - "осмотреться" и найти знакомых, с которыми мы периодически встречаемся в рамках этого мероприятия. К сожалению, найти их не удалось, а вот порядком "поваляться в грязи" мы успели. Т.к. поляна слета в этом году представляла собой непроходимое для людей и техники глиняное поле и сапоги, пожалуй, были предметом первой необходимости собравшихся на поляне системных администраторов. К такому повороту событий мы оказались явно не готовы (сапогов, естественно, у нас с собой не было), а посему, после некоторых безуспешных поисков знакомых и просмотра выступления Кукрыниксов - мы вынуждены были уехать. Больше, из-за внезапно обрушившейся на нас работы, вернуться туда не получилось. Надеемся, что все присутствовавшие на ДСА 2013 сисадмины и им сочувствующие все-таки получили удовольствие от праздника, отдохнули и хорошо провели время, несмотря на такие капризы природы. От нас всех и меня лично, поздравляем вас с уже прошедшим профессиональным праздником!

Ну а второе событие, о котором я хотел сегодня рассказать. Это очередной, ежегодный конкурс системных администраторов от компании Ideco (Айдеко). В этом году Конкурс IT Starz 2013 стартовал в двух номинациях: конкурс для системных администраторов и конкурс для разработчиков (при регистрации на сайте конкурса пользователю предлагается выбрать специализацию, в зависимости от которой - ему предстоит пройти соответствующий тест).


Субъективно, т.е. по нашим собственным впечатлениями, тест в этом году действительно стал лучше, а вопросы интереснее. Наши специалисты участвовали в прохождении теста и за системных администраторов и за разработчиков / программистов. И там, и там есть вопросы, которые заставляют не на шутку расшевелиться серые клеточки и применить максимум опыта, знаний и сообразительности для поиска ответов. Честно говоря, я и сам до сих пор под небольшим впечатлением, особенно от последнего вопроса теста для системных администраторов про обновление программы у пользователя и контент-фильтр. Решение простое и логичное, однако и сказать что оно лежит на поверхности нельзя. Вообщем, отдельное спасибо организаторам из компании Ideco за данный конкурс, а также за интересные вопросы! Всем, кто считает себя системным администратором, либо программистом настоятельно рекомендуется попробовать принять участие и оценить свои знания. Тем более, что каждую неделю среди участников со статусами Гуру и Профи проводится розыгрыш айпадов.

Главный приз для победителей Квеста – поездка в Грецию на двоих. Команда, которая займёт первое место по итогам гонки, получит квадракоптер. Кроме того, уже скоро, 5 августа стартует следующий этап состязаний - квест, обещающий быть не менее интересным по сравнению с прошлым годом. Главный приз айтишных олимпийских игр в этом году - поездка в Грецию. Впрочем. помните, что главное не победа, а участие! Возможность проверить свои знания, навыки, опыт, и найти достойных оппонентов в лице системных администраторов и программистов со всей России и не только. Искренне желаю всем участникам успехов!


суббота, 29 июня 2013 г.

Настраиваем DynDNS клиент на D-Link DIR-300/A/C1

Небольшая заметка о том, как настроить DynDNS клиент на роутере D-Link DIR-300/A/C1, а также, как создать Free DynDNS аккаунт. Многие пользователи, обладающие роутером этой модели (обратите внимание, речь идет именно о ревизии A/C1, это совсем не то же самое, что популярная линейка DIR-300/NRU) жалуются на то, что роутер работает нестабильно, даже при соединении по DHCP, постоянно зависает, теряет пакеты и т.п., не говоря уже о работе встроенного в прошивку DynDNS клиента и других фич. Все это отчасти имеет под собой определенную подоплеку, т.к. в варианте "из коробки" данная модель продается с достаточно сырой прошивкой 1.0.0 (я бы даже сказал что эта версия является неработоспобной, т.е. если вы купили данный девайс и в нем установлена именно эта версия прошивки - даже не пытайтесь что-либо настраивать, т.к. "не взлетит"), чтобы заставить устройство нормально работать необходимо обновиться на 1.0.12 и выше. Рекомендации по обновлению прошивки можно прочитать в этом посте. Обратите внимание на то, что на некоторых экземплярах DIR-300/A/C1 обновить прошивку через web-интерфейс невозможно, ввиду того, в них по-умолчанию прошит старый загрузчик, не позволяющий обновить прошивку до более высокой версии. Для обновления прошивки на DIR-300/A/C1 необходимо, воспользоваться утилитой DCC с FTP D-Link'а, либо прибегнуть к второму варианту пути решения данной проблемы (оба решения описаны по ссылке выше).

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


  • Заходим на сервис D-Link Dynamic DNS и регистрируем аккаунт и хост.
  • У меня получилось что-то вроде этого: 
    Как видно, аккаунт у меня называется compkaluga, а имя хоста: compkaluga.dlinkddns.com
  • Теперь логично было бы его прописать в настройках роутера, т.е. в Advanced -> DDNS - DDNS client editing. Однако именно в таком варианте DDNS клиент работать напрочь отказывался ;)
  • Читаем How-To на сайте  D-Link Dynamic DNS, конкретно фразу "You first need to create an account. After entering your user information, you will be sent an e-mail to verify your e-mail address and confirm your account. You can then log in. This account, with the username and password you enter, is also good at www.dyndns.com." Это означает, что с аккаунты на DLink DDNS и DynDNS.com это фактически одно и то же, и при создании нашего аккаунта на DLink DDNS автоматически создался аккаунт с теми же учетными данными и на DynDNS.
  • Проверим это: 
  • Теперь самое время прописать настройки этого аккаунта в роутер в разделе   Advanced -> DDNS:
На этом настройка DynDNS в DIR-300/A/C1 завершена.

пятница, 21 июня 2013 г.

1С 7.7: Организация автообмена через FTP

В данной статье мы рассмотрим организацию автообмена 1С:Предприятие 7.7 с использованием УРБД (управление распределенными базами данных) через FTP сервер. Для конкретизации задачи, предположим, что у нас есть центральный офис и несколько удаленных филиалов (торговых точек), которые будут обмениваться с центральным офисом информацией посредством автообмена и распределенных баз данных. Подробно останавливаться на конфигурировании распределенной ИБ мы не будем, предположив, что вы уже проделывали это не раз. Наша задача - свести "пользовательскую составляющую" автообмена к минимуму, т.е. - добиться того чтобы для проведения автообмена пользователь запускал некий один ярлык, после запуска которого информация из центральной базы, попадала бы в перефирийную и наооборот. Для организации всего вышесказанного нам потребуются FTP-сервер, а также доступ в интернет на всех торговых точках. Предположим конфигурация распределенной базы данных у нас следующая (скриншот с центральной ИБ):


При этом в настройках параметров автообмена режим установлена в автоматический, каталог выгрузки - C:\DB\CP, каталог загрузки - C:\DB\PC (где C:\DB - это собственно путь к центральной базе), а имена файлов выгрузки и загрузки для указанных перефирийных ИБ имеют следующие значения:

Переферийная ИБ Каталог выгрузки Каталог загрузки Имя файла выгрузки Имя файла загрузки
МГ1 (Ростов) C:\DB\CP C:\DB\PC MG1C.zip MG1D.zip
МГ2 (Новосибирск) C:\DB\CP C:\DB\PC MG2C.zip MG2D.zip
МГ3 (Калуга) C:\DB\CP C:\DB\PC MG3C.zip MG3D.zip

  • Создадим в папке с базой подпапку AutoExchange, т.е. создадим C:\DB\AutoExchange.
  • Скачаем с NcFTP Client Home Page утилиты ncftpget.exe и ncftpput.exe и положим их в папку AutoExchange. Это консольная версия FTP клиента, в принципе, можно было бы воспользоваться штатным ftp.exe встроенным в ОС, но ввиду того, что с ним бывают определенные проблемы (иногда, когда нет возможности соединиться с FTP серверов в активном режиме, отправка / получение данных не происходит, также отмечен ряд проблем при установленном антивирусе Касперского и т.п.), вообщем, для обеспечения надежного и бесперебойного обмена данными проще воспользоваться утилитами сторонних разработчиков.
  • Создадим в папке AutoExchange файл правил автообмена, назавав его _Exchange.prm :
    [General]
    Quit = 1
    AutoExchange = 1
    Output=Exchange.log 
    [AutoExchange]
    SharedMode = Y
    ReadFrom=*
    WriteTo=*
    
  • Затем в той же самой папке создадим файл пакетного сценария _runobmen.bat или _runobmen.сmd (для корректного отображения кириллицы, плюс, если кириллические символы у вас используются в путях и т.п., файл необходимо создавать в кодировке CP866 , сделать это можно в том же блокноте, выбрав в качестве шрифта - Terminal), содержимое файла следующее:
    @echo off
    rem (c) Decker, 2011-2013, decker@compkaluga.ru
    
    set CP_Folder=%~dp0..\CP
    set PC_Folder=%~dp0..\PC
    rem set DebugMode=-d stdout
    set DebugMode= 
    
    title АвтоОбмен
    color 0b
    setlocal enableextensions
    
    :fromftp
    echo Пробуем загрузить изменения.
    ncftpget.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru %PC_Folder% /MG1D.zip
    ncftpget.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru %PC_Folder% /MG2D.zip
    ncftpget.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru %PC_Folder% /MG3D.zip
    echo ErrorLevel: %ErrorLevel%
    
    echo Работает 1С...АвтоОбмен...
    start "АвтоОбмен" /wait /min "C:\Program Files\1Cv77\BIN\1cv7.exe" config /d"%~dp0..\" /N"obmen" /P"obmen" /@"%~dp0_Exchange.prm"
    
    :toftp
    echo Пробуем выгрузить изменения.
    ncftpput.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru . %CP_Folder%\MG1C.zip
    ncftpput.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru . %CP_Folder%\MG2C.zip
    ncftpput.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru . %CP_Folder%\MG3C.zip
    echo ErrorLevel: %ErrorLevel%
    exit
    
  • В данном примере с FTP сервера ftp.company.ru (логин - ftp_user, пароль - ftp_pass) с помощью ncftpget.exe последовательно скачиваются файлы обмена MG1D.zip, MG2D.zip, MG3D.zip, полученные от перефирийных баз и складываются в папку %PC_Folder%, т.е. в C:\DB\PC (каталог загрузки). Затем запускается платформа 1С:Предприятие с именем пользователя obmen и паролем obmen и происходит автообмен. В результате которого в папке %CP_Folder% оказываются подготовленные файлы выгрузки для перефирийных баз, которые затем, с помощью ncftpput.exe последовательно заливаются на ftp сервер. На этом конфигурирование обмена на стороне центральной базы закончено, пользователям достаточно вывести на рабочий стол ярлык к созданному _runobmen.bat или _runobmen.сmd , убедившись при этом, что в свойствах ярлыка рабочей папкой для данного сценария является именно та папка, в которой он находится.
  • Настройка автообмена в каждой из перефирийных баз ничем не отличается, за исключением файла _runobmen.bat или _runobmen.сmd . Рассмотрим этот файл на примере первой перефирийной базы:
    @echo off
    rem (c) Decker, 2011-2013, decker@compkaluga.ru
    
    set CP_Folder=%~dp0..\CP
    set PC_Folder=%~dp0..\PC
    rem set DebugMode=-d stdout
    set DebugMode= 
    
    title АвтоОбмен
    color 0b
    setlocal enableextensions
    
    :fromftp
    echo Пробуем загрузить изменения.
    ncftpget.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru %CP_Folder% /MG1C.zip
    echo ErrorLevel: %ErrorLevel%
    
    echo Работает 1С...АвтоОбмен...
    start "АвтоОбмен" /wait /min "C:\Program Files\1Cv77\BIN\1cv7.exe" config /d"%~dp0..\" /N"obmen" /P"obmen" /@"%~dp0_Exchange.prm"
    
    :toftp
    echo Пробуем выгрузить изменения.
    ncftpput.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru . %PC_Folder%\MG1D.zip
    echo ErrorLevel: %ErrorLevel%
    exit
    
  • Здесь, первым действием мы забираем файл выгрузки центральной базы MG1C.zip с сервера и помещаем его в папку CP, затем, запускаем автообмен, и помещаем файл выгрузки из перефирийной базы MG1D.zip из папки PC обратно на сервер. Аналогичный сценарий используется и в двух других перефирийных базах, с разницей лишь в именах файлов.
Ссылки на материалы по теме:

четверг, 20 июня 2013 г.

1С 7.7: Ошибка SQL State: 23000 Native: 1505

Возникла тут у клиентов вообщем-то простая задача - сконвертировать базу 1С 7.7 (Торговля и Склад) с DBF на SQL вариант. Провели тестирование и исправление базы, никаких ошибок вообщем-то не было выявлено. Выгрузили данные, но при попытке загрузки их в SQL базу получили сообщение об ошибке:


SQL State: 23000 
Native: 1505 
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 2. Most significant primary key is ' BF3 '. 

SQL State: 01000 
Native: 3621 
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has ben terminated.

Быстрое гугление на тему привело к вот этой статье и пониманию того, что в данном случае мы знали в какой таблице был замечен неуникальный индекс, а в нашем случае - нет. Собственно дальнейшие изыскания привели к следующему. Если не закрывать и не сворачивать окно 1С во время загрузки в SQL базу, то при появлении MessageBox'а об ошибке можно увидеть какую информацию он пытался загрузить последней. В нашем случае это был справочник Цены, вернее создание индексов справочника цены. Смотрим в DBF варианте файл 1Cv7.dd и видим, что таблица справочника цен - это SC319.DBF. Открываем ее в DBF Viewer 2000 и видим что поле ID действительно неуникально, присутствуют две записи с ID = BF3. Далее мы воспользовались инструментом Tools -> Delete duplicates ... оставив в качестве фильтра только ID, и удалили дублирующиеся данные:


После чего сделали Edit -> Pack (для физического удаления помеченных на удаление записей), и на всякий случай удалили файл индексов SC319.CDX. После чего по новой выгрузили данные из DBF базы и попытались по новой загрузить их в базу MSSQL. Этап создания индексов таблицы Цены прошел успешно. Ошибка SQL State: 23000 была побеждена.


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

1. запустив профайлер SQL загружаем базу. с логе профайлера будет инфа на какой ошибке все завалилось.
2. отредактировал битые dbf ки с помощью плугина wlx_xbaseview к тотал командеру (удалил дублирующие записи)
3. дублирующие записи нашел: выгрузил dbf в excel и сделал сводную таблицу по ключевым полям. где кол-во было > 1 -- это дубли