কোনও ওয়েবসারভারের জন্য নিয়ম শুরু করার জন্য ভাল আইপটিবলগুলি?


12

আমি একটি নতুন সেন্টোস 5.4 সার্ভার ইনস্টল করছি এবং আমি মি iptables শুরু করার জন্য পরিষ্কার নিয়মের একটি সেট রাখতে চাই।

শুরু করার ভাল নিয়মগুলি কী হবে?

এটি কি একটি ভাল সূচনা পয়েন্ট:

# Allow outgoing traffic and disallow any passthroughs

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Allow traffic already established to continue

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow ssh, ftp and web services

iptables -A INPUT -p tcp --dport ssh -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp-data -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport ftp-data -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT

# Allow local loopback services

iptables -A INPUT -i lo -j ACCEPT

# Allow pings

iptables -I INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -I INPUT -p icmp --icmp-type source-quench -j ACCEPT
iptables -I INPUT -p icmp --icmp-type time-exceeded -j ACCEPT

এই বিধি কিসের জন্য:

iptables -A INPUT -p tcp --dport domain -i eth0 -j ACCEPT

হালনাগাদ :

এটি এফটিপি (প্রয়োজনীয়), অ্যাপাচি, এসএসএইচ, মাইএসকিএল সহ একটি ওয়েব সার্ভার হবে।


আমি এই সহজ নিয়মটি ব্যবহার করি .... সমস্ত কিছু বন্ধ করুন এবং পিছনের দিকে কাজ করুন এবং যা প্রয়োজন তা খুলুন। ওয়েব সার্ভারের জন্য, পোর্ট 80/443 সাধারণত একমাত্র জনসাধারণের মুখোমুখি পরিষেবা। অন্য যেকোন কিছুকে অবরুদ্ধ করুন বা অ্যাক্সেস সীমাবদ্ধ করুন - উদাহরণস্বরূপ নির্দিষ্ট আইপি বা ব্যক্তিগত নেটওয়ার্কে এসএসএস সীমাবদ্ধ করুন।
জেফাত্রকাইদ

উত্তর:


13

