Mục tiêu
- Triển khai kiến trúc DMZ sử dụng Cisco ASA Firewall
- Hiểu Security Levels và Security Policies trên ASA
- Cấu hình Access Rules, NAT, và Object Groups
Topology: Theo tô-pô bài pfSensen -Bài 2: Cấu hình DMZ với pfSense trên GNS3
BƯỚC 1: CẤU HÌNH CƠ BẢN ASA
1.1. Cấu hình Interfaces và Security Levels
ASA> enable
ASA# configure terminal
! Cấu hình Outside Interface
ASA(config)# interface GigabitEthernet0/0
ASA(config-if)# nameif outside
ASA(config-if)# security-level 0
ASA(config-if)# ip address 192.168.122.254 255.255.255.0
ASA(config-if)# no shutdown
! Cấu hình Inside Interface
ASA(config)# interface GigabitEthernet0/1
ASA(config-if)# nameif inside
ASA(config-if)# security-level 100
ASA(config-if)# ip address 192.168.1.1 255.255.255.0
ASA(config-if)# no shutdown
! Cấu hình DMZ Interface
ASA(config)# interface GigabitEthernet0/2
ASA(config-if)# nameif dmz
ASA(config-if)# security-level 50
ASA(config-if)# ip address 172.16.1.1 255.255.255.0
ASA(config-if)# no shutdown
1.2. Giải thích Security Levels:
- Outside: Security Level 0 (Untrusted)
- DMZ: Security Level 50 (Semi-Trusted)
- Inside: Security Level 100 (Trusted)
Mặc định ASA cho phép:
- High → Low Security Level (Inside → DMZ/Outside)
- Không cho phép: Low → High Security Level
BƯỚC 2: CẤU HÌNH ACCESS RULES
2.1. Access Rules cho Outside Interface
! Cho phép Internet vào DMZ Web Server
ASA(config)# access-list outside_in extended permit tcp any host 172.16.1.200 eq www
ASA(config)# access-list outside_in extended permit tcp any host 172.16.1.200 eq https
ASA(config)# access-list outside_in extended permit icmp any host 172.16.1.200
! Chặn Internet vào Inside
ASA(config)# access-list outside_in extended deny ip any 192.168.1.0 255.255.255.0
! Áp dụng ACL trên Outside Interface
ASA(config)# access-group outside_in in interface outside
2.2. Access Rules cho DMZ Interface
! CHẶN DMZ vào Inside (quan trọng!)
ASA(config)# access-list dmz_in extended deny ip 172.16.1.0 255.255.255.0 192.168.1.0 255.255.255.0
! Cho phép DMZ ra Internet
ASA(config)# access-list dmz_in extended permit ip 172.16.1.0 255.255.255.0 any
! Áp dụng ACL trên DMZ Interface
ASA(config)# access-group dmz_in in interface dmz
2.3. Access Rules cho Inside Interface
! Cho phép Inside ra mọi nơi (mặc định đã được phép từ high to low)
! Nhưng cần explicit rule để ghi log
ASA(config)# access-list inside_in extended permit ip 192.168.1.0 255.255.255.0 any
ASA(config)# access-group inside_in in interface inside
BƯỚC 3: CẤU HÌNH NAT
3.1. NAT cho Inside Network (PAT)
! Inside ra Internet - NAT Overload
ASA(config)# object network INSIDE_NET
ASA(config-network-object)# subnet 192.168.1.0 255.255.255.0
ASA(config-network-object)# nat (inside,outside) dynamic interface
ASA(config-network-object)# exit
3.2. NAT cho DMZ Network (PAT)
! DMZ ra Internet - NAT Overload
ASA(config)# object network DMZ_NET
ASA(config-network-object)# subnet 172.16.1.0 255.255.255.0
ASA(config-network-object)# nat (dmz,outside) dynamic interface
ASA(config-network-object)# exit
3.3. Static NAT cho Web Server
! Public IP cho Web Server
ASA(config)# object network WEB_SERVER
ASA(config-network-object)# host 172.16.1.200
ASA(config-network-object)# nat (dmz,outside) static 192.168.122.200
ASA(config-network-object)# exit
BƯỚC 4: CẤU HÌNH OBJECT GROUPS (NÂNG CAO)
4.1. Tạo Object Groups cho quản lý dễ dàng
! Network Object Groups
ASA(config)# object-group network INSIDE_HOSTS
ASA(config-network-object-group)# network-object 192.168.1.0 255.255.255.0
ASA(config-network-object-group)# exit
ASA(config)# object-group network DMZ_SERVERS
ASA(config-network-object-group)# network-object host 172.16.1.200
ASA(config-network-object-group)# network-object host 172.16.1.201
ASA(config-network-object-group)# exit
! Service Object Groups
ASA(config)# object-group service WEB_SERVICES tcp
ASA(config-service-object-group)# port-object eq www
ASA(config-service-object-group)# port-object eq https
ASA(config-service-object-group)# exit
4.2. Sử dụng Object Groups trong ACL
! Sửa ACL Outside với Object Groups
ASA(config)# access-list outside_in extended permit tcp any object-group DMZ_SERVERS object-group WEB_SERVICES
ASA(config)# access-list outside_in extended permit icmp any object-group DMZ_SERVERS
BƯỚC 5: CẤU HÌNH ROUTING
5.1. Default Route ra Internet
ASA(config)# route outside 0.0.0.0 0.0.0.0 192.168.122.1
BƯỚC 6: KIỂM TRA VÀ TEST
6.1. Test Kết Nối Cơ Bản
# Từ Inside (192.168.1.10)
ASA# ping inside 192.168.1.10
ASA# ping inside 172.16.1.200
# Từ DMZ (172.16.1.200)
ASA# ping dmz 172.16.1.200
ASA# ping dmz 192.168.122.1
# Từ Outside (192.168.122.33)
ASA# ping outside 172.16.1.200
6.2. Kiểm Tra Firewall Rules
# Hiển thị Access Lists
ASA# show access-list
# Hiển thị NAT Rules
ASA# show nat
# Hiển thị Connections
ASA# show conn
# Hiển thị Interface Status
ASA# show interface ip brief
6.3. Test End-to-End
# Test 1: Inside → DMZ (Nên thành công)
PC1> ping 172.16.1.200
# Test 2: Inside → Outside (Nên thành công)
PC1> ping 192.168.122.33
# Test 3: Outside → DMZ Web (Nên thành công)
PC3> telnet 192.168.122.200 80
# Test 4: Outside → Inside (Nên bị chặn)
PC3> ping 192.168.1.10
# Test 5: DMZ → Inside (Nên bị chặn)
Web-Server> ping 192.168.1.10
# Test 6: DMZ → Outside (Nên thành công)
Web-Server> ping 192.168.122.33
BƯỚC 7: MONITORING VÀ LOGGING
7.1. Bật Logging cho ACL
! Bật logging cho các rule quan trọng
ASA(config)# access-list outside_in extended permit tcp any object-group DMZ_SERVERS object-group WEB_SERVICES log
ASA(config)# access-list dmz_in extended deny ip 172.16.1.0 255.255.255.0 192.168.1.0 255.255.255.0 log
7.2. Kiểm Tra Logs
# Xem real-time logs
ASA# show log
# Xem connection events
ASA# show log | include Deny
ASA# show log | include Built
CẤU HÌNH HOÀN CHỈNH
! Interfaces và Security Levels
interface GigabitEthernet0/0
nameif outside
security-level 0
ip address 192.168.122.254 255.255.255.0
interface GigabitEthernet0/1
nameif inside
security-level 100
ip address 192.168.1.1 255.255.255.0
interface GigabitEthernet0/2
nameif dmz
security-level 50
ip address 172.16.1.1 255.255.255.0
! Access Rules
access-list outside_in extended permit tcp any host 172.16.1.200 eq www
access-list outside_in extended permit tcp any host 172.16.1.200 eq https
access-list outside_in extended permit icmp any host 172.16.1.200
access-list outside_in extended deny ip any 192.168.1.0 255.255.255.0
access-group outside_in in interface outside
access-list dmz_in extended deny ip 172.16.1.0 255.255.255.0 192.168.1.0 255.255.255.0
access-list dmz_in extended permit ip 172.16.1.0 255.255.255.0 any
access-group dmz_in in interface dmz
access-list inside_in extended permit ip 192.168.1.0 255.255.255.0 any
access-group inside_in in interface inside
! NAT Configuration
object network INSIDE_NET
subnet 192.168.1.0 255.255.255.0
nat (inside,outside) dynamic interface
object network DMZ_NET
subnet 172.16.1.0 255.255.255.0
nat (dmz,outside) dynamic interface
object network WEB_SERVER
host 172.16.1.200
nat (dmz,outside) static 192.168.122.200
! Routing
route outside 0.0.0.0 0.0.0.0 192.168.122.1
