আইপিটিবলগুলি এলিয়াস্তৃত আইপিএসে মাইএসকিএল সংযোগের অনুমতি দিচ্ছে না?


10

আমার একটি সার্ভারে মোটামুটি সহজ iptables ফায়ারওয়াল রয়েছে যা মাইএসকিউএল পরিষেবাদি সরবরাহ করে, তবে আইপটিবলগুলি মনে হয় আমাকে খুব বেমানান ফলাফল দিচ্ছে।

স্ক্রিপ্টে ডিফল্ট নীতিটি নিম্নরূপ:

iptables -P INPUT DROP

এরপরে আমি নিম্নলিখিত বিধি দ্বারা মাইএসকিউএলটিকে সর্বজনীন করতে পারি:

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

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

iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.184 -j ACCEPT 
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.196 -j ACCEPT 
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.251 -j ACCEPT 

উপরোক্ত নিয়মগুলি একবার হয়ে গেলে নিম্নলিখিতটি ঘটে:

  • আমি করতে এটি ডিফল্ট IP ঠিকানা ব্যবহার .184, .196 এবং .251 হোস্ট ঠিক সূক্ষ্ম যতদিন মাইএসকিউএল সার্ভারে সংযোগ করছি থেকে মাইএসকিউএল সার্ভারে সংযোগ বা ডিফল্ট আইপি এড্রেস হিসাবে একই সাবনেট মধ্যে একটি IP ওরফে।

  • আমি যখন .184 বা .196 হোস্ট থেকে আসছি তখন সার্ভারের ডিফল্ট আইপি থেকে আলাদা সাবনেট থেকে সার্ভারকে বরাদ্দ করা আইপি এলিয়াসগুলি ব্যবহার করে মাইএসকিউএল সংযোগ করতে পারছি না , তবে .251 ঠিক কাজ করে। .184 বা .196 হোস্টগুলি থেকে, একটি টেলনেট প্রচেষ্টা কেবল স্তব্ধ হয়ে যায় ...

    # telnet 209.xxx.xxx.22 3306
    Trying 209.xxx.xxx.22...
    
  • যদি আমি .251 লাইনটি সরিয়ে ফেলি (সর্বশেষ বিধিটি যোগ করে .196 তৈরি করে), .196 হোস্টটি এখনও আইপি এলিয়াসগুলি ব্যবহার করে মাইএসকিউএলে সংযুক্ত হতে পারে না (সুতরাং এটি বিধিবিধানের ফলে নয় এমন নিয়মের ক্রম নয়)। আমি জানি, এই বিশেষ পরীক্ষাটি নির্বোধ ছিল কারণ এই তিনটি নিয়ম কী অর্ডারে যুক্ত করা উচিত তা বিবেচনা করা উচিত নয়, তবে আমি বুঝতে পেরেছিলাম যে কেউ জিজ্ঞাসা করতে পারে।

  • যদি আমি "সর্বজনীন" নিয়মে ফিরে যাই তবে সমস্ত হোস্ট মাইএসকিউএল সার্ভারের সাথে ডিফল্ট বা এলিয়াসযুক্ত আইপি (সাবনেটে) ব্যবহার করে সংযোগ করতে পারে:

    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    

সার্ভারটি সেন্টোস 5.4 ওপেনভিজেড / প্রক্সমক্স পাত্রে (2.6.32-4-pve) চলছে।

এবং, কেবলমাত্র যদি আপনি iptables স্ক্রিপ্টের প্রসঙ্গে সমস্যার বিধিগুলি দেখতে পছন্দ করেন তবে এখানে এটি (xxx = মুখোশযুক্ত অষ্টেক্ট):

# Flush old rules, old custom tables
/sbin/iptables --flush
/sbin/iptables --delete-chain

# Set default policies for all three default chains
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

# Enable free use of loopback interfaces
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# All TCP sessions should begin with SYN
/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Accept inbound TCP packets (Do this *before* adding the 'blocked' chain)
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow the server's own IP to connect to itself
/sbin/iptables -A INPUT -i eth0 -s 208.xxx.xxx.178 -j ACCEPT

