본문 바로가기
네트워크

(네트워크)서버,클라이언트, ACL

by Cloud_Park 2019. 2. 27.

서버(Server) : 서비스 제공  <예> Telnet서버, FTP서버, Mail서버, DHCP서버....

클라이언트(Client) : 서비스 요청  <예> Telnet클라이언트, FTP클라이언트,DHCP클라이언트..

--------------------------------------------------------------------------

스마트폰 : 전화번호(IP주소):3계층주소, 기기제조번호(MAC주소):2계층주소

--------------------------------------------------------------------------

[ Ethernet 환경]

. IP주소 ---> MAC주소  = ARP Protocol (일반)

. MAC주소 ---> IP주소 = RARP Protocol (DHCP)

-------------------------------------------------------------------------


정적 IP주소 할당 = 수동 = 고정 IP주소 : 서버인 경우에 사용

동적 IP주소 할당 = 자동 = 유동 IP주소 : 개인PC인 경우에 사용


<DHCP - Dynamic Host Configuration Protocol>


 - PC나 호스트가 지정된 IP address를 갖는것이 아니라 PC가 부팅되면 DHCP 서버로부터 dymanic한 방식으로

   IP 주소를 하나씩 받아오는 방식이다. (동적 IP address 할당)


 - PC들은 부팅되면, TCP/IP 네트워크에 참여하기 위해서 자신이 사용해야할 IP 주소 정보

   (IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버)를 찾는다.


 - IP 주소 배정을 자동으로하고 IP 주소 관리를 편하게 해준다. 


 - DHCP는 임대(Lease) 서비스이기 때문에 사용 기간을 설정할 수도 있다.


 - DHCP 서버의 역할은 주로 전문 서버 장비들이 하지만 시스코의 경우 라우터도 이 기능을 지원한다. 


 - UDP 포트 67, 68 사용 (67은 서버, 68은 클라이언트)


  * DHCP 동작


    - 4단계 과정을 거쳐서 클라이언트에게 IP address를 할당한다.


    1) DHCP Discover : 클라이언트 -> 서버에게 'Discover' 메세지 전송 (IP 임대 요청 시작) 브로드캐스트


         출발지 포트 번호 : 68

         목적지 포트 번호 : 67

         출발지 IP 주소 : 0.0.0.0

         목적지 IP 주소 : 255.255.255.255

       - 'Discover' 메세지를 수신한 서버는 IP 주소 중복을 방지하기 위해서 ICMP Echo 전송 실시



    2) DHCP Offer : 서버 -> 클라이언트에게 'Offer' 메세지 전송 (IP 임대 응답)


        출발지 포트 번호 : 67

        목적지 포트 번호 : 68

        출발지 IP 주소 : DHCP 서버

        목적지 IP 주소 : 255.255.255.255


    3) DHCP Request : 클라이언트 -> 서버에게 'Request' 메세지 전송 (IP 임대 최종 요청)


        출발지 포트 번호 : 68

        목적지 포트 번호 : 67

        출발지 IP 주소 : 0.0.0.0

        목적지 IP 주소 : 255.255.255.255


    4) DHCP Ack : 서버 -> 클라이언트에게 'Ack' 메세지 전송 (IP 임대)


       출발지 포트 번호 : 67

       목적지 포트 번호 : 68

       출발지 IP 주소 : DHCP 서버1

       목적지 IP 주소 : 255.255.255.255




   - DHCP 서버 설정 -


 Router(config)#service dhcp                            // DHCP 서버를 사용가능하게 하겠다는 선언  

                                                        (디폴트이기 때문에 안해도 되지만 확실히 하기 위해서 설정)


 Router(config)#ip dhcp pool itbank                     // DHCP로 사용된 주소의 pool(영역) 즉, IP주소 범위 지정

 Router(dhcp-config)#network 192.168.10.0 255.255.255.0 // DHCP로 할당할 IP address 대역을 지정

 Router(dhcp-config)#default-router 192.168.10.254      // 호스트가 내부에서 목적지를 찾이 못했을때 

                                                           갈 수 있는 라우터의 이더넷 인터페이스의 IP주소

 Router(dhcp-config)#exit


 Router(config)#ip dhcp excluded-address 192.168.10.254 // DHCP로 할당할 IP address 중 할당하지 말아야할 IP adress 지정

                                                           즉, DHCP pool에서 제외시켜줄 IP를 지정한다.

                                                           (지금은 192.168.0.254가 라우터의 이더넷 인터페이스 IP로

                                                           사용되기 때문에 호스트에 할당되면 안된다.)


  그 외에도 

 

