মূল কনটেন্টে যান
এআই টিউটোরিয়াল

Autonomous Pentest Agent স্থানীয় স্থাপনা নির্দেশিকা: ইনস্টলেশন, কনফিগারেশন, স্বয়ংক্রিয় অনুসন্ধান ও পুনঃপরীক্ষা

এই নিবন্ধে Autonomous Pentest Agent-এর মূল আর্কিটেকচার, ইনস্টলেশন পদ্ধতি, LLM ও PostgreSQL কনফিগারেশন, কাজ পর্যবেক্ষণ, সম্পদ সিঙ্ক্রোনাইজেশন, দুর্বলতা পুনঃপরীক্ষা এবং আপগ্রেড পদ্ধতি তুলে ধরা হয়েছে। পাশাপাশি রিভার্স প্রক্সি ও স্থানীয় ডেভেলপমেন্টের গুরুত্বপূর্ণ বিষয়গুলোও ব্যাখ্যা করা হয়েছে।

Autonomous Pentest Agent স্থানীয় স্থাপনা নির্দেশিকা: ইনস্টলেশন, কনফিগারেশন, অনুসন্ধান ও পুনঃপরীক্ষা

প্রকল্প ও ব্যবহারের সীমা আগে বুঝে নিন

Autonomous Pentest Agent হলো LLM-চালিত একাধিক Agent ব্যবহারের মাধ্যমে তৈরি একটি স্বয়ংক্রিয় পেনিট্রেশন টেস্টিং সিস্টেম। এতে Go ব্যাকএন্ড, Next.js ফ্রন্টএন্ড এবং PostgreSQL ব্যবহার করা হয়েছে। প্রকল্পটি টাস্ক, অ্যাসেট, অনুসন্ধান চেইন, আবিষ্কারের ফলাফল, ট্রাফিক রেকর্ড, টুল অনুমোদন এবং মানব-নিয়ন্ত্রিত কথোপকথন পরিচালনা করতে পারে।

গুরুত্বপূর্ণ নিরাপত্তা ও কমপ্লায়েন্স সতর্কতা: README-তে স্পষ্টভাবে বলা হয়েছে, এই প্রকল্পটি কেবল ব্যক্তিগত শিক্ষা, সোর্স কোড গবেষণা এবং স্থানীয় বিচ্ছিন্ন পরিবেশে প্রযুক্তিগত যাচাইয়ের জন্য ব্যবহার করা যাবে। কোনো ওয়েবসাইট, অনলাইন পরিষেবা, নেটওয়ার্ক-সংযুক্ত সিস্টেম, প্রোডাকশন পরিবেশ বা বাস্তব পেনিট্রেশন টেস্টে এটি ব্যবহার করা যাবে না। কেবল আপনার নিয়ন্ত্রণাধীন স্থানীয় ল্যাব পরিবেশে এটি ব্যবহার করুন এবং আপনার এলাকার সাইবার নিরাপত্তা, ডেটা সুরক্ষা ও কম্পিউটার অপরাধ-সংক্রান্ত আইন মেনে চলুন।

ইন্টার‌্যাকশন ইন্টারফেস বোঝার জন্য প্রকল্পে একটি অনলাইন Demo দেওয়া হয়েছে, তবে প্রকৃত ডিপ্লয়মেন্ট ও যাচাই অবশ্যই স্থানীয় বিচ্ছিন্ন পরিবেশের মধ্যে সীমাবদ্ধ রাখতে হবে।

মূল ফিচার ও ইন্টারফেস

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

ড্যাশবোর্ড

ড্যাশবোর্ডে সামগ্রিক অবস্থা, Token ব্যবহার এবং কার্যকলাপের প্রবাহ দেখা যায়। টাস্ক ও সেশন পেজে Agent সেশন এবং টুল কলসহ টাস্ক চালানোর প্রক্রিয়া দেখানো হয়।

এক্সিকিউশন প্রক্রিয়া

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

ড্যাশবোর্ড

অনুসন্ধান চেইনআবিষ্কার

সিস্টেম আর্কিটেকচারের সংক্ষিপ্ত বিবরণ

