[Network] 네트워크 보안 기초 (DAI, ACL, NAT)

2025. 11. 20. 21:49·Network Concepts

들어가며

네트워크를 구축하고 운영하는 것만큼 중요한 것이 바로 보안입니다. 아무리 빠르고 안정적인 네트워크를 만들어도 보안이 취약하다면 언제든지 공격의 대상이 될 수 있습니다. 이번 장에서는 네트워크 장비에서 직접 구현할 수 있는 기본적인 보안 기술들을 살펴봅니다.

DAI(Dynamic ARP Inspection)는 계층 2에서 발생하는 ARP 스푸핑 공격을 차단하고, ACL(Access Control List)은 계층 3/4에서 트래픽을 세밀하게 제어하며, NAT(Network Address Translation)는 내부 네트워크를 숨기면서 인터넷과의 통신을 가능하게 합니다. 이 세 가지 기술은 각각 다른 계층에서 동작하지만, 함께 사용될 때 더욱 강력한 보안 체계를 구축할 수 있습니다.

1. DAI (Dynamic ARP Inspection)

ARP 스푸핑 공격의 위험성

ARP는 IP 주소를 MAC 주소로 변환하는 프로토콜입니다. 그런데 ARP는 설계 당시 보안을 전혀 고려하지 않았기 때문에 누구나 거짓 ARP 메시지를 보낼 수 있습니다. 공격자가 "192.168.1.1(게이트웨이)의 MAC 주소는 내 MAC 주소야"라고 거짓 정보를 브로드캐스트하면, 피해자는 모든 외부 통신 패킷을 공격자에게 전송하게 됩니다. 이것이 바로 ARP 스푸핑 또는 중간자 공격(MITM)입니다.

DAI의 동작 원리

DAI(Dynamic ARP Inspection)는 스위치에서 모든 ARP 패킷을 검사하여 신뢰할 수 있는 ARP 메시지만 통과시킵니다. DAI는 혼자 동작하지 않고 DHCP Snooping과 함께 작동합니다.

 

DHCP Snooping은 네트워크에서 DHCP를 통해 할당된 모든 IP-MAC 주소 쌍을 데이터베이스에 기록합니다. 예를 들어 "192.168.1.100은 AA:BB:CC:DD:EE:FF에게 할당되었다"는 정보가 저장됩니다. DAI는 이 데이터베이스를 참조하여 ARP 패킷의 송신자 IP와 MAC 주소가 일치하는지 확인합니다.

 

만약 누군가 "192.168.1.100의 MAC 주소는 11:22:33:44:55:66이야"라는 거짓 ARP 메시지를 보내면, DAI는 DHCP Snooping 데이터베이스를 확인하고 실제 MAC 주소와 다르다는 것을 발견하여 해당 패킷을 즉시 드롭합니다.

DAI 설정 방법

DAI를 설정하기 전에 반드시 DHCP Snooping이 먼저 활성화되어 있어야 합니다.

! DHCP Snooping 활성화
conf t
ip dhcp snooping
ip dhcp snooping vlan 10

! DAI 활성화
ip arp inspection vlan 10

! Trusted 포트 설정 (업링크 포트)
interface GigabitEthernet0/1
 ip arp inspection trust
 exit

! DAI 상태 확인
show ip arp inspection
show ip dhcp snooping binding

Trusted와 Untrusted 포트

DAI는 포트를 두 가지로 구분합니다. Trusted 포트는 검증 없이 모든 ARP 패킷을 통과시키며, 주로 업링크 포트나 라우터 연결 포트에 설정합니다. Untrusted 포트는 모든 ARP 패킷이 검증 대상이 되며, 일반 사용자가 연결되는 포트입니다.

 

이렇게 구분하는 이유는 업링크를 통해 들어오는 정상적인 ARP 트래픽까지 검증하면 불필요한 차단이 발생할 수 있기 때문입니다. 신뢰할 수 있는 네트워크 인프라 장비는 Trusted로 설정하고, 의심스러운 일반 사용자 포트만 검증하는 것이 효율적입니다.

추가 보안 기능

DAI는 단순히 IP-MAC 바인딩만 검증하는 것이 아니라 ARP 패킷의 무결성도 확인할 수 있습니다. 송신자 MAC 주소, 목적지 MAC 주소, IP 주소의 유효성 등을 추가로 검증할 수 있습니다.

! ARP 패킷 검증 옵션 설정
ip arp inspection validate src-mac dst-mac ip

