CentOS 7 এ FirewallD ট্রাফিক ফিল্টারিং নিয়ম কনফিগার করতে হাজির হয়েছে। এটি iptables নিয়মগুলি পরিচালনা করতে ব্যবহার করার জন্য প্রস্তাবিত সরঞ্জাম। CentOS 8 nftables ব্যবহার করছে স্ট্যান্ডার্ড iptables প্যাকেট ফিল্টারিং পরিষেবার পরিবর্তে ফ্রেমওয়ার্ক, এবং আপনি যখন ফায়ারওয়ালল্ডে ফায়ারওয়াল নিয়মগুলি কনফিগার করেন, আপনি আসলে nftables কনফিগার করেন। এই নিবন্ধে আমরা কীভাবে Linux CentOS 8 (এবং CentOS 7) চালিত একটি সার্ভারে ফায়ারওয়ালড ইনস্টল এবং কনফিগার করব এবং এই ফায়ারওয়ালের মূল ধারণাগুলি বিবেচনা করব।
ফায়ারওয়ালডি একটি ফায়ারওয়াল পরিষেবা যা একটি সার্ভারকে অবাঞ্ছিত ট্র্যাফিক থেকে রক্ষা করতে ব্যবহৃত হয়। এটি গতিশীল ফায়ারওয়াল নিয়ম পরিচালনা সমর্থন করে (পুনঃসূচনা ছাড়াই)। এটি iptables এবং nftables এর জন্য একটি ইন্টারফেস হিসাবে কাজ করে। ফায়ারওয়ালডি প্রায় সমস্ত লিনাক্স ডিস্ট্রোতে ব্যবহার করা যেতে পারে।
ফায়ারওয়াল্ড মৌলিক ধারণা:অঞ্চল এবং নিয়ম
firewalld এর ইনস্টলেশন এবং কনফিগারেশনের আগে , আমরা শিখব বিভিন্ন সংযোগের বিশ্বাসের স্তর নির্ধারণ করতে কোন অঞ্চলগুলি ব্যবহার করা হয়৷ আপনি ফায়ারওয়ালডে বিভিন্ন ফিল্টারিং নিয়ম প্রয়োগ করতে পারেন জোন, পূর্বনির্ধারিত পরিষেবা, প্রোটোকল বা পোর্ট, পোর্ট ফরওয়ার্ডিং এবং সমৃদ্ধ-বিধিগুলির জন্য সক্রিয় ফায়ারওয়াল বিকল্পগুলি সেট করুন৷
ফায়ারওয়াল্ড একটি জোনে প্রয়োগ করা নিয়মের উপর নির্ভর করে অঞ্চল অনুসারে অন্তর্মুখী ট্র্যাফিক ফিল্টার করছে৷ যদি একজন প্রেরকের আইপি ঠিকানা একটি জোনের নিয়মের সাথে মিলে যায়, তাহলে প্যাকেটটি এই জোনের মাধ্যমে পাঠানো হবে। যদি IP ঠিকানা সার্ভারে কনফিগার করা অঞ্চলগুলির মধ্যে একটির সাথে মেলে না, তবে ডিফল্ট জোন প্যাকেটটি প্রক্রিয়া করবে। আপনি যখন ফায়ারওয়ালড ইনস্টল করেন, তখন ডিফল্ট জোনটিকে সর্বজনীন বলা হয়৷
৷ফায়ারওয়াল্ডের বিভিন্ন পরিষেবার জন্য পূর্বনির্ধারিত অনুমতি সহ কিছু অঞ্চল রয়েছে। আপনি এই সেটিংস ব্যবহার করতে পারেন বা আপনার নিজস্ব জোন তৈরি করতে পারেন। আপনি যখন ফায়ারওয়ালড (/usr/lib/firewalld/zones/ এ অবস্থিত):
ড্রপ | এটির সর্বনিম্ন বিশ্বাসের স্তর রয়েছে৷ সমস্ত অভ্যন্তরীণ সংযোগগুলি কোনও প্রতিক্রিয়া ছাড়াই অবরুদ্ধ করা হয়েছে, শুধুমাত্র আউটবাউন্ড সংযোগগুলি অনুমোদিত৷ | ৷
ব্লক করুন | এই অঞ্চলটি আগেরটির মতোই, তবে আগত অনুরোধগুলি একটি icmp-হোস্ট-নিষিদ্ধ দিয়ে প্রত্যাখ্যান করা হয় IPv4 বা একটি icmp6-adm-নিষিদ্ধ-এর জন্য বার্তা IPv6-এর জন্য বার্তা৷ | ৷
সর্বজনীন | এটি সর্বজনীন, অবিশ্বস্ত নেটওয়ার্কগুলির জন্য ব্যবহৃত হয়৷ আপনি পৃথকভাবে ইনকামিং সংযোগের অনুমতি দিতে পারেন৷ | ৷
বাহ্যিক | আপনার ফায়ারওয়াল একটি গেটওয়ে হিসাবে ব্যবহার করা হলে এটি কোনো বাহ্যিক নেটওয়ার্ককে বোঝায়। এটি NAT মাস্ক করতে ব্যবহৃত হয়, তাই আপনার অভ্যন্তরীণ নেটওয়ার্ক ব্যক্তিগত থাকে, তবে উপলব্ধ৷ | ৷
অভ্যন্তরীণ | এটি বহিরাগত অঞ্চলের বিপরীতার্থক শব্দ। হোস্টের যথেষ্ট আস্থার স্তর রয়েছে, অনেকগুলি অতিরিক্ত পরিষেবা অ্যাক্সেসযোগ্য৷ | ৷
dmz | এই অঞ্চলটি ডিমিলিটারাইজড জোন (DMZ) এর কম্পিউটারগুলির জন্য ব্যবহৃত হয় এবং এতে আপনার নেটওয়ার্কে অ্যাক্সেস নেই এমন বিচ্ছিন্ন কম্পিউটারগুলি অন্তর্ভুক্ত রয়েছে৷ শুধুমাত্র নির্বাচিত আগত সংযোগগুলি অনুমোদিত৷ | ৷
কাজ | এটি আপনার কাজের কম্পিউটারের জন্য একটি অঞ্চল (নেটওয়ার্কের বেশিরভাগ কম্পিউটার বিশ্বস্ত) |
বাড়ি | এটি একটি হোম নেটওয়ার্ককে বোঝায়। আপনি বেশিরভাগ অন্যান্য কম্পিউটারে বিশ্বাস করতে পারেন, কিন্তু শুধুমাত্র নির্বাচিত আগত সংযোগগুলিই সমর্থিত৷ | ৷
বিশ্বস্ত | নেটওয়ার্কের সমস্ত কম্পিউটার বিশ্বস্ত। এটি সবচেয়ে খোলা বিকল্প যার দায়িত্বশীল ব্যবহার প্রয়োজন৷ | ৷
ফায়ারওয়াল্ড নিয়মের দুটি সেট ব্যবহার করে — স্থায়ী এবং রানটাইম। সার্ভার রিস্টার্ট না হওয়া পর্যন্ত রানটাইম নিয়ম সক্রিয় থাকে। ডিফল্টরূপে, আপনি ফায়ারওয়ালডে যে নিয়মগুলি যোগ করেন বিবেচনা করা হয় রানটাইম . একটি স্থায়ী নিয়ম যোগ করতে, আপনাকে –স্থায়ী ব্যবহার করতে হবে পতাকা সার্ভার পুনরায় চালু হওয়ার পরে এই নিয়মগুলি প্রয়োগ করা হবে।
CentOS এ FirewallD কিভাবে ইনস্টল ও সক্ষম করবেন?
CentOS 7/8 ফায়ারওয়ালড OS ইনস্টলেশনের সময় ডিফল্টরূপে ইনস্টল করা হয়। আপনি যদি ফায়ারওয়াল্ড মুছে ফেলে থাকেন এবং এটি আবার ইনস্টল করতে চান, তাহলে আপনি স্ট্যান্ডার্ড yum/dnf প্যাকেজ ম্যানেজার ব্যবহার করতে পারেন:
# yum install firewalld -y
— Centos 7-এ# dnf install firewalld -y
— Centos 8
ফায়ারওয়ালড ডেমন স্বয়ংক্রিয়ভাবে শুরু করার জন্য এটিকে স্টার্টআপে যুক্ত করুন:
# systemctl enable firewalld
এবং এটি শুরু করুন:
# systemctl start firewalld
পরিষেবার স্থিতি পরীক্ষা করুন:
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) Docs: man:firewalld(1) Main PID: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid systemd[1]: Starting firewalld - dynamic firewall daemon...
অথবা এই কমান্ডটি ব্যবহার করে এটি করুন:
# firewall-cmd --state
# firewall-cmd --state
running
FirewallD নিয়মগুলি পরিচালনা করা
৷ডিফল্ট ফায়ারওয়ালডি নিয়ম
ফায়ারওয়ালড নিয়মগুলি কনফিগার করার আগে, আপনাকে পরীক্ষা করা উচিত, কোন অঞ্চলটি ডিফল্টরূপে ব্যবহৃত হয়:
# firewall-cmd --get-default-zone
যেহেতু আমরা সবেমাত্র ফায়ারওয়ালড ইনস্টল করেছি এবং এখনও এটি কনফিগার করিনি, তাই ডিফল্ট জোন হল সর্বজনীন .
সক্রিয় অঞ্চল পরীক্ষা করুন। শুধুমাত্র একটি এবং একই জোন আছে — সর্বজনীন:
# firewall-cmd --get-active-zones
public interfaces: eth0
আমরা দেখতে পাচ্ছি, eth0 ইন্টারফেস পাবলিক দ্বারা পরিচালিত হয় জোন।
আপনি নিম্নরূপ CentOS নেটওয়ার্ক ইন্টারফেসের তালিকা প্রদর্শন করতে পারেন:
# ip link show
বা:# nmcli device status
সক্রিয় অঞ্চলের নিয়মগুলি দেখতে, কমান্ডটি ব্যবহার করুন:
# firewall-cmd --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
এই তালিকায়, আপনি দেখতে পারেন যে DHCP ক্লায়েন্ট এবং SSH সম্পর্কিত সাধারণ ক্রিয়াকলাপগুলি জোনে যোগ করা হয়েছে৷
উপলব্ধ অঞ্চল
সমস্ত অঞ্চলের তালিকা দেখতে, এই কমান্ডটি চালান:
# firewall-cmd --get-zones
আমি নিম্নলিখিত তালিকা পেয়েছি:
block dmz drop external home internal public trusted work
একটি নির্দিষ্ট অঞ্চলের নিয়ম দেখতে, কমান্ডে -জোন পতাকা যোগ করুন:
# firewall-cmd --zone=home --list-all
home target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
আপনি সমস্ত অঞ্চলের নিয়ম দেখতে পারেন:
# firewall-cmd --list-all-zones
ডিফল্ট জোন কিভাবে পরিবর্তন করবেন?
ডিফল্টরূপে, সমস্ত নেটওয়ার্ক ইন্টারফেস সর্বজনীন-এ অবস্থিত zone, কিন্তু এগুলিকে কমান্ড দিয়ে যেকোনো জোনে সরানো যেতে পারে:
# firewall-cmd --zone=home —change-interface=eth0
–zone= এর পরে আপনি যে জোনটি চান তা নির্দিষ্ট করুন৷ প্যারামিটার।
ডিফল্ট জোনটিকে হোমে পরিবর্তন করতে, এই কমান্ডটি চালান:
# firewall-cmd --set-default-zone=home
ফায়ারওয়ালডিতে অ্যাপের নিয়ম কীভাবে যোগ করবেন?
একটি অ্যাপের জন্য একটি পোর্ট খুলতে, আপনি একটি ব্যতিক্রম হিসাবে পরিষেবা যোগ করতে পারেন। উপলব্ধ পরিষেবাগুলির তালিকা কীভাবে প্রদর্শন করবেন তা এখানে রয়েছে:
# firewall-cmd --get-services
আউটপুটে অনেক পরিসেবা থাকবে। একটি পরিষেবা সম্পর্কে বিস্তারিত তথ্য এর XML-এ রয়েছে৷ ফাইল এই ফাইলগুলি /usr/lib/firewalld/services-এ অবস্থিত৷
যেমন:
# cd /usr/lib/firewalld/services
# cat smtp.xml
<?xml version="1.0" encoding="utf-8"?> <service> <short>Mail (SMTP)</short> <description>This option allows incoming SMTP mail delivery. If you need to allow remote hosts to connect directly to your machine to deliver mail, enable this option. You do not need to enable this if you collect your mail from your ISP's server by POP3 or IMAP, or if you use a tool such as fetchmail. Note that an improperly configured SMTP server can allow remote machines to use your server to send spam.</description> <port protocol="tcp" port="25"/> </service>
XML ফাইলে পরিষেবার বিবরণ, প্রোটোকল এবং ফায়ারওয়ালডে খোলা পোর্টের সংখ্যা রয়েছে৷
নিয়ম যোগ করার সময়, আপনি –অ্যাড-সার্ভিস ব্যবহার করতে পারেন একটি নির্দিষ্ট পরিষেবাতে ফায়ারওয়াল অ্যাক্সেসের অনুমতি দেওয়ার পরামিতি:
# firewall-cmd --zone=public --add-service=http
# firewall-cmd --zone=public --add-service=https
নিয়মগুলি যোগ করার পরে, আপনি নিশ্চিত করতে পারেন যে পরিষেবাগুলি নির্দিষ্ট অঞ্চলে যোগ করা হয়েছে কিনা:
# firewall-cmd --zone=public --list-services
dhcpv6-client http https ssh
আপনি যদি নিয়মগুলিকে স্থায়ী করতে চান তবে –স্থায়ী ব্যবহার করুন৷ তাদের যোগ করার সময় প্যারামিটার৷
একটি অঞ্চল থেকে একটি পরিষেবা সরাতে:
# firewall-cmd --permanent --zone=public --remove-service=http
# firewall-cmd --zone=public --permanent --list-services
dhcpv6-client https ssh test
আপনি যদি আপনার পরিষেবাটি yj ব্যতিক্রমগুলিতে যোগ করতে চান তবে আপনি একটি XML তৈরি করতে পারেন৷ নিজেই ফাইল করুন এবং সেখানে ডেটা নির্দিষ্ট করুন। আপনি যেকোনো পরিষেবা থেকে ডেটা কপি করতে পারেন এবং নাম, বিবরণ এবং পোর্ট নম্বর পরিবর্তন করতে পারেন।
smtp.xml অনুলিপি করুন ব্যবহারকারী পরিষেবার জন্য একটি ডিরেক্টরিতে:
# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services
ফাইলে পরিষেবার বিবরণ পরিবর্তন করুন৷
৷
XML ফাইলের নামও পরিবর্তন করতে হবে (আমি আমার পরিষেবাকে পরীক্ষা বলেছি ) তারপর ফায়ারওয়ালড পুনরায় চালু করুন এবং নিশ্চিত করুন যে আপনার পরিষেবা তালিকায় উপস্থিত রয়েছে:
# firewall-cmd --get-services
syslog-tls telnet test tftp
এখন আপনি যেকোনো জোনে পরিষেবা যোগ করতে পারেন:
# firewall-cmd --zone=public --add-service=test --permanent
# firewall-cmd --zone=public --permanent --list-services
dhcpv6-client http https ssh test
আপনি যদি তালিকায় একটি পরিষেবা খুঁজে না পান, তাহলে আপনি এই কমান্ডটি ব্যবহার করে ফায়ারওয়ালডে যে পোর্টটি চান তা খুলতে পারেন:
# firewall-cmd --zone=public —add-port=77/tcp
— TCP খোলে পোর্ট 77# firewall-cmd --zone=public —add-port=77/udp
— UDP খোলে পোর্ট 77# firewall-cmd --zone=public —add-port=77-88/udp
— UDP খোলে পোর্ট রেঞ্জ 77-88# firewall-cmd --zone=public —list-ports
— অনুমোদিত পোর্টের তালিকা প্রদর্শন করে
ICMP অনুরোধ ব্লক/অনুমতি দিতে:
# firewall-cmd --zone=public --add-icmp-block=echo-reply
# firewall-cmd --zone= public --remove-icmp-block=echo-reply
একটি যোগ করা পোর্ট সরাতে:# firewall-cmd --zone=public —remove-port=77/udp
— UDP-এর জন্য একটি রানটাইম নিয়ম সরিয়ে দেয় পোর্ট 77
# firewall-cmd --permanent --zone=public —remove-port=77/udp
— একটি স্থায়ী নিয়ম সরিয়ে দেয়
ফায়ারওয়ালডিতে কীভাবে একটি নতুন অঞ্চল তৈরি করবেন?
আপনি আপনার নিজস্ব অঞ্চল তৈরি করতে পারেন (আমি এটিকে আমাদের বলব ):
# firewall-cmd --permanent --new-zone=our
একটি নতুন জোন তৈরি করার পরে, যেমন একটি পরিষেবা তৈরি করার পরে, আপনাকে ফায়ারওয়াল্ড পুনরায় চালু করতে হবে :
# firewall-cmd --reload
# firewall-cmd --get-zones
block dmz drop external home internal our public trusted work
আমাদের জোন উপলব্ধ। আপনি এতে পরিষেবা যোগ করতে পারেন বা কিছু পোর্ট খুলতে পারেন।
ফায়ারওয়াল্ড:কীভাবে আইপি ঠিকানা ব্লক করবেন এবং ব্যতিক্রমগুলি তৈরি করবেন
আপনি ফায়ারওয়ালড ব্যতিক্রমগুলিতে বিশ্বস্ত আইপি ঠিকানা যুক্ত করতে পারেন বা অবাঞ্ছিত আইপি ঠিকানাগুলি ব্লক করতে পারেন৷
ফায়ারওয়ালড ব্যবহার করে আপনার সার্ভারে একটি আইপি ঠিকানা (যেমন, 8.8.8.8) যোগ করতে, এই কমান্ডটি চালান:
# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="8.8.8.8" accept'
জোন পরীক্ষা করুন এবং নিশ্চিত করুন যে IP ঠিকানা রিচ-রুলসের ব্যতিক্রমগুলিতে যোগ করা হয়েছে:
# firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http https ssh test ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="8.8.8.8" accept
একটি IP ঠিকানা ব্লক করতে, স্বীকার করুন প্রতিস্থাপন করুন প্রত্যাখ্যান সহ :
# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="8.8.4.4" reject'
# firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http https ssh test ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="8.8.8.8" accept rule family="ipv4" source address="8.8.4.4" reject
আপনি একটি পরিষেবাকে শুধুমাত্র নির্দিষ্ট আইপি ঠিকানা থেকে অনুরোধ গ্রহণ করার অনুমতি দিতে পারেন:
#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="https" accept'
আপনি যদি আপনার সার্ভারে সমস্ত অনুরোধ দ্রুত ব্লক করতে চান, প্যানিক কমান্ড ব্যবহার করুন:
# firewall-cmd --panic-on
আপনি এই কমান্ড দিয়ে প্যানিক মোড নিষ্ক্রিয় করতে পারেন:
# firewall-cmd --panic-off
অথবা আপনার সার্ভার পুনরায় চালু করে।
আপনি আপনার ফায়ারওয়ালড কনফিগারেশন ব্লক করতে পারেন যাতে রুট সুবিধা সহ স্থানীয় পরিষেবাগুলি আপনার তৈরি করা ফায়ারওয়াল নিয়মগুলি পরিবর্তন করতে না পারে:
# firewall-cmd --lockdown-on
লকডাউন মোড নিষ্ক্রিয় করতে:
# firewall-cmd --lockdown-off
FirewallD দিয়ে পোর্ট ফরওয়ার্ডিং কনফিগার করা হচ্ছে
আপনি ফায়ারওয়ালডে একটি পোর্ট ফরওয়ার্ডিং নিয়ম তৈরি করতে পারেন। TCP পোর্ট 443 ফরওয়ার্ড করতে 9090 এ:
# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent
একটি পোর্ট ফরওয়ার্ডিং নিয়ম সরাতে:
# firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090