Iptables নিয়মটি ইতিমধ্যে বিদ্যমান আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?


41

ইন্টারনেট থেকে টিসিপি পোর্টে সংযোগগুলি ব্লক করতে আইপটবেলে একটি বিধি যুক্ত করতে হবে।

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

Iptables নিয়মটি ইতিমধ্যে বিদ্যমান আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?


বিকল্পভাবে, এই মোড়কটি
সাম্পাব্লুকপার

উত্তর:


44

-C --checkসাম্প্রতিক iptables সংস্করণগুলিতে একটি নতুন বিকল্প রয়েছে।

# iptables -C INPUT -p tcp --dport 8080 --jump ACCEPT
iptables: Bad rule (does a matching rule exist in that chain?).
# echo $?
1

# iptables -A INPUT -p tcp --dport 8080 --jump ACCEPT

# iptables -C INPUT -p tcp --dport 8080 --jump ACCEPT
# echo $?
0

পুরানো iptables সংস্করণগুলির জন্য, আমি গ্যারেটের পরামর্শটি ব্যবহার করব:

# iptables-save | grep -- "-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT"

12

নতুন -Cবিকল্পটি সন্তোষজনক নয়, কারণ এটি ব্যবহারের সময়-যাচাই-বাছাই (ট্যাকটিউইউ) রেস শর্তের জন্য উন্মুক্ত। যদি দুটি প্রক্রিয়া একই সময়ে প্রায় একই নিয়ম যুক্ত করার চেষ্টা করে তবে -Cএটিকে দু'বার যুক্ত করা থেকে রক্ষা করবে না।

সুতরাং, এটি grepসমাধানের চেয়ে আসলে ভাল কিছু নয় । আউটপুট উপর একটি সঠিক পাঠ্য প্রক্রিয়াকরণ iptables-saveকাজ হিসাবে নির্ভরযোগ্যভাবে কাজ করতে পারে -C, যেহেতু আউটপুট টেবিলগুলির রাজ্যের একটি নির্ভরযোগ্য স্ন্যাপশট।

যা প্রয়োজন তা হ'ল একটি --ensureবিকল্প যা পরমাণুগতভাবে এটির উপস্থিতি না থাকলে কেবল একটি নিয়ম পরীক্ষা করে এবং যুক্ত করে। তদ্ব্যতীত, নিয়মটি সঠিক অবস্থানে স্থানান্তরিত হলে এটি চমৎকার হবে যেখানে ইতিমধ্যে অস্তিত্ব না থাকলে একটি নতুন নিয়ম সন্নিবেশ করা হবে ( --ensure-move)। উদাহরণস্বরূপ যদি iptables -I 1কোনও শৃঙ্খলের মাথায় কোনও নিয়ম তৈরি করতে ব্যবহৃত হয় তবে সেই নিয়মটি ইতিমধ্যে সপ্তম অবস্থানে রয়েছে, তবে বিদ্যমান নিয়মটি প্রথম অবস্থানে চলে যেতে হবে।

এই বৈশিষ্ট্যগুলি ব্যতীত, আমি মনে করি যে এই ছদ্ম কোডের উপর ভিত্তি করে একটি শেল স্ক্রিপ্ট লুপটি লেখার একটি সম্ভাব্য কাজ রয়েছে:

while true ; do
  # delete all copies of the rule first

  while copies_of_rule_exist ; do
    iptables -D $RULE
  done

  # now try to add the rule

  iptables -A $RULE # or -I 

  # At this point there may be duplicates due to races.
  # Bail out of loop if there is exactly one, otherwise
  # start again.
  if exactly_one_copy_of_rule_exists ; then
    break;
  fi
done

এই কোডটি চারদিকে ঘুরতে পারে; এটি গ্যারান্টি দেয় না যে দু'জন বা আরও বেশি রেসারের একটি নির্দিষ্ট সংখ্যার পুনরাবৃত্তি হবে। কিছু এলোমেলো তাত্পর্যপূর্ণ ব্যাক অফ ঘুমগুলি এটিতে সহায়তা করতে যোগ করা যেতে পারে।


1
আমি যুক্ত করতে পারি যে এই আদেশটি আপনার নিয়মটি যুক্ত করার সঠিক উপায়টি আপনাকে চিহ্নিত করতে হবে এমন সাধারণ কারণে সন্তোষজনক নয়। আমি আমার সেটআপ দিয়ে পরীক্ষাটি করেছিলাম, এবং এটি কোনও নিয়ম খুঁজে
পাচ্ছে

