기초 물방울/네트워크

킹오브랜스위칭 공부기록#7 (포트보안/ACL)

Weeding 2023. 1. 4. 15:14
반응형
SMALL

포트 보안

스위치의 특정 포트에 특정 MAC 주소를 가진 장비만 접속할 수 있게 하는 것.

 

기본 설정

 

 

1. 기본 정적 포트 보안 설정하기 

SW1 e0/1 port에는 MAC 주소가 0000.0000.0001인 장비만 접속할 수 있도록 설정.

 

SW1

interface Ethernet0/1
 switchport mode access
 switchport port-security mac-address 0000.0000.0001
 switchport port-security

 

R1의 mac주소를 변경하면 R3와 통신되지 않는다. R2는 R3와 통신이 되지 않는다.

아래와 같이 특정 포트에는 특정 MAC 주소를 가진 Frame만 접속하게 합니다.

 

 switchport port-security mac-address 0000.0000.0001

위 명령어는 "MAC 주소 0000.0000.0001"은 SW1의 F0/1 포트에만 접속할 수 있고, 다른 포트에는 접속할 수 없다" 라는 의미도 가집니다.

 

위와 같이 포트 보안을 제거하고 인터페이스를 확인하면 포트 보안 침해로 인해 e0/1 부분이 비활성화 되있는 것을 확인할 수 있습니다. (실습 처음에 e0/0이 아닌 e0/1로 설정해서 이 부분 헷갈리지말것, 다시 수정했음)

그러면 그냥 no shut으로만 하면 안되고 !! shut하고 다시 활성화 시켜야 인터페이스가 살아납니다.

 

 

 

동적인 포트 보안용 MAC 주소 지정

포트 보안은 정적(static)인 access port, trunk port 및 터널 포트에만 설정할 수 있습니다. 그러나, etherchannel, Routed Port 및 SVI 등에는 설정할 수 없습니다. 포트 보안용 MAC 주소를 지정하는 방법은 3가지가 있습니다.

 

1. 동적인 MAC 주소 지정

2. 정적인 MAC 주소 지정

3. 포트 스티키

 

동적으로 지정하려면 해당 포트에 switchport port-security 명령어만 사용하면 됩니다.

설정 시 MAC 주소 테이블에 있거나, 이 후 이 포트를 통하여 수신하는 Frame의 MAC 주소가 포트 보안용 MAC 주소가 됩니다. 포트 보안이 설정된 포트에는 기본적으로 하나의 MAC 주소만 허용됩니다.

 

포트 보안 설정 확인

 

이러한 동적인 포트 보안은 출발지 MAC 주소를 변경하여 수많은 프레임을 전송하는 MAC Flooding 공격 등을 방어하는데 유리합니다.

 

 

 

정적인 포트 보안용 MAC 주소 지정

포트 보안용 MAC 주소를 정적으로 직접 지정하려면 해당 포트에 switchport port-security address 명령어를 사용합니다.

 

 

 

포트 스티키

동적인 포트 보안 MAC 주소를 정적인 주소로 변경시키는 것을 말합니다. 동적인 포트 보안 MAC 주소는 스위치의 전원을 다시 켜면 다 삭제됩니다. 그러나, 포트 스티키 방식을 사용하면 설정 파일을 저장할 때 포트 보안 MAC주소도 함께 저장되어 전원을 꺼도 삭제되지 않습니다.

 

포트 스트키는 트렁크포트나 다른 스위치와 연결되는 액세스 포트에서 동시에 다수개의 포트 보안 MAC 주소를 설정할 때 편리합니다.

 

 

interface Ethernet0/2
 switchport trunk encapsulation dot1q
 switchport mode trunk
 switchport port-security maximum 3
 switchport port-security mac-address sticky

포트 스티키 설정. 이제 각 PC에서 서버로 접속하면 각 PC의 MAC 주소가 자동으로 포트 스티키 MAC주소가 됩니다.
  switchport port-security

 

 

 

설정 뒤 트래픽을 발생시켜 SW2에서 MAC 주소를 확인해보기.

(R1,R2 -> R3 ping)

확인 해보면 R1,R2의 MAC 주소가 포트 보안 MAC 주소로 등록되는걸 확인할 수 있습니다.

그리고 copy run start로 포트 스트키 MAC 주소를 저장하고 전원 리셋 후 확인을 해보면 그대로 PC들의 MAC 주소가 포트 보안 MAC 주소로 지정되어 있는걸 확인할 수 있습니다.

