Iptables সঙ্গে চীন অবরুদ্ধ


10

আমি সবেমাত্র একটি গিটল্যাব সার্ভারে লগ ইন করেছি এবং লক্ষ্য করেছি যে সর্বশেষে সার্ভারটি প্রায় 5 দিন যাচাই করার পরে এটিতে 18.974 ব্যর্থ লগইন রয়েছে। আমি আইপি'র পরীক্ষা করেছি এবং দেখে মনে হচ্ছে তাদের প্রায় সবাই চীন থেকে এসেছিল এবং এসএসএইচ এবং ব্রুট ফোর্সের সাথে অ্যাক্সেস পাওয়ার চেষ্টা করেছিল। আমি কিছু আইপিকে ব্লক করা শুরু করেছিলাম কিন্তু তখন আমি বুঝতে পারি যে এটি একটি বিশাল সময়ের অপচয় এবং পুরো দেশটিকে অবরুদ্ধ করা আরও ভাল ধারণা।

আমি চীন বা অন্য যে কোনও দেশকে আইপটেবলগুলি দিয়ে ব্লক করতে পারি?

আমি ইন্টারনেটে কিছু নিবন্ধ পেয়েছি তবে সেগুলির প্রায় সবগুলিই বাশ স্ক্রিপ্ট। আমি লিনাক্সের নবাগত তাই আমি এই সমস্ত স্ক্রিপ্টগুলি সত্যিই বুঝতে পারি না। আমি iptables সত্যিই আকর্ষণীয় এবং আমি এটি সম্পর্কে আরও জানতে চাই।

কোন ধারনা ? ধন্যবাদ!


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

এখনও পর্যন্ত এটি কাজ করে নি। গিটল্যাব সার্ভারটি এখনও অবধি আছে এবং আমার 0 টি ব্রেক-ইন ছিল। এসএসএস অ্যাকসেসগুলি কেবল এসএসএস-কী দিয়ে তৈরি করা হয় এবং আমি রুট লগইনটিকে অক্ষম করি। এটা ঠিক যে আমি iptables এত খারাপ শিখতে চাই ..
ক্যারানফিল আলেজান্দ্রু

1
আপনি নিজের রাউটারের একটি অ-ডিফল্ট পোর্টে আপনার এসএসএস স্যুইচ করতে পারেন। এটি আমার এসএসএস বট হামলার চেষ্টাটি প্রতিদিন শত থেকে শূন্যে নামিয়ে দিয়েছে।
জৈব মার্বেল

উত্তর:


7

Iptables ব্যবহার করে স্বয়ংক্রিয়ভাবে শনাক্ত করা এবং তারপরে ব্লক করা, ssh এর জন্য খারাপ ছেলেরা recentমডিউলটি ব্যবহার করে করা যেতে পারে । নিম্নলিখিত বিভাগটি অবশ্যই আপনার জেনেরিক লাইনের পরে আসবে ESTABLISHED,RELATED:

...
$IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state ESTABLISHED,RELATED -j ACCEPT
...
# Secure Shell on port 22.
#
# Sometimes I uncomment the next line to simply disable external SSH access.
# Particulalry useful when I am rebooting often, thereby losing my current BADGUY table.
# $IPTABLES -A INPUT -i $EXTIF -m state --state NEW -p tcp -s $UNIVERSE -d $EXTIP --dport 22 -j DROP

# Dynamic Badguy List. Detect and DROP Bad IPs that do password attacks on SSH.
# Once they are on the BADGUY list then DROP all packets from them.
# Sometimes make the lock time very long. Typically to try to get rid of coordinated attacks from China.
$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info
$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 -m recent --set --name BADGUY_SSH -j ACCEPT

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

