ফিরে যান Webship ব্লগে

Webship প্রকৌশল

নিরাপদভাবে AI এজেন্টকে Webship এর MCP সার্ভারের সাথে সংযোগ করুন

TLS 1.3 সহ Webship এর বিচ্ছিন্ন MCP নিয়ন্ত্রণ তল স্থাপন করুন, একটি শক্তিশালী বেয়ারার টোকেন, লুপব্যাক বাঁধন, একটি SSH টানেল, কনফিগারেশন যাচাই এবং একটি ব্যবহারিক ঘটনা-প্রতিক্রিয়া চেকলিস্ট সহ।

# নিরাপদভাবে AI এজেন্টগুলিকে সংযুক্ত করুনWebshipএরMCP সার্ভার

একটি MCP ওয়েব সার্ভারের সাথে সংযোগ একটি চ্যাট উইজেট নয়। এটি একটি অপারেশন ইন্টারফেস যা প্রোডাকশন স্টেট পরিদর্শন করতে পারে, রাউটিং এবং নিরাপত্তা নীতি পরিবর্তন করতে পারে, সার্টিফিকেট পুনরায় লোড করতে পারে, স্ট্যাটিক রিলিজ সক্রিয় করতে পারে, ফ্লিট পরিবর্তন সমন্বয় করতে পারে এবং একটি স্বাক্ষরিত ইনস্টল করতে পারেWebship আপডেট.

অনুরূপভাবে এটি পরিচালনা করুন: একটি প্রাধান্যপ্রাপ্ত প্রশাসনিক এপিআই হিসাবে। সবচেয়ে নিরাপদWebship সেটআপ রাখা হয়MCP পাবলিক ডেটা প্লেন থেকে লিসেনার, সেটিকে লুপব্যাকে বেঁধে দেয়, এটি দিয়ে সুরক্ষা করে TLS 1.3 এবং একটি শক্তিশালী বেয়ারার টোকেন, এবং এটি একটি প্রমাণীকৃত SSH টানেলের মাধ্যমে পৌঁছে।

এই গাইডটি সেই সেটআপ তৈরি করে, ব্যাখ্যা করে প্রতিটি সীমা কেন আছে, এবং আপনাকে একটি চেকলিস্ট দেয় এটি চালানোর জন্য যাতে সুবিধা বিপদের মধ্যে না পরিণত হয়।

বিশ্বাসের সীমা থেকে শুরু করুন

Webshipসার্বজনীন ট্রাফিক এবংMCP ট্রাফিক আলাদা শ্রোতাদের ব্যবহার করে। MCP কন্ট্রোল প্লেন ডিফল্টভাবে নিষ্ক্রিয় থাকে এবং কখনও সাধারণ HTTP শেয়ার করে না,HTTP/2, HTTP/3, বা WebTransport শ্রোতা। সক্রিয় হলে, এটি পরিবেশন করেMCP একটি নিবেদিত উপরTLS 1.3 HTTP/1.1 এন্ডপয়েন্ট।

একটি নিরাপদ ডিপ্লয়মেন্টের চারটি স্বতন্ত্র নিয়ন্ত্রণ থাকে:

  1. নেটওয়ার্ক পৌঁছানোরযোগ্যতা: দ্যাMCP শ্রোতা বাইন্ড করে 127.0.0.1, একটি পাবলিক বা প্রাইভেট-LAN ঠিকানা নয়।
  2. পরিবহন পরিচয়: ক্লায়েন্ট একটি শংসাপত্র যাচাই করে যা একটি নির্ভরযোগ্য সার্টিফিকেশন অথরিটি (CA) দ্বারা ইস্যু করা হয়েছে।
  3. অ্যাপ্লিকেশন প্রমাণীকরণ: প্রতিটি অনুরোধে একটি শক্তিশালী বহনকারী টোকেন থাকে।
  4. প্রশাসনিক প্রবেশাধিকার: অপারেটররা একটি প্রমাণীকৃত SSH অ্যাকাউন্ট এবং টানেলের মাধ্যমে লুপব্যাক লিসেনারের সাথে সংযুক্ত হন।

এই নিয়ন্ত্রণগুলোর কোনোটি অন্যটিকে প্রতিস্থাপন করে না। একটি ব্যক্তিগত নেটওয়ার্ক পাথ ছাড়া TLS এখনও একটি প্রমাণীকরণ পৃষ্ঠতল উন্মুক্ত করে। সার্টিফিকেট যাচাই ছাড়া একটি টানেল এন্ডপয়েন্ট পরিচয় অস্পষ্ট করে তোলে। একটি বিশ্ব-পঠনযোগ্য ফাইলের মধ্যে থাকা বেয়ারার টোকেন গোপন নয়।