Router(dhcp-config)#dns-server x.x.x.x                   // DNS 서버를 지정한다. (x.x.x.x는 DNS서버의 IP주소)

Router(dhcp-config)#domain-name cisco.com                // domain-name을 설정 (cisco.com은 임의로 사용했음)

Router(dhcp-config)#lease infinite                       // 배정시간(lease time) 지정, 즉 IP를 얼마동안 할당하겠다는 의미

                                                            (infinite는 무한정으로 할당하겠다는 의미다. infinite 대신 

                                                            <0 - 365> 입력 가능 (단위는 Days))




 - 'show ip dhcp binding'으로 할당 내역을 확인할 수 있다. 


 - 'show ip dhcp server statistics'으로 사용되는 메모리, DHCP Pool 숫자, 배정된 IP 숫자 등을 확인할 수 있다.


 - 'clear ip dhcp binding ?'으로 client IP 할당을 제거할 수 있다.





============================================================================================================

 <Access List - ACL>


 - 네트워크에 접근여부를 허용할지 말지를 결정하는 리스트 (필터링이라고 보면 된다.)


 - 보안을 위해서 많이 사용된다.


 - 라우터에서 세팅 된다고 네트워크 계층까지가 아니라 어플리케이션 계층의 부분까지  관리하기 때문에 네트워크 계층까지라고 단정할 수 없다.

    (하지만 물리계층에서 어플리케이션 계층까지 완벽히 막을 수 없기 때문에 더 많은 보안기능이 있는 firewall같은 전문 보안 장비를 사용한다.)

 

 - 액세스 리스트는 크게 두 종류로 numbered과 named로 구분할 수 있다.

    각각에는 standard와 extended가 있다.


  1) standard Access list (표준 ACL) -> source address 만 참조해서 필터링 여부를 결정한다. 

     


  2) extended Access list (확장 ACL) -> source address 외에도 destination address, 프로토콜, 포트 번호 

                                       등 좀더 자세한 정보를 참조해서 필터링 여부를 결정한다.


 - 각 ACL 별 사용하는 ACL numner


  =>   Standard ACL (1-99)

           

       Extended ACL (100-199)


       Ethernet type code ACL (200-299)


       Extended 48bit Ethernet ACL (1100-1199) 


       DECnet ACL (300-399)


       XNS ACL (400-499)


       Extended XNS ACL (500-599)


       Apple ACL (600-699)


       48bit Ethernet ACL (700-799)  


       Standard IPX ACL (800-899)


       Extended IPX ACL (900-999)


       IPX SAP (1000-1099)


       NLSP Route Summary ACL (1200-1299)


       Standard IP ACL (Expanded Range) (1300-1999)


       Extended IP ACL (Expanded Range) (2000-2699)

    

==============================================================================================================================

  <ACL 규칙>


 1) ACL은 윗줄부터 순서대로 수행된다. 때문에 ACL은 좁은 범위 설정이 먼저 되어야 한다.


       만약 다음 처럼 넓은 범위를 먼저 설정하게 되면 모든 Packet이 허용되게 된다. (필터링 효과가 없다.)


       R1(config)# access-list 1 permit any

       R1(config)# access-list 1 deny 125.101.1.0 0.0.0.255


 2) ACL의 마지막은 deny any 가 생략되어 있다. 즉, 마지막에 permit any가 없을 경우 ACL 조건에 없는 

    모든 address는 deny 된다.


 3) numbered ACL은 순서대로 입력되기 때문에 중간 삽입이나 중간 삭제가 불가능하다.

    즉, 중간에 리스트가 틀렸어도 중간 삽입, 수정, 삭제가 불가능하다. 

    (no 명령어를 이용해서 중간 라인만 지울 수 없다. => numbered인 경우에)

    

     => 만약 수정할 경우에는 설정한 ACL을 no 명령어로 삭제하기 전에 text파일로 복사하고 명령어를 삭제한 후

        text파일을 원래의 내용으로 수정해서 붙여넣는 것이 편리하다.


  * 예외 named ACL의 경우는 중간 삭제 및 추가 삽입이 가능한다.


  즉, 새로 추가하는 모든 조건은 마지막에 더해진다. (순서가 하향식 계산이다.)


 4) interface에 별 다른 ACL이 정의가 되어있지 않으면 아무런 필터링이 동작하지 않는다.