#
# After a coordinated attack involving several sub-nets from China, they are now banned forever.
# List includes sub-nets from unknown origin, and perhaps Hong Kong
#
$IPTABLES -A INPUT -i $EXTIF -s 1.80.0.0/12 -d $UNIVERSE -j DROP
$IPTABLES -A INPUT -i $EXTIF -s 27.148.0.0/14 -d $UNIVERSE -j DROP
$IPTABLES -A INPUT -i $EXTIF -s 27.152.0.0/13 -d $UNIVERSE -j DROP
$IPTABLES -A INPUT -i $EXTIF -s 43.229.0.0/16 -d $UNIVERSE -j DROP
$IPTABLES -A INPUT -i $EXTIF -s 43.255.0.0/16 -d $UNIVERSE -j DROP
...

উপরের যেখানে:

# The location of the iptables program
#
IPTABLES=/sbin/iptables

#Setting the EXTERNAL and INTERNAL interfaces and addresses for the network
#
EXTIF="enp4s0"
INTIF="enp2s0"
EXTIP="...deleted..."
INTNET="192.168.111.0/24"
INTIP="192.168.111.1/32"
UNIVERSE="0.0.0.0/0"

আপনি iptables- র, চীন জন্য IP ঠিকানা, বা কোন দেশের সমগ্র তালিকা পেতে পারেন, বা অন্যান্য, বিন্যাস এখানে । তবে তালিকা দুটি আশ্চর্যজনকভাবে দীর্ঘ এবং বরং গতিশীল। নিজেই, আমি পুরো তালিকাটি ব্লক না করার সিদ্ধান্ত নিয়েছি।


এই ^! আমি যেটা পেয়েছি তার সেরা উত্তর হতে পারে। এটি একটি বোবা প্রশ্ন হতে পারে, তবে আমার ধারণা এই সমস্ত নিয়মগুলি বাশ স্ক্রিপ্টে চলে গেছে, তাই না? আইপটিবলগুলি বুঝতে আমার এখনও কিছু সমস্যা আছে তবে আমি এটি আকর্ষণীয় মনে করি।
ক্যারানফিল আলেজান্দ্রু

হ্যাঁ, আমি বাশ স্ক্রিপ্ট ব্যবহার করি। কিছু, এবং আমি খুব ব্যবহৃত, একটি সরাসরি iptables পুনরুদ্ধার পদ্ধতি ব্যবহার করুন, যা লোড করা দ্রুত। আমি পরিবর্তন করেছি কারণ আমি একই স্ক্রিপ্টে কিছু নন-iptables কমান্ড অন্তর্ভুক্ত করেছি।
ডগ স্মিথিজ

12

চীন আইপসেট ব্যবহার করে ব্লক করে

আপনি নিজের আইপিটিবেলে কয়েক হাজার আইপি ঠিকানা ম্যানুয়ালি যুক্ত করতে পারবেন না এবং এটি স্বয়ংক্রিয়ভাবে করা একটি খারাপ ধারণা কারণ এটি প্রচুর সিপিইউ লোডের কারণ হতে পারে (অথবা আমি পড়েছি)। পরিবর্তে আমরা আইপসেটটি ব্যবহার করতে পারি যা এই ধরণের জিনিসটির জন্য ডিজাইন করা হয়েছে। আইপসেট আইপি ঠিকানার বড় তালিকা পরিচালনা করে; আপনি কেবল একটি তালিকা তৈরি করুন এবং তারপরে iptables কে কোনও নিয়মে সেই তালিকাটি ব্যবহার করতে বলুন।

বিঃদ্রঃ; আমি ধরে নিলাম যে নীচের সম্পূর্ণতা মূল হিসাবে সম্পন্ন হয়েছে। আপনার সিস্টেমটি সুডোর উপর ভিত্তি করে থাকলে সেই অনুযায়ী সামঞ্জস্য করুন।

apt-get install ipset

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

nano /etc/block-china.sh

আপনি এতে কী আটক করতে চান তা এখানে:

# Create the ipset list
ipset -N china hash:net

