SLOWHTTPTEST(1) General Commands Manual SLOWHTTPTEST(1)

slowhttptest — شبیه‌ساز حملات منع سرویس (DoS)

slowhttptest [-H|B|R|X] [-g] [-a range start] [-b range limit] [-c number of connections] [-d all traffic directed through HTTP proxy at host:port] [-e probe traffic directed through HTTP proxy at host:port] [-f value of Content-type header] [-i interval in seconds] [-k request multiply factor] [-l test duration in seconds] [-m value of Accept header] [-n slow read interval in seconds] [-o output file path and/or name] [-p timeout for probe connection in seconds] [-r connection per second] [-s value of Content-Length header] [-t HTTP verb] [-u absolute URL] [-v output verbosity level] [-w advertised window size range start] [-x max length of follow up data] [-y advertised window size range end] [-z slow read from receive buffer in bytes]

دستور slowhttptest رایج‌ترین حملات منع سرویس (DoS) لایه کاربرد با پهنای باند کم را پیاده‌سازی می‌کند و فایل‌های CSV و HTML شامل آمار آزمون را تولید می‌نماید.

حملاتی که در حال حاضر پشتیبانی می‌شوند عبارتند از:

  • Slowloris
  • Slow HTTP POST
  • Apache Range Header
  • Slow Read

گزینه‌ها به شرح زیر هستند:

دستور slowhttptest را وادار می‌کند هنگام پایان آزمون، فایل‌های CSV و HTML را به همراه برچسب زمانی در نام فایل تولید کند.
اجرای slowhttptest در حالت Slowloris، با ارسال درخواست‌های HTTP ناتمام.
اجرای slowhttptest در حالت Slow POST، با ارسال بدنه پیام ناتمام در درخواست‌های HTTP.
اجرای slowhttptest در حالت Range Header، با ارسال داده‌های مخرب در سرایند درخواست Range.
اجرای slowhttptest در حالت Slow Read، با خواندن آهسته پاسخ‌های HTTP.
start
مقدار آغازین مشخص‌کننده بازه (range-specifier) را برای حمله Range Header تنظیم می‌کند.
bytes
مقدار حد مشخص‌کننده بازه (range-specifier) را برای حمله Range Header تنظیم می‌کند.
number of connections
تعداد اتصالات هدف برای برقراری در طول آزمون را مشخص می‌کند.
HTTP proxy host:port
سرور پراکسی HTTP را برای برقراری تمام اتصالات مشخص می‌کند.
HTTP proxy host:port
سرور پراکسی HTTP را برای اتصالات کاوشگر مشخص می‌کند.
content-type
مقدار سرایند Content-Type را مشخص می‌کند.
seconds
فاصله زمانی بر حسب ثانیه را میان داده‌های تکمیلی برای آزمون‌های Slowloris و Slow POST مشخص می‌کند.
pipeline factor
تعداد دفعاتی که منبع در هر سوکت در آزمون Slow Read درخواست می‌شود را مشخص می‌کند.
seconds
مدت زمان آزمون را بر حسب ثانیه مشخص می‌کند.
accept
مقدار سرایند Accept را مشخص می‌کند.
seconds
فاصله زمانی میان عملیات‌های خواندن را برای آزمون Slow Read بر حسب ثانیه مشخص می‌کند.
file name
نام فایل سفارشی را مشخص می‌کند، که همراه با -g کاربرد دارد.
seconds
مدت زمان انتظار برای دریافت پاسخ HTTP در اتصال کاوشگر را پیش از آنکه سرور به عنوان از کار افتاده (DoSed) در نظر گرفته شود، بر حسب ثانیه مشخص می‌کند.
connections per second
نرخ برقراری اتصالات را مشخص می‌کند.
bytes
مقدار سرایند Content-Length را برای آزمون Slow POST بر حسب بایت مشخص می‌کند.
HTTP verb
متد (فعل) مورد استفاده در درخواست HTTP را مشخص می‌کند.
URL
آدرس اینترنتی (URL) را مشخص می‌کند.
level
سطح پرگویی لاگ‌ها (verbosity) را مشخص می‌کند.
bytes
نقطه شروع بازه‌ای را مشخص می‌کند که اندازه پنجره اعلانی TCP در آزمون Slow Read از آن انتخاب می‌شود.
bytes
حداکثر طول داده‌های تکمیلی را برای آزمون‌های Slowloris و Slow POST مشخص می‌کند.
bytes
نقطه پایانی بازه‌ای را مشخص می‌کند که اندازه پنجره اعلانی TCP در آزمون Slow Read از آن انتخاب می‌شود.
bytes
تعداد بایت‌ها برای خواندن از بافر دریافت در هر عملیات ()read را مشخص می‌کند.