===============================================================================================================================

 <ACL의 동작방식>


 1) inbound 설정

  

   - 패킷이 라우터 내부로 들어올때 필터링 여부를 결정 


   - 라우터 인터페이스로 패킷이 들어올 경우 수신 인터페이스에 ACL이 설정되어 있는지 확인하고  설정이 되어있지 않으면 그냥 통과시킨다. 


   - 만약 ACL이 설정돼 있다면 들어온 패킷의 정보와 ACL에 설정 내용을 비교해서 통과 여부를 결정한다. 

      (조건과 일치하고 permit이면 통과, deny면 통과 X)



 2) outbound 설정


   - 패킷이 라우터 외부로 나갈때 필터링 여부를 결정한다


   - 라우터 인터페이스에서 패킷이 나갈 경우 인터페이스에 ACL이 설정되어 있는지 확인하고  설정이 되어있지 않으면 그냥 보낸다. 


   - 만약 ACL이 설정돼 있다면 나가는 패킷의 정보와 ACL에 설정 내용을 비교해서 통과 여부를 결정한다. 

      (조건과 일치하고 permit이면 통과, deny면 통과 X)


================================================================================================================================

 <standard ACL>


  - standard ACL의 경우는 출발지 주소(source address)를 보고 permit, deny 여부를 결정한다. 


  - 패킷의 source address와 ACL에 정의된 source address가 일치하면 ACL의 내용을 수행한다. (permit or deny)


  - permit이면 패킷을 정해진 경로로 전송하고 deny면 패킷의 흐름을 막은 다음 'host unreachable'이라는 ICMP 메시지를 뿌려준다.


  - standard ACL의 사용 list-number는 1-99까지 사용한다.


  

   * standard ACL 설정 


  => R1(config)#access-list <list-number> {permit | deny} {<source address> <wildcard mask> | any}

                                           -------------    -------------   ------------------------

                                                 1                2                   3           


       1 : list-number는 1-99까지의 번호를 사용한다. (1-99까지가 standard ACL의 번호이다.)


       2 : 조건에 맞는 패킷을 permit할지 deny할지 결정한다.


       3 : 조건을 넣는다. standard ACL의 조건은 source address, 그리고 뒤에 source address에 대한 wildcard mask를 넣는다.

            source address를 넣지 않고 any라고 입력하면 특정 출발지 주소가 아닌 모든 주소에 2번의 수행 내용을 적용한다.


   * ACL을 인터페이스 적용


  => R1(config)#interface serial 0/0

     R1(config-if)#ip access-group <list-number> <in | out>

                                    -----------   --------

                                        1            2


        1 : 앞에서 정의한 ACL을 불러와서 필터링 내용을 인터페이스에 적용한다.

 

        2 : inbound와 outbound 설정.

            in은 라우터의 인터페이스로 패킷이 들어오는 경우

            out은 패킷이 라우터의 인터페이스에서 나가는 경우 

 


   * standard ACL은 항상 destination 라우터 쪽에 설정되어야 한다. 중간 라우터에 설정하면 다른 라우터들까지 ACL의 영향을 받아서 

     정상적으로 패킷 전송이 이루어지지 않을 수 있다.



 ex1>  210.100.8.2/32 IP주소를 출발지로 가진 패킷을 R1에 들어오지 못하게 차단하시오. 

        (serial 0/0 포트가 외부 아이피가 들어오도록 연결되어 있다.)


     R1(config)#access-list 10 deny 210.100.8.2 0.0.0.0

     R1(config)#access-list 10 permit any      // 마지막 줄은 deny any가 생략돼있다. 때문에 나머지 패킷을 허용하기 위해서 사용


     R1(config)#interface serial 0/0

     R1(config-if)#ip access-group 10 in 



 ex2>  190.150.82.21/32 IP주소를 출발지로 가진 패킷만  R2에 들어오도록 설정하시오.

        (serial 0/1 포트가 외부 아이피가 들어오도록 연결되어 있다.)


     R2(config)#access-list 5 permit 190.150.82.21 0.0.0.0


     R2(config)#interface serial 0/1

     R2(config-if)#ip access-group 5 in 



 ex3>  51.100.92.8/32 IP 주소가 출발지인 패킷을 R3을 통해 외부로 나가지 못하게 설정하시오


     R3(config)#access-list 20 deny 51.100.92.8 0.0.0.0

     R3(config)#access-list 20 permit any


     R3(config)#interface serial 0/0

     R3(config-if)#ip access-group 20 out   