আপনি যদি সাময়িকভাবে কোনও নিয়ম সরিয়ে থাকেন তবে আপনি কিছু ভেঙে যেতে পারেন ...
মেহরদাদ ২ad

5

এটি কিছুটা পিছনের দিকে মনে হতে পারে তবে এটি আমার পক্ষে কাজ করে - প্রথমে বিধি মোছার চেষ্টা করুন।

iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP;

আপনার সাথে একটি বার্তা পাওয়া উচিত:

iptables: খারাপ নিয়ম (সেই শৃঙ্খলে কি কোনও মিলের নিয়ম বিদ্যমান?)

তারপরে আপনার নিয়মটিকে সাধারণ হিসাবে যুক্ত করুন:

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP;


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

গুড বিন্দু @sampablokuper: এই কৌশল সম্ভবত নিয়ম গ্রহণ এবং না বেশী ড্রপ নিরাপত্তার কারণে জন্য শুধুমাত্র উপযুক্ত
lucaferrario

আমি একই কাজ শেষ!
warhansen

4

শুধু তালিকা এবং এটি অনুসন্ধান?

iptables --list | grep $ip

... বা তবে আপনার বিধি নির্দিষ্ট করা আছে। আপনি যদি grep -qএটি ব্যবহার করেন তবে কিছুই আউটপুট হবে না এবং আপনি কেবলমাত্র এর সাথে রিটার্ন মানটি পরীক্ষা করতে পারবেন$?


3
আমি iptables-save|grep $ipপরিবর্তে এটি প্রস্তাব করব কারণ এটি আরও সহজেই পার্সেবল ফরম্যাট, বিশেষত স্ক্রিপ্টে। আপনি চাইলে আপনি কমান্ডের সঠিক বাক্য গঠনও পরীক্ষা করতে পারেন।
গ্যারেট

1
এর কোনটিই আসলে প্রশ্নের উত্তর দেয় না, কারণ একাধিক নিয়মের iptables-save|grep $ipখুব ভাল মিল থাকতে পারে । সম্ভবত সম্পূর্ণ নিয়মের স্পেসিফিকেশন পরীক্ষা করার জন্য ব্যবহার করা যেতে পারে , তবে এটি এখনও কিছুটা হ্যাক: ফিরিয়ে দেওয়া ফর্ম্যাটটি স্ক্রিপ্টের সঠিক নিয়মের সাথে মেলে না। বিকল্পগুলি একটি অন্য ক্রমে উত্পন্ন করতে পারে, জিনিসগুলি (যেমন ) এবং আরও কিছু যোগ করতে পারে । iptables-saveiptables-saveiptables-save-m tcp
লার্স্ক

মনে রাখবেন যে iptables --listসুপরিচিত বন্দরগুলি সমাধান করার চেষ্টা করবে। সুতরাং কোনও বন্দরের জন্য গ্রেপ করার আগে এটি নিশ্চিত করুন।
ফাবিয়েন হাদ্দাদি

0

Https://serverfault.com/questions/628590/ ডুপ্লিকেট- চিঠিযোগ্য-rules এ বর্ণিত হিসাবে প্রথমে ডুপ্লিকেটগুলি যুক্ত করার পরে অপসারণ সম্পর্কে কীভাবে । সবচেয়ে সহজ (সংলগ্ন রেখার জন্য) বলে মনে হচ্ছে

iptables-save | uniq | iptables-restore

0

আপনার স্ক্রিপ্ট থেকে নকল নিয়ম এড়াতে, নীচের লাইন যুক্ত করুন।

iptables -C -INPUT -p tcp --dport 8080 --jump ACCEPT || iptables -A -INPUT -p tcp --dport 8080 --jump ACCEPT

প্রথমবার যখন উপরের কমান্ডটি চালিত হয়, আমরা নীচের বার্তাটি পর্যবেক্ষণ করব

iptables: খারাপ নিয়ম (সেই চেইনে কোনও মিলের নিয়ম বিদ্যমান?)

এটি কেবল তথ্যের জন্য। কমান্ডের দ্বিতীয়ার্ধটি বিধি যুক্ত করার বিষয়টি নিশ্চিত করবে।

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