Firewall

방화벽

신뢰할 수 있는 네트워크와 신뢰할 수 없는 네트워크 사이의 장벽이다.

LAN 과 WAN 사이에 사용한다.

  • 즉. 데이터 전달 경로에 배치되어 패킷을 드롭 / 허용

image

Stateless Filtering

라우터는 ACL을 사용해 Source / Destination / Port number 을 확인한다.

  • 패킷을 수신하면 ACL 매치 후 Permit 또는 Deny
  • 수천 개의 패킷을 수신해도 각 패킷을 개별적으로 처리
  • 이전에 본적이 있거나, 본적이 없는 패킷은 추적하지 않는다

Stateful Filtering

방화벽은 모든 들어오는 또는 나가는 Connection 통신상태를 추적한다.

과정 예시)

  1. LAN 환경의 컴퓨터를 이용해 메일서버 연결
  2. TCP 3-Way handshake 진행 과정을 방화벽은 모니터링
  3. 방화벽은 이 연결을 기억하고 메일서버에 대한 응답을 자동으로 컴퓨터에게 들어오는 것을 허용

Packet Inspection

대부분의 방화벽은 어떤 형태로든 Deep Packet inspection 을 지원한다.

  • ACL은 단순히 IP 와 Port number 확인

Inspection은 OSI model의 Layer7 까지 확인이 가능하다.

  • 애플리케이션 헤더 및 실제 데이터 까지 확인

IP 차단 대신 URL 차단이 가능하다. 페이로드를 확인해 바이러스 및 웜 패킷을 차단한다.

★ Security Zone

라우터는 기본적으로 라우팅 테이블을 기반으로 데이터를 허용/처리 한다.

  • 이를 제한하기 위해서는 ACL 이 필요하다.
  • 많은 ACL과 많은 인터페이스는 관리의 어려움이 발생할 것이다.

방화벽은 Zone 기반으로 데이터를 허용/처리 한다.

image

  • INSIDE : 내부 LAN 구간 (High Security Level)
  • OUTSIDE : 외부 WAN 구간 (Low Security Level)
  • High Security Level → Low Security Levle : 허용
  • Low Security Levle → High Security Level : 거부
    • 외부에서 시작해 내부로 접근하는 트래픽에 대해 ACL을 이용해 예외 적용
  • 방화벽은 Stateful 동작으로 나가는 Connection 추적해 되돌아 오는 트래픽 허용

DMZ(데미리타리즈 존)를 운영하는 경우 INSIDE 와 OUTSIDE 사이의 Security Level 사용

image

INSIDE ➔ Outside 허용 INSIDE ➔ DMZ 허용 DMZ ➔ OUTSIDE 허용 DMZ ➔ INSIDE 거부 Outside ➔ DMZ 거부 (ACL 예외 필요) Outside ➔ INSIDE 거부

DMZ(데미리타리즈 존)는 컴퓨터 네트워크에서 보안을 강화하기 위해 내부 네트워크와 외부 네트워크 사이에 배치된 중간 지역을 가리킵니다.

이 영역은 내부 네트워크와 외부 네트워크 간의 접근을 제한하고 외부에서 내부로의 공격으로부터 내부 네트워크를 보호하기 위해 설계됩니다.

요약

  1. 방화벽은 상태 정보 필터링을 사용해 모든 IN/OUT 연결을 추적한다.
  2. OSI 7계층 까지 검사가 가능하다.
  3. Zone 과 Security Laver 기반 동작으로 손쉽게 운영이 가능하다.

ASA

ASA

소규모 네트워크 환경에서는 전용 방화벽 없이, IOS 방화벽 만으로도 보안정책 설정이 가능하다.

큰 규모의 네트워크에서는 방화벽의 성능 및 기능적인 측면을 고려해 전용 방화벽이 필요하다.

ASA(Adaptive Security Appliance)

  • 시스코 방화벽 제품으로 방화벽 외에도 VPN등 여러 보안 기능이 탑재되어 있다!

CLI Mode

  • User EXEC Mode
  • Privileged EXEC Mode
  • Global Configuration Mode
  • Specific Configuration Mode

스위치, 라우터(cisco ios (internetwork operating system))와 동작하는 방식과 명령어는 동일하다.


Save Configuration (구성 저장)

image


Factory Default (초기화)

image


Boot System File

내부 저장소에 시스템 이미지 및 구성 파일을 저장한다.

boot system 명령어 통해 시스템 이미지를 지정 (OS Upgrade / OS Downgrade)해서 부팅할 수 있다.

ciscoasa# dir boot:
Directory of boot:/
81    -rwx    104749056    15:39:04 May 10 2017   asa981-smp-k8.bin
82    -rwx    26916068     15:39:04 May 10 2017   asdm-78140.bin
83    -rwx    59118496     15:39:04 May 10 2017   asa-restapi-132100-lfbff-k8.SPA
 