! Rate Limiting 설정 (초당 15개 제한)
interface range GigabitEthernet0/2-24
 ip arp inspection limit rate 15
 exit

Rate Limiting을 통해 포트당 초당 허용되는 ARP 패킷 수를 제한할 수 있습니다. 제한을 초과하면 해당 포트는 자동으로 err-disabled 상태가 되어 차단됩니다.

 

정적 IP를 사용하는 서버나 장비의 경우 DHCP Snooping 데이터베이스에 정보가 없으므로, 수동으로 ARP 바인딩을 추가해야 합니다.

! 정적 ARP 바인딩 추가
arp access-list STATIC-HOSTS
 permit ip host 192.168.10.50 mac host 0050.5694.abcd
 exit

ip arp inspection filter STATIC-HOSTS vlan 10

2. ACL (Access Control List)

ACL의 개념

ACL(Access Control List)은 네트워크 트래픽을 허용하거나 차단하는 규칙들의 목록입니다. 라우터나 레이어 3 스위치에서 동작하며, 패킷의 출발지/목적지 IP 주소, 프로토콜, 포트 번호 등을 검사하여 트래픽을 제어합니다.

 

ACL은 위에서 아래로 순차적으로 평가되며, 일치하는 첫 번째 규칙이 적용됩니다. 모든 ACL의 마지막에는 보이지 않는 암묵적 deny any(모든 트래픽 차단)가 존재한다는 점이 중요합니다. 따라서 ACL을 만들 때는 반드시 허용할 트래픽을 명시해야 합니다.

Standard ACL vs Extended ACL

Standard ACL은 출발지 IP 주소만을 기준으로 트래픽을 필터링합니다. 번호 범위는 1-99, 1300-1999입니다. 매우 단순하지만 세밀한 제어가 불가능합니다.

! 192.168.10.0/24 네트워크 허용
access-list 10 permit 192.168.10.0 0.0.0.255

! 특정 호스트 차단
access-list 10 deny host 192.168.10.50

! 인터페이스에 적용
interface GigabitEthernet0/0
 ip access-group 10 in
 exit

 

Extended ACL은 출발지/목적지 IP 주소뿐만 아니라 프로토콜(TCP, UDP, ICMP 등)과 포트 번호까지 확인할 수 있습니다. 번호 범위는 100-199, 2000-2699입니다.

! 웹 트래픽(HTTP) 허용
access-list 100 permit tcp any any eq 80

! 특정 서버로의 SSH 접속만 허용
access-list 100 permit tcp 192.168.10.0 0.0.0.255 host 10.1.1.100 eq 22

! ICMP(Ping) 차단
access-list 100 deny icmp any any

! 나머지 트래픽 허용
access-list 100 permit ip any any

! 인터페이스에 적용
interface GigabitEthernet0/1
 ip access-group 100 out
 exit

와일드카드 마스크

ACL에서 IP 주소 범위를 지정할 때 와일드카드 마스크를 사용합니다. 서브넷 마스크와 정반대 개념으로, 0은 일치해야 하는 비트, 1은 무시되는 비트를 의미합니다.

 

예를 들어 192.168.10.0/24 네트워크를 표현하려면 "192.168.10.0 0.0.0.255"라고 작성합니다. 서브넷 마스크 255.255.255.0을 와일드카드 마스크로 변환하려면 각 옥텟을 255에서 빼면 됩니다(255-255=0, 255-255=0, 255-255=0, 255-0=255)

 

주요 패턴들은 다음과 같습니다.

! 특정 호스트 하나만
host 192.168.10.50
! 또는
192.168.10.50 0.0.0.0

! 모든 호스트
any
! 또는
0.0.0.0 255.255.255.255

! 192.168.10.0/24 네트워크
192.168.10.0 0.0.0.255

Named ACL

번호 대신 의미 있는 이름을 사용하여 ACL을 생성할 수 있습니다. 가독성이 높고 관리가 용이합니다.

ip access-list extended WEB-FILTER
 deny tcp any any eq 80
 deny tcp any any eq 443
 permit ip any any
 exit

! 인터페이스에 적용
interface GigabitEthernet0/0
 ip access-group WEB-FILTER in
 exit

ACL 적용 방향

ACL은 인터페이스에 적용할 때 방향을 지정해야 합니다. In(인바운드)은 인터페이스로 들어오는 트래픽을 필터링하고, Out(아웃바운드)은 인터페이스에서 나가는 트래픽을 필터링합니다.

 

