Access Control List (ACL)

Access Control List (ACL)

ACL এর পূর্ণরূপ Access Control List। A set of rules এর মাধ্যমে নেটওয়ার্কের ট্রাফিক ফ্লোকে ফিল্টার করার পদ্ধতি হচ্ছে ACL। ACL মুলত এক সেট Condition বা Rules এর সমষ্টি যার মাধ্যমে নেটওয়ার্কের ট্রাফিক ফ্লোকে Control করা হয় অর্থাৎ ইউজারের ট্রাফিক ফ্লোকে নেটওয়ার্কের ভিতর দিয়ে ট্রাভেল করার সময় ফিল্টার করার জন্য ACL কনফিগার করা হয়।
Example : যেমন কোন ইউজার বা সাবনেটকে পার্টিকুলার কোন ডেস্টিনেশন এর জন্য Access Allow/Deny করা বা নির্দিষ্ট কোন ডেস্টিনেশন এর ক্ষেত্রে নির্দিষ্ট কোন সার্ভিস কে Allow/Deny করা।

Figure :

User1 ওয়েব সার্ভার কে Access করতে পারবে এবং User2 ওয়েব সার্ভার কে Access ও SSH করতে পারবে কিন্তু User3 ওয়েব সার্ভার কে Access ও SSH কোনটাই করতে পারবে না।

ACL নেটওয়ার্কের ট্রাফিক গুলোকে ফিল্টার করে Source IP, Destination IP, Protocol এবং Port Number এর উপর বেস করে। এর ট্রাফিক ফিল্টারিং পদ্ধতি IP Address এবং Port Number এর উপর কাজ করে বলে ACL কে Layer3 ও Layer4 সিকিউরিটি মেকানিজম বলা হয়। ACL কে apply করা হয় Router বা Firewall এর Interface এ। ACL কনফিগার করা Interface এ কোন Ip packet আসলে ACL আইপি প্যাকেটকে stop করবে এবং ACL এ entry থাকা Conditions গুলোর সাথে Match করাবে, Conditions গুলো top to bottom check হবে অর্থাৎ first condition match না হলে second condition check করবে এটাও match না হলে third condition check করবে, যখন incoming packet এর সাথে কোন condition match হবে তখন Action নিবে ও immediately checking process শেষ করবে। পুনরায় কোন Ip packet আসলে first condition থেকে checking process শুরু করবে। কোন condition এর সাথে match না হলে by default Implicit Deny rule কাজ করবে অর্থাৎ packet কে drop করবে।

এখানে ACL ট্রাফিক ফিল্টারিংয়ের ক্ষেত্রে মূলত দুটি একশন গ্রহণ করে,
১। Permit
২। Deny

Figure :

access-list 1 permit host 10.0.0.10
access-list 1 deny host 10.0.0.20

ধরি, রাউটারের 0/0 interface এ access-list 1 configure করা আছে। এখানে রাউটারের কাছে যখনই কোন Ip Packet আসবে রাউটার এই Packet Receive এর আগে ACL entry check করে নির্দিষ্ট action গ্রহণ করবে। ধরি, 10.0.0.10 থেকে packet আসছে এখানে রাউটার ACL এ entry থাকা Conditions গুলোকে top to bottom check করবে এবং first condition এর সাথে Match হলে permit action গ্রহণ করবে ও packet receive করে forward করবে। একই ভাবে 10.0.0.20 কোন packet আসলে Conditions গুলোকে top থেকে check করে second condition এর সাথে match হলে Deny action নিবে ও packet কে drop করবে। যদি 10.0.0.30 থেকে কোন packet আসে তাহলে কোন condition এর সাথে match হবে না, এখানে Implicit Deny rule কাজ করবে অর্থাৎ packet কে drop করবে।

