iptables নিয়ম উপদেষ্টা স্ক্রিপ্ট


9

কোনও iptables প্রতিরক্ষা ছাড়াই একটি সার্ভার রয়েছে :ACCEPT all..

এই সার্ভারে কাস্টম অ্যাপ্লিকেশন থাকতে পারে।

যদি আমাদের এই সার্ভারটিকে কঠোর করতে হবে (সুতরাং সমস্ত অস্বীকার করুন, এবং কেবলমাত্র অ্যাপ্লিকেশনগুলির জন্য প্রয়োজনীয় কী প্রয়োজন) কঠোর আইপিটবেল বিধিগুলি সহ, আমাদের নিজের হাতে অনুসন্ধান করতে হবে কোন অ্যাপটি কোনটি ব্যবহার করে dst/src port/protocolএবং তারপরে আমাদের জন্য আইপটিবল বিধিগুলি লিখতে হবে তাদের ..

প্রশ্ন : এমন কোনও স্ক্রিপ্ট রয়েছে যা চলমান মেশিন থেকে এই তথ্য সংগ্রহ করতে সহায়তা করতে পারে? (লগগুলি থেকে?) - এবং iptables নিয়মগুলি স্বয়ংক্রিয়ভাবে তৈরি করা হচ্ছে?

ভালো লেগেছে সেখানে audit2allowউপর SELinux। শুধু জন্য iptables!

মেশিনের কোনও আউটেজ থাকতে পারে না!

উদাহরণস্বরূপ: "ম্যাজিক" স্ক্রিপ্টটি মেশিনে এক সপ্তাহ / মাস চলবে, তথ্য সংগ্রহ করবে, তারপরে, এক সপ্তাহ / মাস পরে, স্ক্রিপ্টটি আমরা ব্যবহার করতে পারি এমন iptables নিয়ম ফাইল তৈরি করতে সক্ষম হবে।

অনেক লোক এই পরিস্থিতিতে পড়তে পারে (আইপিটেবলগুলি সম্পর্কিত কোনও সার্ভারকে কীভাবে শক্ত করা যায়)। এবং যদি দুর্দান্ত স্ক্রিপ্ট / সমাধান থাকে যা এটি করতে পারে তবে তা দুর্দান্ত হবে: \


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

এই মেশিনে কোনও আউটেজ থাকতে পারে না :)
এ্যাচক্রিস্টাইন

1
কি fail2ban
Totti

1
আপনি ট্র্যাফিক নিরীক্ষণ করতে পারেন বা খোলা বন্দরের চেক করতে পারেন, তবে সম্ভবত আপনি খুব কমই মিস করবেন, তবে গুরুত্বপূর্ণ বহির্গামী ট্র্যাফিক (বিশেষ সুরক্ষা আপডেট, বিরল ক্ষেত্রে প্রেরিত মেলস, ...)। যতক্ষণ আপনি কেবল আগত ট্র্যাফিক ফিল্টার করতে চান ততক্ষণ পর্যবেক্ষণ একটি বিকল্প হতে পারে।
জোফেল

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

উত্তর:


2

এটি ম্যানুয়ালি করুন

sudo ss -tuanp

অথবা

sudo netstat -tuanp

ব্যাখ্যা:

-t - show tcp sockets
-u - show udp sockets
-a - show all sockets
-n - show numeric, don't resolve 
-p - show process name

1

tcpdumpগড় ট্র্যাফিক ক্যাপচারের জন্য এক সপ্তাহ বা তার জন্য মেশিনে চালান । তারপরে কোনটি বন্দর ব্যবহার হচ্ছে তা দেখতে আপনি পরে ওয়্যারশার্ক ব্যবহার করে ট্র্যাফিক ব্রাউজ করতে পারেন।

এর জন্য আদেশ হবে tcpdump -i <interface> -s 65535 -w <some-file>

এরপরে netstat -tuanpপিআইডি / অ্যাপ্লিকেশনগুলি কোন বন্দরগুলি ব্যবহার করছে তা দেখতে আপনি এটি পিছনে মানচিত্র করতে পারেন।

তাত্ত্বিকভাবে এটি স্ক্রিপ্ট করা যেতে পারে।


1

আপনি খুব বেসিক টেম্পলেট যেমন- https://gist.github.com/jirutka/3742890 দিয়ে শুরু করতে পারেন , যা কেবল এসএসএস এবং পিংকে অনুমতি দেয় এবং ম্যানুয়ালি অন্য যে কোনও জিনিস যুক্ত করতে পারে।