====================================================================================================================================

 <VTY port(텔넷포트)에서 ACL 지정>


 - ACL을 미리 만든다.


 * 설정 


 R1(config)#line vty 0 4

 R1(config-line)#access-class 12 <in | out>


 => 미리 ACL 12에 대한 내용을 만들고 line vty에 들어가서 ACL 12를 VTY의 in으로 할지 out으로 할지 설정한다. 



 <ex. R1 텔넷에 211.221.221.0 네트워크만 접속이 가능하게 해라>


  => R1(config)#access-list 15 permit 211.221.221.0 0.0.0.255    // 211.221.221.0/24 네트워크만 허용해라

                                                                                               (마지막에 deny any가 생략되어 있다.)


      R1(config)#line vty 0 4                        // line vty 모드에서 설정

      R1(config-line)#access-class 15 in             // 텔넷으로 들어오는 정보들에게 ACL 15의 조건을 확인하고

                                                        통과 여부를 결정한다.

            

 * 텔넷 접속 제어는 주로 standard 방식을 사용한다.


==========================================================================

 <Extended ACL>


  - standard ACL은 source address만 조건으로 보고 필터링을 수행한다. 

    하지만 extended ACL은 출발지와 목적지 주소(destination address) 모두를 제어한다.


  - 또한 standard ACL은 TCP/IP에 대해 제어만을 하지만 extended ACL은 ip, tcp, udp, icmp 등의 상세 프로토콜을 선택해서

    설정할 수 있다.

 

  - extended ACL의 사용 list-number는 100-199까지 사용한다.



   * extended ACL 설정 


  => R1(config)#access-list <list-number> {permit|deny} <protocol> <source address> <wildcard mask> <destinationaddress> <wildcard mask> 

       ------------  -------------  --------- -------------------------------  ------------------------------------

             1              2             3                    4                                   5

                            <operator Destination-port number>

                              -------------------------------

                                            6


     1 : list-number는 100-199까지의 번호를 사용한다. (100-199까지가 extended ACL의 번호이다.)

           

     2 : 조건에 맞는 트래픽을 permit할지 deny할지 결정한다.


     3 : 필터링을 할 프로토콜을 정의한다. (TCP, UDP, IP 등)


     4 : source address를 지정한다.


     5 : destination address를 지정한다.


     6 : 목적지 TCP/UDP 포트 이름 및 번호를 지정한다.



   * ACL을 인터페이스 적용


  => R1(config)#interface serial 0/0

     R1(config-if)#ip access-group <list-number> <in | out>

                                    -----------   --------

                                        1            2


        1 : 앞에서 정의한 ACL을 불러와서 필터링 내용을 인터페이스에 적용한다.

 

        2 : inbound와 outbound 설정.

            in은 라우터의 인터페이스로 패킷이 들어오는 경우

            out은 패킷이 라우터의 인터페이스에서 나가는 경우 



 ex1> R1에 들어오는 트래픽 중 목적지가 210.150.6.0/24 네트워크에 있는 트래픽들을 모두 차단하시오


     R1(config)#access-list 101 deny ip any 210.150.6.0 0.0.0.255   // 출발지가 any, 목적지가 210.150.6.0/24인 ip는 deny

     R1(config)#access-list 101 permit ip any any


     R1(config)#interface serial 0/0

     R1(config-if)#ip access-group 101 in 




 ex2> R2에 들어오는 트래픽 중 출발지가 200.101.52.0/24 네트워크만이 129.29.31.0/24 네트워크에 있는 FTP와 telnet서버에 

      접속할 수 있도록 하여라


     R2(config)#access-list 110 permit tcp 200.101.52.0 0.0.0.255 129.29.31.0 0.0.0.255 eq 20   

     R2(config)#access-list 110 permit tcp 200.101.52.0 0.0.0.255 129.29.31.0 0.0.0.255 eq 21

     R2(config)#access-list 110 permit tcp 200.101.52.0 0.0.0.255 129.29.31.0 0.0.0.255 eq 23


     R2(config)#interface serial 0/1

     R2(config-if)#ip access-group 110 in 



 ex3 > R3의 197.2.13.1/32 에서 나가는 트래픽 중 HTTP와 TFTP만을 차단하고 모두 허용하여라


     R3(config)#access-list 150 deny tcp host 197.2.13.1 any eq 80   // access-list 150 deny tcp 197.2.13.1 0.0.0.0 any eq 80과 같은 의미    

     R3(config)#access-list 150 deny udp host 197.2.13.1 any eq 69

     R3(config)#access-list 150 permit ip any any


     R3(config)#interface serial 0/1

     R3(config-if)#ip access-group 150 out 

 


 ex4 > R4로 들어오는 트래픽 중 목적지가 HTTP서버(201.11.102.10) FTP서버(190.20.81.1)인 트래픽만 들어올 수 있도록 설정하시오


     R4(config)#access-list 120 permit tcp any host 201.11.102.10 eq 80

     R4(config)#access-list 120 permit tcp any host 190.20.81.1 eq 20

     R4(config)#access-list 120 permit tcp any host 190.20.81.1 eq 21


     R4(config)#interface serial 0/1

     R4(config-if)#ip access-group 120 in