Implicit Deny : যখনই আমরা ACL create করি তখনই প্রতিটি ACL এর ক্ষেত্রে By default Implicit Deny rule কাজ করে। এই Implicit Deny rule টি ACL list এর last condition হিসাবে কাজ করে। অর্থাৎ সব Source সব Destination এর জন্য Deny হবে এবং packet drop হবে। অপরদিকে যদি কোন Ip packet current ACL এর কোন condition match না করে তাহলেও Implicit Deny rule টি কাজ করবে এবং packet drop হবে।
যদি 10.0.0.30 থেকে কোন packet রাউটার এর 0/0 interface এ আসে তাহলে কোন condition এর সাথে match হবে না So, এখানে Implicit Deny rule কাজ করবে ও packet কে drop হবে।

Break the Implicit Deny Rules : ACL conditions গুলোতে match না হওয়া traffic কে forward করাতে হলে বা Implicit Deny Rules কে break করতে হলে ACL এর last Command ” permit ip any ” ব্যাবহার করতে হবে। এখনে (permit = action, any = any source) অর্থাৎ কনো source থেকে আসা Incoming packet ACL condition match না করলেও রাউটার packet receive করবে এবং forward করবে।

ACL Assigned : ACL conditions কে কাজ করাতে হলে Acl কে Device এর যেকোনো একটি Iinterface এ Apply করতে হবে তাহলে ডাটা প্যাকেট ইন / আউট হওয়ার সময় ACL conditions Apply হবে। ACL apply এর ক্ষেত্রে দুটি Direction কাজ করে।
১. Inbound Direction : যখন ইন্টারফেস এ কোন ট্রাফিক In হবে তখন incoming address এর সাথে ACL condition match করবে ও Action নিবে অর্থাৎ শুধুমাত্র incoming ট্রাফিকের ক্ষেত্রে Inbound Direction কাজ করে।
২. Outbound Direction : যখন ইন্টারফেস দিয়ে কোন ট্রাফিক Out/forward হবে তখন Outgoing packet এর সাথে ACL condition match করবে ও Action নিবে অর্থাৎ শুধুমাত্র Outgoing ট্রাফিকের ক্ষেত্রে Outbound Direction কাজ করে।

কোন Direction ব্যবহার করা হবে এটা Depend করে নেটওয়ার্কের ট্রাফিক ফ্লো এর উপর।

Figure :

যদি Interface 0/0 এর ইনকামিং ট্রাফিক গুলোর উপরে ACL condition apply করতে হয় তাহলে Interface 0/0 এ Inbound Direction Apply করতে হবে, অর্থাৎ যখন Interface 0/0 তে কনো প্যাকেট ইন হবে তখনই ACL condition check হবে এবং action গ্রহণ করবে। কিন্তু যদি Interface 0/0 এর ইনকামিং ট্রাফিক ফিল্টার এর জন্য Outbound Direction apply করা হত তাহলে ACL perfectly কাজ করতো না।
তেমনি ভাবে Interface 0/1 দিয়ে ফরওয়ার্ড হওয়া ট্রাফিক গুলোকে ফিল্টার করতে হলে Interface 0/1 এ Outbound Direction ACL কে apply হবে।
So, কোন Direction ব্যবহার করা হবে এটা সম্পূর্ণ Depend করে নেটওয়ার্কের ট্রাফিক ফ্লো এর উপর।

NOTE: একটি Interface সর্বোচ্চ দুটি ACL Assign করা যাবে ( একটি Inbound এবং একটি Outbound Direction এ)।

Type of ACL :

যখন কোনো একসেট কন্ডিশনের আইডেন্টিফিকেশন হিসেবে Name ব্যবহার করা হয় তখন তাকে Named ACL বলে । যেমন (Ex: Mgt_site, Access-site, Test_ACL) এই Name কেস সেনসিটিভ। অপরদিকে যখন কোনো একসেট কন্ডিশনের আইডেন্টিফিকেশন হিসেবে Number ব্যবহার করা হয় তখন তাকে Named ACL বলে ।
মূলত ACL দুই প্রকার,

  1. Standard ACL
  2. Extended ACL

Standard ACL: Standard ACLএর ক্ষেত্রে identify number হিসেবে 1-99 Range ব্যবহার করা হয়। যদি কোন ACLএর identify number হিসেবে 1-99 Range এর কোন একটি number ব্যবহার করা হয় তাহলে রাউটার অটোমেটিক বুঝে যায় এটা Standard ACL।