আপনার অ্যাপ্লিকেশনটি পাবলিক ইন্টারফেস (0.0.0.0) / টিসিপি-তে শোনার জন্য iptables নিয়ম তৈরি করার জন্য একটি দ্রুত স্ক্রিপ্ট হ্যাক

netstat -lnpt | egrep '0.0.0.0:[0-9]+' | awk '{print $4,$7}' | \
sed -E -e 's/0.0.0.0://g' -e 's|[0-9]+/||' | \
awk '{printf ("iptables -A INPUT -p tcp --dport %5d --syn -m conntrack --ctstate NEW -m comment %s \n", $1,$2) }'

আপনি iptables -I INPUT <number>নির্দিষ্ট স্থানে বিধিগুলি ইনজেক্ট করতেও ব্যবহার করতে পারেন , যা আপনি তালিকাভুক্ত করতে পারেনiptables -nvL --line-numbers INPUT


1

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

আপনার সেরা বাজিটি সহজ শুরু হতে চলেছে এবং অবিচ্ছিন্নভাবে বিভিন্ন টুকরো যুক্ত করা শুরু করার সাথে সাথে আপনি নিজের সিস্টেমটি কী পরিষেবা সরবরাহ করছে তা পুরোপুরি বুঝতে শুরু করে। netstatআপনার হোস্ট করা বিভিন্ন পরিষেবাদিগুলির জন্য কী কী বন্দরগুলি ব্যবহার করা হচ্ছে তা দেখার পাশাপাশি আইপি অ্যাড্রেসগুলি সেগুলি কীভাবে অ্যাক্সেস করছে তা আপনাকে সরঞ্জামের ব্যবহার করতে হবে ।

$ sudo netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      26292/sendmail      
tcp        0      0 0.0.0.0:890                 0.0.0.0:*                   LISTEN      26149/ypbind        
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      26321/smbd          
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      26226/python        
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      26221/./hpiod       
tcp        0      0 127.0.0.1:199               0.0.0.0:*                   LISTEN      26237/snmpd         
tcp        0      0 0.0.0.0:809                 0.0.0.0:*                   LISTEN      26067/rpc.statd     
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      26321/smbd          
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN      26292/sendmail      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      26038/portmap       
tcp        0      0 0.0.0.0:35604               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      26249/sshd          
tcp        0      0 0.0.0.0:631                 0.0.0.0:*                   LISTEN      26257/cupsd         
tcp        0      0 :::22                       :::*                        LISTEN      26249/sshd          
tcp        0      0 :::631                      :::*                        LISTEN      26257/cupsd         

দ্রষ্টব্য: উপরের দিকে আপনি দেখতে পাচ্ছেন যে কোন সার্ভারে আমি কী পরিষেবাগুলি চালাচ্ছি যা টিসিপি সংযোগগুলি গ্রহণ করছে, অর্থাত্ তারা বিভিন্ন পোর্টে সংযোগের জন্য "শ্রবণ" করছে।

এসএসএইচ (পোর্ট 22) এবং এইচটিটিপি (পোর্ট 80) এর মতো জিনিসগুলি দিয়ে শুরু করা কোনও বৌদ্ধিক নয়, যদি এগুলি আপনার সিস্টেমে সাধারণ হয় তবে আমি এই ধরণের পরিষেবাগুলি একসাথে একবারেই করব। অন্যান্য পরিষেবাদি যেমন এলডিএপি বা এনআইএসের জন্য আপনি এগুলি আরও নিয়ন্ত্রিত পদ্ধতিতে করতে চাইতে পারেন, আপনার পরিচয় করিয়ে দেওয়ার সাথে সাথে জিনিসগুলি যাতে ভাঙবে না তা নিশ্চিত করে।

ফায়ারহল , ফায়ারওয়াল বিল্ডার (fwbuilder) এবং eztables এর মতো সরঞ্জামগুলি আপনি এই প্রকল্পটিতে আক্রমণ করার সময় সহায়ক হতে পারে, যেহেতু তারা iptableহাতে কাস্টম বিধি তৈরি করা থেকে বিমূর্ততার একটি দুর্দান্ত স্তর সরবরাহ করে, যা মুশকিল হতে পারে ।

FireHOL

ফায়ার হোল একটি ভাষা (এবং এটি চালানোর জন্য একটি প্রোগ্রাম) যা সহজেই বোঝার থেকে সহজ, মানব-পঠনযোগ্য কনফিগারেশনগুলি থেকে কোনও জটিলতার সুরক্ষিত, রাষ্ট্রীয় ফায়ারওয়াল তৈরি করে।

উদাহরণ