সিস্টেমটি একটি Go মনোলিথিক ব্যাকএন্ড, যার মধ্যে Next.js স্ট্যাটিক ফ্রন্টএন্ড এমবেড করা আছে, PostgreSQL, Agent ইঞ্জিন এবং কয়েকটি সহায়ক সাবসিস্টেম নিয়ে গঠিত। ব্যাকএন্ড REST API, JWT অথেনটিকেশন এবং SSE-এর মাধ্যমে ফ্রন্টএন্ডকে পরিষেবা দেয়। টাস্ক ইঞ্জিন planner ও একাধিক worker-এর সময়সূচি পরিচালনা করে।

প্রকল্পে দ্বৈত-গ্রাফ আর্কিটেকচার ব্যবহার করা হয়েছে:

  • অ্যাসেট গ্রাফ: বিভিন্ন টাস্কে ভাগ করা অ্যাসেটের সত্যভিত্তিক ভাণ্ডার। এতে রুট ডোমেইন, সাবডোমেইন, IP, পরিষেবা, অ্যাপ্লিকেশন ও এন্ডপয়েন্টের মতো নোড থাকে।
  • অনুসন্ধান গ্রাফ: প্রতিটি টাস্কে লক্ষ্য, উদ্দেশ্য, তথ্য, ইঙ্গিত ও আবিষ্কার রেকর্ড করে এবং উৎস-সম্পর্কের মাধ্যমে অনুসন্ধান প্রক্রিয়া বর্ণনা করে।
  • অ্যাঙ্কর সম্পর্ক: অনুসন্ধান নোডকে নির্দিষ্ট অ্যাসেটের সঙ্গে যুক্ত করে, যাতে অ্যাসেট টেস্ট কভারেজ ও অনুসন্ধানের পরিসর দেখা যায়।

Planner অনুসন্ধানের অবস্থা পড়ে উদ্দেশ্য বিতরণ করে। Worker উদ্দেশ্য গ্রহণ করে, টুল ব্যবহার করে কাজ সম্পন্ন করে এবং তথ্য, অ্যাসেট ও আবিষ্কার লিখে রাখে। গ্রাফে পরিবর্তন হলে Planner আবার সক্রিয় হয় এবং একটি ইভেন্ট-চালিত চক্র তৈরি হয়। একাধিক Worker অন্য Worker-এর কাজের প্রক্রিয়াও অনুসন্ধান করতে পারে। ভাগ করা todolist একাধিক ধাপের পরিকল্পনাকে নির্ভরতার ভিত্তিতে এগিয়ে নিতে সহায়তা করে।

ইনস্টলেশনের আগে প্রস্তুতি

প্রকল্প চালাতে অন্তত PostgreSQL প্রয়োজন। অনুসন্ধান চালানোর জন্য LLM কনফিগার করতে হবে। ANTHROPIC_API_KEY বা OPENAI_API_KEY ব্যবহার করা যায়, অথবা পরে Web ইন্টারফেসের «LLM কনফিগারেশন» পেজে তা পূরণ করা যায়।

ডেটাবেস ও অ্যাপ্লিকেশন দ্রুত চালু করতে Docker প্রস্তুত রাখা সুপারিশ করা হয়। যে ডিপ্লয়মেন্ট পদ্ধতিই বেছে নিন, আগে একটি বিচ্ছিন্ন স্থানীয় টেস্ট নেটওয়ার্ক তৈরি করুন, গুরুত্বপূর্ণ ডেটার ব্যাকআপ নিন এবং নিশ্চিত করুন যে পরীক্ষার লক্ষ্য স্থানীয় ল্যাব পরিবেশের অন্তর্ভুক্ত।

টাস্ক

পদ্ধতি এক: এক-ক্লিক ইনস্টলেশন স্ক্রিপ্ট ব্যবহার

README-তে এই পদ্ধতিই সুপারিশ করা হয়েছে। স্ক্রিপ্টটি Docker শনাক্ত বা ইনস্টল করবে এবং সম্পূর্ণ Docker ডিপ্লয়মেন্ট অথবা স্থানীয় কম্পাইল ও রান করার বিকল্প দেবে।