Standard ACL শুধুমাত্র সোর্স আইপি অ্যাড্রেস এর উপর base করে কাজ করে। অর্থাৎ ইনকামিং প্যাকেটের সোর্স আইপি অ্যাড্রেস কে ACL rules গুলোর সাথে Match করে action নেয়। এই সোর্স অ্যাড্রেস specific কোন Network, Host and Subnet address হতে পারে।

যেহেতু কোন Destination address pre-defined করা যায় না শুধুমাত্র সোর্স অ্যাড্রেস এর উপর base করে কাজ করে সেহেতু কোন সোর্সকে Allow অথবা Deny করলে All Destination এর জন্য All Services Allow অথবা Deny হয়ে যায়। তাই যথাসম্ভব Destination এর কাছাকাছি Standard ACL কে এপ্লাই করতে হয় যাহাতে বাকি Destination গুলোকে Access করতে পারে।

Scenario :

NOTE: ACL এ দুটি একশন কাজ করে, Permit and Deny, Permit হলে প্যাকেটকে Allow/forward করবে Deny হলে প্যাকেটকে Drop/reject করবে।

আমরা চায়,
5.5.5.2 1.1.1.10 কে access করতে পারবে।
5.5.5.5 1.1.1.10 কে access করতে পারবে না।
10.0.0.0/24 1.1.1.5 কে access করতে পারবে না।

এখানে চারটি প্যারামিটার ভালোভাবে জানতে হবে,
১। সোর্স এবং ডেস্টিনেশন এড্রেস কে
২। ট্রাফিক ফ্লো কোন দিকে হবে
৩। কোন রাউটারে ACL করবো
৪। কোন ইন্টারফেস এ কোন ডিরেকশনে ACL এপ্লাই করব।

এখানে প্রতিটা ট্রাফিক Router1 থেকে Router2 এর 0/2 Interface দিয়ে exit হয়ে Destination এ পৌঁছাবে। So that, Router2 এর 0/2 interface এ Outbound direction এ ACL apply করতে হবে। যাহাতে 5.0.0.0/24, 10.0.0.0/24 & 2.2.2.0/28 একে অপরকে অ্যাক্সেস করতে পারে।


Syntax : access-list <number> <permit/deny> <permit/deny> <source wildcard mask>

Follow scenario of the example :
Router2(config)# access-list 10 deny host 5.5.5.5
Router2(config)# access-list 10 deny 10.0.0.0 0.0.0.255
Router2(config)# access-list 10 permit 5.5.5.2 0.0.0.0
Router2(config)# access-list 10 permit any

Router2 এর 0/2 interface এ Outbound direction এ ACL apply করতে হবে।

Syntax : interface <int-type> <int-number>
ip access-group <number> <in/out>

Router2(config)#interface g 0/2
Router2(config-if)#ip access-group 10 out

access-list 10 কে Router2 এর 0/2 interface এ assign করা হলে যখন 5.5.5.5 থেকে কোন প্যাকেট আসবে তখন access-list 10 first condition এর সাথে match হবে এখানে action Deny থাকায় প্যাকেট Drop হবে। একই ভাবে 10.0.0.0/24 এর সকল প্যাকেট Drop এবং 5.5.5.2 এর সকল প্যাকেট Allow হবে।
যদি access-list 10 কে Router2 এর 0/0 interface বা Router1 এর 0/2 interface এ assign করা হত তাহলে 5.5.5.5 ও 10.0.0.0/24 এর জন্য 2.2.2.0/28 Network ও Automatic Deny হত। তাই যথাসম্ভব Destination এর কাছাকাছি Standard ACL কে এপ্লাই করতে হয় যাহাতে বাকি Network গুলোকে Access করতে পারে।

Figure : Before apply ACL on Router2. Host 5.5.5.5 is still able to use web services.

Result of host 5.5.5.5 Before apply ACL

Figure : Apply ACL on Router2.

ACL Configuration view on Router2

Figure : After apply ACL on Router2. Host 5.5.5.5 can’t able to use web services.

