Linux-এ Transmission: প্রক্রিয়ার মালিক অনুযায়ী বেরোনো ট্রাফিক প্রয়োগ করুন
পিয়ার পোর্ট পুরো গল্প নয়। ফায়ারওয়াল নিয়মকে ক্লায়েন্টের অ্যাকাউন্টে সীমাবদ্ধ করুন, উভয় ঠিকানা পরিবার ঢাকুন এবং টানেল বন্ধ থাকলে পরীক্ষা করুন।
Transmission-এর আগমনী পোর্ট অবরুদ্ধ করা কোনো VPN নীতি নয়। টরেন্ট ক্লায়েন্ট পিয়ার ও ট্র্যাকারদের দিকে বহির্গামী সংযোগ খোলে, নাম সমাধান করে এবং দূরবর্তী নিয়ন্ত্রণের জন্য শ্রবণকারী খুলতে পারে, আর এগুলোর প্রতিটি এমন ইন্টারফেস দিয়ে বেরোতে পারে যা আপনি ইচ্ছা করেননি। পাঁচটি যাচাই ক্রমানুসারে করুন এবং সীমা হিসেবে ফায়ারওয়াল নিয়মকে, ক্লায়েন্টের সেটিংসকে নয়, ধরুন। শেষ দুটি যাচাই সেই দুটি যা মানুষ এড়িয়ে যায়, আর টানেল পড়ে গেলে গ্যারান্টি টেকে কি না তা তারাই নির্ধারণ করে।
যে প্রক্রিয়ার স্থানান্তরের মালিকানা আছে তার নাম দিন
ডেস্কটপ অ্যাপ্লিকেশন ও সিস্টেম ডেমন আলাদা অ্যাকাউন্টে চলে, এবং মালিকভিত্তিক নিয়ম প্রোগ্রামের নামের বদলে অ্যাকাউন্ট অনুসরণ করে। যেকোনো নিয়ম লেখার আগে জেনে নিন এদের মধ্যে কোনটি চলছে। নিবেদিত সেবা অ্যাকাউন্ট নীতিকে সঠিক বিষয় দেয়, অন্যদিকে ডেস্কটপ ব্যবহারকারী তার পরিচয় ব্রাউজার, সম্পাদক এবং সেশনের বাকি সবকিছুর সাথে ভাগ করে। UID নিশ্চিত করুন, প্যাকেজের অ্যাকাউন্ট নামটাই ব্যবহৃত হচ্ছে বলে ধরে নেবেন না।
systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon
অ্যাকাউন্ট এখনো না থাকলে এই উদ্দেশ্যেই এটি তৈরি করুন এবং চালানোর জন্য আর কিছু দেবেন না। অ্যাকাউন্ট ও UID নিয়মের মন্তব্যে লিখুন, কারণ বিষয়হীন নিয়ম এমন নিয়ম যা কেউ নিরাপদে সম্পাদনা করতে পারে না।
শোনার ক্ষেত্রগুলো পথ থেকে আলাদা করুন
Transmission 4.x পিয়ার শোনার ঠিকানাগুলো rpc-bind-address থেকে আলাদাভাবে নথিভুক্ত করে, এবং এই পার্থক্য গুরুত্বপূর্ণ। RPC সেটিং শুধু দূরবর্তী নিয়ন্ত্রণের শ্রবণকারী নিয়ন্ত্রণ করে, তাই তা বদলালে পিয়ার ট্রাফিকের জন্য পথ নির্বাচিত হয় না। দুটি সেটিংকে একটি হিসেবে পড়াই দেখতে সতর্ক কনফিগারেশনও ঝরতে থাকার সবচেয়ে সাধারণ কারণ। একই নথি পিয়ারের শোনার ঠিকানা অবৈধ হলে একটি বিকল্প পথ বর্ণনা করে, অর্থাৎ অনুপলব্ধ ঠিকানা নথিভুক্ত বিকল্প অবস্থা, কোনো নিশ্চিত প্রত্যাখ্যান নয়।
grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json
ক্লায়েন্টের নিয়ন্ত্রণগুলো যা তার জন্য তা-ই ব্যবহার করুন এবং গ্যারান্টি ফায়ারওয়ালে রাখুন। শোনার সেটিং এখনো কাজে লাগতে পারে, কিন্তু তা প্রমাণ করে না যে ট্র্যাকারদের সঙ্গে যোগাযোগ, স্থানীয় আবিষ্কার বা অর্পিত অনুসন্ধান সবই টানেল দিয়ে বেরোয়। যখন দুটো মতভেদ করে, ফায়ারওয়ালই সিদ্ধান্ত নেয়।
মালিক মিল সঠিক চেইনে লিখুন
মালিক মিল নিয়ে Netfilter-এর নির্দেশিকা ব্যাখ্যা করে স্থানীয়ভাবে তৈরি প্যাকেট কীভাবে সকেট ফাইলের মালিক ব্যবহারকারী বা দলের প্রতি আরোপিত হয়। এই আরোপণ সামনে পাঠানো ট্রাফিক পর্যন্ত বিস্তৃত হয় না, এবং অতিরিক্ত দলের মিলের জন্য স্পষ্ট অপশন লাগে। আপনি যে এক্সটেনশন সত্যিই ব্যবহার করছেন তার নির্দেশিকা পড়ুন, পাওয়া প্রথম উদাহরণটি নয়।
iptables -A OUTPUT -m owner --uid-owner transmission -o tun0 -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner transmission -j REJECT
ip6tables -A OUTPUT -m owner --uid-owner transmission -o tun0 -j ACCEPT
ip6tables -A OUTPUT -m owner --uid-owner transmission -j REJECT
ক্রম মিলের মতোই গুরুত্বপূর্ণ। চেইনে উপরের ব্যাপক অনুমোদন নিচের সুনির্দিষ্ট প্রত্যাখ্যানকে নিষ্ক্রিয় করে, তাই নিয়ম যোগ করে আশা করার বদলে পুরো চেইন পর্যালোচনা করুন। হোস্ট IPv6 চালালে উভয় ঠিকানা পরিবার অন্তর্ভুক্ত করুন, কারণ শুধু v4 নীতি এমন একটি পথ খোলা রাখে যা কেউ নজরে রাখে না। নিয়মগুলো ক্লায়েন্ট ও টানেলের পুনরায় চালুর মধ্যেও ইনস্টল করা রাখুন।
tun0 হারিয়ে গেলে কী হবে তা ঠিক করুন
ব্যর্থতার নীতি এই অনুশীলনের মূল কথা। টানেল হারিয়ে গেলে এবং একই হুক নিয়মগুলো সরিয়ে দিলে, ক্লায়েন্ট ভৌত ইন্টারফেস ব্যবহার করতে স্বাধীন থাকে যতক্ষণ অন্য কিছু তাকে থামায়। নিরাপদ নকশা নিয়মগুলো রাখে এবং তাদের প্রত্যাখ্যান করতে দেয়, আর এটাই সীমাকে টানেলের স্বাস্থ্য থেকে স্বাধীন করে। যে হুক নিয়মগুলোও মুছে দেয় তা ব্যর্থতার নীতির ঠিক উল্টো।
ip link show tun0
iptables -S OUTPUT
এটি ইচ্ছাকৃতভাবে পরীক্ষা করুন: টানেল থামান, এমন স্থানান্তর শুরু করুন যা ছেড়ে দেওয়া নিরাপদ এবং দেখুন কিছু বেরোয় কি না। তারপর টানেল ফিরিয়ে আনুন এবং অভীষ্ট পথ আবার কাজ করে বলে নিশ্চিত করুন।
নিয়ম যে পথগুলো দেখতে পায় না সেগুলো ঢাকুন
নাম সমাধান একটি আলাদা রিজলভার প্রক্রিয়া করতে পারে, এবং নামস্থান বা নিবেদিত গেটওয়ে আরেকটি সীমা দিতে পারে যদি তাদের ভাগাভাগি ও বুটস্ট্র্যাপ পথ সেজন্য তৈরি হয়। DNS কোন উপাদানের মালিকানা এবং তা একই নির্গমন নিয়ম মেনে চলে কি না তা ঠিক করুন। তারপর RPC দেখুন: যদি rpc-whitelist ব্যবহৃত হয়, অনুমোদিত ব্যবস্থাপনা নেটওয়ার্ক চুক্তির অংশ, আর বিস্তৃত RFC1918 পরিসর নয়।
ss -tunp | grep -i transmission
ইন্টারফেস কাউন্টার কোনো পর্যবেক্ষণকে সমর্থন করতে পারে, কিন্তু কোন প্রক্রিয়া বাইট তৈরি করেছে তা প্রমাণ করতে পারে না। এমন স্থানান্তর করুন যা ছাড়ার অনুমতি আছে: প্রথমে কাজ করা পথে, তারপর শুরুতে টানেল ছাড়া, এরপর বাধা, পুনঃসংযোগ এবং সদ্য তৈরি ইন্টারফেসের মধ্য দিয়ে। নতুন প্রচেষ্টা এবং আগে থেকেই খোলা সংযোগ দুটোই পরীক্ষা করুন, কারণ নিয়ম পুরোনো সকেটে প্রয়োগ না হয়ে থাকতে পারে। তারিখ, অ্যাকাউন্ট ও ফলাফল পরীক্ষার সঙ্গে লিখে রাখুন।
পুরো চেইন পরিষ্কার করা উদাহরণ পেস্ট করা একটি ছিদ্রের বদলে কয়েকটি ছিদ্র দেয়, তাই নিয়ম মুছে ফেলার বদলে যোগ করুন। যখন পাঁচটি যাচাইই পাস হয়, গ্যারান্টি স্পষ্ট: ক্লায়েন্টের ট্রাফিক টানেল দিয়ে বেরোয় বা একেবারেই বেরোয় না, এবং যে নিয়ম এটি প্রয়োগ করে তা টানেলের নিজের ব্যর্থতাও সহ্য করে।