# remove any old list that might exist from previous runs of this script
rm cn.zone

# Pull the latest IP set for China
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone

# Add each IP address from the downloaded list into the ipset 'china'
for i in $(cat /etc/cn.zone ); do ipset -A china $i; done

# Restore iptables
/sbin/iptables-restore < /etc/iptables.firewall.rules

ফাইলটি সংরক্ষণ করুন। এটি সম্পাদনযোগ্য করুন:

chmod +x /etc/block-china.sh

এটি এখনও কিছু করেনি, তবে স্ক্রিপ্টটি চালালে এটি এক মিনিটের মধ্যেই ঘটবে। প্রথমত, আমাদের আইপটিবেলে একটি বিধি যুক্ত করতে হবে যা উপরের স্ক্রিপ্টটি সংজ্ঞায়িত করে এই নতুন আইপসেটের তালিকাটিকে বোঝায়:

nano /etc/iptables.firewall.rules

নিম্নলিখিত লাইন যুক্ত করুন:

-A INPUT -p tcp -m set --match-set china src -j DROP

ফাইলটি সংরক্ষণ করুন। পরিষ্কার হয়ে উঠতে, আমার সম্পূর্ণ আইপটিবলস.ফায়ারওয়াল.আরুলস এখন দেখতে দেখতে এটি:

*filter

#  Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Block anything from China
# These rules are pulled from ipset's china list
# The source file is at /etc/cn.zone (which in turn is generated by a shell script at /etc/block-china.sh )
-A INPUT -p tcp -m set --match-set china src -j DROP

#  Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

#  Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allow SSH connections
#
#  The -dport number should be the same port number you set in sshd_config
#
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#  Allow ping
-A INPUT -p icmp -j ACCEPT

#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

#  Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP

COMMIT

এখনই সার্ভারের সাথে কিছুই পরিবর্তন হয়নি কারণ কোনও নতুন বিধি প্রয়োগ করা হয়নি; এটি করতে, block-china.sh স্ক্রিপ্টটি চালান:

/etc/block-china.sh

এটি কিছুটা আউটপুট দেখায় কারণ এটি চীনা ভিত্তিক আইপিগুলির একটি নতুন তালিকাটি টানছে এবং তারপরে, কয়েক সেকেন্ড বা তার পরে, এটি আপনাকে সম্পূর্ণ করে একটি কমান্ড প্রম্পটে ফিরিয়ে দেবে।

এটি কাজ করে কিনা তা পরীক্ষা করতে, চালান:

iptables -L

আপনার এখন চীনকে ব্লক করা একটি নতুন নিয়ম দেখতে পাওয়া উচিত - আউটপুটটি দেখতে এইরকম হওয়া উচিত:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
DROP       tcp  --  anywhere             anywhere             match-set china src
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
ACCEPT     icmp --  anywhere             anywhere
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

প্রায় শেষ! এটি কাজ করে এবং পুনরায় বুটের কাজ চালিয়ে যাবে। তবে, আইপি ঠিকানাগুলি পরিবর্তিত হয় এবং সেই তালিকা সময়ের সাথে সাথে বাসি বাড়বে grow আপনি যদি আইপিগুলির একটি আপডেট তালিকা টানতে এবং প্রয়োগ করতে চান তবে আপনি আবার block-china.sh স্ক্রিপ্টটি চালাতে পারবেন।

ক্রোন কাজের মাধ্যমে স্বয়ংক্রিয়ভাবে এটি করার জন্য আমরা মেশিনটিকে সেট করতে পারি:

crontab -e

এর মতো একটি লাইন যুক্ত করুন:

* 5 * * * /etc/block-china.sh

এটি প্রতিদিন / সকাল 5 টায় /etc/ block-china.sh চলবে। স্ক্রিপ্টটি ব্যবহারকারী ব্যবহারকারীর রুট হওয়া বা মূল অধিকার থাকা দরকার।

