.\" .\" Copyright 2013 Sergey Shekyan .\" .\" Licensed under the Apache License, Version 2.0 (the "License"); .\" you may not use this file except in compliance with the License. .\" You may obtain a copy of the License at .\" .\" http://www.apache.org/licenses/LICENSE-2.0 .\" .\" Unless required by applicable law or agreed to in writing, software .\" distributed under the License is distributed on an "AS IS" BASIS, .\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .\" See the License for the specific language governing permissions and .\" limitations under the License. .\" .Dd November 25, 2013 .Dt SLOWHTTPTEST 1 .Os .Sh "نام (NAME)" .Nm slowhttptest .Nd شبیه‌ساز حملات منع سرویس (DoS) .Sh "خلاصه دستور (SYNOPSIS)" .Nm slowhttptest .Bk -words .Op Fl H|B|R|X .Op Fl g .Op Fl a Ar range start .Op Fl b Ar range limit .Op Fl c Ar number of connections .Op Fl d Ar all traffic directed through HTTP proxy at host:port .Op Fl e Ar probe traffic directed through HTTP proxy at host:port .Op Fl f Ar value of Content-type header .Op Fl i Ar interval in seconds .Op Fl k Ar request multiply factor .Op Fl l Ar test duration in seconds .Op Fl m Ar value of Accept header .Op Fl n Ar slow read interval in seconds .Op Fl o Ar output file path and/or name .Op Fl p Ar timeout for probe connection in seconds .Op Fl r Ar connection per second .Op Fl s Ar value of Content-Length header .Op Fl t Ar HTTP verb .Op Fl u Ar absolute URL .Op Fl v Ar output verbosity level .Op Fl w Ar advertised window size range start .Op Fl x Ar max length of follow up data .Op Fl y Ar advertised window size range end .Op Fl z Ar slow read from receive buffer in bytes .Ek .Sh "توضیحات (DESCRIPTION)" دستور .Nm رایج‌ترین حملات منع سرویس (DoS) لایه کاربرد با پهنای باند کم را پیاده‌سازی می‌کند و فایل‌های CSV و HTML شامل آمار آزمون را تولید می‌نماید. .Pp حملاتی که در حال حاضر پشتیبانی می‌شوند عبارتند از: .Pp .Bl -bullet -offset indent -compact .It Slowloris .It Slow HTTP POST .It Apache Range Header .It Slow Read .El .Pp گزینه‌ها به شرح زیر هستند: .Bl -tag -width Ds .It Fl g دستور .Nm را وادار می‌کند هنگام پایان آزمون، فایل‌های CSV و HTML را به همراه برچسب زمانی در نام فایل تولید کند. .It Fl H اجرای .Nm در حالت Slowloris، با ارسال درخواست‌های HTTP ناتمام. .It Fl B اجرای .Nm در حالت Slow POST، با ارسال بدنه پیام ناتمام در درخواست‌های HTTP. .It Fl R اجرای .Nm در حالت Range Header، با ارسال داده‌های مخرب در سرایند درخواست Range. .It Fl X اجرای .Nm در حالت Slow Read، با خواندن آهسته پاسخ‌های HTTP. .It Fl a Ar start مقدار آغازین مشخص‌کننده بازه (range-specifier) را برای حمله Range Header تنظیم می‌کند. .It Fl b Ar bytes مقدار حد مشخص‌کننده بازه (range-specifier) را برای حمله Range Header تنظیم می‌کند. .It Fl c Ar number of connections تعداد اتصالات هدف برای برقراری در طول آزمون را مشخص می‌کند. .It Fl d Ar HTTP proxy host:port سرور پراکسی HTTP را برای برقراری تمام اتصالات مشخص می‌کند. .It Fl e Ar HTTP proxy host:port سرور پراکسی HTTP را برای اتصالات کاوشگر مشخص می‌کند. .It Fl f Ar content-type مقدار سرایند Content-Type را مشخص می‌کند. .It Fl i Ar seconds فاصله زمانی بر حسب ثانیه را میان داده‌های تکمیلی برای آزمون‌های Slowloris و Slow POST مشخص می‌کند. .It Fl k Ar pipeline factor تعداد دفعاتی که منبع در هر سوکت در آزمون Slow Read درخواست می‌شود را مشخص می‌کند. .It Fl l Ar seconds مدت زمان آزمون را بر حسب ثانیه مشخص می‌کند. .It Fl m Ar accept مقدار سرایند Accept را مشخص می‌کند. .It Fl n Ar seconds فاصله زمانی میان عملیات‌های خواندن را برای آزمون Slow Read بر حسب ثانیه مشخص می‌کند. .It Fl o Ar file name نام فایل سفارشی را مشخص می‌کند، که همراه با .Fl g کاربرد دارد. .It Fl p Ar seconds مدت زمان انتظار برای دریافت پاسخ HTTP در اتصال کاوشگر را پیش از آنکه سرور به عنوان از کار افتاده (DoSed) در نظر گرفته شود، بر حسب ثانیه مشخص می‌کند. .It Fl r Ar connections per second نرخ برقراری اتصالات را مشخص می‌کند. .It Fl s Ar bytes مقدار سرایند Content-Length را برای آزمون Slow POST بر حسب بایت مشخص می‌کند. .It Fl t Ar HTTP verb متد (فعل) مورد استفاده در درخواست HTTP را مشخص می‌کند. .It Fl u Ar URL آدرس اینترنتی (URL) را مشخص می‌کند. .It Fl v Ar level سطح پرگویی لاگ‌ها (verbosity) را مشخص می‌کند. .It Fl w Ar bytes نقطه شروع بازه‌ای را مشخص می‌کند که اندازه پنجره اعلانی TCP در آزمون Slow Read از آن انتخاب می‌شود. .It Fl x Ar bytes حداکثر طول داده‌های تکمیلی را برای آزمون‌های Slowloris و Slow POST مشخص می‌کند. .It Fl y Ar bytes نقطه پایانی بازه‌ای را مشخص می‌کند که اندازه پنجره اعلانی TCP در آزمون Slow Read از آن انتخاب می‌شود. .It Fl z Ar bytes تعداد بایت‌ها برای خواندن از بافر دریافت در هر عملیات ()read را مشخص می‌کند. .El .Sh "مثال‌ها (EXAMPLES)" شروع آزمون Slowloris روی host.example.com با ۱۰۰۰ اتصال، ذخیره آمار در my_header_stats، فاصله ۱۰ ثانیه‌ای میان سرایندهای تکمیلی و نرخ اتصال ۲۰۰ اتصال در ثانیه: .Pp .Dl $ slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u https://host.example.com/index.html -x 24 -p 3 .Pp شروع آزمون Slow POST روی host.example.com با ۳۰۰۰ اتصال، ذخیره آمار در my_body_stats، فاصله ۱۱۰ ثانیه‌ای میان سرایندهای تکمیلی، نرخ اتصال ۲۰۰ اتصال در ثانیه، مقدار سرایند Content-Length برابر ۸۱۹۲، حداکثر طول داده‌های تکمیلی مقدار تصادفی با سقف ۱۰ بایت و ۳ ثانیه انتظار در اتصال کاوشگر برای دریافت پاسخ HTTP پیش از علامت‌گذاری سرور به عنوان DoSed: .Pp .Dl $ slowhttptest -c 3000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://host.example.com/loginform.html -x 10 -p 3 .Pp شروع آزمون Range Header روی host.example.com با ۱۰۰۰ اتصال، استفاده از متد HEAD، تولید سرایند HTTP به صورت Range:0-, x-1, x-2, x-3, ... x-y که در آن x برابر ۱۰ و y برابر ۳۰۰۰ است، نرخ اتصال ۵۰۰، فاصله ۱۰ ثانیه‌ای میان سرایندهای تکمیلی و نرخ اتصال ۲۰۰ اتصال در ثانیه: .Pp .Dl $ slowhttptest -R -u http://host.example.com/ -t HEAD -c 1000 -a 10 -b 3000 -r 500 .Pp شروع آزمون Slow Read روی host.example.com با ۸۰۰۰ اتصال، بدون تولید آمار، نرخ اتصال ۲۰۰ اتصال در ثانیه، اندازه پنجره اعلانی TCP مقداری تصادفی بین ۵۱۲ و ۱۰۲۴، .Nm هر ۵ ثانیه یک‌بار ۳۲ بایت از هر اتصال می‌خواند، ۳ درخواست روی هر اتصال پایپ‌لاین می‌شود، و اتصال کاوشگر ۳ ثانیه منتظر پاسخ HTTP می‌ماند پیش از آنکه سرور را به عنوان DoSed علامت‌گذاری کند: .Pp .Dl $ slowhttptest -c 8000 -X -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u https://host.example.com/resources/index.html -p 3 .Pp شروع آزمون Slow Read روی host.example.com از طریق سرور پراکسی HTTP در 10.10.0.1:8080 با ۸۰۰۰ اتصال، بدون تولید آمار و با مقادیر پیش‌فرض برای سایر تنظیمات آزمون. به احتمال زیاد .Nm به جای سرور هدف، خود سرور پراکسی HTTP را می‌آزماید، اما این موضوع کاملاً به نحوه پیاده‌سازی سرور پراکسی HTTP بستگی دارد: .Pp .Dl $ slowhttptest -d 10.10.0.1:8080 -c 8000 -X -u https://host.example.com/resources/index.html .Pp شروع آزمون Slow Read روی host.example.com و هدایت ترافیک کاوشگر از طریق سرور پراکسی HTTP در 10.10.0.1:8080 با ۸۰۰۰ اتصال، بدون تولید آمار و با مقادیر پیش‌فرض برای سایر تنظیمات آزمون. تعیین کانال اتصال مجزا برای اتصالات کاوشگر کمک می‌کند تا اطمینان حاصل شود که .Nm آمار معتبری از در دسترس بودن سرور تحت آزمون نشان می‌دهد: .Pp .Dl $ slowhttptest -e 10.10.0.1:8080 -c 8000 -X -u https://host.example.com/resources/index.html .Pp .Sh "نویسنده (AUTHOR)" Sergey Shekyan .Aq shekyan@gmail.com . .Pp صفحه پروژه: .Aq https://github.com/shekyan/slowhttptest .