ciscoasa(config)# boot system boot:/asa981-smp-k8.bin

Show Command

show run interface

ciscoasa# show run interface
!
interface GigabitEthernet0/0
speed 1000
duplex full
nameif outside
security-level 0
ip address 192.168.1.2 255.255.255.0
!
interface GigabitEthernet0/1
speed 1000
duplex full
nameif inside
security-level 100
ip address 10.0.1.1 255.255.255.0 . . .

show version

OS Release, Uptime, Serial No 등 표시

ciscoasa# show version
 
Cisco Adaptive Security Appliance Software Version 9.8(1)
Firepower Extensible Operating System Version 2.2(1.47)
Device Manager Version 7.8(1)
 
Compiled on Wed 10-May-17 15:38 PDT by builders
System image file is "boot:/asa981-smp-k8.bin"
Config file at boot was "startup-config"
 
ciscoasa up 36 mins 45 secs
 
Hardware: ASAv, 2048 MB RAM, CPU Xeon E5 series 2194 MHz,
Model Id: ASAv10
Internal ATA Compact Flash, 8192MB
Slot 1: ATA Compact Flash, 8192MB
BIOS Flash Firmware Hub @ 0x0, 0KB .....

show ip address

asa1# show ip address
System IP Addresses:
Interface              Name        IP address   Subnet mask      Method
GigabitEthernet0/0     outside     192.168.1.2  255.255.255.0    CONFIG
GigabitEthernet0/1     inside      10.0.1.1     255.255.255.0    CONFIG
GigabitEthernet0/2     dmz         172.16.1.1   255.255.255.0    CONFIG
 
Current IP Addresses:
Interface              Name        IP address   Subnet mask      Method
GigabitEthernet0/0     outside     192.168.1.2  255.255.255.0    CONFIG
GigabitEthernet0/1     inside      10.0.1.1     255.255.255.0    CONFIG
GigabitEthernet0/2     dmz         172.16.1.1    255.255.255.0    CONFIG

show interface ip brief

ciscoasa# show interface ip brief
Interface             IP-Address    OK? Method Status                Protocol
GigabitEthernet0/0    unassigned    YES unset  administratively down down
GigabitEthernet0/1    unassigned    YES unset  administratively down down
GigabitEthernet0/2    unassigned    YES unset  administratively down down
GigabitEthernet0/3    unassigned    YES unset  administratively down down
GigabitEthernet0/4    unassigned    YES unset  administratively down down
GigabitEthernet0/5    unassigned    YES unset  administratively down down
GigabitEthernet0/6    unassigned    YES unset  administratively down down
Management0/0         10.10.10.2    YES manual administratively down up

★ show nameif (인터페이스 이름)

ciscoasa# show nameif
Interface              Name         Security
GigabitEthernet0/0     outside           0
GigabitEthernet0/1     inside          100
GigabitEthernet0/2     dmz              50

show firewall

ASA는 L2모드(Transparent) 또는 L3모드(Router) 로 동작이 가능하다.

기본은 L3모드!!

ciscoasa# show firewall
Firewall mode: Router
 
ciscoasa# show firewall
Firewall mode: Transparent

Change Mode (L2 ↔ L3)

L2모드(Transparent) 또는 L3모드(Router) 전환

ciscoasa(config)# firewall transparent
WARNING: Disabling auto import may affect Smart Licensing
WARNING: Local user database is empty and there are still 'aaa' commands for 'LOCAL'.
Creating trustpoint "_SmartCallHome_ServerCA" and installing certificate...
 
Trustpoint CA certificate accepted.
 
ciscoasa(config)# show firewall
Firewall mode: Transparent
ciscoasa(config)# no firewall transparent
WARNING: Disabling auto import may affect Smart Licensing
WARNING: Local user database is empty and there are still 'aaa' commands for 'LOCAL'.
Creating trustpoint "_SmartCallHome_ServerCA" and installing certificate...
 
Trustpoint CA certificate accepted.
 
ciscoasa(config)# show firewall
Firewall mode: Router

Static Route

route / show route : L3 모드에서 사용 가능

ciscoasa(config)# route [Egress nameif] 0.0.0.0 0.0.0.0 [Next-Hop]
ciscoasa(config)# route outside 0.0.0.0 0.0.0.0 1.1.40.10
 
ciscoasa(config)# show route static
....
Gateway of last resort is 1.1.40.2 to network 0.0.0.0
 
S* 0.0.0.0 0.0.0.0 [1/0] via 1.1.40.2, outside
 
ciscoasa# show run route
route outside 0.0.0.0 0.0.0.0 1.1.40.2 1

