কেবলমাত্র একটি ডোমেনে HTTP ট্র্যাফিকের অনুমতি দেওয়ার জন্য আইপটিবলস বিধিগুলি rules


20

আমার সার্ভিসটি কেবলমাত্র সার্ফল্ট ডটকম থেকে / থেকে HTTP ট্র্যাফিকের অনুমতি দেওয়ার জন্য আমার মেশিনটি কনফিগার করতে হবে। অন্যান্য সমস্ত ওয়েবসাইট, পরিষেবা পোর্টগুলি অ্যাক্সেসযোগ্য নয়। আমি এই iptables নিয়মগুলি নিয়ে এসেছি:

#drop everything
iptables -P INPUT DROP
iptables -P OUTPUT DROP

#Now, allow connection to website serverfault.com on port 80
iptables -A OUTPUT -p tcp -d serverfault.com --dport 80 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#allow loopback
iptables -I INPUT 1 -i lo -j ACCEPT

এটি বেশ ভাল কাজ করে না:

  • আমি সমস্ত কিছু ফেলে দেওয়ার পরে এবং নিয়ম 3 এ চলে যাওয়ার পরে:

    iptables -A OUTPUT -p tcp -d serverfault.com --dport 80 -j ACCEPT

আমি এই ত্রুটি পেয়েছি:

iptables v1.4.4: host/network `serverfault.com' not found
Try `iptables -h' or 'iptables --help' for more information.

আপনি কি মনে করেন এটি ডিএনএসের সাথে সম্পর্কিত? আমারও কি এটির অনুমতি দেওয়া উচিত? অথবা আমি কি নিয়মগুলিতে আইপি ঠিকানাগুলি রেখেছি? আপনি কী ভাবেন যে আমি যা করার চেষ্টা করছি তা সহজ নিয়ম দিয়ে অর্জন করা যেতে পারে? কিভাবে?

আমি এই সম্পর্কে কোন সাহায্য বা ইঙ্গিত প্রশংসা করব। অনেক ধন্যবাদ!


2
Sstatic.net এবং অন্যদের ভুলে যাবেন না। serverfault.com সম্পূর্ণরূপে সার্ভারফ্লট ডটকম থেকে আসে না
জোরদাচে

আপনি কি অন্য সিস্টেমে প্রক্সি চালাতে পারবেন? এটি সেরা / সবচেয়ে সহজ সমাধান: সার্ভারফল্ট
ম্যাটডেম

উত্তর:


29

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

  1. ডিফল্ট ডিআআরপি নীতি প্রয়োগ করা হবে
  2. IPTables গন্তব্য হিসাবে একটি হোস্টের নাম গ্রহণ করে receives
  3. আইপিটিবেলস 'সার্ভারফল্ট.কম' এ একটি ডিএনএস সন্ধানের চেষ্টা করে
  4. ডিএনএস লুকআপটি ডিআআরপি ক্রিয়া দ্বারা অবরুদ্ধ

উত্স / গন্তব্য বিকল্পগুলি হোস্ট-নেম গ্রহণ করবে তবে এটি দৃ strongly়ভাবে নিরুৎসাহিত। ম্যান পৃষ্ঠাটি উদ্ধৃত করতে,

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

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

এছাড়াও, আপনার বিতরণের উপর নির্ভর করে আপনার ফায়ারওয়াল বিধিগুলি সংরক্ষণ করতে সক্ষম হওয়া উচিত যে সেগুলি শুরু করার সময় স্বয়ংক্রিয়ভাবে প্রয়োগ করা হবে।

সমস্ত কিছু জানা এবং আপনার স্ক্রিপ্টটি পুনরায় সাজানো, আমি এখানে যা প্রস্তাব দিচ্ছি তা এখানে।

# Allow loopback
iptables -I INPUT 1 -i lo -j ACCEPT

# Allow DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

# Now, allow connection to website serverfault.com on port 80
iptables -A OUTPUT -p tcp -d serverfault.com --dport 80 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Drop everything
iptables -P INPUT DROP
iptables -P OUTPUT DROP

3
সুন্দর, ভাল কারুকাজ উত্তর।
জ্যাকরবিনসন

1
আমি এটির প্রশংসা করি, যদিও আপনি অবশ্যই আমার ভুলটি মিস করেছেন। উফ।
স্কট প্যাক

3
প্রকৃতপক্ষে, আপনি iptables -Pআপনার স্ক্রিপ্টের যে কোনও জায়গায় আপনার বক্তব্য রাখতে পারেন , যেহেতু প্যাকেটগুলি শৃঙ্খলের শেষে "পড়ে" তখন চেইন নীতিগুলি প্রয়োগ করা হয়। আমি সাধারণত DROPআমার iptables স্ক্রিপ্টগুলির শীর্ষে নীতি বিবরণী (সাধারণত নীতিগুলি) রাখি।
স্টিভেন সোমবার

1
@ স্টিভেন: আপনি একেবারে ঠিক বলেছেন। ওপি তাদের ইন্টারেক্টিভভাবে টাইপ করছে বলে মনে হচ্ছে। আসুন ভান করুন আপনি এসএসএইচ দিয়ে আপনার হোস্টের সাথে সংযুক্ত আছেন এবং আপনার প্রথম নিয়মটি পলিসি ডিআরপি-র জন্য is আপনি আর কোনও বিধি টাইপ করার আগে আপনার এসএসএইচ সংযোগটি বাদ দেওয়া হবে। এটি একই সময়সীমার সমস্যা, যদি সে প্রকাশ্যে আসে তার চেয়ে আলাদা কোনও প্রকাশ ঘটে।
স্কট প্যাক