포트 스티키 MAC 주소 확인하기

 

 

 

포트 보안 침해시 동작 설정

포트 보안용 MAC 주소가 아닌 프레임을 수신했을 때 (앞의 실습 참고) 기본적으로 해당 포트를 shutdown 시킵니다.

이 경우에는 해당 포트를 한 번 더 shutdown시킨후에 다시 no shut을 해야합니다.

포트 보안 침해시 동작을 다른 것으로 변경하려면 다음과 같이 합니다.

 

 

SW2(config)#int e 0/2
SW2(config-if)#switchport port-security violation ?
  protect   Security violation protect mode

  restrict  Security violation restrict mode
  shutdown  Security violation shutdown mode

 

protect는 보안 침해 시 해당 장비의 접속만 차단하고, 접속이 허용된 장비들은 계속 포트를 사용할 수 있게 합니다.

restrict는 protect와 옵션이 같으나, 추가적으로 로그 메시지를 발생시키고 보안 침해 카운터를 증가시킵니다.

shutdown은 기본 설정입니다. 

 

 

restrict로 실습을 해보겠습니다.

SW2(config-if)#switchport port-security violation restrict

 

 

테스트를 위해 SW1 e0/0 포트를 초기화 하겠습니다.

SW1(config)#default int e 0/0
Interface Ethernet0/0 set to default configuration

 

 

R1의 MAC 주소를 0000.0000.0011로 변경하겠습니다.

그 뒤, R1 -> R3로 ping을 해봅니다.

위 실습에서는 스티키 설정 시 포트에 설정할 수 있는 최대 포트 보안 MAC 주소 수량을 3개로 해놨기 때문에 처음에 핑이 되지 않으면서 MAC주소가 저장되지 않았습니다. 고로, SW2에서 maximum 수량을 4로 바꿔주고 실습을 진행했습니다.

R1 -> R3로 ping도 가고 SW2에 0011 mac 주소도 저장되있는것 확인.

 

다시 R1의 e0/0 포트의 MAC주소를 0000.0000.0012로 변경해보고 핑을 해봤습니다.

그러니 SW2에서 0012에 의한 보암침해가 발생했다는 로그를 확인할 수 있습니다. 

(restrict 설정 옵션 작동, 로그메시지, 보안침해가 일어난것 역시 확인.)

 

 

restrict로 설정하였기 떄문에 보안침해가 일어나도 해당 포트를 셧다운 시키지 않아 다른 장비들은 통신이 가능합니다.

R2->R3 ping을 확인해보겠습니다.

 

 

 

 

ACL 보안

 

포트 ACL LAB

 

포트 ACL

Layer 2 포트에 access list를 적용하는 것을 port ACL이라 하며, 포트 ACL은 MAC ACL과 IP ACL을 모두 사용할 수 있다.

 

제약사항

- in 옵션만 사용 가능 (스위치가 포트에서 프레임을 수신할 때에만 적용 가능)

- 특정 스위치에 VLAN 맵이나 inbound 라우터 ACL이 설정되어 있으면 포트 ACL을 사용할 수 없다.

 

 

위 랩에서 SW1의 포트e0/0에 접속된 R1에서 R2로 가는 프레임을 포트 ACL을 이용해 차단해보겠습니다.

 

우선, 기본 설정을 하겠습니다.

R3(config)#ipv6 unicast-routing
R3(config)#ipx routing
R3(config)#int e 0/0
R3(config-if)#ip add 1.1.1.3 255.255.255.0
R3(config-if)#mac-address 0000.0000.0003
R3(config-if)#no sh
R3(config-if)#ipv6 address 3000:1:1:1::3/64
R3(config-if)#ipx network 1

 

 

 

SW1에서 다음과 같이 R1->R2로 가는 프레임을 차단하는 MAC access list를 만듭니다.

1. SW1(config)#mac access-list extended mac-r1r2
2. SW1(config-ext-macl)#deny host 0000.0000.0001 host 0000.0000.0002
3. SW1(config-ext-macl)#permit any any
4. SW1(config-ext-macl)#exit
5. SW1(config)#int e 0/0
6. SW1(config-if)#mac access-group mac-r1r2 in

 

1. 적당한 이름을 만들어 확장 mac access list 설정 모드로 들어가고

2. 출발지가 0001 // 목적지가 0002 인 이더넷 프레임을 거부하는 MAC access list를 만듭니다.

3. 나머지 프레임은 모두 허용.