Result of host 5.5.5.5 After apply ACL

Some Important Parameters:

Remark : এখানে Remark keyword ব্যবহার করে ACL condition এর সাথে সম্পৃক্ত কোন sort description বা comment লিখতে পারি।

Example:

R2(config)# access-list 10 remark The following line Deny Host 5.5.5.5
R2(config)# access-list 10 deny host 5.5.5.5
R2(config)# access-list 10 remark The following permits Host 5.5.5.2
R2(config)# access-list 10 permit 5.5.5.2 0.0.0.0
R2(config)# access-list 10 permit any

A.B.C.D : Specific আইপি অথবা নেটওয়ার্ক অ্যাড্রেস ব্যবহার করতে হবে তবে অবশ্যই wildcard mask ব্যবহার করতে হবে।
Any : Remaining বা বাকি সব Source বা Destination কে বোঝাতে any keyword ব্যবহার করা হয় ।
Host : কনো Single Host বা Address কে বোঝাতে host keyword ব্যবহার করা হয়, এর জন্য কনো wildcard mask ব্যবহার করতে হয় না।

Wildcard Mask : যেমন ভাবে Subnet Mask ব্যাবহার করা হত address এর host & network portion identify করার জন্য তেমনিভাবে Wildcard Mask ব্যাবহার করা হয় ACL condition এর সাথে Incoming packet এর কত বিট check হবে এটা নির্দিষ্ট করার জন্য।

অর্থাৎ Global Subnet Mask থেকে specific Network এর Subnet Mask কে বিয়োগ করলে Wildcard Mask পাওয়া যায়।

Wildcard Bit : এখানে Bit হলো Binary bit ( 0, 1) wildcard mask এর ক্ষেত্রে 0 থাকা bit গুলো Match হবে আর 1 থাকা bit গুলো Ignore হবে। Wildcard Mask এর ক্ষেত্রে bit গুলো Subnet Mask এর বিপরীত ভাবে কাজ করে।

ধরি, একটি Address 192.168.10.0/24 এবং wildcard mask 0.0.0.255
ACL Condition : permit ip 192.168.10.0 0.0.0.255

এখানে Incoming Ip address এর first 24 bit Match করবে কারণ wildcard mask এর 24 bit 0 আছে । So, এখানে 0 থাকা bit গুলোকে ACL condition এর সাথে check করবে অর্থাৎ ACL condition তখনই match হবে যখন 192.168.10.0 এই address এর first 24 bit 192.168.10 হবে বাকি 8 bit কে ignore করবে। তেমনি করে wildcard mask 0.0.0.7 এর ক্ষেত্রে Incoming Ip address এর first 29 bit check করবে বাকি 3 bit কে ignore করবে যদি first 29 bit match হয় তাহলে ACL Action Apply হবে। Single host/address এর ক্ষেত্রে wildcard mask 0.0.0.0 অর্থাৎ 32 bit total address টি Match হতে হবে।

Extended ACL : Extended ACLএর ক্ষেত্রে identify number হিসেবে 100-199 Range ব্যবহার করা হয়। যদি কোন ACLএর identify number হিসেবে 100-199 Range এর কোন একটি number ব্যবহার করা হয় তাহলে রাউটার অটোমেটিক বুঝে যায় এটা Extended ACL।

Extended ACL কিছু advance filtering options কে support করে। এটা Source IP, Destination IP, Protocol ও Port Numberএর উপর base করে কাজ করে। অর্থাৎ ACL condition এর সাথে Incoming packet এর Source IP, Destination IP, Protocol ও Service Port Number match করে action apply করে। যেহেতু Extended ACL IP address, Protocol ও Service Port Number নিয়ে কাজ করে তাই বলা যায় Extended ACL layer3 ও layer4 এ কাজ করে।

যেহেতু Extended ACL এ Source IP, Destination IP কে pre-define করে দিতে পারি সেহেতু specific কোন source কে particular কোন destination এর জন্য permit বা block করতে পারি। এমনকি Port Number ব্যাবহার করে specific কোন services কে permit বা block করতে পারি। যেটা Standard ACLএর ক্ষেত্রে Possible হয় না।