git clone https://github.com/kutukam/autonomous-pentest-agent.git
cd autonomous-pentest-agent
./install.sh

সম্পূর্ণ Docker ডিপ্লয়মেন্ট বেছে নিলে স্ক্রিপ্ট PostgreSQL পাসওয়ার্ড চাইবে। সরাসরি Enter চাপলে একটি এলোমেলো পাসওয়ার্ড তৈরি হবে। এরপর তা .env-এ লেখা হবে এবং docker compose up -d চালানো হবে। স্থানীয়ভাবে চালানোর ক্ষেত্রে বিদ্যমান ডেটাবেসে সংযোগ করা যায়, অথবা Docker দিয়ে ডেটাবেস চালু করা যায়। স্ক্রিপ্টটি config.json তৈরি করবে, এমবেড করা ফ্রন্টএন্ডসহ Go একক বাইনারি কম্পাইল করবে এবং পরিষেবা চালু করবে।

ইনস্টলেশন শেষ হলে http://localhost:8787 খুলুন। প্রথমবার প্রবেশের সময় /setup খুলে প্রশাসকের পাসওয়ার্ড সেট করুন।

পদ্ধতি দুই: Docker Compose ব্যবহার

পরিবেশ নিজে নিয়ন্ত্রণ করতে চাইলে সরাসরি Compose ব্যবহার করতে পারেন:

git clone https://github.com/kutukam/autonomous-pentest-agent.git
cd autonomous-pentest-agent
cp .env.example .env
docker compose up -d

এক্সিকিউশন প্রক্রিয়া

.env সম্পাদনা করে POSTGRES_PASSWORD পূরণ করুন এবং প্রয়োজনে ANTHROPIC_API_KEY কনফিগার করুন। চালু হওয়ার পর http://localhost:8787 খুলুন।

Docker ইমেজে সাধারণ টুলগুলো রয়েছে। ডেটা সংরক্ষণের জন্য ./skills এবং ./data bind mount হিসেবে ব্যবহৃত হয়। রিমোট MCP-এর জন্য সিস্টেম সেটিংসে Streamable HTTP বা পুরোনো SSE বেছে নেওয়া যায়। পুরোনো SSE ব্যবহার করলে সাধারণত URL হিসেবে /sse দিতে হয় এবং পরিষেবার নির্দেশনা অনুযায়ী Authorization=Bearer <token> রিকোয়েস্ট হেডার সেট করতে হয়।

পদ্ধতি তিন: প্রি-কম্পাইল করা বাইনারি ব্যবহার

Releases থেকে সংশ্লিষ্ট প্ল্যাটফর্মের কমপ্রেসড প্যাকেজ ডাউনলোড করা যায়। আনকমপ্রেস করার পর সাধারণত apagent, start.sh অথবা Windows-এর জন্য start.bat, skills/ এবং config.example.json থাকে।

cp config.example.json config.json
./start.sh

সরাসরি ./apagent চালানোর বদলে start.sh বা start.bat ব্যবহার করুন। প্রোগ্রাম বন্ধ হওয়ার পর এক্সিট কোড অনুযায়ী পুনরায় চালু করা হবে কি না, তা স্টার্টআপ স্ক্রিপ্ট নির্ধারণ করে। পেজের এক-ক্লিক আপডেট ফিচারও এই ব্যবস্থার ওপর নির্ভর করে। ব্যাকগ্রাউন্ডে চালাতে পারেন:

nohup ./start.sh >apagent.log 2>&1 &

পদ্ধতি চার: সোর্স কোড থেকে কম্পাইল

অনুসন্ধান চেইন

সোর্স থেকে কম্পাইল করার সময় প্রথমে ফ্রন্টএন্ডের স্ট্যাটিক ফাইল তৈরি করতে হবে। এরপর সেগুলো ব্যাকএন্ডের এমবেড ডিরেক্টরিতে কপি করে শেষে embedui ট্যাগ দিয়ে Go প্রোগ্রাম কম্পাইল করতে হবে।

cd web && npm ci && npm run build:static && cd ..
cp -r web/out server/webui/dist
CGO_ENABLED=0 go build -tags embedui -o apagent ./cmd/apagent
./start.sh