디폴트 경로 설정해 준것. 1.1.40.2 로 가면 되는데 NAMEIF가 OUTSIDE 다.


OSPF

router ospf / show run router : L3 모드에서 사용 가능, Subnet Mask 사용

ciscoasa(config)# router ospf 1
ciscoasa(config-router)# network 10.1.1.0 255.255.255.0 area 0
ciscoasa(config-router)# default-information originate [always]
ciscoasa# show run router ospf
router ospf 1
  network 10.1.1.0 255.255.255.0 area 0
  log-adj-changes
  default-information originate

SSH

보안을 위한 인증 기능만 있는 Telnet과 달리 SSH는 패킷을 암호화 및 무결성 기능을 제공한다.

ciscoasa(config)# username admin password cisco123
ciscoasa(config)# aaa authentication ssh console LOCAL
# AAA(Authorization, Authentication, and Accounting)를 설정하는 명령어
# 사용자의 인증을 구성
 
ciscoasa(config)# crypto key generate rsa modules 1024
# 1024 길이의 키 생성
 
ciscoasa(config)# ssh 10.10.10.1 255.255.255.255 inside
ciscoasa(config)# ssh 1.1.10.1 255.255.255.255 outside
R1# ssh –l admin 1.1.10.10
Password:
ciscoasa>

※ INSIDE 인터페이스로 접근 하는 10.10.10.1 IP를 갖는 Host의 ssh 접속 허용 ※ OUTSIDE 인터페이스로 접근 하는 1.1.10.1 IP를 갖는 Host의 ssh 접속 허용 (Security Level 무관)


ASA Security Levels

ASA 방화벽은 인터페이스의 신뢰도를 나타내는 Security Level 사용

  • Security Level 이 높을 수록 신뢰도가 높음

ASA의 각 인터페이스는 Security Zone으로 동작, Security Level을 통해 Security Zone은 서로 다른 신뢰 수준을 갖게 됨

  • High Security Level 에서 Low Security Level 통신은 기본 허용

  • Low Security Level 에서 High Security Level 통신은 기본 거부

    ✓ ACL을 통해 예외 설정 필요

Security Level 0

  • 가장 낮은 Security Level
  • 일반적으로 Outside Interface에 할당
  • ACL 없이는 다른 Zone에 접근 불가

Security Level 100

  • 가장 높은 Security Level
  • 일반적으로 Inside Interface에 할당
  • 다른 모든 Zone에 접근 가능

Security Level 1 ~ 99

  • 원하는 수준의 Security Level 할당 가능 (DMZ: 50)

image

Interface E0/0 as the INSIDE. Interface E0/1 as the OUTSIDE. Interface E0/2 as our DMZ.

위와 같은 토폴로지처럼 구성하기 위해서는

  1. nameif 명령어를 사용해서 인터페이스 이름을 지정하고,
  2. ASA는 INSIDE, OUTHER, DMZ 이름을 인식한다.
ASA1(config)# interface E0/0
ASA1(config-if)# nameif INSIDE
INFO: Security level for "INSIDE" set to 100 by default.
ASA1(config-if)# ip address 192.168.1.254 255.255.255.0
ASA1(config-if)# no shutdown
ASA1(config)# interface E0/1
ASA1(config-if)# nameif OUTSIDE
INFO: Security level for "OUTSIDE" set to 0 by default.
ASA1(config-if)# ip address 192.168.2.254 255.255.255.0
ASA1(config-if)# no shutdown
ASA1(config)# interface E0/2
ASA1(config-if)# nameif DMZ
INFO: Security level for "DMZ" set to 0 by default.
ASA1(config-if)# security-level 50
ASA1(config-if)# ip address 192.168.3.254 255.255.255.0
ASA1(config-if)# no shutdown

DMZ에서 security-level 0은 권장사항이 아니다.


ACL

IOS의 ACL과 유사함!!

  • L2/L3/L4 정보를 분석해 차단 또는 허용
  • Filtering / Classification 용도로 사용

낮은 Security Level 에서 높은 Security Level 통신을 위해 ACL이 필요하다~

Standard ACL (Only L3 Mode)

  • Source IP 기반 트래픽 식별
  • Filtering 용도로 인터페이스 적용 불가 , Classification 용도로 사용 가능

Extended ACL (L2 / L3 Mode)

  • ASA에서 가장 많이 사용하는 ACL
  • Src IP / Dest IP , Protocol , Port Number 기반으로 트래픽 제어

Object Group

대규모 Infra 환경에서는 수입 개의 호스트와 수십 개의 서버의 통신을 방화벽을 이용해 관리하는 것이 쉽지 않다.

따라서 손쉬운 관리를 위해 object-group 을 도입했다.