সার্টিফিকেট এবং টোকেন প্রস্তুত করুন

একটি নিবেদিত ইস্যু জারি করুনMCP আপনার অভ্যন্তরীণ CA থেকে সার্টিফিকেট। নীচে প্রদর্শিত টানেলের জন্য, অন্তর্ভুক্ত করুন localhost এবং 127.0.0.1 সার্টিফিকেটের সাবজেক্ট বিকল্প নামগুলিতে, затем ইস্যু করা CA ইনস্টল করুনMCP ক্লায়েন্ট মেশিনের ট্রাস্ট স্টোর। একটি অসুরক্ষিত-TLS বিকল্প দিয়ে ট্রাস্ট ত্রুটি সমাধান করবেন না।

কমপক্ষে 32টি প্রিন্টেবল ASCII বাইট নিয়ে এবং কোনো স্পেস ছাড়াই একটি অনন্য টোকেন তৈরি করুন। 32-বাইট দৈর্ঘ্যের র্যান্ডম মানকে হেক্সাডেসিমাল হিসেবে এনকোড করলে আপনি 64টি নিরাপদ অক্ষর পাবেন:

umask 077
openssl rand -hex 32

Webship বর্তমানে পড়ছেMCP সুরক্ষিত স্থান থেকে সরাসরি টোকেনTOML কনফিগারেশন;token_file সমর্থিত নয়। ফলাফলটি এমন একটি কনফিগারেশন ফাইলে সংরক্ষণ করুন যা শুধুমাত্র দ্বারা পড়া যায়Webship সার্ভিস অ্যাকাউন্ট এবং এর প্রশাসনিক গ্রুপ। টোকেনটি একটি systemd ইউনিট, শেল ইতিহাস, টিকিট, চ্যাট বার্তা বা AI মডেলে পাঠানো প্রম্পটে রাখবেন না।

একটি সাধারণ ডেবিয়ান হোস্টে:

sudo chown root:webship /etc/webship/production.toml
sudo chmod 0640 /etc/webship/production.toml
sudo chown root:webship /etc/webship/mcp-cert.pem /etc/webship/mcp-key.pem
sudo chmod 0644 /etc/webship/mcp-cert.pem
sudo chmod 0640 /etc/webship/mcp-key.pem

আপনার ইনস্টলেশনের সাথে সার্ভিস ব্যবহারকারী এবং গ্রুপটি মানিয়ে নিন। প্রাইভেট কি এবং কনফিগারেশনটি পড়ার যোগ্য হতে হবেWebship, কিন্তু অপ্রাসঙ্গিক অ্যাকাউন্ট দ্বারা নয়।

একাকী শ্রোতাকে সক্ষম করুন

এই অংশটি সক্রিয়ের সাথে যোগ করুনWebship কনফিগারেশন:

[security.mcp]
enabled = true
listen = "127.0.0.1:9443"
token = "replace-with-your-generated-64-character-token"
allowed_ips = []
expose_remote = false

[security.mcp.tls]
cert = "/etc/webship/mcp-cert.pem"
key = "/etc/webship/mcp-key.pem"

একটি খালি allowed_ips তালিকা এন্ডপয়েন্টটি খুলে না। লুপব্যাক ক্লায়েন্টগুলি ডিফল্টভাবে অনুমোদিত থাকে।expose_remote = false প্রসিদ্ধ সীমাটি স্পষ্ট করে তোলে: যদি পরে কেউ পরিবর্তন করে listen একটি নন-লুপব্যাক ঠিকানায়, Webship নিয়ন্ত্রণ প্লেন চুপচাপ প্রকাশ করার পরিবর্তে কনফিগারেশনটি প্রত্যাখ্যান করে।

Webship একটি সক্রিয়কৃতকেও প্রত্যাখ্যান করেMCP TLS ছাড়া, টোকেন ছাড়া, সংক্ষিপ্ত বা ফাঁকা স্থানযুক্ত টোকেন সহ, বা শূন্য সার্টিফিকেট পথ সহ লিসেনার। পাবলিক প্লেসহোল্ডার টোকেনগুলো দূরবর্তী প্রকাশের আগে প্রত্যাখ্যাত হয়।