ক্রস-প্ল্যাটফর্ম রিলিজ প্যাকেজ তৈরি করতে চালান:

./build.sh --release

ডিফল্টভাবে Linux, macOS এবং Windows-এর জন্য একাধিক প্যাকেজ তৈরি হবে। APAGENT_TARGETS ব্যবহার করে লক্ষ্য কাস্টমাইজ করা যায়। UPX ডিফল্টভাবে সক্রিয় নয়, কারণ কমপ্রেস করা self-extracting বাইনারি কিছু Linux কার্নেল, ভার্চুয়ালাইজেশন পরিবেশ বা নিরাপত্তা নীতির সঙ্গে অসামঞ্জস্যপূর্ণ হতে পারে।

ডেটাবেস ও LLM কনফিগার করা

স্থানীয় কম্পাইল বা বাইনারি চালানোর সময় config.json-এ PostgreSQL কনফিগার করা যায়:

{
  "database": {
    "host": "127.0.0.1",
    "port": 5432,
    "user": "apagent",
    "password": "yourpass",
    "dbname": "apagent",
    "sslmode": "disable"
  }
}

আবিষ্কার

ডেটাবেস সংযোগ কনফিগারেশন ওভাররাইড করতে APAGENT_PG_DSN ব্যবহার করা যায়। পরিবেশ ভেরিয়েবলের মাধ্যমে LLM কনফিগার করা যায়:

export ANTHROPIC_API_KEY=sk-...
# অথবা
export OPENAI_API_KEY=...

ঐচ্ছিক প্যারামিটারগুলোর মধ্যে রয়েছে APAGENT_LLM_PROVIDER, APAGENT_LLM_MODEL, APAGENT_LLM_BASE_URL এবং APAGENT_LLM_PROXY। পরিবেশ ভেরিয়েবল ব্যবহার করতে না চাইলে UI-এর «LLM কনফিগারেশন» পেজে তথ্য পূরণ করুন। প্রতিটি টাস্কের Worker সংখ্যা «সিস্টেম সেটিংস» থেকে পরিবর্তন করা যায়; ডিফল্ট মান 3।

মৌলিক ব্যবহারের ধাপ

  1. প্রাথমিক সেটআপ সম্পন্ন করুন: স্থানীয় পরিষেবায় প্রবেশ করে /setup-এ প্রশাসকের পাসওয়ার্ড সেট করুন এবং ডেটাবেস সংযোগ পরীক্ষা করুন।
  2. LLM কনফিগার করুন: সিস্টেম পরিবেশ ভেরিয়েবল বা «LLM কনফিগারেশন» পেজে ব্যবহারযোগ্য মডেল ও প্রয়োজনীয় প্যারামিটার সেট করুন।
  3. স্থানীয় লক্ষ্য প্রস্তুত করুন: কেবল আপনার নিয়ন্ত্রণাধীন বিচ্ছিন্ন ল্যাব পরিবেশের অ্যাসেট যোগ করুন এবং নিশ্চিত করুন যে কোনো অনলাইন সিস্টেম বা প্রোডাকশন পরিষেবায় প্রবেশ হবে না।
  4. টাস্ক তৈরি ও পর্যবেক্ষণ করুন: টাস্ক পেজে টাস্ক পরিচালনা করুন এবং ড্যাশবোর্ড ও কার্যকলাপের প্রবাহে রানটাইম অবস্থা দেখুন।
  5. অনুসন্ধানের ফলাফল দেখুন: অনুসন্ধান চেইনের মাধ্যমে উদ্দেশ্য, তথ্য ও আবিষ্কারের সম্পর্ক বুঝুন এবং অ্যাসেট গ্রাফে একত্রিত অ্যাসেট দেখুন।
  6. এক্সিকিউশনের প্রমাণ পরীক্ষা করুন: সেশন, টুল কল ও ট্রাফিক পেজে প্রক্রিয়ার রেকর্ড দেখুন। মানুষের নিশ্চিতকরণ প্রয়োজন হলে ইন্টারসেপ্ট অনুমোদন পেজে তা পরিচালনা করুন।
অ্যাসেট কভারেজ ম্যাপ