আপনার আইপিটিবেলস বিধিগুলি আপনার সার্ভারের জন্য বেশিরভাগ ক্ষেত্রে উপযুক্ত বলে মনে হচ্ছে। তবে আমি সম্ভাব্য কয়েকটি পরিবর্তন প্রস্তাব করব:

  • আপনার যদি পুরো ইন্টারনেট থেকে এসএসএইচ, মাইএসকিউএল এবং এফটিপি অ্যাক্সেসের অনুমতি না দেওয়া হয় তবে কেবলমাত্র নির্দিষ্ট কিছু আইপি অ্যাড্রেস থেকে এই পোর্টগুলিতে অ্যাক্সেস সীমাবদ্ধ করতে '- উত্স' বিকল্পটি ব্যবহার করা আরও বেশি সুরক্ষিত হবে। উদাহরণস্বরূপ, কেবলমাত্র আইপি ঠিকানা 71.82.93.101 থেকে এসএসএইচ অ্যাক্সেসের অনুমতি দেওয়ার জন্য, আপনি 5 তম নিয়মকে 'iptables -A INPUT -p tcp --dport ssh --source 71.82.93.101 -i eth0 -j ACCEPT' এ পরিবর্তন করতে চান। আপনি যে প্রতিটি পৃথক আইপি ঠিকানাকে মঞ্জুরি দিতে চান তার জন্য আপনাকে একটি পৃথক নিয়ম যুক্ত করতে হবে, আরও তথ্যের জন্য এই প্রশ্নটি দেখুন: iptables একাধিক উত্স আইপি

  • যদি না এই মেশিনটি ডিএনএস সার্ভার চালাচ্ছে, আপনি সম্ভবত 'ডোমেন' (53) পোর্টে অ্যাক্সেস ব্লক করতে চাইবেন। এটি করতে, কেবল 'iptables -A INPUT -p tcp --dport ডোমেন -i eth0 -j ACCEPT' লাইনটি সরিয়ে ফেলুন। (এটি আপনার চূড়ান্ত প্রশ্নেরও উত্তর দিতে হবে, বিটিডাব্লু।) আপনি যদি আসলে ডিএনএস সার্ভার চালাচ্ছেন তবে এই নিয়মটি যথাযথভাবে রেখে দিন।

  • যদি আপনাকে নেটওয়ার্কের মাধ্যমে দূরবর্তী মাইএসকিউএল ক্লায়েন্ট অ্যাক্সেসের অনুমতি দেওয়ার দরকার হয়, তবে স্ট্যান্ডার্ড মাইএসকিউএল পোর্টটিতে বাহ্যিক অ্যাক্সেস খোলার জন্য আপনাকে 'iptables -A INPUT -p tcp --dport 3306 -i eth0 -j ACCEPT' লাইনটি যুক্ত করতে হবে । তবে এটি সত্যিই প্রয়োজনীয় না হলে এটি করবেন না - আপনার যদি কেবল স্থানীয় মাইএসকিউএল অ্যাক্সেসের প্রয়োজন হয় (অ্যাপাচে অধীন চলমান কোনও পিএইচপি অ্যাপ্লিকেশনটির জন্য, বলুন), আপনাকে দূরবর্তী মাইএসকিউএল অ্যাক্সেস সরবরাহ করার দরকার নেই। এবং যদি না আপনি হ্যাক হওয়ার ঝুঁকি নিতে চান, আপনি যদি নেটওয়ার্কটিতে 3306 পোর্টটি ওপেন করেন, তা নিশ্চিত করে নিন যে আপনার সমস্ত মাইএসকিউএল ব্যবহারকারী অ্যাকাউন্টের জন্য শক্তিশালী পাসওয়ার্ড প্রয়োজন এবং আপনার মাইএসকিউএল সার্ভার প্যাকেজগুলি আপ-টু-ডেট।

  • আপনার একটি মন্তব্যে ('ssh, dns, ldap, ftp এবং ওয়েব পরিষেবাদির অনুমতি দিন') এলডিএপি পরিষেবাদির উল্লেখ করেছে, তবে আপনার কনফিগারেশনে এ জাতীয় কোনও নিয়ম নেই। যখন আমি উদাহরণ কনফিগারেশনটি অনুলিপি করে এটি সংশোধন করি তখন এটি আমার কাছে অনেক কিছু ঘটে। এটি ফাংশনটিকে প্রভাবিত করবে না, তবে আমি মন্তব্যটি সংশোধন করব, কারণ বিভ্রান্তিকর মন্তব্যগুলি ভবিষ্যতে আপনাকে বা অন্য কোনও প্রশাসকে বিভ্রান্ত করে অপ্রত্যক্ষভাবে সৃষ্টি করতে পারে।

আমার অভিজ্ঞতায়, আইপিটবেবল বিধিগুলির একটি নিখুঁত সেট নিয়ে আসা শক্ত, তবে আমি মনে করি আপনি অবশ্যই সঠিক পথে আছেন। এছাড়াও, আইপিটিবেলগুলি সম্পর্কে আরও জানার জন্য সৌভাগ্য - এই বিধিগুলি প্রথমে জটিল মনে হতে পারে তবে লিনাক্স সিসাদমিনের পক্ষে এটি বেশ সহায়ক।


1
ফায়ারওয়ালের মাধ্যমে দূরবর্তী মাইএসকিউএল অ্যাক্সেসের পরিবর্তে আপনি কেবল এটি নিশ্চিত করে নিতে পারেন যে যারাই মাইএসকিউএল সার্ভারে অ্যাক্সেস প্রয়োজন তাদের এসএসএইচ পোর্ট ফরোয়ার্ড করার অধিকার রয়েছে।
ptman