6. 인터페이스에 MAC access list를 지정합니다. 포트 ACL은 switch 입장에서 수신(in) 방향에만 적용할 수 있다.

즉, PC에서 스위치로 전송되는 프레임만 제어가 가능하다.

 

의도한데로 R1->R2 비 IP(non-IP) 프레임인 IPX 프레임은 의도했던 것처럼 포트 e0/0에서 차단되어 핑이 되지 않습니다.

 

 

 

IP access-list를 이용한 포트 ACL

SW1(config)#ip access-list extended ip-r1r2
SW1(config-ext-nacl)#deny ip host 1.1.1.1 host 1.1.1.2
SW1(config-ext-nacl)#permit ip any any
SW1(config)#int e 0/0
SW1(config-if)#ip access-group ip-r1r2 in

IP access-list를 이용한 포트 ACL에서는 IP 패킷도 차단된다.

 

 

 

라우터 ACL

routed port나 SVI와 같은 layer 3 포트에 access-list를 적용하는 것을 라우터 ACL이라 합니다.

라우터 ACL에는 IP ACL만 사용할 수 있으며, 즉 MAC ACL은 사용할 수 없습니다.

 

위의 실습에서 R1 -> R2로 가는 패킷을 라우터 ACL을 이용해 차단하는 테스트를 해보기 위해 설정을 해보자.

 

SW1

interface Ethernet0/0
 switchport access vlan 10
 switchport mode access
!
interface Ethernet0/1
 switchport access vlan 20
 switchport mode access
!
interface Ethernet0/2
!
interface Ethernet0/3
!
interface Vlan10
 ip address 1.1.10.3 255.255.255.0
 ip access-group racl-r1r2 in
!
interface Vlan20
 ip address 1.1.20.3 255.255.255.0

 

ip access-list extended ip-r1r2
 deny   ip host 1.1.1.1 host 1.1.1.2
 permit ip any any
ip access-list extended racl-r1r2
 deny   ip host 1.1.10.1 host 1.1.20.2
 permit ip any any

 

R1

ip address 1.1.10.1 255.255.255.0

ip route 0.0.0.0 0.0.0.0 1.1.10.3

 

R2

ip address 1.1.20.2 255.255.255.0

ip route 0.0.0.0 0.0.0.0 1.1.20.3

 

 

 

access-list를 설정하기 전에는 다음처럼 R1과 R2 사이에 통신이 됩니다.

스위치에 인바운드 라우터 ACL과 포트 ACL을 동시에 사용할 수 없습니다.

따라서, 포트 ACL을 제거하고 SVI 인터페이스에 IP access-list를 적용하니 R1->R2 패킷이 차단되었습니다.

 

R1(config)#do ping 1.1.20.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.20.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

 

SW1(config-if)#no ip acc
SW1(config-if)#no ip access-group ip-r1r2 in
SW1(config-if)#no mac ac
SW1(config-if)#no mac access-group mac-r1r2 in

 

SW1(config)#ip access-list extended racl-r1r2
SW1(config-ext-nacl)#deny ip host 1.1.10.1 host 1.1.20.2
SW1(config-ext-nacl)#permit ip any any
SW1(config)#int vlan 10
SW1(config-if)#ip access-group racl-r1r2 in


R1(config)#do ping 1.1.20.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.20.2, timeout is 2 seconds:
U.U.U

 

 

이렇게 SVI에 라우터 ACL을 적용시켜 보았습니다.

 

 

이제 SW1이 Routed port일 때 라우터 ACL을 사용해 R1 -> R2 IP 패킷을 차단해보겠습니다

 

Routed Interface에 IP access-list 적용하기

SW1(config)#ip access-list extended racl-r1r2
SW1(config-ext-nacl)#deny ip host 1.1.10.1 host 1.1.20.2
SW1(config-ext-nacl)#permit ip any any
SW1(config)#int e 0/0
SW1(config-if)#ip access-group racl-r1r2 in

 

패킷이 차단되어 R1 -> R2로 통신이 되지 않는다.

 

 

 

 

VLAN ACL

VLAN 맵은 MAC ACL과 IP ACL 모두 사용할 수 있습니다. (매우 유용함)

VLAN간의 트래픽뿐만 아니라 VLAN 내부에 있는 장비간의 트래픽도 제어할 수 있죠.

 