transparent_squid 8080 "squid root" inface eth0

interface eth0 mylan
    policy accept

interface ppp+ internet
    server smtp accept
    server http accept
    server ftp  accept
    server ssh  accept src example.firehol.org

    client all  accept

router mylan2internet inface eth0 outface ppp+
    masquerade
    route all accept
fwbuilder

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

উদাহরণ

   ss fwbuilder

eztables

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

এইভাবে আপনি সম্পূর্ণ ইন্টারনেটকে টিসিপি-পোর্ট 80 তে আপনার ওয়েবসার্ভার অ্যাক্সেস করার অনুমতি দিয়েছেন:

  allow_in any $eth0 any 80/tcp

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

Fail2Ban ব্যবহার করা হচ্ছে

iptablesজায়গায় একটি প্রাথমিক ফায়ারওয়াল সহ আপনি সম্ভবত এটি Fail2Ban এর মতো একটি সরঞ্জাম ব্যবহার করে প্রশংসা করতে চান ।

উদ্ধৃতাংশ

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

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

তথ্যসূত্র


0

নতুন সংযোগগুলি লগ করতে iptable নিয়মগুলি ব্যবহার করুন, এটি ইউডিপিও লগ করবে।

iptables -I INPUT -m state --state NEW -j LOG --log-prefix "New inbound connection: "
iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "New outbound connection: "

আপনি --log-level / var / লগ / বার্তাগুলির চেয়ে অন্য ফাইলে লগ রাখতে আলাদা আলাদা উল্লেখ করতে পারেন (আপনাকে সিসলোগ ডেমনটি কনফিগার করতে হবে)।

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

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


0

আমি জানি এটি কোনও স্ক্রিপ্ট নয় এবং এটি ওপির প্রশ্নের উত্তর নয় তবে এটি আমার একটি ধারণা যা আমি ওপিতে ভাগ করতে চাই।

আমি সমস্ত শ্রবণ পোর্ট এর সাথে পেয়েছি:

netstat -an | egrep 'tcp .*LISTEN' | awk -F" " '{print $4}' | awk -F":" '{print $NF}'

সম্ভবত এটি আপনাকে নিজের স্ক্রিপ্ট লেখার আরও কাছাকাছি আনতে পারে। :)


0

আপনি এই জাতীয় কিছু দিয়ে শুরু করতে পারেন:

netstat -n -l -p | egrep "^(tcp|tcp6|udp)" | grep LISTEN | sed -r 's!^(tcp|tcp6|udp)\s.*:([0-9]+).*LISTEN\s+.*/(.*)!iptables -A INPUT -p \1 --dport \2 -j ACCEPT # \3!'

এবং তারপরে এটি অনুসরণ করুন

iptables -P INPUT DROP

অথবা

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

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

iptables -A INPUT -p tcp --dport 111 -j ACCEPT # rpcbind       
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # sshd          
iptables -A INPUT -p tcp --dport 25 -j ACCEPT # master        
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT # mysqld        
iptables -A INPUT -p tcp --dport 49476 -j ACCEPT # rpc.statd     
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT # postgres.bin  
iptables -A INPUT -p tcp --dport 55371 -j ACCEPT # rpc.statd

দুটি গুরুত্বপূর্ণ বিষয় লক্ষণীয়:

1) এই বিধিগুলি আপনার জন্য কিছুই করে না যতক্ষণ না আপনি শেষ পর্যন্ত একটি ড্রপ বা প্রত্যাখ্যান লাইন না রেখে বা মিল না করে প্যাকেটের জন্য ডিফল্ট নীতি তৈরি করে। এই নিয়মগুলি প্যাকেটগুলিকে মঞ্জুরি দেয় , যা মূল হয়, যদি ডিফল্ট নীতিটি কোনও কিছু মিলে না যায়।

2) এই বিধিগুলি উত্স আইপি সম্পর্কে দ্ব্যর্থহীন । আপনার আসল পোস্ট থেকে মনে হচ্ছে আপনি আপনার সমস্ত ক্লায়েন্টকে সার্ভার ব্যবহারের অনুমতি দিতে চান, তারপরে, গন্তব্য বন্দরগুলির সাথে সোর্স আইপি পেতে লগগুলি পরীক্ষা করুন । আমি এটি করার কোনও সরঞ্জাম জানি না, সুতরাং এই স্ক্রিপ্টটি কেবলমাত্র আপনার সার্ভারে নতুন পরিষেবা তৈরি করা থেকে রোধ করবে যা অন্যান্য পোর্টগুলিতে শুনবে ... যা কিছু

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