অ্যাসেট কভারেজ ম্যাপ বলপ্রয়োগ-ভিত্তিক বিন্যাসে নির্ধারিত পরিসরের অ্যাসেট ও পরীক্ষিত নোড দেখায় এবং নোড ভাঁজ ও প্রসারিত করার সুবিধা দেয়। স্থানীয় ল্যাব পরিসরের কোন অ্যাসেট ইতিমধ্যে অনুসন্ধান করা হয়েছে, তা দ্রুত বোঝার জন্য এটি উপযোগী।

ScopeSentry থেকে অ্যাসেট সিঙ্ক্রোনাইজ করা

পুনরায় সংগ্রহের কাজ কমাতে প্রকল্পটি ScopeSentry থেকে অ্যাসেট সিঙ্ক্রোনাইজ করতে পারে। «অ্যাসেট সিঙ্ক্রোনাইজেশন» পেজ খুলে ScopeSentry ঠিকানা ও API Key পূরণ করুন। এরপর প্রকল্প বা টাস্ক অনুযায়ী সিঙ্ক্রোনাইজ করার লক্ষ্য ও অ্যাসেটের ধরন বেছে নিন।

অ্যাসেট

  • পরিসর অনুযায়ী ডোমেইন, সাবডোমেইন, IP, পোর্ট, সাইট এবং এন্ডপয়েন্টসহ বিভিন্ন সম্পদের ধরন নির্বাচন করা যায়।
  • ইমপোর্টের পর কোম্পানির সম্পদ-পরিসর অনুযায়ী সেগুলো একত্র করা হবে।
  • সিঙ্ক্রোনাইজেশনের ফলাফল Autonomous Pentest Agent-এর সম্পদ গ্রাফে যুক্ত হবে, যা পরবর্তী স্থানীয় পরীক্ষামূলক কাজগুলোতে ব্যবহার করা যাবে।
সম্পদ

ট্রাফিক রেকর্ড ও অনুমোদন

সিস্টেমে ট্রাফিক রেকর্ডিং প্রক্সি রয়েছে। ./start.sh -addr :8787 -proxy :8788-এর মতো পদ্ধতিতে ফ্রন্টএন্ড, API এবং ট্রাফিক প্রক্সির ঠিকানা নির্ধারণ করা যায়। Worker-এর টুল চালানোর প্রক্রিয়ায় কার্যকলাপের রেকর্ড সংরক্ষিত হয়। প্রয়োজনে টুলের কার্যক্রম মানব যাচাইয়ের জন্য ইন্টারসেপ্ট অনুমোদন ব্যবস্থা ব্যবহার করা হয়।

ট্রাফিক

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

দুর্বলতা পুনঃপরীক্ষা

কাজের বিবরণের「পুনঃপরীক্ষা」ট্যাবে পেজ অনুযায়ী দুর্বলতা নির্বাচন করা, পূর্ববর্তী সিদ্ধান্ত ও প্রমাণ দেখা এবং একটি স্বতন্ত্র পুনঃপরীক্ষা Agent সেশন শুরু করা যায়। দুর্বলতার তালিকা, দুর্বলতার বিবরণ এবং সম্পদ ভিউ—সবগুলোতেই পুনঃপরীক্ষার প্রবেশপথ রয়েছে।

পুনঃপরীক্ষার সিদ্ধান্তের মধ্যে রয়েছে「এখনও পুনরুৎপাদনযোগ্য」「সংশোধন করা হয়েছে」এবং「নিশ্চিত করা যায়নি」। প্রতিটি পুনঃপরীক্ষার সিদ্ধান্ত, প্রমাণ এবং সেশন লিংক দুর্বলতার বিবরণে সংরক্ষিত হয়। পুনঃপরীক্ষা সফল হলে এবং সিদ্ধান্ত「সংশোধন করা হয়েছে」হলে সিস্টেম স্বয়ংক্রিয়ভাবে দুর্বলতার নিষ্পত্তির অবস্থা আপডেট করবে; চলমান, ব্যর্থ, থামানো বা অন্য কোনো সিদ্ধান্তে মূল অবস্থা স্বয়ংক্রিয়ভাবে পরিবর্তিত হবে না।