SW(config)#access-list 100 permit tcp host 1.1.10.1 host 1.1.10.3 eq telnet
SW(config)#access-list 100 permit tcp host 1.1.20.2 host 1.1.10.3 eq telnet
SW(config)#access-list 101 permit ip any any
SW(config)#vlan access-map no-r1r2
SW(config-access-map)#match ip address 100
SW(config-access-map)#action drop
SW(config-access-map)#exit
SW(config)#vlan access-map no-r1r2
SW(config-access-map)#match ip address 101
SW(config-access-map)#action forward
SW(config-access-map)#exit
SW(config)#vlan filter no-r1r2 vlan-list 10,20

 

 

 


 

Access List (ACL) 정리

  • 특정 IP(라우터acl/L3) 혹은 Port(포트acl/L2/In만 가능)를 지정하여 차단하거나 허용한다.
  • Wildcard-mask를 이용해 출발지 혹은 목적지 IP 주소, Port번호를 이용해 프로토콜을 지정하고 해당되는 객체를 permit 혹은 deny 하기 위한 정책이다.
  • ACL만으로는 필터링이 작동하지 않는다!
    이 말은 즉, ACL 정책 설정 명령어만으로는 필터링이 되지 않기 때문에, 적용을 하는 (ip access-group 1 in) 명령어가 들어가야 필터링이 작동한다는 뜻이다.
  • 일반적으로 라우터의 인터페이스의 보안 수립과 라우팅 프로토콜의 경로를 조정하기 위한 용도로 사용된다.
  • 포트 정책 적용 시 Inbound와 Outbound의 방향은 라우터의 관점에서 따지게 된다.
  • ACL 생성 시 기본적으로 마지막줄에 모든 대상에 대한 차단 정책이 수립된다.
  • 필터링시 ACL 정책의 위에서 부터 비교를 하게 된다.

 

ACL 종류

  • Numbered ACL
    1. Standard acl : 1~99 // 출발지 IP만 고려
    2. Extend acl : 100~199 // 출발지,목적지 IP, Port 를 고려한다.

  • Named ACL
    1. 영문(Text)로 ACL 이름 지정
    2. ACL의 중간 첨삭이 가능하다.
    3. Standard, Extend 모두 사용 가능하다.

 

 

◆ LAB: ACL (Standard)

문제1

구성도와 같이 적절한 IP설정 후모든 HOST간에 통신이 이루어 지도록 설정 하세요. (RoutingSTATIC를 사용하세요)

 

문제

PC1에서 PC4으로의 Traffic을 차단하세요.  R1에서 Fa0/0에서 설정 하세요 !

R1(config)#access-list 1 deny host 1.1.1.1
R1(config)#int e 0/0
R1(config-if)#ip access-group 1 in

PC1 -> 4뿐만 아니라 5,6 으로 다 통신이 되질 않는다.

문제

문제2번에 의해, PC1이 차단된것은 확인 하였지만, PC2,PC3에서 PC4으로도 통신이 되지 않는 이유는 무엇입니까?

- ACL에는 Deny all이 숨어 있기 떄문. access-list permit any를 넣어주고 통신 해봄. 

- PC2, 3 --> PC4로 통신완료

 

문제4  PC2번도 PC4으로의 통신을 차단하세요.  (PC2번을 위한 deny ACL추가)

access-list 1 deny   1.1.1.1
access-list 1 deny   1.1.1.2
access-list 1 permit any

interface Ethernet0/0
ip access-group 1 in

** 중간에 수정을 하려면 named로 설정해야 가능함. 따라서, 처음에 기존 설정에 deny 1.1.1.2를 끼워넣는데 덮어써지는 현상이 발생해 우선 이 랩에서는 named 설정은 하지 않고 acl을 초기화 한 후 다시 설정하였음.

 

** access-list standard 번호를 다른걸로 해서 e0/1포트에 out으로 넣어도 되지만, 현재 랩에서는 정책이 3개이상으로 늘어나게 되면 필터링을 걸어줄 포트 갯수에 한계가 있다.

 

 

문제5 현재 PC1,PC2PC4로 통신이 되지 않고, PC3PC4로 통신이 됩니다.

 

문제6. 현재 R1에 설정되어 있는 ACL을 모두 삭제하세요.

 

문제7.

PC1,PC3PC4,PC5,PC6과 통신이되지 않도록 설정하고, PC2PC4,PC5,PC6과 통신이 되도록 만드세요.

ACL2줄만 사용할 수 있습니다.

 

access-list 1 deny  host 1.1.1.1
access-list 1 deny  host 1.1.1.3
access-list 1 permit 1.1.1.2

interface Ethernet0/0
ip access-group 1 in

 