পুনরায় শুরু করার আগে যাচাই করুন

MCP শ্রোতা, TLS পরিচয়, এবং টোকেন পরিবর্তনগুলি কন্ট্রোল প্লেন পুনর্নির্মাণ করে, তাই এগুলির জন্য একটি প্রক্রিয়া পুনরায় চালু করা প্রয়োজন। প্রথমে সম্পূর্ণ কনফিগারেশন যাচাই করুন:

/usr/local/bin/webship --check-config --config /etc/webship/production.toml
sudo systemctl restart webship
sudo systemctl status webship --no-pager

নিশ্চিত করুন যে লিসেনার শুধুমাত্র লুপব্যাকে রয়েছে:

ss -ltn | grep '127.0.0.1:9443'

হোস্টের পাবলিক ফায়ারওয়াল নিয়মে পোর্ট 9443 যোগ করবেন না। পরবর্তী ধাপে এটি SSH এর মাধ্যমে পৌঁছানো হবে।

প্রাইভেট টানেল তৈরি করুন

প্রশাসক ওয়ার্কস্টেশন থেকে একটি লোকাল পোর্ট ফরওয়ার্ড করুন Webshipএর লুপব্যাক লিসেনার:

ssh -N \
  -L 127.0.0.1:19443:127.0.0.1:9443 \
  webship-admin@edge.example.com

দ্য MCP ক্লায়েন্ট এখন সংযুক্ত হয়https://localhost:19443/mcp. TCP SSH সার্ভারে পৌঁছায়, SSH সংযোগটিকে হোস্টে বহন করে, এবং হোস্ট চূড়ান্ত সংযোগটি খুলেWebship লুপব্যাকে। SSH সেশন বন্ধ করলে সেই পথটি সঙ্গে সঙ্গে মুছে যায়।

কী-ভিত্তিক SSH প্রমাণীকরণ ব্যবহার করুন, কোন প্রশাসকরা টানেল খুলতে পারে তা সীমাবদ্ধ করুন, এবং আপনার সাধারণ হোস্ট-অ্যাক্সেস নিয়ন্ত্রণ প্রয়োগ করুন। যদি একটি জাম্প হোস্ট প্রয়োজন হয়, তবে তা রাখুন MCP শ্রোতা উপরWebship হোস্টের লুপব্যাক ইন্টারফেস এবং লিসেনার বাড়ানোর পরিবর্তে SSH পথ সম্প্রসারণ করুন।

কনফিগার করুন MCP গ্রাহক

ক্লায়েন্ট কনফিগারেশন ফরম্যাটগুলি ভিন্ন, তবে একটি সাধারণ HTTP MCP এন্ট্রি এভাবে দেখায়:

{
  "mcpServers": {
    "webship-production": {
      "url": "https://localhost:19443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>"
      }
    }
  }
}

যদি ক্লায়েন্টের একটি সুরক্ষিত গোপন মেকানিজম থাকে তবে তা ব্যবহার করুন। অন্যথায়, ক্লায়েন্ট কনফিগারেশনকে বর্তমান অপারেটিং সিস্টেমের অ্যাকাউন্টে সীমিত করুন। অনুমোদন হেডারটি সংযুক্ত করা উচিত HTTP ক্লায়েন্টের—মডেলের নয়। কখনও লাইভ টোকেনটি কথোপকথনে পেস্ট করবেন না।

সার্টিফিকেট যাচাইকরণ সক্রিয় রাখুন। যদি ক্লায়েন্ট সার্টিফিকেটটি গ্রহণ না করে, সার্টিফিকেটের সাবজেক্ট বিকল্প নামগুলি মেরামত করুন বা সঠিক অভ্যন্তরীণ CA ইনস্টল করুন। স্থায়ী বায়পাস যোগ করবেন না।

প্রথম সেশনটি শুধুমাত্র-পঠন করুন

টানেল এবং ক্লায়েন্ট সংযুক্ত হওয়ার পর, আবিষ্কার এবং পরিদর্শন দিয়ে শুরু করুন:

  1. চাওtools/list; এর প্রতিক্রিয়া হলো চলমান রিলিজের জন্য প্রামাণিক যুক্তি স্কিমা।
  2. কলwebship.get_config এবং বর্তমান কনফিগারেশন সংস্করণটি রেকর্ড করুন।
  3. পরিদর্শন করাwebship.reverse_proxy.get_status, webship.security.get_status, webship.ddos.get_status, এবং webship.tls.get_status যথাসম্ভব প্রযোজ্য।
  4. ব্যবহার করুন webship.policy.explain অথবা webship.security.simulate একটি নীতি পরিবর্তন করার আগে।
  5. প্রত্যাবর্তিত কনফিগারেশন যাতায়াতকারী টোকেনগুলি লুকায় তা নিশ্চিত করুন।