일반적으로 Standard ACL은 목적지에 가까운 곳에, Extended ACL은 출발지에 가까운 곳에 적용하는 것이 권장됩니다. Standard ACL은 출발지만 검사하므로 출발지 근처에 적용하면  중요한 트래픽까지 불필요하게 차단할 수 있기 때문입니다.

VTY 라인에 ACL 적용

Telnet이나 SSH를 통한 원격 접속을 제어할 때는 VTY 라인에 ACL을 적용합니다.

! 관리자 네트워크에서만 SSH 접속 허용
access-list 10 permit 192.168.100.0 0.0.0.255

line vty 0 4
 access-class 10 in
 transport input ssh
 exit

ACL 확인 명령어

! ACL 목록 확인
show access-lists

! 특정 ACL 확인
show access-lists 100

! 인터페이스에 적용된 ACL 확인
show ip interface GigabitEthernet0/0

3. NAT (Network Address Translation)

NAT의 필요성

IPv4 주소 고갈 문제가 심각해지면서 NAT(Network Address Translation)는 필수적인 기술이 되었습니다. NAT는 사설 IP 주소를 공인 IP 주소로 변환하여 인터넷과 통신할 수 있게 해주는 기술입니다.

 

또한 NAT는 보안 측면에서도 중요한 역할을 합니다. 내부 네트워크의 IP 주소 구조를 외부에 숨길 수 있어, 공격자가 내부 네트워크를 파악하기 어렵게 만듭니다. 외부에서 내부로 직접 접근하는 것도 기본적으로 차단되므로 추가적인 보안 계층을 제공합니다.

사설 IP와 공인 IP

사설 IP 주소는 인터넷에서 라우팅되지 않는 주소로, RFC 1918에 정의되어 있습니다:

  • 10.0.0.0/8 (10.0.0.0 ~ 10.255.255.255)
  • 172.16.0.0/12 (172.16.0.0 ~ 172.31.255.255)
  • 192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)

공인 IP 주소는 인터넷에서 유일하게 식별될 수 있는 주소로, ISP로부터 할당받습니다. NAT는 사설 IP를 공인 IP로 변환하여 인터넷 통신을 가능하게 합니다.

NAT의 종류

Static NAT(정적 NAT)는 하나의 사설 IP를 하나의 공인 IP로 1:1 매핑합니다. 주로 내부에 있는 서버를 외부에 공개할 때 사용합니다.

! 내부 인터페이스 지정
interface GigabitEthernet0/0
 ip nat inside
 exit

! 외부 인터페이스 지정
interface GigabitEthernet0/1
 ip nat outside
 exit

! 정적 NAT 설정 (내부 10.1.1.100을 외부 203.0.113.10으로 매핑)
ip nat inside source static 10.1.1.100 203.0.113.10

 

Dynamic NAT(동적 NAT)는 여러 사설 IP를 공인 IP 풀(Pool)에서 동적으로 할당합니다. 공인 IP 풀이 고갈되면 더 이상 변환할 수 없습니다.

! 공인 IP 풀 정의
ip nat pool PUBLIC-POOL 203.0.113.10 203.0.113.20 netmask 255.255.255.0

! 내부 네트워크 정의 (ACL)
access-list 1 permit 192.168.1.0 0.0.0.255

! 동적 NAT 설정
ip nat inside source list 1 pool PUBLIC-POOL

! 인터페이스 설정
interface GigabitEthernet0/0
 ip nat inside
 exit

interface GigabitEthernet0/1
 ip nat outside
 exit

 

PAT(Port Address Translation) 또는 NAT Overload는 여러 사설 IP를 하나의 공인 IP로 변환하되, 포트 번호를 이용하여 세션을 구분합니다. 가정이나 소규모 기업에서 가장 많이 사용하는 방식입니다.

! 내부 네트워크 정의
access-list 1 permit 192.168.1.0 0.0.0.255

! PAT 설정 (인터페이스 주소 사용)
ip nat inside source list 1 interface GigabitEthernet0/1 overload

! 인터페이스 설정
interface GigabitEthernet0/0
 ip nat inside
 exit

interface GigabitEthernet0/1
 ip nat outside
 exit

NAT 동작 과정

