প্রারম্ভকালে চালানোর জন্য কীভাবে এই iptables নিয়মগুলি সেট করতে পারেন


20

আমি যখনই লগইন করি আমি সাধারণত আমার iptables নিয়মগুলি পরিচালনা করি। টার্মিনাল থেকে আমি টাইপ করি;

sudo sh firewall.sh

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

আমার বোনের কম্পিউটারের জন্য আমি যে স্ক্রিপ্টটি লিখেছিলাম তাতে রয়েছে;

#!/bin/sh

modprobe ip_conntrack
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -I OUTPUT -p tcp --dport 80 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 443 --sport 32768:61000 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT -p icmp -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -p udp -j DROP
iptables -I INPUT -p tcp -m tcp --syn -j DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

আমি এটিকে তার হোম ফোল্ডারে ফায়ারওয়াল.শ হিসাবে স্থাপন করেছি এবং এটি নির্বাহযোগ্য হতে সেট করেছি (ফাইলটিতে ডান ক্লিক করুন, এবং অনুমতি ট্যাবে "প্রোগ্রাম হিসাবে প্রোগ্রামের অনুমতি দিন" পরীক্ষা করে দেখুন)।

এই স্ক্রিপ্টটি টার্মিনাল থেকে মূল হিসাবে কাজ করে।

টাইপ করার পরে;

sudo sh firewall.sh

আমি টার্মিনাল টাইপ

sudo iptables -L -v

এবং আমি পেতে

Chain INPUT (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcpflags: FIN,SYN,RST,ACK/SYN
    0     0 DROP       udp  --  any    any     anywhere             anywhere            
    0     0 DROP       icmp --  any    any     anywhere             anywhere            

Chain FORWARD (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       icmp --  any    any     anywhere             anywhere            
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spts:32768:61000 dpt:https
    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere             udp spts:32768:61000 dpt:domain
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spts:32768:61000 dpt:http
    0     0 ACCEPT     all  --  any    lo      anywhere             anywhere

আমি কীভাবে এই স্ক্রিপ্টটি লগইন করার সময় স্বয়ংক্রিয়ভাবে চালাতে পারি, বা সম্ভবত এই নিয়মগুলি আমার বোনদের কম্পিউটারের জন্য স্থায়ীভাবে সংরক্ষণ করতে পারি? আপনি দয়া করে কিছু বিশদ কোড সরবরাহ করতে পারেন, কেননা আমার প্রথম প্রচেষ্টাটি rc.local পদ্ধতিতে এবং iptables-save এ খুব সফল হয়নি। প্রতিটি পুনরায় বুট করার সময়, সমস্ত টাইপ করা ইনপুট, আউটপুট এবং ফোরওয়ার্ড চেইনগুলি এসিসিইপিটিতে পুনরায় সেট করা হয়, আমি টাইপ করার সময় কোনও নীতিমালা তালিকাভুক্ত না করেsudo iptables -L -v


প্রায় দু'বছর পরে, তবে একটি গুরুত্বপূর্ণ মন্তব্য: আপনি ip6tablesযদি একদিন ভি 6 কানেক্টিভিটি পেয়ে থাকেন তবে আপনার বিধি রয়েছে কিনা তা নিশ্চিত করুন , যেহেতু আইপিভি 6 হ্যান্ডেল করেছে ip6tablesএবং না iptables
টমাস ওয়ার্ড

উত্তর:


38

আপনি iptables-persistentআপনার বুট স্ক্রিপ্টগুলির সাথে গোলযোগের পরিবর্তে প্যাকেজটি ব্যবহার করতে চাইতে পারেন । প্রথমে ফায়ারওয়াল বিধিগুলি সেট আপ করতে আপনার স্ক্রিপ্টটি চালান। দ্বিতীয়ত, চালান sudo apt-get install iptables-persistent, এবং অনুরোধগুলি অনুসরণ করুন। যখন এটি বর্তমান নিয়মগুলি সংরক্ষণ করতে বলবে, উভয় প্রম্পটে "হ্যাঁ" চাপুন। এখন, রিবুটগুলিতে, আপনার iptables বিধি পুনরুদ্ধার করা হবে।


দ্রষ্টব্য: আপনি যদি এর পরে আপনার বিধি পরিবর্তন করেন তবে পরিবর্তনের পরে আপনাকে নিম্নলিখিত কমান্ড (গুলি) করতে হবে:

আপনার IPv4 iptables নিয়মগুলি সংরক্ষণ করতে: sudo su -c 'iptables-save > /etc/iptables/rules.v4'

আপনার IPv6 ip6tables নিয়মগুলি সংরক্ষণ করতে: sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'


আপনাকে ধন্যবাদ, যে কাজ করেছে। আমি যদি অস্থায়ীভাবে নিয়মগুলি পরিবর্তন করতে চাই তবে আমি টার্মিনাল থেকে একটি স্ক্রিপ্ট চালাতে পারি হ্যাঁ?
মাইক্লেনে

হ্যাঁ, বা আপনি সরাসরি iptables সিস্টেমটি সরাসরি পরিচালনা করতে পারেন। তবুও, আপনি অস্থায়ীভাবে নিয়মটি অবিচ্ছিন্নভাবে ব্যবহার করার পরিকল্পনা করলে নতুন উত্তর (গুলি) সংরক্ষণের গ্যারান্টিযুক্ত না হয় যদি না আপনি আমার উত্তরে আমি যে আদেশগুলি বলেছি তা না করে।
টমাস ওয়ার্ড

sudo dpkg-reconfigure iptables-persistentকোনও নিয়ম পরিবর্তন করে চালানো কি খারাপ ধারণা idea
সৌরভসি

@ সৌরভ প্রশ্নটি যেটির প্রতিক্রিয়া জানায় তা হ'ল "আপনার প্রয়োজন হবে বা চাইবে কেন?" ধারণা আপনাকে আছে চাই এবং মাত্র পুনর্লিখন করতে পারেন (অথবা ঊর্ধ্বলিপি (হয় rules.v4বা rules.v6নিজে ফাইল যাতে তারা পরবর্তী বুটে সূচীবদ্ধ পেতে, অথবা অবিলম্বে যদি আপনি চালাতেiptables-restore < /etc/iptables/rules.v4 বাip6tables-restore < /etc/iptables/rules.v6
টমাস ওয়ার্ড

2

ধরে নিচ্ছি আপনার এতে ফায়ারওয়াল বিধি রয়েছে:

/etc/iptables.up.rules

সম্ভবত সবচেয়ে সুস্পষ্ট উত্তর হ'ল এতে iptables নামে একটি ফাইল তৈরি করা হবে:

/etc/network/if-pre-up.d

বিষয়বস্তু সহ:

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

এবং এটি ব্যবহার করে কার্যকর করা যায়

sudo chmod +x /etc/network/if-pre-up.d/iptables

আপনার নেটওয়ার্ক ইন্টারফেসটি সক্রিয় হওয়ার আগে এইভাবে আপনার বিধিগুলি লোড করা হবে।


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