Firewall
방화벽
신뢰할 수 있는 네트워크와 신뢰할 수 없는 네트워크 사이의 장벽이다.
LAN 과 WAN 사이에 사용한다.
- 즉. 데이터 전달 경로에 배치되어 패킷을 드롭 / 허용
Stateless Filtering
라우터는 ACL을 사용해 Source / Destination / Port number 을 확인한다.
- 패킷을 수신하면 ACL 매치 후 Permit 또는 Deny
- 수천 개의 패킷을 수신해도 각 패킷을 개별적으로 처리
- 이전에 본적이 있거나, 본적이 없는 패킷은 추적하지 않는다
Stateful Filtering
방화벽은 모든 들어오는 또는 나가는 Connection 통신상태를 추적한다.
과정 예시)
- LAN 환경의 컴퓨터를 이용해 메일서버 연결
- TCP 3-Way handshake 진행 과정을 방화벽은 모니터링
- 방화벽은 이 연결을 기억하고 메일서버에 대한 응답을 자동으로 컴퓨터에게 들어오는 것을 허용
Packet Inspection
대부분의 방화벽은 어떤 형태로든 Deep Packet inspection 을 지원한다.
- ACL은 단순히 IP 와 Port number 확인
Inspection은 OSI model의 Layer7 까지 확인이 가능하다.
- 애플리케이션 헤더 및 실제 데이터 까지 확인
IP 차단 대신 URL 차단이 가능하다. 페이로드를 확인해 바이러스 및 웜 패킷을 차단한다.
★ Security Zone
라우터는 기본적으로 라우팅 테이블을 기반으로 데이터를 허용/처리 한다.
- 이를 제한하기 위해서는 ACL 이 필요하다.
- 많은 ACL과 많은 인터페이스는 관리의 어려움이 발생할 것이다.
방화벽은 Zone 기반으로 데이터를 허용/처리 한다.
- 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 사용
INSIDE ➔ Outside 허용 INSIDE ➔ DMZ 허용 DMZ ➔ OUTSIDE 허용 DMZ ➔ INSIDE 거부 Outside ➔ DMZ 거부 (ACL 예외 필요) Outside ➔ INSIDE 거부
DMZ(데미리타리즈 존)는 컴퓨터 네트워크에서 보안을 강화하기 위해 내부 네트워크와 외부 네트워크 사이에 배치된 중간 지역을 가리킵니다.
이 영역은 내부 네트워크와 외부 네트워크 간의 접근을 제한하고 외부에서 내부로의 공격으로부터 내부 네트워크를 보호하기 위해 설계됩니다.
요약
- 방화벽은 상태 정보 필터링을 사용해 모든 IN/OUT 연결을 추적한다.
- OSI 7계층 까지 검사가 가능하다.
- 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 (구성 저장)
Factory Default (초기화)
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)
Interface E0/0 as the INSIDE. Interface E0/1 as the OUTSIDE. Interface E0/2 as our DMZ.
위와 같은 토폴로지처럼 구성하기 위해서는
- nameif 명령어를 사용해서 인터페이스 이름을 지정하고,
- 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’ 명령어를 통해 정책을 확인할 수 있다.
정책 우선순위
- Manual NAT : Section 1
- Auto NAT(Object NAT) : Section 2
- Manual NAT with after-auto : Section 3
Active / Standby Failover (이중화)
ASA는 일반적으로 VPN , NAT/PAT , Filtering 등 중요 포지션에서 동작한다.
따라서 장애 대비를 위한 이중화가 필수!!!
ASA는 Active / Standby Failover 를 지원한다.
- 평소 Active 장비가 동작
- Active 장애 발생 시 Standby 장비가 Active 장비로 전환
- Standby 장비는 Active 장비가 장애 발생 하지 않는 한 아무것도 수행 하지 않음
Active 장비는 Stateful 연결 정보 및 상태를 Standby 장비에 실시간으로 전송한다. (Stateful Failover)
- TCP / UDP 상태 , NAT 테이블 , ARP 테이블 , VPN 정보 등…
Standby 장비가 Active로 Failover 돼도, 모든 연결 정보를 갖고 있기 때문에 일반 사용자는 알아채지 못한다.
조건
- 동일한 플랫폼을 사용해야 한다. (2 * ASA5510 , 2 * ASA5520)
- H/W Spec이 동일해야함 (인터페이스 수/종류 , 플래시 메모리 용량 , RAM 용량)
- 동작 Mode 동일해야 한다. (L2 모드 / L3 모드)
- 동일한 운영되는 라이선스 (VPN Peer 수 , 암호화 지원 등)
- Failover 지원하는 라이선스 필요
- 동일한 운영되는 OS version