আইপটিবলের সাথে সমস্ত আগত সংযোগ অস্বীকার করবেন?


17

সমস্ত ইনকামিং সংযোগ অস্বীকার করতে এবং আউটগোয়িংয়ের অনুমতি দেওয়ার জন্য আমি কিছু সাধারণ আইপটেবল বিধি তৈরি করতে চাই। আমি এটা কিভাবে করবো?

উত্তর:


27

রুট অ্যাক্সেস সহ এটি ব্যবহার করে দেখুন:

# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Accept on localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow established sessions to receive traffic
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

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

কীভাবে এসএসএইচের জন্য একটি ব্যতিক্রম যুক্ত করবেন তার জন্য মিফিক্সের উত্তর দেখুন।


2
আমি যখন আপনার নিয়মের প্রথম লাইনটি করি, তখন আমি এসএসএইচ থেকে সংযোগ বিচ্ছিন্ন হয়ে
পড়েছি

7
প্রশ্নটি "সমস্ত আগত সংযোগ অস্বীকার করুন" এবং "এসএসএইচ বাদে সমস্ত আগত সংযোগ অস্বীকার করবেন না" :)
ইয়াহান

প্রথম নিয়ম সম্পর্কে @ হোলসের সতর্কতাটি আমি খুব দেরিতে
পড়েছি

নোট করুন যে এটি আইপিভি 6 ট্র্যাফিকের উপর কোনও প্রভাব ফেলবে না। আপনি আইপিভি 6 সক্ষম করে থাকলে নীচে আমার উত্তরটি পড়ুন।
ভেলম

13

আপনি যদি এসএসএইচের মাধ্যমে দূরবর্তী -Iস্থানে কাজ করছেন তবে আপনি এটি যুক্ত করতে চাইতে পারেন ( এতে অন্যান্য নিয়মের আগে এটি সন্নিবেশ করানো INPUT):

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

যদি আপনার এসএসএইচ পরিষেবাটি অন্য একটি বন্দরে শুনছে তবে আপনাকে সেই বন্দরের পরিবর্তে ব্যবহার করতে হবে 22

অন্যথায়, আপনি দুর্ঘটনাক্রমে অ্যাক্সেস হারিয়ে ফেলতে পারেন।


3

অন্যান্য উত্তর IPv6 কভার না যে সচেতন হন! যদি আপনার সিস্টেম আইপিভি 6 ট্র্যাফিক গ্রহণ করে তবে ipv6 ট্র্যাফিকের জন্য একক আইপটবেবল বিধি প্রযোজ্য হবে না।

সরাসরি iptables / ip6tables ব্যবহার না করে, আমি iptables- পুনরুদ্ধার এবং সংরক্ষণের ব্যবহার করার পরামর্শ দিই। এই সরঞ্জামগুলি একাধিক নিয়ম সহ একটি iptables কনফিগারেশন নির্দিষ্ট করতে এবং সহজেই এটি একটি আদেশ দ্বারা লোড করতে দেয় load

নিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল তৈরি করুন (আমি এর নাম দিয়েছিল iptables.rules):

*filter

# drop forwarded traffic. you only need it of you are running a router
:FORWARD DROP [0:0]

# Accept all outgoing traffic
:OUTPUT ACCEPT [623107326:1392470726908]


# Block all incoming traffic, all protocols (tcp, udp, icmp, ...) everything.
# This is the base rule we can define exceptions from.
:INPUT DROP [11486:513044]

# do not block already running connections (important for outgoing)
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# do not block localhost
-A INPUT -i lo -j ACCEPT

# do not block icmp for ping and network diagnostics. Remove if you do not want this
# note that -p icmp has no effect on ipv6, so we need an extra ipv6 rule
-4 -A INPUT -p icmp -j ACCEPT
-6 -A INPUT -p ipv6-icmp -j ACCEPT

# allow some incoming ports for services that should be public available
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

# commit changes
COMMIT

দ্রষ্টব্য আমি নির্দিষ্ট বন্দরগুলিতে আইসিএমপি এবং ট্র্যাফিকের অনুমতি দিতে চাইলে আমি কিছু অতিরিক্ত উদাহরণ যুক্ত করেছি।

এখন আপনি এই আদেশগুলি দিয়ে এটি লোড করতে পারেন:

iptables-restore < iptables.rules
ip6tables-restore < iptables.rules

এখন আপনার নিয়মগুলি আইপিভি 6ও কভার করে এবং পরিচালনা করা সহজ।

দেবিয়ান ব্যবহারকারীদের জন্য অতিরিক্ত নোট: আপনি যদি আপনার বিধি দ্বারা সন্তুষ্ট হন তবে আপনি apt install iptables-persistentপুনরায় বুট করার পরে নিয়মগুলি পুনরুদ্ধার করতে পারেন । বিধিগুলি শাটডাউনে স্বয়ংক্রিয়ভাবে সংরক্ষিত হয় না, তাই netfilter-persistent saveঅবিরাম নিয়মগুলি আপডেট করতে চালনা করুন ।


1

উভয় উত্তর উপরে একরকম সঠিক, কিন্তু তারা উত্তর উত্তর যথেষ্ট সঠিক না। (দুঃখিত, আমি মন্তব্য যুক্ত করার মতো যথেষ্ট খ্যাতি পাইনি, সুতরাং সম্পূর্ণ উত্তর লিখছি)।

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

আমি কমান্ড দিয়ে এটা করেছি

sudo iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j REJECT

এর অর্থ: 80 পোর্টে প্রতিটি আগত টিসিপি প্যাকেজের জন্য, লোড stateমডিউল এবং এটি যদি প্রথম প্যাকেজ হয় (আগত সংযোগ) এটি প্রত্যাখ্যান করে। লোকালহোস্টের জন্য আপনি কেবল ব্যবহার করতে পারেন-s 127.0.0.0/8

এবং বাস্তব বিশ্বের ব্যবহারের জন্য, কিছু ক্ষেত্রে আপনি রাজ্যগুলিতে 'ইনভ্যালিড' যুক্ত NEW,INVALIDকরতে পারেন, কারণ আপনার নিয়মকে বাইপাস করে চেষ্টা করে কেউ "দূষিত" প্যাকেজ পাঠাতে পারে। এবং -j DROPআপনার আউটবাউন্ড ট্র্যাফিক সংরক্ষণের সাথে এটিও প্রতিস্থাপন করুন (এটি প্রত্যাখ্যান বীকন প্রেরণ করবে না)

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