এসএসএইচ পোর্ট ফরওয়ার্ডগুলি পোর্টটি খোলার এবং মাইএসকিউএল অনুমতিগুলি লক করার একটি সম্ভাব্য বিকল্প। তবে যতক্ষণ না তিনি সংবেদনশীল ডেটা নিয়ে কাজ করছেন এবং / অথবা তিনি একটি উচ্চ-প্রোফাইল লক্ষ্য (যা এসএসএইচের এনক্রিপশন বৈশিষ্ট্যগুলিকে দরকারী করে তোলে), আমি এর সুবিধা দেখছি না। সর্বোপরি, এসএসএইচ টানেলিংয়ের নিজস্ব অসুবিধাগুলি রয়েছে, যার মধ্যে রয়েছে: সেটআপ / কনফিগার ঝামেলা; সিপিইউ ব্যবহার বৃদ্ধি করেছে, এবং ব্যান্ডউইথ সীমাবদ্ধ করে (ওপেনএসএইচএসের স্ট্যাটিক বাফার আকারের কারণে)। এবং যদি তিনি না চান তার সমস্ত দূরবর্তী মাইএসকিউএল ক্লায়েন্টের স্থানীয় লগইন রয়েছে?
রায়ান বি লিঞ্চ

যতদুর নিয়ম মিলে না মন্তব্য নেই যায়, সরাসরি ICMP নিয়ম traceroutes, PMTU আবিষ্কারের, এবং অন্যান্য প্রয়োজনীয় বার্তা অনুমতি কিন্তু তারা না পিংস (প্রতিধ্বনি-অনুরোধ এবং echo-উত্তর) অনুমতি দেয়।
জেরাল্ড কম্বস

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

4

অবশ্যই আপনার বহির্মুখী ট্র্যাফিক সীমাবদ্ধ করতে দেখুন।

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

আপনি যদি অপচে (যেমন উদাহরণস্বরূপ) অন্যান্য ওয়েবসাইটের সাথেই কথা বলার আশা করেন না, ট্র্যাফিক সীমাবদ্ধ করুন এবং নিজেকে সামান্য ব্যথা লাইন থেকে বাঁচান!


2

এই নিয়মগুলি "iptables-بحال" এর মাধ্যমে আমদানি করার জন্য প্রস্তুত:

*filter
:INPUT DROP [20:2036]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [93:16260]
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT -m comment --comment "allow ICMP: echo-reply"
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT -m comment --comment "allow ICMP: echo-request"
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT -m comment --comment "allow ICMP: destination-unreachable"
-A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT -m comment --comment "allow ICMP: source-quench"
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT  -m comment --comment "allow ICMP: time-exceeded"
-A INPUT -i lo -j ACCEPT -m comment --comment "allow input from the loop-back adapter"
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT -m comment --comment "allow SSH: ssh"
-A INPUT -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT -m comment --comment "allow DNS: domain"
-A INPUT -i eth0 -p tcp -m udp --dport 53 -j ACCEPT -m comment --comment "allow DNS: domain"
-A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT -m comment --comment "allow FTP: ftp"
-A INPUT -i eth0 -p udp -m udp --dport 21 -j ACCEPT -m comment --comment "allow FTP: ftp"
-A INPUT -i eth0 -p tcp -m tcp --dport 20 -j ACCEPT -m comment --comment "allow FTP: ftp-data"
-A INPUT -i eth0 -p udp -m udp --dport 20 -j ACCEPT -m comment --comment "allow FTP: ftp-data"
-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT -m comment --comment "allow MariaDB/MySQL: mysql"
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT -m comment --comment "allow HTTP (apache/nxing/lighttpd)"
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT -m comment --comment "allow HTTPS (apache/nxing/lighttpd)"
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  -m comment --comment "allow already established connections"
COMMIT

এবং কেবল রেকর্ডের জন্য ... এই ডিফল্ট নীতিগুলিও সেট করা উচিত, যদি উপরের iptables- পুনরুদ্ধার ব্যবহার না করা হয়:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

আমি আপনার পোস্ট সম্পাদনা করেছি - স্ট্যাকওভারফ্লো একটি প্রশ্ন / উত্তর ফর্ম্যাট। : দয়া করে FAQ পড়ুন stackoverflow.com/faq
89c3b1b8-b1ae-11e6-b842-48d705

এটি পারফরম্যান্সের সমস্যাগুলি প্রবর্তন করবে, যেহেতু রাষ্ট্রীয় নিয়ম এখানে সর্বশেষ প্রদর্শিত হবে এবং এটি প্যাকেটের বিশাল সংখ্যার সাথে মেলে তাই প্রথমে প্রদর্শিত হবে।
মাইকেল হ্যাম্পটন

0

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


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

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