شروع آزمون Slowloris روی host.example.com با ۱۰۰۰ اتصال، ذخیره آمار در my_header_stats، فاصله ۱۰ ثانیه‌ای میان سرایندهای تکمیلی و نرخ اتصال ۲۰۰ اتصال در ثانیه:

$ 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

شروع آزمون Slow POST روی host.example.com با ۳۰۰۰ اتصال، ذخیره آمار در my_body_stats، فاصله ۱۱۰ ثانیه‌ای میان سرایندهای تکمیلی، نرخ اتصال ۲۰۰ اتصال در ثانیه، مقدار سرایند Content-Length برابر ۸۱۹۲، حداکثر طول داده‌های تکمیلی مقدار تصادفی با سقف ۱۰ بایت و ۳ ثانیه انتظار در اتصال کاوشگر برای دریافت پاسخ HTTP پیش از علامت‌گذاری سرور به عنوان DoSed:

$ 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

شروع آزمون Range Header روی host.example.com با ۱۰۰۰ اتصال، استفاده از متد HEAD، تولید سرایند HTTP به صورت Range:0-, x-1, x-2, x-3, ... x-y که در آن x برابر ۱۰ و y برابر ۳۰۰۰ است، نرخ اتصال ۵۰۰، فاصله ۱۰ ثانیه‌ای میان سرایندهای تکمیلی و نرخ اتصال ۲۰۰ اتصال در ثانیه:

$ slowhttptest -R -u http://host.example.com/ -t HEAD -c 1000 -a 10 -b 3000 -r 500

شروع آزمون Slow Read روی host.example.com با ۸۰۰۰ اتصال، بدون تولید آمار، نرخ اتصال ۲۰۰ اتصال در ثانیه، اندازه پنجره اعلانی TCP مقداری تصادفی بین ۵۱۲ و ۱۰۲۴، slowhttptest هر ۵ ثانیه یک‌بار ۳۲ بایت از هر اتصال می‌خواند، ۳ درخواست روی هر اتصال پایپ‌لاین می‌شود، و اتصال کاوشگر ۳ ثانیه منتظر پاسخ HTTP می‌ماند پیش از آنکه سرور را به عنوان DoSed علامت‌گذاری کند:

$ 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

شروع آزمون Slow Read روی host.example.com از طریق سرور پراکسی HTTP در 10.10.0.1:8080 با ۸۰۰۰ اتصال، بدون تولید آمار و با مقادیر پیش‌فرض برای سایر تنظیمات آزمون. به احتمال زیاد slowhttptest به جای سرور هدف، خود سرور پراکسی HTTP را می‌آزماید، اما این موضوع کاملاً به نحوه پیاده‌سازی سرور پراکسی HTTP بستگی دارد:

$ slowhttptest -d 10.10.0.1:8080 -c 8000 -X -u https://host.example.com/resources/index.html

شروع آزمون Slow Read روی host.example.com و هدایت ترافیک کاوشگر از طریق سرور پراکسی HTTP در 10.10.0.1:8080 با ۸۰۰۰ اتصال، بدون تولید آمار و با مقادیر پیش‌فرض برای سایر تنظیمات آزمون. تعیین کانال اتصال مجزا برای اتصالات کاوشگر کمک می‌کند تا اطمینان حاصل شود که slowhttptest آمار معتبری از در دسترس بودن سرور تحت آزمون نشان می‌دهد:

$ slowhttptest -e 10.10.0.1:8080 -c 8000 -X -u https://host.example.com/resources/index.html

Sergey Shekyan ⟨shekyan@gmail.com⟩.

صفحه پروژه: ⟨https://github.com/shekyan/slowhttptest⟩.

November 25, 2013 Linux 6.12.111+deb13-amd64