내부 호스트(192.168.1.100)가 외부 웹 서버(8.8.8.8)에 접속하는 과정을 살펴보겠습니다.

  1. 내부 호스트가 패킷을 생성합니다 (출발지: 192.168.1.100:12345, 목적지: 8.8.8.8:80)
  2. 패킷이 NAT 라우터에 도달하면, 라우터는 NAT 테이블을 생성합니다
  3. 출발지 주소를 공인 IP로 변환합니다 (출발지: 203.0.113.1:50000, 목적지: 8.8.8.8:80)
  4. 변환된 패킷이 인터넷으로 전송됩니다
  5. 웹 서버의 응답이 돌아오면 (출발지: 8.8.8.8:80, 목적지: 203.0.113.1:50000)
  6. NAT 라우터는 테이블을 참조하여 목적지를 사설 IP로 변환합니다 (출발지: 8.8.8.8:80, 목적지: 192.168.1.100:12345)
  7. 패킷이 내부 호스트에 전달됩니다

Port Forwarding

외부에서 내부 서버로 접속하려면 Port Forwarding 설정이 필요합니다. 특정 포트로 들어오는 트래픽을 내부 서버로 전달하는 기능입니다.

! 외부 80번 포트를 내부 웹 서버로 포워딩
ip nat inside source static tcp 192.168.1.100 80 203.0.113.1 80

! 외부 22번 포트를 내부 SSH 서버로 포워딩
ip nat inside source static tcp 192.168.1.200 22 203.0.113.1 22

NAT 확인 명령어

! NAT 변환 테이블 확인
show ip nat translations

! NAT 통계 확인
show ip nat statistics

! NAT 변환 테이블 초기화
clear ip nat translation *

NAT 변환 테이블에는 현재 활성화된 모든 세션이 기록되어 있으며, 각 세션의 내부 IP:포트와 외부 IP:포트 매핑 정보를 확인할 수 있습니다.


마무리 및 정리

DAI는 DHCP Snooping과 함께 동작하여 ARP 스푸핑 공격을 차단합니다. Trusted/Untrusted 포트를 구분하고, Rate Limiting을 통해 ARP 플러딩 공격도 방어할 수 있습니다.

 

ACL은 패킷 필터링의 기본 도구로, Standard ACL은 출발지 IP만, Extended ACL은 출발지/목적지 IP와 프로토콜, 포트까지 제어할 수 있습니다. ACL은 순차적으로 평가되며 마지막에 암묵적 deny any가 존재한다는 점을 기억해야 합니다.

 

NAT는 사설 IP를 공인 IP로 변환하여 IPv4 주소 부족 문제를 해결하고, 부가적으로 내부 네트워크를 보호하는 역할도 합니다. Static NAT, Dynamic NAT, PAT의 차이를 이해하고 상황에 맞게 선택해야 합니다.

 

이 세 가지 기술은 각각 다른 계층에서 동작하지만, 함께 사용될 때 계층적 방어(Defense in Depth) 전략을 구현할 수 있습니다. 다음 장에서는 WAN 및 원격 접속 기술에 대해 알아보겠습니다!

'Network Concepts' 카테고리의 다른 글

[Network] 네트워크 장비 접속과 Syslog를 통한 Logging  (0) 2025.11.22
[Network] WAN과 원격 연결 기술들 (PPPoE, MPLS, VPN)  (0) 2025.11.21
[Network] 무선 AP 아키텍처 및 무선 보안  (0) 2025.11.19
[Network] 무선 네트워크 구성 (DS, ESS, Roaming)  (0) 2025.11.18
[Network] 무선 네트워크 - Wireless Local Area Network (WLAN)  (0) 2025.11.17
'Network Concepts' 카테고리의 다른 글
  • [Network] 네트워크 장비 접속과 Syslog를 통한 Logging
  • [Network] WAN과 원격 연결 기술들 (PPPoE, MPLS, VPN)
  • [Network] 무선 AP 아키텍처 및 무선 보안
  • [Network] 무선 네트워크 구성 (DS, ESS, Roaming)
김슭삵
김슭삵
Layer By Layer. 한 층씩 성장 해가는 네트워크와 서버의 학습 공간
  • 김슭삵
    Layer By Layer
    김슭삵
  • 전체
    오늘
    어제
    • 분류 전체보기 (49)
      • Network Concepts (36)
      • Network Practice (12)
      • Linux (0)
      • AWS & Cloud (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ROAS
    dai
    vlan
    Etherchannel
    Network
    ACL
    dns
    Nat
    WLAN
    wireshark
    Cisco
    Port Mirroring
    LACP
    ERSPAN
    HSRP
    RSPAN
    ARP
    TCP/IP
    gns3
    dhcp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
김슭삵
[Network] 네트워크 보안 기초 (DAI, ACL, NAT)
상단으로

티스토리툴바