Scenario :

Host 5.5.5.5, server 1.1.1.10 এর web access করতে পারবে না।
Host 5.5.5.2, server 1.1.1.10 এর web access করতে পারবে কিন্তু SSH করতে পারবে না।
10.0.0.0/24 network server 1.1.1.10 এর কনো services access করতে পারবে না।

এখানে Router1 এর 0/0 interface এ Outbound Direction এ ACL apply করতে হবে।

Syntax : access-list <number> <permit/deny> <protocol> <source address> <source wildcard mask> <destination address> <destination wildcard mask> <operator> <port>

ACL statement :
Router1(config)#access-list 100 deny tcp host 5.5.5.5 host 1.1.1.10 eq 443
Router1(config)#access-list 100 deny ip 10.0.0.0 0.0.0.255 host 1.1.1.10
Router1(config)#access-list 100 deny tcp host 5.5.5.2 host 1.1.1.10 eq 22
Router1(config)#access-list 100 deny tcp host 5.5.5.2 host 1.1.1.10 eq 80
Router1(config)#access-list 100 permit tcp host 5.5.5.2 host 1.1.1.10 eq 443
Router1(config)#access-list 100 permit ip any any

Router1(config)#interface g 0/0
Router1(config-if)#ip access-group 100 out

এখানে Source 5.5.5.5 কে Destination 1.1.1.10 এর জন্য 80 ও 443 port কে deny করা হয়েছে অর্থাৎ Source 5.5.5.5 থেকে কনো IP packet Router1 এর 0/0 interface দিয়ে exit/forward হওয়ার সময় Destination 1.1.1.10 এর জন্য Service port 80 ও 443 কে deny করবে, বাকি সব Service port এবং Destination এর জন্য packet আসলে Allow/forward করবে। একই ভাবে 5.5.5.2 এর জন্য Destination 1.1.1.10 এর জন্য Service port 22 ও 80 কে deny করবে এবং 443 কে Allow করবে । এবং Network 10.0.0.0/24 কে Destination 1.1.1.10 এর জন্য All Service port কে Deny করবে।

Figure : Before apply ACL on Router1. Host 5.5.5.2 is still able to use web services.

Result of host 5.5.5.2 Before apply ACL

Figure : Apply ACL on Router1.

ACL Configuration view on Router1

Figure : After apply ACL on Router2. Host 5.5.5.5 can’t able to use web services.

Result of host 5.5.5.2 After apply ACL

Operator Details : Extended ACL এর ক্ষেত্রে port number এর আগে কিছু Operator ব্যবহার করা হয়।

Some using Operator of Extended ACL

eq : ACL এ entry থাকা specific port কেই match করবে।(Ex: eq 21) শুধু 21 port কে match করবে।
neq : ACL এ entry থাকা specific port ছাড়া বাকি সব port গুলোকে match করবে।(Ex: neq 21) শুধু 21 port বাদে বাকি সব port গুলোকে match করবে।
gt : ACL এ entry থাকা specific port থেকে বড় port number গুলোকে match করবে।(Ex: gt 21) 21 এর বড় port গুলোকে match করবে।
lt : ACL এ entry থাকা specific port থেকে ছোট port number গুলোকে match করবে।(Ex: gt 21) 21 এর ছোট port গুলোকে match করবে।
range : port number এর range কে match করাবে (Ex: 21 25) এখানে 21 থেকে 25 পর্যন্ত port number গুলোকে match করাবে।

Named ACL : যখন কোনো একসেট কন্ডিশনের আইডেন্টিফিকেশন হিসেবে Name ব্যবহার করা হয় তখন তাকে Named ACL বলে। এটা Standard ও হতে পারে Extended ও হতে পারে। যদি Standard হয় তাহলে ACL Name এর আগে Standard এবং Extended হয় তাহলে ACL Name এর আগে Extended ব্যাবহার করতে হয়।

Syntax :
access-list standard <name>
access-list extended <name>
Example :
access-list standard Test_acl
access-list extended Test_acl

