Записи помеченные ‘DOS’

Блокировка POST-запросов в .htaccess

С недавнего времени стали донимать боты-одиночки, которые непрерывно шлют POST-запросы на определённый URL, например:

111.111.111.111 - - [24/Mar/2013:11:28:01 +0300] "POST /edit HTTP/1.1" 404 13197 "http://example.com/" "Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.14"

Лучше всего таких банить с помощью iptables, однако, если нет доступа к серверу, то с небольшим количеством ботов можно справиться и с помощью .htaccess:

RewriteCond %{REQUEST_URI} ^/edit$
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ / [L,F]

В результате бот будет послан с ошибкой 403.
Здесь /edit — это страница сайта, к которой идут запросы.
Если боты ломятся на внутренние страницы, то мера будет такой:

RewriteCond %{REQUEST_METHOD} POST
RewriteRule .*/edit$ - [L,F]

Или универсальный метод, когда edit идёт и на главную, и на страницы:

RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*/)?edit$ - [L,F]

Жёсткие диски WD Green и странный щёлкающий звук

Возникла необходимость приобрести жёсткий диск большой ёмкости для хранения резервных копий. Особо не заморачиваясь с выбором, купил новенький жёсткий диск WD20EARX на 2ТБ. Этот диск относится к серии Green, имеет частоту вращения шпинделя 5400 об/мин, и потребляет немного электроэнергии. То, что нужно для случаев, когда не требуется высокая производительность, а упор делается на низкие уровни энергопотребления, нагрева и шума.
Во время тестирования обратил внимание, что диск периодически издаёт негромкий, но отчётливый «кликающий» звук. Стало интересно, что это, и не является ли это заводским браком. Чуть-чуть погуглив, выяснилось, что браком это не является, и этот звук — звук парковки головок. Причиной оказалась фирменная технология WD Intellipark, которая паркует головки после определённого времени бездействия и отключает часть электронных схем для экономии электроэнергии. По умолчанию время бездействия выставлено в 8 секунд.
В S.M.A.R.T. жёсткого диска есть параметр, который показывает количество парковок головок. Это параметр Load_Cycle_Count, под номером 193. У меня значение этого параметра за несколько часов использования превысило 200:

193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       232

Выяснилось, что технология Intellipark в сочетании с технологией отложенной записи в Linux и вызывает постоянную парковку головок.
Я не тестировал диск под Windows, но однозначно ясно, что если вы используете диск WD Green на компьютере, в домашнем медиа-сервере или NAS, работающих под управлением Linux, то с этим однозначно что-то надо делать, т.к. постоянная парковка головок не только сказывается на производительности жёсткого диска, но и может существенно снизить продолжительность его службы и привести к преждевременной поломке.
К счастью, выход из этой ситуации есть.
На официальном сайте WD есть утилита, которая может изменить время бездействия до парковки головок, или полностью отключить эту функцию. Утилита называется wdidle3, и её можно скачать здесь.
Утилита работает из-под DOS и имеет следующие параметры (взяты из официального описания):

WDIDLE3 [/S[<Timer>]] [/D] [/R] [/?]
where:
/S[<Timer>] Set timer, units in seconds. Default=8.0 (8.0 seconds).
            Resolution is 0.1 seconds from 8.0 to 12.7 seconds.
            Resolution is 30 seconds from 30 seconds to 300 seconds.
            Note, times between 12.8 and 30 seconds will be set to 30 seconds.
/D          Disable timer.
/R          Report current timer.
/?          This help info.

Для того, чтобы её запустить, нужно записать утилиту на загрузочный флоппи-диск, компакт-диск или сетевой диск, загрузить с него DOS и запустить например так:

wdidle3.exe /S 180

Это установит таймер бездействия на 3 минуты.

Это конечно всё хорошо, но мне было очень лениво вспоминать, как загружаться в DOS, я уже и не припомню, когда последний раз делал это. Поэтому нашёл альтернативный метод — аналогичную утилиту с открытым кодом idle3-tools, разработанную для Linux. Даже если вы используете Windows, то возможно вам также будет проще загрузиться в какой-нибудь Linux Live CD, и запустить там утилиту.
Для запуска утилиты потребуется её скомпилировать из исходников, поэтому в системе должен быть установлен компилятор gcc и утилита сборки make.
Итак, качаем:

wget http://downloads.sourceforge.net/project/idle3-tools/idle3-tools-0.9.1.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fidle3-tools%2Ffiles%2F

Распаковываем:

tar xzvf idle3-tools-0.9.1.tgz

Компилируем:

cd idle3-tools-0.9.1.tgz
make
make install
make clean

Запускаем

idle3ctl

Утилита выведет список доступных опций запуска:

idle3ctl v0.9.1 - Read, Set or disable the idle3 timer of Western Digital drives
Copyright (C) 2011  Christophe Bothamy

Usage: idle3ctl [options] device
Options:
-h : displat help
-V : show version and exit immediately
-v : verbose output
--force : force even if no Western Digital HDD are detected
-g : get raw idle3 timer value
-g100 : get idle3 timer value as wdidle3 v1.00 value
-g103 : get idle3 timer value as wdidle3 v1.03 value
-g105 : get idle3 timer value as wdidle3 v1.05 value
-d : disable idle3 timer
-s<value> : set idle3 timer raw value

Выясните имя устройства для вашего диска, например так:

fdisk -l

В моём случае это /dev/sdb.
Если требуется установить таймер, например, на 5 минут, то утилиту запускаем так:

idle3ctl -s 300 /dev/sdb

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

idle3ctl -d /dev/sdb

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

Напоследок, мне было бы интересно узнать, как ведёт себя утилита idle3ctl с жёсткими дисками других производителей, ведь у неё зачем-то есть параметр

--force : force even if no Western Digital HDD are detected

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