이런식으로 설정해도 되지만, 

 

access-list 1 deny   1.1.1.1 0.0.0.2
access-list 1 permit any

ip access-group 1 in

 

wildmask를 사용해서 설정하는게 훨씬 더 깔끔하다.

 

 

 

LAB: ACL (Extended / Named)

문제1:

구성도와 같이, IP를 설정 후, 모든 PC간의 통신을 확인 하세요

 

문제2:

PC1(1.1.1.1)에서 PC4로 가는 ICMP message만을 차단하세요. (PC1에서 다른 PC로 가는 모든 ICMP는 허용돼야 하며

PC1에서 PC4ICMP이외에 다른 Traffic이 허용돼야 합니다) R1Fa0/0에서 설정 하세요.

access-list 100 deny icmp host 1.1.1.1 host 2.2.2.1
access-list 100 permit icmp any any

interface Ethernet0/0
ip access-group 100 in

 

문제3:

PC1에서 PC5으로 가는 WEB(80) traffic도 차단하세요.

access-list 100 deny icmp host 1.1.1.1 host 2.2.2.1
access-list 100 deny 80 host 1.1.1.1 host 2.2.2.2 

= access-list 100 deny tcp host 1.1.1.1 host 2.2.2.2 eq 80
access-list 100 permit icmp any any
access-list 100 permit 80 any any

= access-list 100 permit ip any any

 

 

문제4:

ACL 100을 삭제하고, Named ACL로 만들어 적용해 주세요.

R1(config)#no access-list 100

R1(config)#ip access-list extended ACL

R1(config-ext-nacl)#10 deny icmp host 1.1.1.1 host 2.2.2.1
R1(config-ext-nacl)#20 deny tcp host 1.1.1.1 host 2.2.2.2 eq 80
R1(config-ext-nacl)#30 permit ip any any
R1(config-ext-nacl)#exit
R1(config-if)#no ip access-group 100 in
R1(config-if)#ip access-group ACL in

 

 

문제5:

현재의 상황에서, PC2에서 PC4로 가는 ICMP도 차단 하세요.

R1(config)#ip access-list extended ACL

R1(config-ext-nacl)#15 deny ip host 1.1.1.2 host 2.2.2.1

 

문제6:

현재 적용되어 있는 ACLR1S0/0/0에 적용하세요.

R1(config)#int e 0/0
R1(config-if)#no ip access-group ACL in
R1(config)#int e 0/1
R1(config-if)#ip access-group ACL out

 

 

문제7:

현재 적용되어 있는 ACLR1S0/0/0inbound로 적용하세요.

[기존 ACL 삭제 후 거꾸로 적용]

R1(config)#no ip access-list extended ACL

R1(config)#ip access-list extended INACL
R1(config-ext-nacl)#10 deny ip host 2.2.2.1 host 1.1.1.1
R1(config-ext-nacl)#20 deny tcp host 2.2.2.2 host 1.1.1.1 eq 80
R1(config-ext-nacl)#30 deny ip host 2.2.2.1 host 1.1.1.2
R1(config-ext-nacl)#40 permit ip any any
R1(config)#int e 0/1
R1(config-if)#no ip access-group ACL out
R1(config-if)#ip access-group INACL in

 

 

문제8:

PC3에서 R2로의  Telnet(TCP 23) 접속이 되지 않도록 설정하세요. R2S0/0/0에서 설정 하세요 !!!

line vty 0 4
 password cisco
 login local
 transport input all

R2(config)#username cisco secret cisco
R2(config)#enable secret cisco

 

R2(config)#ip access-list extended R2ACL
R2(config-ext-nacl)#10 deny tcp host 1.1.1.3 host 10.1.12.2 eq 23
R2(config-ext-nacl)#20 permit ip any any

interface Ethernet0/1
ip access-group R2ACL in

 

 

문제9:

문제8번에 의해, PC3에서 telnet 10.1.12.2로 접속이 안 되는 것은 확인 하였지만, PC3에서 telnet 2.2.2.254로 접속해 보며

Telnet 접속되는 것을 확인 할 수 있습니다. 이 문제를 해결 하기 위해 모든 interfaceACL을 적용하지 말고 해결 하세요.

access-list 1 deny host 1.1.1.3

access-list 1 permit any

line vty 0 4

access-class 1 in

 

확인 PC3 Telnet 2.2.2.254 접속안됨

       PC1 Telnet 2.2.2.254 접속 됨 !!!!

 

 

반응형
LIST