শুধুমাত্র তারপর একটি অ-প্রোডাকশন পরিবেশে একটি মিউটেশন পরীক্ষা করুন।Webshipকনফিগারেশন মিউটেশনগুলোতে বর্তমান সংস্করণ ID প্রয়োজন। নতুন কোনো পরিবর্তনকে ওভাররাইট করার পরিবর্তে একটি পুরনো লেখা প্রত্যাখ্যাত হয়। প্রার্থী নীতি কার্যকর করার আগে শ্যাডো ভেরিফিকেশন এবং ট্রাফিক-ল্যাব দৃশ্যপটের মাধ্যমে পরীক্ষা করা যেতে পারে।

Webship নির্বাচিত লাইভ নিরাপত্তা হ্রাসও প্রত্যাখ্যান করে। একটি MCP অনুরোধ একটি সক্রিয় WAF, DDoS স্তর, API শিল্ড, বট চ্যালেঞ্জ, এজ-অথ নীতি, বা রেসপন্স-হেডার স্তর বন্ধ করতে পারে না। প্রক্রিয়া-সংলগ্ন শ্রোতা, প্রটোকল, ওয়ার্কার, রUNTIME, এবংMCP-প্রমাণীকরণের পরিবর্তনের জন্য একটি সচেতন পুনরায় শুরু প্রয়োজন।

সেই রক্ষীরা ভুল কমায়; তারা প্রত্যেক অনুমোদিত কাজকে নির্দোষ করে না। টোকেনটি একটি শক্তিশালী নিয়ন্ত্রণ পৃষ্ঠ প্রদান করে, যার মধ্যে আপডেট এবং রিলিজ কার্যক্রম অন্তর্ভুক্ত। প্রস্তাবিত টুল কলগুলি ঠিক যেমনভাবে আপনি একজন প্রশাসকের শেল কমান্ড পর্যালোচনা করবেন তেমন করেই পর্যালোচনা করুন।

যদি দূরবর্তী বাইলিং এড়ানো না যায়

লুপব্যাক প্লাস SSH সুপারিশকৃত নকশা। যদি আপনার পরিবেশে একটি ব্যক্তিগত-নেটওয়ার্ক লিসেনারের প্রয়োজন হয়, তবে ব্যতিক্রমটিকে স্পষ্ট করুন:

[security.mcp]
enabled = true
listen = "10.20.0.15:9443"
expose_remote = true
allowed_ips = ["10.20.10.0/24"]
token = "replace-with-your-generated-64-character-token"

আগের উদাহরণের TLS ব্লকটি রাখুন, ব্যক্তিগত DNS নামের সাথে মেলে এমন একটি সনদ ব্যবহার করুন, এবং হোস্ট ও নেটওয়ার্ক ফায়ারওয়ালগুলিতে একই সোর্স রেঞ্জ প্রয়োগ করুন। কখনই ব্যবহার করবেন না 0.0.0.0/0 অথবা ::/0 একটি সুবিধার জন্য আলাউলিস্ট হিসাবে বিবেচনা করুন। মনে রাখবেন যে একটি অ্যাপ্লিকেশন আলাউলিস্ট প্রকৃত সোর্স ঠিকানা দেখে যা আসলে পৌঁছায়Webship; যখন এর সামনে একটি লোড ব্যালেন্সার, NAT গেটওয়ে, বা সার্ভিস মেশ থাকে তখন আচরণ যাচাই করুন।

দূরবর্তী এক্সপোজার কেন্দ্রীভূত প্রবেশ লগ, সংক্ষিপ্ত অপারেশনাল উইন্ডো এবং দ্রুত রোটেশনের মান বৃদ্ধি করে। এটি কেবল কারণের জন্য প্রয়োজন নয়MCP ক্লায়েন্ট অন্য যন্ত্রে চলে; ঠিক এটাই SSH টানেল সমাধান করে।

নিয়ন্ত্রণ প্লেন সচেতনভাবে পরিচালনা করুন

