# Webship ওয়েব সার্ভার: ডিফল্ট দ্বারা সুরক্ষিত সেটিংস
একটি সুরক্ষিত ওয়েব সার্ভারকে অপারেটরকে রাত ২টায় আরেকটি সেটিং মনে রাখার উপর নির্ভর করা উচিত নয়। এটি একটি সুরক্ষামূলক ভিত্তি থেকে শুরু করা উচিত, অসুরক্ষিত কনফিগারেশন প্রত্যাখ্যান করা উচিত, এবং সংবেদনশীল ক্ষমতা প্রকাশ করার আগে ইচ্ছাকৃত পছন্দের প্রয়োজন উচিত।
এটাই Webship এর পেছনের মডেল। এর ডিফল্ট কনফিগারেশন মূল অনুরোধ এবং প্রতিক্রিয়া প্রতিরক্ষা চালু করে, একটি আক্রমণকারীর ব্যবহার করতে পারা সম্পদের পরিমাণ সীমাবদ্ধ করে, এবং ঐচ্ছিক নিয়ন্ত্রণ পৃষ্ঠাগুলি নিষ্ক্রিয় অবস্থায় রাখে। আপনি একটি বাস্তব অ্যাপ্লিকেশনের জন্য সেই ডিফল্ট মানগুলিকে সমন্বয় করতে পারেন, কিন্তু প্রথম অনুরোধ আসার আগে প্রতিটি প্রতিরক্ষা আবিষ্কার করতে হবে না।
ডিফল্টভাবে নিরাপদ হওয়া মানে প্রেক্ষাপট ছাড়া নিরাপদ হওয়া নয়। সার্টিফিকেট, অ্যাপ্লিকেশন অনুমোদন, নেটওয়ার্ক নীতি, গোপন তথ্য, এবং ঘটনা প্রতিক্রিয়া এখনও অপারেটরের দায়িত্ব। Webship এর কাজ হলো নিরাপদ শুরু করার স্থানটি স্পষ্ট করা—এবং অনিচ্ছাকৃত দুর্বলতা কঠিন করা।
যে সুরক্ষা সক্রিয় অবস্থায় শুরু হয়
Webship এর বেস কনফিগারেশনে ছয়টি লেয়ার সক্রিয় করে:
| স্তর | ডিফল্ট আচরণ | এটি যা হ্রাস করে | | --- | --- | --- | | ডট-ফাইল সুরক্ষা | ডট-প্রিফিক্সযুক্ত স্ট্যাটিক পাথ সেগমেন্ট অস্বীকার করে | পরিবেশ ফাইল, রেপোসিটরি মেটাডেটা এবং লোকাল কনফিগারেশনের অজানা প্রকাশ প্রতিরোধ করে | | ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল | পরিচিত আক্রমণ প্যাটার্নগুলিকে ব্লক করে | SQL ইনজেকশন, ক্রস-সাইট স্ক্রিপ্টিং, ট্রাভারসল, সংবেদনশীল-পথ প্রোব, কমান্ড ইনজেকশন, হেডার স্মাগলিং, এবং অপ্রদত্ত রিকোয়েস্ট এনকোডিং | | DDoS নিয়ন্ত্রণ | সীমাবদ্ধ ক্লায়েন্ট স্টেটের সাথে সাধারণ মোডে চলে | অনুরোধ প্লাবণ, সীমাহীন ট্র্যাকিং, এবং এড়ানো যোগ্য সম্পদ শেষ হওয়া | | বট চ্যালেঞ্জ | একটি স্বাক্ষরযুক্ত চ্যালেঞ্জ কুকি ব্যবহার করে | কম খরচে স্বয়ংক্রিয় অপব্যবহার এবং পুনরায় স্ক্যানিং | | প্রতিক্রিয়া সুরক্ষা হেডার | একটি সীমাবদ্ধ ব্রাউজার নীতি যোগ করে | MIME বিভ্রান্তি, ফ্রেমিং, রেফারার ফাঁস, বিপজ্জনক ব্রাউজার ক্ষমতা, এবং বিস্তৃত কন্টেন্ট লোডিং | | এপিআই শিল্ড | ব্লক মোড ব্যবহার করে এবং একবার এপিআই চুক্তি নির্ধারিত হলে অজানা রুটগুলো প্রত্যাখ্যান করে | শ্যাডো এন্ডপয়েন্ট, অপ্রত্যাশিত মেথড, অপ্রত্যাশিত কন্টেন্ট টাইপ, এবং অনুপস্থিত অনুমোদন প্রয়োজনীয়তা |
ডিফল্ট WAF ও যে জিনিসগুলি পরীক্ষা করে তার চারপাশে কঠোর সীমা নির্ধারণ করে: ৩২ KiB রিকোয়েস্ট হেডার, ২,০৪৮-বাইট পাথ, এবং ১ MiB রিকোয়েস্ট বডি। এগুলি নিরাপত্তার সীমা, অযৌক্তিক পারফরম্যান্স সুইচ নয়। যদি কোনো অ্যাপ্লিকেশন সত্যিকারভাবে বড় রিকোয়েস্ট প্রয়োজন হয়, তাহলে সেই অ্যাপ্লিকেশনের জন্য প্রাসঙ্গিক সীমা বাড়ান এবং ফলাফল পরীক্ষিত করুন, গ্লোবালি পরীক্ষা বন্ধ করার পরিবর্তে।
ডিডিওএস সুরক্ষা স্বাভাবিক মোডে প্রতি মিনিটে ৬০০ অনুরোধ থেকে শুরু হয়, প্রতি ক্লায়েন্ট কী এর জন্য ১০০ এর একটি বারের অনুমতি সহ। এর ক্লায়েন্ট-স্টেট টেবিলটি ৬৫,৫৩৬ এন্ট্রিতে সীমাবদ্ধ। এই মানগুলো একটি মূল সীমা, একটি সার্বজনীন ট্রাফিক মডেল নয়: একটি পাবলিক এপিআই, একটি ডাউনলোড সার্ভিস, এবং একটি অভ্যন্তরীণ অ্যাডমিন প্যানেল একই অ্যাপ্লিকেশন-নির্দিষ্ট সীমা ভাগ করা উচিত নয়।
ব্রাউজার সুরক্ষা বেসলাইনের অংশ
Webship এর রেসপন্স-হেডার নীতি সক্রিয় থাকে এমনকি যখন একটি অ্যাপ্লিকেশন তার নিজের যোগ করতে ভুলে যায়। ডিফল্ট অন্তর্ভুক্ত:
- এক্স-কন্টেন্ট-টাইপ-অপশনস: নোস্নিফ;
- একটি ফ্রেম-প্রত্যাখ্যান নীতি;
- রেফেরার-নীতি: কোনো রেফেরার নেই;
- এক বছর জন্য কঠোর পরিবহন নিরাপত্তা, সাবডোমেইনগুলি সহ;
- কন্টেন্ট-সিকিউরিটি-পলিসি একই উত্সের কন্টেন্টের জন্য সীমাবদ্ধ, ফ্রেমিং এবং বেস-URI সীমাবদ্ধতার সাথে;
- অনুমতি-নীতি জিওলোকেশন, মাইক্রোফোন, এবং ক্যামেরা অ্যাক্সেস অক্ষম করছে।
এই ডিফল্ট সেটিংসগুলি উদ্দেশ্যমূলকভাবে সীমাবদ্ধ। এমন একটি ডোমেনে HSTS প্রয়োগ করার আগে পর্যালোচনা করুন যেটির সাবডোমেনগুলি সম্পূর্ণ HTTPS-সক্ষম নয়। কোনো অ্যাপ্লিকেশন যখন স্ক্রিপ্ট, স্টাইল, ফন্ট, ইমেজ বা অন্যান্য উৎস থেকে সংযোগ লোড করে, তখন Content-Security-Policy পর্যালোচনা করুন। একটি নিরাপদ ডিফল্ট সেটিং প্রকাশনার সময় দৃশ্যমানভাবে ব্যর্থ হওয়া উচিত, প্রোডাকশনে নিঃশব্দে দুর্বল হওয়া নয়।
ঐচ্ছিক পৃষ্ঠগুলো বন্ধ থাকে
Webship প্রতিটি বৈশিষ্ট্য প্রকাশ করে না শুধুমাত্র কারণ বাইনারিটিতে তা রয়েছে। রিভার্স প্রোক্সিং, WebTransport, পর্যবেক্ষণ এন্ডপয়েন্ট, স্বয়ংক্রিয় TLS, প্রতিক্রিয়া উত্স, এবং MCP নিয়ন্ত্রণ এন্ডপয়েন্ট ডিফল্টভাবে অক্ষম থাকে।
MCP এন্ডপয়েন্টটি সক্রিয় হলে লুপব্যাক-স্কোপড হয় এবং স্পষ্ট নিরাপত্তা কনফিগারেশন প্রয়োজন। মেট্রিক্স এবং পরিসংখ্যান ইরূপ হয় যে সরঞ্জামবিধি ইচ্ছাকৃতভাবে সক্রিয় করা হয়েছে। স্বয়ংক্রিয় সনদপত্র পরিচালনার জন্য অপারেটরকে একটি ACME ডিরেক্টরি, যোগাযোগ, স্টোরেজ এবং পরিষেবার শর্ত গ্রহণ বেছে নিতে হয়। এটি অপারেশনাল বৈশিষ্ট্যগুলিকে হঠাৎ নেটওয়ার্ক সারফেস হয়ে যাওয়া থেকে রক্ষা করে।
বেস লিসেনারও 127.0.0.1-এ বাইন্ড হয়। একজন অপারেটরকে স্পষ্টভাবে একটি পাবলিক ঠিকানা নির্বাচন করতে হবে। সেই একক পছন্দটি ফায়ারওয়াল নিয়ম, সার্ভিস অনুমতি, TLS পরিচয়, এবং ডিপ্লয়মেন্ট টপোলজির জন্য একটি কার্যকর পর্যালোচনা পয়েন্ট তৈরি করে।
রিভার্স প্রক্সি ট্রাস্ট বাউন্ডারি সংরক্ষণ করে
যখন রিভার্স প্রক্সি সক্রিয় থাকে, TLS পাস-থ্রু ডিফল্ট থাকে। Webship এনক্রিপ্ট করা ট্রাফিক ফরওয়ার্ড করে কোনো অ্যাপ্লিকেশন প্লেইনটেক্সট বা সক্রিয় সেশন কী দখল না করে। উৎপত্তি TLS এবং আলোচনার প্রোটোকলের জন্য দায়ী থাকে।
TLS টার্মিনেশন কেবল তখন সক্রিয় করুন যখন Webship HTTP অনুরোধ পরীক্ষা করতে, পথ অনুযায়ী রাউট করতে, WAF এবং API নীতি প্রয়োগ করতে, হেডার পুনঃলিখন করতে বা প্রতিক্রিয়া ক্যাশ করতে হবে। টার্মিনেশন স্বভাবতই কম নিরাপদ নয়; এটি ট্রাস্ট বাউন্ডারি স্থানান্তর করে। গুরুত্বপূর্ণ সিদ্ধান্ত হলো কোন মেশিনটি প্লেইনটেক্সট দেখতে পারবে এবং কেন।
পাস-থ্রু তেও কার্যকারিতা সীমাবদ্ধতা রয়েছে। TCP রাউটিং ClientHello SNI-এর উপর ভিত্তি করে কারণ HTTP অনুরোধটি এনক্রিপ্ট করা হয়। HTTP/3 পাস-থ্রু রাউটকে একটি UDP উৎস শেয়ার করতে হবে। যদি আপনাকে এজে কনটেন্ট-সচেতন নিরাপত্তা প্রয়োজন হয়, তবে TLS সেখানে টার্মিনেট করুন এবং এজ-টু-অরিজিন হপটি আলাদাভাবে সুরক্ষিত করুন।
একটি উৎপাদন ভিত্তি যা আপনি পর্যালোচনা করতে পারেন
নিম্নলিখিত উদ্ধৃতিটি গুরুত্বপূর্ণ ডিফল্টগুলো স্পষ্টভাবে নির্দেশ করে, বাদ দেওয়ার উপর নির্ভর না করে:
listen = "0.0.0.0:443"
deny_dotfiles = true
[tls]
unknown_sni = "reject"
[ddos]
enabled = true
mode = "normal"
requests_per_minute = 600
burst = 100
block_seconds = 60
max_tracked_clients = 65536
[security]
enabled = true
rate_limit_max_entries = 65536
[security.waf]
enabled = true
mode = "block"
sqli = true
xss = true
traversal = true
sensitive_paths = true
header_abuse = true
max_header_bytes = 32768
max_path_bytes = 2048
max_body_bytes = 1048576
[security.response_headers]
enabled = true
nosniff = true
frame_deny = true
referrer_no_referrer = true
hsts = "max-age=31536000; includeSubDomains"
content_security_policy = "default-src 'self'; frame-ancestors 'none'; base-uri 'self'"
permissions_policy = "geolocation=(), microphone=(), camera=()"একটি বহু-ডোমেইন লিসেনারে, unknown_sni = "reject" একটি অচেনা হোস্টনেমকে লিসেনারের ডিফল্ট সার্টিফিকেট গ্রহণ করা থেকে রোধ করে। Webship এর স্বয়ংক্রিয়-TLS লিসেনারগুলি ইতিমধ্যেই অচেনা নামগুলি প্রত্যাখ্যান করে যতক্ষণ না একটি সার্টিফিকেট উপস্থিত থাকে।
ভ্যারিফিকেশন একটি নিরাপত্তা নিয়ন্ত্রণ
Webship লিসেনার যুক্ত করার পূর্বে কনফিগারেশন যাচাই করে। অজানা ফিল্ড, অবৈধ সীমা, অসম্পূর্ণ পরিচয়, বিরোধপূর্ণ লিসেনার, এবং অপ্রযুক্ত প্রোটোকল সংমিশ্রণগুলো নির্দিষ্ট ত্রুটির মাধ্যমে শুরু ব্যর্থ হয়। একই যাচাই একটি লাইভ কনফিগারেশন স্থাপনের পূর্বেও চলে। একটি ব্যর্থ রিলোড বর্তমান কনফিগারেশন সক্রিয় রাখে।
প্রমাণীকৃত MCP কনফিগারেশন পাথ আরেকটি সুরক্ষা যোগ করে: এটি লাইভ পরিবর্তনগুলিকে প্রত্যাখ্যান করে যা সক্রিয় WAF, DDoS স্তর, API শিল্ড, বট চ্যালেঞ্জ, এজ-অথ পলিসি, বা রেসপন্স-হেডার স্তর অক্ষম করবে। ভার্সন যাচাই এক প্রশাসককে নতুন কনফিগারেশন স্ন্যাপশট ওভাররাইট করতে বাধা দেয়। প্রসেস-নির্ধারিত সেটিংস এখনও পুনরায় শুরু করার প্রয়োজন, অংশিক লাইভ পরিবর্তন সফল হওয়ার ভান করার পরিবর্তে।
এটি একটি দরকারী পার্থক্য। সুরক্ষিত ডিফল্ট নতুন ডিপ্লয়মেন্টকে রক্ষা করে। লেনদেনমূলক যাচাই এবং সুরক্ষিত আপডেট চলমান ডিপ্লয়মেন্টকে রক্ষা করে।
কোন অপারেটররা এখনও সিদ্ধান্ত নিতে বাকি আছে
ইনটারনেটে Webship প্রকাশ করার আগে:
- একটি বিশ্বাসযোগ্য TLS পরিচয় কনফিগার করুন এবং ব্যক্তিগত কীটি সুরক্ষিত করুন।
- শ্রোতার টপোলজির জন্য অজানা SNI হ্যান্ডলিং সেট করুন।
- নিশ্চিত করুন যে HSTS এবং কনটেন্ট-সিকিউরিটি-পলিসি প্রতিটি অ্যাপ্লিকেশন এবং সাবডোমেইনের সাথে মেলে।
- API শিল্ড এন্ডপয়েন্ট, গ্রহণযোগ্য পদ্ধতি, কনটেন্ট টাইপ এবং অনুমোদন প্রয়োজনীয়তা সংজ্ঞায়িত করুন।
- শুধুমাত্র গ্লোবাল বেসলাইন নির্ভর করার পরিবর্তে রুট-নির্দিষ্ট রেট সীমা যোগ করুন।
- সুরক্ষিত হোস্ট বা পাথের জন্য এজ অ্যাথেন্টিকেশন সক্ষম করুন এবং স্বল্পমেয়াদি টোকেন ব্যবহার করুন।
- _MCP এবং পর্যবেক্ষণকারী শোনার যন্ত্রগুলি ব্যক্তিগত, প্রমাণীকৃত এবং জনসমูহার ট্রাফিক থেকে আলাদা রাখুন।
- সম্ভব হলে একটি নিবেদিত অপ্রাতিষ্ঠানিক অ্যাকাউন্ট, একটি কেবল পাঠযোগ্য অ্যাপ্লিকেশন রুট এবং শুধুমাত্র প্রয়োজনীয় অপারেটিং-সিস্টেম ক্ষমতাসহ Webship চালান।
- রোলআউটের আগে কনফিগারেশন যাচাই করুন, তারপর ক্যানারি পরিবেশে ব্লক করা এবং অনুমোদিত ট্রাফিক পরীক্ষা করুন।
- নিরাপত্তা অডিট ইভেন্টগুলি মনিটর করুন এবং সাধারণ মোড থেকে আক্রমণাধীন বা লকডাউন মোডে পরিবর্তনের অভ্যাস করুন।
একটি নিরাপদ ডিফল্ট হলো একটি শুরু, দাবি নয়
কোনও ওয়েব সার্ভার সিদ্ধান্ত নিতে পারে না কোন ব্যবহারকারীরা আপনার চালান দেখতে পারবে, কোন উৎসগুলি আপনার API কল করতে পারবে, বা আপনার ব্যবসার এন্ডপয়েন্ট কত দ্রুত অনুরোধ গ্রহণ করবে। সেই নিয়ন্ত্রণগুলি অ্যাপ্লিকেশন জ্ঞান প্রয়োজন।
Webship নিম্ন স্তর সরবরাহ করে: সীমাবদ্ধ পার্সার, কঠোর কনফিগারেশন, প্রতিরক্ষামূলক রেসপন্স হেডার, রিকোয়েস্ট পর্যবেক্ষণ, অপব্যবহার নিয়ন্ত্রণ, এবং বন্ধ থাকা ঐচ্ছিক সৎসব। ফলাফল হলো “নিরাপত্তা সমাধান” নয়। এটি সার্ভার স্থাপন এবং দায়িত্বপূর্ণভাবে পরিচালনার মধ্যে একটি ছোট ফাঁক।
উৎপাদন স্থাপনের আগে সম্পূর্ণ Webship ডকুমেন্টেশন পর্যালোচনা করুন। কনফিগারেশন স্কিমা এবং চলমান বাইনারি আপনার ব্যবহৃত সঠিক সংস্করণের প্রামাণিক উত্স হিসেবে থেকেই যায়।