Benefit of Named ACL : We know, ACL condition গুলো top to bottom sequential order অনুসারে কাজ করে। এখনে Named ACL এর বড় সুবিধা হলো sequence number change করে ACL condition গুলোর order change, new condition add, existing condition remove করা যায়। অর্থাৎ ACL condition গুলো Modify/edit করা যায় যা Number ACL এ possible হয় না।

Example of Customize condition :

Editing Process by Using Named ALC

Condition Editing Process for Number ACL : Number ACL এর ক্ষেত্রে কনো condition কে modify, add বা remove করতে হলে total ACL কে remove করতে হয়। এ ক্ষেত্রে Notepad বা কনো editing application কে highly recommend করা হয়। অর্থাৎ ACL condition গুলোকে আগে Notepad এ copy করে এনে modify করতে হবে। এবং device থেকে existing ACL কে remove করে New customize ACL কে add করতে হবে, একটা single condition কেও change করতে হলে Same process apply করতে হয়।

Editing Process step by step :

  1. Copy the existing all ACL conditions from Device
  2. Paste the ACL conditions to Notepad
  3. Modify the conditions as your need.
  4. Remove the existing ACL from the Device
  5. Paste the Modifying ACL conditions from Notepad to Device.

Syntax of Standard Named ACL:

Syntax : R1(config)# ip access-list standard <acl name>
R1(config)# <permit/deny> <source address> <source wildcard mask>

Example :
Router1(config)# ip access-list standard test-acl1
Router1(config-std-nacl)# deny 10.0.0.0 0.0.0.255
Router1(config-std-nacl)# permit 5.5.5.2 0.0.0.0
Router1(config-std-nacl)# permit any

Syntax: interface <int-type> <int-number>
ip access-group <ACL named> <in/out>

Router1(config)#interface g 0/0
Router1(config)#ip access-group test-acl1 out

Standard Named ACL configure on Router1

Syntax of Eextended Named ACL:
R1(config)# ip access-list extended <acl name>
R1(config)#
<permit/deny> <protocol> <source address> <source wildcard mask> <destination address> <destination wildcard mask> <operator> <port>

Example:
Router1(config)#ip access-list extended Test-acl
Router1(config-ext-nacl)#deny tcp host 5.5.5.5 host 1.1.1.10 eq 443
Router1(config-ext-nacl)#deny ip 10.0.0.0 0.0.0.255 host 1.1.1.10
Router1(config-ext-nacl)#deny tcp host 5.5.5.2 host 1.1.1.10 eq 22
Router1(config-ext-nacl)#permit tcp host 5.5.5.2 host 1.1.1.10 eq 443
Router1(config-ext-nacl)#permit ip any any

Router1(config)#interface g 0/0
Router1(config)#ip access-group Test-acl out

Extended Named ACL configure on Router1

ACL Rules :

  1. Top to Bottom sequence order অনুসারে কাজ করে।
  2. Deny statement গুলো sequence order এর first এর দিকে রাখতে হবে।
  3. Minimum একটি permit statement থাকতে হবে।
  4. By default Implicit Deny rule কাজ করে।
  5. একটি Interface এ maximum দুটি ACL apply করা যাবে, একটি Inbound ও একটি Outbound Direction এ।
  6. Sequence Order অনুসারে New condition ACL list এর last line এ add হয়।
  7. ACL list থেকে কোনো condition modify করা যাবেনা। Modify করতে হলে text editor কে highly recommend করা হয়।
  8. ACL list থেকে কোনো specific condition remove করা যাবেনা। Device থেকে ACL remove করতে হবে এবং text editor ব্যাবহার করতে হবে।


Have Any query Please feel free to ask by Comment Below

By | 2021-03-12T01:46:35+06:00 February 24th, 2021|Security|2 Comments

About the Author:

2 Comments

  1. মোঃ শিহাব উদ্দিন February 26, 2021 at 9:13 pm - Reply

    খুব সুন্দর ভাবে লিখেছেন।

    • Rabiul Islam February 27, 2021 at 3:46 pm - Reply

      Thank you so much.❤️
      Trying to covered every single concept relevant to ACL. 🙂

Leave A Comment