==========================================================================

 * Well Known Port (지정포트)


      1) TCP : FTP(20, 21), Telnet(23), SMTP(25), HTTP(80), HTTPs(443)


      2) UDP : DNS(53), TFTP(69), DHCP(67, 68)


==========================================================================

 * 출발지나 목적지 IP address의 서브넷 마스크가 32비트일 경우에는 wildcard mask 대신 주소앞에 host 명령어를 사용할 수 있다.

 

 <ex> R1(config)#access-list 10 deny 10.10.10.1 0.0.0.0  ==>  R1(config)#access-list 10 deny host 10.10.10.1 (둘다 동일한 의미이다.)


==========================================================================

 <Named ACL>


 - 번호로 계속해서 ACL을 생성할 경우 서로 구분하기가 어렵다. 이럴 경우 숫자가 아닌 text로 Named ACL을 사용하면 서로 구분하기가 쉽다.  


 - Named ACL의 특징은 numbered와는 달리 부분 삭제 및 중간 수정이 가능하다. (numbered는 수정을 위해서는 ACL자체를 삭제하고 다시 설정해야 했다.)

 

 - Named ACL도 standard와 extended로 구분된다


 - 'show ip access-lists'를 사용하면 ACL내용 확인이 가능하다.


==========================================================================

 <Named ACL standard>


 * 설정


  R1(config)#ip access-list standard <text-name>

  R1(config-std-nacl)#{permit | deny} <source address> <wildcadr mask>

  R1(config-std-nacl)#exit


  R1(confing)#interface <interface name>

  R1(config-if)#ip access-group <ACL text name> {in | out}



 ex > 출발지가 210.100.9.2 /32인 패킷을 Named ACL을 사용하여 R1에 들어오지 못하게 차단하여라


  R1(config)#ip access-list standard Deny_210        

  R1(config-std-nacl)#deny host 210.100.9.2               // deny 210.100.9.2 0.0.0.0 과 같은 의미이다. 

  R1(config-std-nacl)#permit any                          // 다른 IP 대역은 통과시키기 위해서

  R1(config-std-nacl)#exit


  R1(confing)#interface serial 0/0

  R1(config-if)#ip access-group Deny_210 in


==========================================================================

 <Named ACL extended>


 * 설정


  R1(config)#ip access-list extended <text-name>

  R1(config-std-nacl)#{permit | deny} <protocol> <source address> <wildcard mask> <destination address> <wildcard mask> <operator Destination-port number>

  R1(config-std-nacl)#exit


  R1(confing)#interface <interface name>

  R1(config-if)#ip access-group <ACL text name> {in | out}


 ex 1> 출발지가 201.100.10.1/24, 목적지가 192.10.8.1/32인 패킷을 R2에 들어오지 못하도록 차단하시오


  R2(config)#ip access-list extended Deny_192

  R2(config-std-nacl)#deny ip 201.100.10.1 0.0.0.255 host 192.10.8.1     // deny ip 201.100.10.1 0.0.0.255 192.10.8.1 0.0.0.0 과 같은 의미 

  R2(config-std-nacl)#permit ip any any                                  // 다른 IP 대역은 통과시키기 위해서

  R2(config-std-nacl)#exit


  R2(confing)#interface serial 0/1

  R2(config-if)#ip access-group Deny_192 in

 


 ex 2> 151.100.10.0/24 대역의 트래픽만 200.10.100.1/32 웹서버에 접근이 가능하도록 ACL을 설정하시오


  R2(config)#ip access-list extended Per_151

  R2(config-std-nacl)#permit tcp 151.100.10.0 0.0.0.255 host 200.10.100.1 eq 80          //뒤에 deny any가 생략되어 있다.                      

  R2(config-std-nacl)#exit




==========================================================================

'네트워크' 카테고리의 다른 글

(네트워크)라우팅 프로토콜과 VLAN  (0) 2019.02.27
(네트워크)CCNA 명령어  (0) 2019.02.07
(네트워크)EIFRP  (0) 2019.02.07
(네트워크)서브넷  (0) 2019.02.07
(네트워크)동적 라우팅 프로토콜  (0) 2019.02.07