# Add the 'blocked' chain *after* we've accepted established/related connections
#   so we remain efficient and only evaluate new/inbound connections
/sbin/iptables -N BLOCKED
/sbin/iptables -A INPUT -j BLOCKED

# Accept inbound ICMP messages
/sbin/iptables -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -p ICMP --icmp-type 11 -j ACCEPT

# ssh (private)
/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s xxx.xxx.xxx.xxx -j ACCEPT          

# ftp (private)
/sbin/iptables -A INPUT -p tcp --dport 21 -m state --state NEW -s xxx.xxx.xxx.xxx -j ACCEPT          

# www (public)
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT                                
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT                               

# smtp (public)
/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT                                
/sbin/iptables -A INPUT -p tcp --dport 2525 -j ACCEPT                              

# pop (public)
/sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT                               

# mysql (private)
/sbin/iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.xxx.xxx.184 -j ACCEPT 
/sbin/iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.xxx.xxx.196 -j ACCEPT 
/sbin/iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.xxx.xxx.251 -j ACCEPT 

কোন ধারনা? আগাম ধন্যবাদ. :-)


1
না .184 or .196 hostsক্লায়েন্ট হোস্ট এছাড়াও আপনার অন্য সাবনেট অতিরিক্ত IP ঠিকানা আছে? যদি আপনি কিছু করেন tcpdump -qn port 3306এবং চেষ্টা করেন এবং সেই সিস্টেমগুলির মধ্যে একটির সাথে সংযুক্ত হন তবে আপনি কী দেখছেন? আপনি যে উত্সের ঠিকানাটি আশা করেছেন তা কি দেখছেন?
জোরডাচ

1
ধন্যবাদ, জোর্দাচে! যে এটি সমাধান। .251 হোস্টের অন্য সাবনেট থেকে কোনও আইপি নির্ধারিত হয়নি। অন্য দুটি হোস্ট (.184 এবং .196) করেন এবং তাই যখন তারা অন্য সাবনেটের একটি আইপি সংযুক্ত হন, তখন সেই হোস্টগুলির উত্স আইপি একই সাবনেটের একটি আইপিতে স্যুইচ করে। আমি ভেবেছিলাম যে বহির্গামী / উত্স আইপি সর্বদা নির্ধারিত ডিফল্ট হবে। তবে, tcpdump স্পষ্টভাবে দেখায় যে উত্স আইপি 209.xxx.xxx.xxx সাবনেটে পরিবর্তিত হয় যখনই সে একই সাবনেটে কোনও আইপিকে সংযুক্ত করে। (তবে শারীরিক প্রক্সমক্স হোস্টের কাছ থেকে tcpdump চালাতে হবে)) আপনি একজন বুদ্ধিমান। ধন্যবাদ!
কার্টিস

উত্তর:


8

.184 বা .196 হোস্ট ক্লায়েন্ট হোস্টগুলির কি আপনার অন্যান্য সাবনেটে অতিরিক্ত আইপি ঠিকানা রয়েছে?

যদি আপনি কিছু করেন tcpdump -qn port 3306এবং চেষ্টা করেন এবং সেই সিস্টেমগুলির মধ্যে একটির সাথে সংযুক্ত হন তবে আপনি কী দেখছেন? আপনি যে উত্সের ঠিকানাটি আশা করেছেন তা কি দেখছেন? এটি সম্ভবত একটি সরল রুটিং সমস্যা।

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

10.2.13.0/24 dev eth1  proto kernel  scope link  src 10.2.13.1 
10.2.4.0/23 dev eth0  proto kernel  scope link  src 10.2.4.245 
default via 10.2.4.1 dev eth0 

সুতরাং একটি বহুত্বক সিস্টেমের জন্য এই উদাহরণের রুট টেবিলটি দেওয়া হয়েছে, এর জন্য নির্ধারিত যে কোনও কিছুই 10.2.13.0/24আসবে 10.2.13.1এবং এর জন্য নির্ধারিত কিছু 10.2.4.0/23আসবে 10.2.4.245

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