সূত্র


কেন এটি কেবলমাত্র টিসিপি প্রোটোকলে সীমাবদ্ধ? এটি প্রোটোকল নির্দিষ্ট না করেই কাজ করছে বলে মনে হচ্ছে। নতুন সংযুক্ত তালিকাগুলি ব্যবহার করার পরামর্শ দিন, কারণ এগুলি আরও খাটো:wget http://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
ডগ স্মিটিস

এখানে আবার কিছুই নেই যা পুনরায় বুটের পরে আইপসেটটি পুনরুদ্ধার করে।
ডগ স্মিথিস

4

আপনি ব্যর্থ 2ban এর মতো কিছু ইনস্টল করতে চাইতে পারেন যাতে এটি আপনার আইপিএসগুলিকে আপনার সার্ভারে লগইন করতে এবং ব্যর্থ হতে পারে blocks


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

কারা ব্লক করবেন তা নির্ধারণের জন্য কোন দেশগুলিকে কোন আইপি ঠিকানা ব্লক বরাদ্দ করা হয়েছে তা আপনাকে দেখতে হবে। নিশ্চিত না যে এটি অতি নির্ভুল হবে কি না তবে। আপনি iptables -L ব্যবহার করতে পারেন বর্তমান iptables নিয়মগুলি দেখানোর জন্য, iptables-save বলতে কী নিয়ম তৈরি করতে কমান্ড চালানো হয়েছিল তা দেখানোর জন্য, তারপরে আপনার নিজস্ব নিয়মগুলি ডিজাইন করুন এবং এটি সম্পর্কে জানতে টেস্ট মেশিন ব্যবহার করে পরীক্ষা করুন। এভাবেই আমি শিখেছি।
কাইল এইচ

0

আপনি iptables এর জন্য জিওআইপি-মডিউলটি ব্যবহার করতে পারেন: https://linoxide.com/linux-how-to/ block-ips-countries-geoip-addons/

আমাদের সিস্টেমটি আপগ্রেড হয়ে গেলে এবং নির্ভরতা ইনস্টল হয়ে গেলে আমরা এখন আমাদের মেশিনে xtables-addons ইনস্টল করব। এটি করার জন্য, আমরা উইজেট ব্যবহার করে অফিসিয়াল xtables-addons প্রকল্প সাইট থেকে সর্বশেষতম টারবল ডাউনলোড করব । এটি ডাউনলোড হয়ে গেলে, আমরা টার্বলটি বের করব, তারপরে এটি সংকলন করে আমাদের মেশিনে ইনস্টল করব।

wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.13.tar.xz
tar xf xtables-addons-2.13.tar.xz
cd xtables-addons-2.13
./configure
make
make install [...]

এরপরে, আমরা xt_geoip নামে একটি মডিউল চালাব যা xtables-addons এক্সটেনশনের সাথে আসে যা ম্যাক্সমাইন্ড থেকে জিওআইপি ডাটাবেস ডাউনলোড করে এবং এটি দ্বারা স্বীকৃত একটি বাইনারি আকারে রূপান্তর করে xt_geoip। এটি ডাউনলোড হয়ে গেলে, আমরা এটিকে তৈরি করব এবং এগুলি প্রয়োজনীয় xt_geoipপাথের দিকে নিয়ে যাব /usr/share/xt_geoip

cd geoip
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv
mkdir -p /usr/share/xt_geoip/
cp -r {BE,LE} /usr/share/xt_geoip/

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

iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]

0

আপনি আইপি 2 লোকেশন ফায়ারওয়াল তালিকার সাথে চীনের iptables তৈরি করতে ব্যবহার করেন।

ফাইলটি নিম্নলিখিত বিন্যাসে রয়েছে। এটি শেলের মধ্যে চালান এবং আপনার সমস্ত চীন আইপি ঠিকানাগুলি ব্লক করা উচিত।

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