object-group 사용해 개체를 ‘그룹화’ 할 수 있다.

  • 개체 : IP주소, 네트워크 , 포트번호 등의 집합
  • 개별 ACL이 아닌 Group 단위 ACL 생성 가능
  • ACL이 줄어들고 운영이 편리해짐
  • object-group 내용 변경 시 ACL에 즉각 반영

NAT

기본 개념은 IOS의 NAT와 동일하지만, 더 많은 종류의 NAT와 자세한 주소 변환 정책 설정이 가능하다.

  • Static NAT / PAT
  • Dynamic NAT / PAT
  • Policy NAT / PAT
  • Bypass NAT

ASA가 지원하는 다양한 종류의 NAT는 두 가지 방식으로 구현이 가능하다.

  • Object NAT (Auto NAT)
  • Manual NAT

Static & Dynamic NAT / PAT

정적 NAT는 주소 변환에 필요한 정보를 저장하는 NAT 테이블에 반영구적으로 NAT 정책을 저장하지만,

동적 NAT는 정책에 부합하는 트래픽이 발생한 순간 변환 주소가 할당된다.

정적 PAT는 TCP/UDP 포트 번호까지 변환되지만,

동적 PAT는 수 개의 사설 IP 주소를 하나의 공인 IP 또는 공인 IP 풀 주소로 변환하면서 포토번호도 함께 변환된다.

Policy NAT / PAT

Policy NAT는 출발지와 목적지에 따라 변환한다.

  • 일반 NAT는 Source를 보고 변환하지만, Policy NAT / PAT 는 출발지, 목적지를 모두 참고하여 주소를 변환한다.
  • 서버 1 접속시엔 공인 IP1로 변환, 서버 2 접속할 땐 공인 IP2로 변환한다.

Bypass NAT (사용 잘 하지 않음)

Bypass NAT는 특정 출발지와 목적지를 가진 패킷만 주소 변환을 하지 않는다.

Object NAT (Auto NAT)

하나의 Network Object 안에서 NAT 정책 설정할 수 있다!!

오브젝트 NAT에서는 패킷의 출발지 주소만 변환할 수 있지만, 설정이 매우 간단하고 직관적이다.

Auto NAT 이라고 부르기도 한다.

  • 설정 순서와 상관없이 세부적인 정책일수록 NAT 테이블이 상위에 자동등록되기 때문이다.

Manual NAT (내 마음대로 하는 NAT)

출발지&목적지 주소 모두를 참고하여 주소를 변환한다.

  • 특정 출발지 주소를 가진 패킷이 특정 목적지를 향할 때 ✓ 출발지 주소만 원하는 IP로 변환 ✓ 출발지와 목적지 주소 모두 원하는 IP로 변환

NAT 테이블에서의 정책 순위를 관리자가 직접 지정 가능

  • Manual NAT은 Auto NAT과 달리 설정 순서대로 NAT 테이블에 등록
  • 따라서 기존 정책보다 세부적인 정책을 설정할 경우, 반드시 정책 순위 지정 필요

NAT 동작 순서

NAT 테이블에 등록된 정책을 참조해 주소 변환을 결정한다.

‘show nat’ 명령어를 통해 정책을 확인할 수 있다.

정책 우선순위

  1. Manual NAT : Section 1
  2. Auto NAT(Object NAT) : Section 2
  3. Manual NAT with after-auto : Section 3

Active / Standby Failover (이중화)

ASA는 일반적으로 VPN , NAT/PAT , Filtering 등 중요 포지션에서 동작한다.

따라서 장애 대비를 위한 이중화가 필수!!!

image

ASA는 Active / Standby Failover 를 지원한다.

  • 평소 Active 장비가 동작
  • Active 장애 발생 시 Standby 장비가 Active 장비로 전환
  • Standby 장비는 Active 장비가 장애 발생 하지 않는 한 아무것도 수행 하지 않음

Active 장비는 Stateful 연결 정보 및 상태를 Standby 장비에 실시간으로 전송한다. (Stateful Failover)

  • TCP / UDP 상태 , NAT 테이블 , ARP 테이블 , VPN 정보 등…

Standby 장비가 Active로 Failover 돼도, 모든 연결 정보를 갖고 있기 때문에 일반 사용자는 알아채지 못한다.


조건

  1. 동일한 플랫폼을 사용해야 한다. (2 * ASA5510 , 2 * ASA5520)
    • H/W Spec이 동일해야함 (인터페이스 수/종류 , 플래시 메모리 용량 , RAM 용량)
  2. 동작 Mode 동일해야 한다. (L2 모드 / L3 모드)
  3. 동일한 운영되는 라이선스 (VPN Peer 수 , 암호화 지원 등)
  4. Failover 지원하는 라이선스 필요
  5. 동일한 운영되는 OS version