উৎপাদনের জন্য এই চেকলিস্টটি ব্যবহার করুন:

  • রাখোMCP অক্ষম করা যেখানে কোনো এজেন্ট বা অপারেটরের প্রয়োজন নেই।
  • ডিফল্টভাবে লুপব্যাকে বেঁধে দিন এবং একটি SSH টানেল ব্যবহার করুন।
  • একটি ডেডিকেটেড TLS পরিচয় ব্যবহার করুন এবং সার্টিফিকেট যাচাই সক্রিয় রাখুন।
  • প্রতিটির জন্য একটি অনন্য বহকের টোকেন তৈরি করুনWebship পরিবেশ।
  • সুরক্ষা করুন TOML, ক্লায়েন্ট কনফিগারেশন, TLS কী, এবং এসএসএইচ কীসহ ফাইলসিস্টেম অনুমতি।
  • অলাদা ডেভেলপমেন্ট, টেস্টিং, এবং প্রোডাকশন ক্রেডেনশিয়াল।
  • পরিবর্তনের আগে স্ট্যাটাস এবং নীতি-সিমুলেশন টুল দিয়ে সেশন শুরু করুন।
  • সংরক্ষণ করুন এবং পর্যালোচনা করুনWebshipএর সুরক্ষা নিরীক্ষা ঘটনা।
  • টোকেনটি ঘুরান এবং পুনরায় চালু করুনWebship সন্দেহভাজন সংস্পর্শের পরে।
  • প্রশাসনিক সেশন শেষ হলে টানেলগুলি বন্ধ করুন।

ঘটনা প্রতিক্রিয়ার জন্য, সক্রিয় টানেলগুলি বন্ধ করুন, SSH অ্যাকাউন্ট সীমিত করুন, প্রতিস্থাপন করুন MCP সুরক্ষিত টোকেনের মধ্যেTOML, পুনরায় চালু করুনWebship, এবং সাম্প্রতিক নিরাপত্তা অডিট এবং কনফিগারেশন-ভার্সন রেকর্ডগুলি পর্যালোচনা করুন। যদি TLS ব্যক্তিগত কী প্রকাশ্যে আসে, তবে একই পুনঃপ্রারম্ভের অংশ হিসেবে একটি নতুন সার্টিফিকেট এবং কী ইস্যু করুন। পরে পুরনো টোকেনটি পরীক্ষা করুন এবং নিশ্চিত করুন যে এটি প্রত্যাখ্যাত হয়েছে।

একটি কন্ট্রোল প্লেন কন্ট্রোল প্লেন হিসেবে থেকেই যাওয়া উচিত

MCP এটি কার্যকর কারণ একটি এজেন্ট বাস্তব অবস্থার তদন্ত করতে পারে এবং যাচাইকৃত পরিবর্তনগুলি প্রয়োগ করতে পারে তা পাবলিক রিকোয়েস্ট পথের মাধ্যমে অপারেশনগুলি রুট না করেই। যদি কন্ট্রোল লিসেনার অন্য একটি ইন্টারনেট এন্ডপয়েন্ট হয়ে যায়, তবে সেই সুবিধা অদৃश्य হয়ে যায়।

সীমানা সহজ রাখুন: একটি পৃথক শ্রোতা, লুপব্যাক পৌঁছানোর ক্ষমতা, যাচাই করা TLS, একটি সুরক্ষিত বহনকারী পরিচয়পত্র, একটি প্রমাণীকৃত টানেল, সংস্করণ যাচাই করা পরিবর্তন, এবং শক্তিশালী অপারেশনগুলির জন্য একটি মানব পর্যালোচনা প্রক্রিয়া।Webship প্রটোকল এবং নিরাপত্তা রক্ষাগুলি প্রদান করে; অপারেটর নির্ধারণ করে কে এগুলোতে পৌঁছাতে পারে।

এই গাইডটি এর উপর ভিত্তি করে তৈরিWebship ১.৩.১ অপারেটর ডকুমেন্টেশন, প্রেরিত কনফিগারেশন উদাহরণসমূহ,MCP প্রমাণীকরণ এবং ট্রান্সপোর্ট কোড, রানটাইম কনফিগারেশন গার্ডস, এবং টুল ক্যাটালগ। বর্তমান পর্যালোচনা করুন Webship ডকুমেন্টেশন এবং চলমান সার্ভারের tools/list আরও একটি সংস্করণে এটি প্রয়োগ করার আগে প্রতিক্রিয়া।