CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
CHƯƠNG 6
CISCO PIX FIREWALL TRANSLATION
Tổng quan:
Chương này bao gồm các topic sau:
Mục đích
Các giao thức vận chuyển
Việc dịch trong PIX Firewall
Truy cập qua PIX Firewall
Các cách khác qua PIX Firewall
Tổng hợp
Lab exercise
1
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Mục đích
2
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Các giao thức vận chuyển
Để thu được những hiểu biết sâu sắc về tiến trình truyền ra/vào của PIX Firewall,
xem lại một cách sơ lược hai giao thức vận chuyển chính
Việc hiểu các giao thức lớp vận chuyển TCP và UDP là rất quan trọng để hiểu cách
thức hoạt động của PIX Firewall. Phần này sẽ giúp bạn hiểu về các giao thức TCP
và UDP
Một phiên thực hiện trên 2 giao thức lớp vận chuyển:
TCP – dễ kiểm tra
UDP – Khó khăn để kiểm tra một cách đúng đắn
Note: Trong ngữ cảnh này thì thuật ngữa outbound có nghĩa là những kết nối từ
side tin cậy nhiều hơn của PIX Firewall đến side có tính tin cậy ít hơn của PIX
Firewall. Thuật ngữ inbound có nghĩa là những kết nối từ side có tính tin cậy ít hơn
đến side có tính tin cậy nhiều hơn của PIX Firewall
3
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
TCP là một giao thức kết nối có hướng. Khi một phiên từ một host thuộc side an
ninh hơn của PIX Firewall được bắt đầu, PIX Firewall sẽ tạo một log (bản ghi)
trong session state filter (bộ lọc trạng thái phiên). PIX Firewall cho phép trích các
phiên từ các lưu lượng mạng và kích hoạt kiểm tra tính hợp thức của chúng trong
thời gian thực. Stateful filter duy trì các tham số (hoặc trạng thái) cho mỗi kết nối
mạng và kiểm tra các đơn vị giao thức tiếp theo. Khi TCP khởi tạo một phiên với
PIX Firewall, PIX Firewall ghi lại các lưu lượng mạng và xem phản hồi từ thiết bị
mà nó đã cố gắng truyền thông. PIX Firewall sau đó cho phép lưu lượng đi qua giữa
các kết nối dựa trên quá trình bắt tay 3 bước
4
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Khi một phiên TCP được thiết lập trên PIX Firewall sẽ xảy ra những điều dưới đây:
1. Gói tin IP đầu tiên từ host inside là nguyên nhân phát sinh ra một khe dịch
(translation slot). Thông tin TCP được nhúng sau đó được sử dụng để tạo
một khe kết nối trong PIX Firewall
2. Khe kết nối được đánh dấu là embryonic (chưa thiết lâp)
3. PIX Firewall ngẫu nhiên khởi tạo số thứ tự của kết nối, lưu trữ giá trị delta và
đẩy gói tin đến giao diện ra
4. Bây giờ PIX Firewall trông đợi gói tin SYN/ACK từ host đích. Sau đó PIX
Firewall kết hợp với gói tin nhận được dựa trên khe kết nối. Tính toán thông
tin về thứ tự sắp xếp và đẩy gói tin ngược trở lại đến host inside
5
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
5. host inside hoàn thành cài đặt kết nối (bắt tay ba bước) với một ACK
6. Khe kết nối trên PIX Firewall được đánh dấu là đã kết nối (active-established)
và dữ liệu được truyền. Bộ đếm embryonic sau đó được reste lại cho kết nối
này
6
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
UDP là một giao thức kết nối không có hướng. PIX Firewall cần giữ một phương
pháp để đảm bảo tính an ninh của nó. Các ứng dụng sử dụng UDP là khó để đảm
bảo tính an ninh bởi vì nó không có quá trình bắt tay hoặc sự xắp xếp thứ tự. Nó
khó để xác định trạng thái hiện tại của một giao dịch UDP (đang mở, đã thiết lập, và
đóng). Nó cũng khó khăn để duy trì trạng thái của một phiên như là nó không clear
beginning (xóa về từ đầu), trạng thái luông…. Tuy nhiên PIX Firewall tạo một khe
kết nối UDP khi một gói tin UDP được gửi từ một giao diện có mức an ninh cao
hơn đến giao diện có mức an ninh thấp hơn. Tất cả những gói tin UDP tiếp theo kết
hợp với khe kết nối đẩy ra mạng inside
7
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Khi một khe kết nối UDP ở trạng thái nhàn rỗi mà lâu hơn thời gian nhàn rỗi cho
phép đã được cấu hình nó sẽ bị xóa từ bảng kết nối. Dưới đây là một số đặc trưng
của UDP:
UDP là một giao thức vận chuyển không tin cậy nhưng hiệu quả
Sự giả mạo gói tin UDP là rất dễ (không có quá trình bắt tay 3 bước hoặc
không có thứ tự). Khi mà không có trạng thái máy thì phần khởi tạo của giao
dịch hoặc trạng thái hiện tại thường không thể xác định được
UDP không phân phối đảm bảo
UDP không quản lý tắc nghẽn hoặc tránh tắc nghẽn
Các dịch vụ sử dụng UDP có thể chia thành 2 loại:
Các dịch vụ Request – reply (ping – pong) (DNS)
Flow services (video, VoIP, NFS)
8
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
PIX Firewall Translations
Phần này sẽ mô tả về tiến trình dịch trong PIX Firewall. Có 2 kiểu dịch đó là Tĩnh
và động
Sử dụng dịch tĩnh khi bạn muốn một host inside luôn luôn xuất hiện với một địa chỉ
cố định trên mạng global của PIX Firewall. Dịch tĩnh được sử dụng để ánh xạ một
địa chỉ host inside đến một outside, địa chỉ global:
9
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Sử dụng lệnh static cho các kết nối bên ngoài để đảm bảo gói tin đi ra khỏi
một host inside luôn luôn được ánh xạ đến một địa chỉ IP global cụ thể ( ví
dụ: một host inside DNS, SMTP)
Sử dụng riêng lệnh static cho các kết nối bên ngoài mà cần ánh xạ đến cùng
một địa chỉ IP global
Những thông tin dưới đây có thể giúp bạn xác định khi nào thì sử dụng dịch tĩnh
trong PIX Firewall:
Không tạo statics với chỉ IP tĩnh chồng chéo. Mỗi địa chỉ IP cần duy nhất
Statics cần đảm bảo thứ tự trên cặp lệnh nat và global
Nếu một địa chỉ IP global được swer dụng cho cho dịch địa chỉ cổng (PAT),
không sử dụng cùng địa chỉ IP global cho dịch tĩnh
10
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Dịch động được sử dụng cho host cục bộ và các kết nối bên ngoài của chúng và địa
chỉ host được ẩn trước Internet. Với dịch động, trước tiên bạn cần phải định nghĩa
host thích hợp cho việc dịch với lệnh nat và sau đó định nghĩa địa chỉ pool với lệnh
global. Việc cấp dải địa chỉ được chọn trên outgoing interface dựa trên nat_id đã
được chọn với lệnh nat.
Lệnh nat làm việc với lệnh global để kích hoạt NAT. Lệnh nat kết hợp với một
mạng với dải địa chỉ IP. Nó cho phép bạn chỉ định danh sách các host inside có thể
sử dụng PIX Firewall cho việc dịch
Trong hình vẽ trên thì địa chỉ global pool được gán bởi lệnh global là từ
192.168.0.20 đến 192.168.0.254, cho phép lên tới 235 địa chỉ IP riêng biệt
11
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Việc dịch tại lớp Ip và tiếp tục tại lớp vận chuyển. Các kết nối là các tập hợp con
của translation. Bạn có thể có nhiều kết nối mở dưới một translation.
Bạn có thể chỉ định tới 256 global pool địa chỉ IP. Tối đã là một địa chỉ mạng lớp B
hoặc 255 dịa chỉ lớp C – là 65.535 địa chỉ
12
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Lệnh xlate cho phép bạn hiển thị hoặc xóa nội dung của các translation slot
translation slot vẫn có thể còn mập mờ sau những thay đổi vừa mới tạo. Luôn luôn
sử dụng lệnh clear xlate hoặc reload lại sau khi thêm, thay đổi hoặc gỡ bỏ các lệnh
alias, global, nat, route, static trong cấu hình
Cú pháp lệnh xlate như sau
clear xlate [global_ip [local_ip]]
show xlate [global_ip [local_ip]]
Global_ip Địa chỉ IP đã được đăng ký để sử dụng từ global pool
Local_ip Địa chỉ IP cục bộ từ mạng inside
13
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Truy cập thông qua PIX Firewall
Chỉ có 2 cách cho phép truy cập thông qua PIX Firewall :
Valid user request – tất cả các phiên từ inside đến outside. Khi một server
outside đáp ứng yêu cầu, PIX Firewall kiểm tra bảng translation để xem
translation slot có tồn tại cho yêu cầu cụ thể hay không? Nếu nó tồn tại thì
PIX Firewall cho phép phiên được tiếp tục. Sau khi phiên kết thúc,
translation slot sẽ bị xóa
Sau khi một phiên được thiết lập cho yêu cầu UDP, một cấu hình timer được
thiết lập. Phiên kết thúc dựa trên thời gian được phép cho phiên UDP và sau
đó đóng translation slot
Predefined statics and conduits – sử dụng trong truyền thông từ ouside đến
inside. Định nghĩa trước một static translation sử dụng một hoặc một dải các
địa chỉ từ global pool. Một conduit được nhập để định nghĩa địa chỉ, nhóm
địa chỉ, cổng TCP/UDP hoặc dải các cổng và ai, ứng dụng gì được phép qua
PIX Firewall.
14
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Mặc dù phần lớn các kết nối xảy ra từ một giao diện với mức an ninh cao hơn đến
một giao diện có mức an ninh thấp hơn. Cũng có lúc bạn muốn kết nối từ một giao
diện có mức an ninh thấp đến giao diện có mức an ninh cao hơn. Để thực hiện điều
này sử dụng lệnh static và conduit
Lệnh statics tạo một ánh xạ giữa một IP inside và một IP global. Sử dụng lệnh
static cho phép bạn thiết lập một địa chỉ global cố định cho một địa chỉ IP inside cụ
thể. Điều này sẽ tạo một lối vào cho một giao diện có mức an ninh thấp hơn đến
giao diện có mức an ninh cao hơn
Sau khi tạo một ánh xạ tĩnh giữa một địa chỉ IP inside và một địa chỉ IP global sử
dụng lệnh static, kết nối từ outside đến inside vẫn bị khóa bởi ASA (thuật toán an
ninh thích ứng ) của PIX Firewall. Lệnh conduit được sử dụng để cho phép lưu
lượng đi giữa các giao diện (giữa các vùng). Lệnh conduit loại trừ ASA của PIX
Firewall.
Note: khi bạn sử dụng lệnh static thì bạn cũng cần phải sử dụng lệnh conduit. Lệnh static
tạo nên ánh xạ còn lệnh conduit cho phép người sử dụng truy cập ánh xạ tĩnh
15
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Lệnh static tạo một ánh xạ cố định (được gọi là static translation hoặc xlate) giữa
địa chỉ IP cục bộ và địa chỉ IP global. Đối với các kết nối bên ngoài sử dụng static
để chỉ định một địa chỉ trong global pool mà luôn được sử dụng để dịch giữa host
cục bộ và địa chỉ global. Đối với kết nối bên trong sử dụng lệnh static và conduit
để nhận biết địa chỉ hiện hữu trên mạng bên ngoài.
Lệnh static tạo một ánh xạ cố định (static traslation slot) giữa địa chỉ IP cục bộ và
một địa chỉ đã được đăng ký
Trong ví dụ phía trên, khi một gói tin từ client 10.0.0.3 đi ra ngoài thông qua PIX
Firewall nó sẽ có địa chỉ IP nguồn là 192.168.0.10. Các kết nối đến 192.168.0.10 là
không giới hạn nhưng giới hạn embryonic connection là 1000
Cú pháp của lệnh static như dưới đây:
static [(internal_if_name, external_if_name)] global_ip local_ip [netmask
network_ mask] [max_conns[em_limit]][norandomseq]
Interner_if_name Tên giao diện mạng bên trong
Externer_if_name Tên giao diện mạng bên ngoài
Global_ip Địa chỉ IP global sử dụng để định hướng lại (từ outside đến
inside
Local_ip Địa chỉ IP từ mạng inside
16
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Netmask Từ khóa yêu cầu trước khi chỉ định mặt nạn mạng
Mask Mặt nạ mạng gắn liền với cả 2 global_ip và local_ip
Max_conns Số tối đa kết nối cho phép qua static tại cùng một thời điểm
Emb_limit Giới hạn embryonic connection. Một embryonic connection là
một connection bắt đầu nhưng chưa hoàn thành. Thiết lập giới
hạn này để ngăn cản tấn công theo kiểu tràn ngập embryonic
connection. Mặc định là 0, có nghĩa là không giới hạn kết nối
Norandomseq Không ngẫu nhiên hóa thứ tự gói tin TCP/IP. Chỉ sử dụng tùy
chọn này nếu có một firewall nội tuyến khác cũng đang chạy
chế độ ngẫu nhiên hóa và kết quả là làm xáo trộn dữ liệu. Sử
dụng tùy chọn này mở một lỗ hổng an ninh trong PIX Firewall
Mức an ninh cho mỗi interface được thiết lập bởi lệnh nameif. Lệnh static cho phép
lưu lượng bắt đầu từ một interface với một mức an ninh thấp hơn quan PIX Firewall
đến một interface có mức an ninh cao hơn. Ví dụ, một static và conduit cần được
cấu hình để cho phép các phiên vào từ outside interface đến DMZ interface, hoặc từ
outside interface đến inside interface
Statics được ưu tiên trên cặp lệnh nat và global. Sử dụng lệnh show static để hiển
thị trạng thái static trong cấu hình
Trong các phiên bản phần mềm 5.2 và cao hơn, tất cả các lưu lượng truyền vào, PIX
Firewall sẽ hủy việc truyền đối với địa chỉ IP đích được nhận dạng là địa chỉ mạng
hay địa chỉ broadcast. Nó sử dụng IP global và mask từ lệnh static để phân biệt địa
chỉ IP thông thường từ mạng hay địa chỉ broadcast, sau khi PIX Firewall cấm xlate
đối với địa chỉ IP mạng hoặc địa chỉ broadcast với gói tin truyền vào
17
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
Lệnh conduit cho phép hoặc hủy bỏ các kết nối từ outside PIX Firewall truy cập
đến các dịch vụ TCP/UDP trên các host inside. Khai báo conduit tạo một ngoại lệ
đến PIX Firewall ASA bằng cách cho phép các kết nối từ một giao diện mạng truy
cập đến host trên giao diện khác
Để cho phép các kết nối từ một giao diện có mức an ninh thấp hơn đến một giao
diện có mức an ninh cao hơn, lệnh conduit cần được sử dụng.
Ví dụ phía trên cho phép các dịch vụ FTP thông qua địa chỉ IP 192.168.0.10 đến
host inside 10.0.0.3 từ outside. Global_ip và global_mask định nghĩa địa chỉ IP
hoặc những địa chỉ mà các kết nối được phép.
Bạn có thể có tới 8000 conduit và có thể gỡ conduit bằng lệnh no conduit
Cú pháp cho lệnh conduit như dưới đây
conduit permit | deny protocol global_ip global_mask [operator port [port]]
foreign_ip foreign_mask [operator port [port]]
Permit Cho phép truy cập nếu điều kiện phù hợp
Deny Không cho phép truy cập nếu điều kiện phù hợp
Protocol Chỉ định giao thức vận chuyển cho kết nối. Có thể thực hiện
các giá trị như eigrp, gre, icmp, igmp, rgp, ip, ipinip, nos,
18
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
ospf, tcp, udp hoặc một số nguyên trong dải từ 0 đến 255 mô
tả một giao thức IP. Sử dụng ip chỉ dịnh tất cả các giao thức
vận chuyển. Bạn có thể hiển thị các giao thức hợp lệ tại
//www.isi.edu/in- notes/iana/assignments/protocol-numbers.
Icmp Cho phép hoặc cấm ICMP truy cập từ một hoặc nhiều hơn địa
chỉ IP global. Chỉ định kiểu ICMP trong biến icmp_type hoặc
bỏ qua tất cả các kiểu ICMP
Global_ip Một địa chỉ IP global trước đó được định nghĩa bởi lệnh
global hoặc static. Bạn có thể sử dụng bất kể địa chỉ IP nào
nếu global_ip và global_mask là 0.0.0.0 0.0.0.0. Lệnh any áp
dụng cho phép hoặc cấm đến địa chỉ global trên tất cả các
interface
Operator Một toán hạng so sánh cho phép bạn chỉ định một port hoặc
dải các port. Có thể có các giá trị là: eq, lt, any, gt, neq, range.
Global_mask Mặt nạ mạng của global_ip. Global_mask là một số 32 bit.
Gồm 4 phần cách nhau bởi dấu chấm, ví dụ 255.255.255.255.
Sử dụng số 0 chỉ ra vị trí bít được bỏ qua. Sử dụng mạng con
nếu cần đến.
Nếu bạn sử dụng 0 cho global_ip, thì sử dụng 0 cho
global_mask nếu không thì nhập global_mask phù hợp với
global_ip
Port Dịch vụ bạn cho phép sử dụng trong khi truy cập global_ip.
Chỉ định các dịch vụ bởi cách cổng, ví dụ 25 cho SMTP, 80
cho HTTP…0 có nghĩa là bất kỳ cổng nào. Các giá trị cổng
được định nghĩa trong RFC 1700. Cho phép các tên là dns,
esp, ftp, h323, http, ident, nntp, ntp, pop2, pop3, pptp, rpc,
smtp, snmp, snmptrap, sqlnet, tcp, telnet, tftp, và udp. Chú ý
rằng bạn có thể chỉ định bằng chữ trong dãy cổng, ví dụ ftp-
h323; hoặc bằng số.
Foreign_ip Một địa chỉ IP ngoài (host hoặc mạng) có thể truy cập
global_ip. Nếu bạn chỉ định 0.0.0.0 hoặc 0 cho bất kỳ host
19
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên
CHAPTER 6: CISCO PIX FIREWALL TRANSLATUONS
nào. Nếu cả 2 foreign_ip và foreign_mask là 0.0.0.0 0.0.0.0
bạn có thể sử dụng viết tắt bất kỳ lệnh nào áp dụng cho tất cả
các cổng
Foreign_mask Mặt nạ mạng của foreign_ip. Foreign_mask là một số 32 bit,
có 4 phần, ví dụ 255.255.255.255. sử dụng số 0 trong một
phần để cho biết vị trí bit được bỏ qua. Sử dụng mạng con nếu
cần thiết
Operator Một toán hạng so sánh cho phép bạn chỉ định một port hoặc
dải các port. Có thể có các giá trị là: eq, lt, any, gt, neq, range.
Port Dịch vụ bạn cho phép sử dụng trong khi truy cập global_ip
hoặc foreign_ip. Chỉ định các dịch vụ bởi các cổng như là 25
cho SMTP, 80 cho HTTP…Bạn có thể chỉ định các cổng bởi
tên hoặc số trong dải từ 0 đến 65535. Bạn có thể chỉ định tất
cả các cổng bằng cách không chỉ định giá trị nào, ví dụ
conduit deny tcp any any. Lệnh này là điều kiện mặc định
cho lệnh conduit trong tất cả các cổng bị cấm cho đến khi
permit
Note: Nếu bạn muốn người sử dụng bên trong có thể ping ra các host bên ngoài, bạn
cần tạo một ICMP conduit cho echo reply. Ví dụ, để ping đến tất cả các host sử
dụng lệnh conduit permit icmp any any. Tuy nhiên điều này có thể là nguyên
nhân làm nhiều lưu lượng trên mạng
20
Trần Giáo_Lớp K3D_Khoa CNTT_ĐH Thái Nguyên