ব্যাকএন্ড প্রথমবার চালু হলে সম্পাদনাযোগ্য「দুর্বলতা পুনঃপরীক্ষা」Agent, অর্থাৎ retester, পূর্বনির্ধারিতভাবে তৈরি হয়। Agent ব্যবস্থাপনায় এর প্রম্পট, LLM, রান বাজেট এবং টুল কনফিগার করা যায়। একই দুর্বলতা পুনঃপরীক্ষাধীন থাকলে সিস্টেম বিদ্যমান সেশন পুনরায় ব্যবহার করবে; থামানো, ব্যর্থতা বা পরিষেবা পুনরায় চালুর পর আবার শুরু করা যায়। README-তে আরও বলা হয়েছে, পূর্ববর্তী পুনঃপরীক্ষার রেকর্ড বর্তমানে দুর্বলতা রিপোর্ট এক্সপোর্ট বা কাজের আর্কাইভ প্যাকেজে অন্তর্ভুক্ত হয় না এবং ট্রাফিক প্যাকেজের সঙ্গেও স্বয়ংক্রিয়ভাবে যুক্ত হয় না।

সম্পদ কভারেজ মানচিত্র

রিভার্স প্রক্সি স্থাপন

ফ্রন্টএন্ড, API এবং SSE সাধারণত একই ব্যাকএন্ড পোর্ট থেকে সরবরাহ করা হয়, তাই সাধারণত NEXT_PUBLIC_SSE_BASE সেট করার প্রয়োজন নেই। Nginx-এর মাধ্যমে HTTPS প্রকাশ করলে SSE বাফারিং বন্ধ করতে হবে এবং দীর্ঘ রিড টাইমআউট নির্ধারণ করতে হবে:

server {
    listen 443 ssl;
    server_name your.domain.com;

    location / {
        proxy_pass http://127.0.0.1:8787;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 3600s;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

SSE পেজের চেয়ে ভিন্ন উৎস ব্যবহার করলেই কেবল বিল্ডের সময় NEXT_PUBLIC_SSE_BASE সেট করতে হবে। এই ভেরিয়েবলটি next build-এর সময় স্ট্যাটিক প্যাকেজে স্থায়ীভাবে যুক্ত হয়; কনটেইনার চালানোর সময় সেট করলে কার্যকর হবে না।

আপগ্রেড ও ডেটা সুরক্ষা

প্রকল্প আপগ্রেডের সময় শুধু প্রোগ্রাম প্রতিস্থাপন করা হয়; PostgreSQL ডেটা ভলিউম, ./data বা ./skills সক্রিয়ভাবে মুছে ফেলা হয় না। অ্যাপ্লিকেশন চালুর সময় ডেটাবেস কাঠামো初始化 ও মাইগ্রেশন আইডেমপোটেন্টভাবে সম্পন্ন হয়, তাই সাধারণত মাইগ্রেশন স্ক্রিপ্ট হাতে চালানোর প্রয়োজন নেই। তবুও আপগ্রেডের আগে ./data এবং ডেটাবেসের ব্যাকআপ নেওয়া উচিত।

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

Docker স্থাপনার ক্ষেত্রে পেজ আপডেট করলে শুধু প্রোগ্রাম প্রতিস্থাপিত হয়; ইমেজে থাকা Playwright, nmap ইত্যাদি টুলচেইন আপডেট হয় না। ইমেজ আপডেট করতে চালান:

ট্রাফিক

docker compose pull apagent
docker compose up -d apagent

রিপোজিটরির আপডেট স্ক্রিপ্টও ব্যবহার করা যায়:

./update.sh

স্থানীয় ডেভেলপমেন্ট ও পরীক্ষা

ডেভেলপমেন্ট মোডে একই সঙ্গে ব্যাকএন্ড, ট্রাফিক প্রক্সি এবং Next.js ডেভেলপমেন্ট সার্ভার চালু করা যায়:

./dev.sh

ডিফল্ট অ্যাক্সেস ঠিকানা হলো http://localhost:5173। আলাদাভাবেও চালানো যায়:

go run ./cmd/apagent
cd web && npm run dev
go test ./...

-tags embedui ছাড়া ব্যাকএন্ডে ফ্রন্টএন্ড এমবেড হবে না। শুধু ব্যাকএন্ড চালু না করে ফ্রন্টএন্ডের প্রিভিউ দেখতে চাইলে ব্যবহার করুন:

cd web && NEXT_PUBLIC_MOCK=1 npm run dev

সাধারণ সতর্কতা

  • PostgreSQL চালু আছে কি না নিশ্চিত করুন এবং ব্যবহারকারীর নাম, পাসওয়ার্ড, ডেটাবেসের নাম ও পোর্ট যাচাই করুন।
  • অ্যাক্টিভিটি স্ট্রিম সংযোগ সফল হলেও কোনো ইভেন্ট না থাকলে রিভার্স প্রক্সি বাফারিং বন্ধ করেছে কি না পরীক্ষা করুন এবং দীর্ঘ সংযোগের টাইমআউট যথেষ্ট দীর্ঘ কি না নিশ্চিত করুন।
  • প্রি-কম্পাইল করা সংস্করণ ব্যবহার করলে start.sh বা start.bat এড়িয়ে চলবেন না; অন্যথায় পেজ আপডেটের পর স্বয়ংক্রিয় প্রতিস্থাপন ও পুনরায় চালুর ব্যবস্থা সঠিকভাবে কাজ নাও করতে পারে।
  • ফ্রন্টএন্ডের স্ট্যাটিক সম্পদ পরিবর্তন করার পর অবশ্যই আবার npm run build:static চালিয়ে server/webui/dist-এ কপি করতে হবে এবং পুনরায় কম্পাইল করতে হবে।
  • আপগ্রেডের আগে ডেটাবেস, ./data এবং ./skills-এর ব্যাকআপ নিন; ডেটাবেস কাঠামো স্বয়ংক্রিয়ভাবে মাইগ্রেট হতে পারে, কিন্তু স্বয়ংক্রিয়ভাবে পূর্বাবস্থায় ফিরবে না।
  • বাস্তব অনলাইন সম্পদ, প্রোডাকশন ক্রেডেনশিয়াল বা সংবেদনশীল ডেটা স্থানীয় পরীক্ষামূলক সিস্টেমে ইমপোর্ট করবেন না।

সারসংক্ষেপ

Autonomous Pentest Agent Go পরিষেবা, Next.js ইন্টারফেস, PostgreSQL-এর দ্বৈত-গ্রাফ ডেটা মডেল এবং LLM-ভিত্তিক মাল্টি-Agent শিডিউলিং একত্র করে কাজ ব্যবস্থাপনা, এক্সপ্লোরেশন চেইন, সম্পদ কভারেজ, ট্রাফিকের রেকর্ড, অনুমোদন এবং দুর্বলতা পুনঃপরীক্ষার সুবিধা প্রদান করে। প্রথমে Docker বা ইনস্টলেশন স্ক্রিপ্ট ব্যবহার করে স্থানীয় বিচ্ছিন্ন পরিবেশে চালু করতে পারেন, এরপর ডেটাবেস ও LLM কনফিগার করে কাজ, সম্পদ গ্রাফ এবং এক্সিকিউশন সেশনের মাধ্যমে ধাপে ধাপে সিস্টেমের আচরণ বুঝতে পারেন। ব্যবহারের সময় প্রকল্পে ঘোষিত স্থানীয় শিক্ষামূলক ব্যবহার এবং সব আইনগত ও কমপ্লায়েন্সের প্রয়োজনীয়তা অবশ্যই মেনে চলুন।

প্রকল্পটি AGPL-3.0 লাইসেন্সের অধীন; পরিবর্তন করে নেটওয়ার্কের মাধ্যমে ব্যবহারকারীদের পরিষেবা প্রদান করলে লাইসেন্সের প্রয়োজনীয়তা অনুযায়ী সংশ্লিষ্ট সম্পূর্ণ সোর্স কোড প্রকাশ করতে হবে। বাস্তবায়নের আরও বিস্তারিত তথ্য রিপোজিটরির সোর্স কোড, norma SDK এবং প্রকল্পের LICENSE ফাইলে পাওয়া যাবে।