ধন্যবাদ। এই চেষ্টা করছিল। তবে যোগ না করে কাজ করেননি sudo iptables -I OUTPUT 1 -o lo -j ACCEPT। এটি যুক্ত করা উচিত নয়?
কিরণ

7

যোগ

iptables -A OUPUT -p udp --dport 53 -j ACCEPT

ডিএনএস দেখার জন্য অনুমতি দেয়।


5

ওয়েব প্রক্সি এবং / অথবা ফিল্টার দিয়ে এই জাতীয় প্রয়োজনীয়তা আরও ভালভাবে পরিচালনা করা যেতে পারে। এটি করার জন্য ডান্সগর্ডিয়ান কনফিগার করা যায়। ফিল্টারটির মাধ্যমে আপনার ট্র্যাফিক জোর করতে আপনাকে NAT বিধি ব্যবহার করতে হবে।

ফিল্টার করার জন্য iptables ব্যবহার করা সম্পর্কিত আইপি অ্যাড্রেস থেকে যে কোনও সাইট উপলব্ধ allow এটি সাধারণত পুরো ওয়েবের একটি ছোট উপসেট।


1
সম্পূর্ণরূপে এটির সাথে একমত। iptablesএটি সম্ভবত এখানে ব্যবহার করার জন্য ভুল সরঞ্জাম, কারণ এটি ডিএনএস নামগুলির সাথে বিশেষত ভাল আচরণ করে না। উপযুক্ত ফিল্টার সেটিংস সহ একটি ওয়েব প্রক্সি আরও ভাল ফিট।
স্টিভেন সোমবার

2

আমি ভয় করি iptables এই স্তরে কাজ করে না, এটি কেবল আইপি ঠিকানার বিষয়ে চিন্তা করে, হোস্ট-নেম নয়। আপনি যদি একই আইপি-তে অন্য নামের ভার্চুয়াল হোস্টগুলিতে অ্যাক্সেস অবরুদ্ধ করতে চান তবে আপনাকে .htaccess ফাইলগুলি স্থাপন করা উচিত at


জিনিসটি হ'ল, যখন আমি "সমস্ত কিছু ফেলে না দিয়ে" নিয়ম 3 চেষ্টা করি তখন এটি আইপ্যাটেবলগুলির সাথে সূক্ষ্মভাবে কাজ করে!
জেনেট

2
হুম, আমি প্রশ্নটি ভুল করে পড়েছি। ঠিক আছে, ব্যাকগ্রাউন্ডে যা ঘটছে তা হ'ল আইপটিবলগুলি সার্ভারফ্লট ডট কমকে .3৪.৩৪.১১.1.১২ তে সমাধান করবে (সমাধান করার কারণে কেন কাজ হচ্ছে না তা বুঝতে স্লিলিব্রি থেকে উত্তর দেখুন)। তবে, যেহেতু iptables হোস্ট-নেমগুলি বুঝতে পারে না, এবং কেবল আইপিটিকে অনুমতি দিচ্ছে, তাই আপনি এই আইপি-র কোনও ওয়েবসাইটের সাথে সংযোগ করতে সক্ষম হবেন, যদি এর একাধিক সাইট না থাকে।
নিলাল ডোনেগান

2
@ এমিলি, এটি নিয়ম যুক্ত করা যেতে পারে, তবে সার্ভারসফল্ট ডটকমের আইপি পরিবর্তন হলে ট্র্যাফিকের অনুমতি দেওয়া হবে না। গুগল ডটকমের মতো এমন সাইটকে অনুমতি দেওয়া যাতে শত শত ঠিকানা রয়েছে যা ঘন ঘন পরিবর্তিত হয় তা কার্যকর হবে না।
জোড়াদেচে

1

আপনার নিজের ওয়েব সার্ভারে এটি কনফিগার করতে হবে। iptables একটি প্যাকেট ফিল্টার হয়। এইচটিটিপি লেনদেনগুলি সাইটটির নামটি (যেমন স্ট্যাকওভারফ্লো) টিসিপি পে-লোডের অংশ হিসাবে প্রেরণ করে (যেমন টিসিপি শিরোনামের অংশ হিসাবে নয় যা iptables সহজেই পড়তে পারে)।

যেটি দেওয়া হয়েছে এবং এইচটিটিপি লেনদেনগুলি প্রায় একাধিক প্যাকেটে ছড়িয়ে পড়েছে (যেমন আপনি HTTP শিরোনামের সাথে কেবল একটি স্ট্রিং মেলে না) আপনার ওয়েবসারভার কনফিগারেশন বা সামনে একটি প্রক্সি দ্বারা এটি আরও ভাল পরিচালনা করা হয় এটা।

এর পিছনে যুক্তিটি জানার জন্য দরকারী হবে, অন্যান্য কয়েকটি বিকল্প রয়েছে:

  1. যদি তারা ভুল ইউআরএল প্রবেশ করে তবে সঠিক URL এ পুনঃনির্দেশ করুন (উদাহরণস্বরূপ: তারা www.stackoverflow.com লিখলে স্ট্যাকওভারফ্লো.কম এ পুনর্নির্দেশ করুন)
  2. আপনার ওয়েবসার্वरকে বলুন যে স্ট্যাকওভারফ্লো ডট কম ব্যতীত অন্য হোস্টদের পরিবেশন করবেন না
  3. সাইটটিকে একটি পৃথক আইপিতে রাখুন যা আর কিছুই সমাধান করে না এবং কেবল এটির জন্য আপনার ওয়েবসার্ভারটি পান।

হাই ফিল, আমি নিশ্চিত না যে আমি কোন ওয়েবসভারটি বুঝতে পেরেছি? আমার কাছে ওয়েবসভার নেই। আমি আমার কম্পিউটারে এই কনফিগারেশনটি করছি।
জেনিট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.