Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (642.56 KB, 58 trang )
này,chúng ta sẽ biết cách phân biệt được các thiết bị phần cứng và phần mềm tường lửa đi kèm
với chúng.
Bây giờ chúng ta hãy xem tường lửa là gì?Một thiết bị tưởng lửa là một thiết bị mạng mà
phân cách hai hoặc nhiều mạng và có phần mềm tường lửa đang chạy trên ít nhất một giao diện
mạng.Thiết bị sử dụng phần mềm tường lửa sẽ xác định các luồng nào sẽ được lưu chuyển giữa
các mạng.Đó là phần mềm tường lửa và các nguyên tắc cơ bản được liên quan của nó mà làm
cho thiết bị thực hiện các chức năng phổ biến của tường lửa.Nếu không có phần mềm,thiết bị
tường lửa chỉ là một bộ định tuyến đơn giản ,một gateway,hay chỉ là một nơi giao nhận gói tin.
Như vậy phần mềm tường lửa là bất kỳ phần mềm nào mà kiểm tra giao thong qua lại của
một giao diện và đưa ra các quyết định điều hướng dựa trên một tập các nguyên tắc. Một số phần
mềm tường lửa sẽ được liệt kê ở đây:
1.2. Personal FireWall
là gói phần mềm bạn có thể cài đặt trên hệ thống của mình để bảo vệ nó khỏi các cuộc tấn
công.Thường cần thiết khi nó được kết nối với Internet. Nếu bạn là một modem cáp
hoặc DSL và bạn cắm máy tính của bạn trực tiếp vào modem cáp hoặc DSL router, máy tính của
bạn nhiều hơn khả năng cungcấp một địa chỉ IP công cộng với bảo vệ từ người dùng khác
trên mạng của nhà cung cấp. Trong trường hợp này, bất kỳ tập tin, thư mục chia sẻ, và máy
in, cũng như các dịch vụ bất kỳ mạng nào đang chạy trên máy tính của bạn sẽ được hiển
thị, và khai thác bằng cách, chỉ là về bất cứ ai trên Internet.Personal Firewall được thiết kế để
ngăn chặn các địa chỉ nguy hại.
1.3. Parental Control Software
Ngăn chặn không cho phép người dùng vào các trang web cấm như các trang web đen…
Các phần mềm khác như phần mềm chặn thư giác hay phần mềm quét virus tương tự như phần
mềm tường lửa nhưng không hoàn toàn giống.Phần mềm chặn thư giác và quét virus hoạt động
trên các thực thể lớn hơn(như các thư mục hay email…) trong khi phần mềm tường lửa thường
chỉ lọc các gói tin.Một vài tường lửa thường xuất hiện khi phát hiện ra các gói tin mà nó không
nhận ra được.Nhiều tường lửa loại này được gọi là tường lửa của tầng ứng dụng bời vì nó có thể
kiểm tra cú pháp của một ứng dụng(như một trang web thương mại điện tử) thay vì chỉ cung cấp
các thông tin về các mức gói tin(HTTP).Ví dụ,trang web thương mại điện tử dùng giao thức
HTTP để giao tiếp với trình duyệt web.Một tường lửa ở mức gói có thể nhìn vào các yêu cầu
HTTP để xem chúng có được hình thành một cách chính xác và tuân thủ các đặc điểm kỹ thuật
của giao thức hay không.Một tường lửa ở mức ứng dụng có thể hiểu cách trang được xây dựng
thế nào và xác nhận loại yêu cầu nào mà người sử dụng được phép thực hiện ,loại nào không
được thực hiện.Điều này là quan trọng bởi vì các yêu cầu hợp pháp và các web độc hại đều có
thể bao gồm các yêu cầu HTTP nơi mà tường lửa ở mức gói tin ngừng hoạt động kiểm tra của
nó.
3
1.4. Sự khác nhau giữa một tường lửa và một bộ lọc tin là gì?
Tường lửa và bộ lọc tin nói chung thực hiện cùng một chức năng.Bộ lọc gói tin dựa trên
lưu lượng truy cập dựa trên những đặc điểm giao thức,địa chỉ nguồn hoặc đích và các trường
khác nằm trong phần đầu của gói tin TCP/IP.Tường lửa là các bộ lọc gói tin nhưng một số tường
lửa có thể kiểm tra nhiều hơn chứ không chỉ là phần header,chúng còn có thể kiểm tra ở phần dữ
liệu(như trọng tải).Ví dụ,một bộ lọc gói tin có thể theo dõi các kết nối tới cổng 20 và 21(cổng
FTP).Trong khi đó tường lửa có thể thiết lập các tiêu chuẩn dựa trên số cổng FTP cũng như trọng
tải FTP,chẳng hạn như lệnh PORT hay tên tập tin bao gồm các text password.
1.5. Các tường lửa bảo vệ các mạng như thế nào?
Các tường lửa không chỉ hiệu quả với các quy tắc mà chúng được cấu hình.Như chúng ta
đã đề cập từ trước,tường lửa kiểm tra các đặc điểm cụ thể để quyết định xem đường truyền nào
được phép và không được phép truyền qua dựa trên một số tiêu chí.Đó là công việc của một
người quản trị hệ thống nhằm xây dựng lên một tập nguyên tắc theo một cách nào đó mà nó bảo
vệ mạng ở phía sau nó một cách hiệu quả,trong khi vẫn cho phép lưu lượng truy cập một cách
hợp lý.Hầu hết các tường lửa đều điều khiển đường truyền theo ba cách khác nhau bằng một
nguyên tắc.
•
•
•
Chấp nhận gói tin và đưa nó tới đích đã định từ trước.
Từ chối gói tin và đưa ra thông báo từ chối gói tin (ICMP) hoặc xác nhận nào
khác.Điều này sẽ đưa ra một phản hồi rõ ràng tới người gửi gói tin rằng lưu lượng
như thế sẽ không được phép qua tường lửa.
Sút gói tin đi mà không cần bất cứ sự thừa nhận nào.Đây là giai đoạn kết thúc
trong vòng đời của gói tin.Không có gói tin được gửi tới người gửi gói tin.Điều
này nhằm làm giảm khả năng của người gửi đoán ra thông tin về mạng được bảo
vệ,nhưng nó cũng tác động tiêu cực đến hiệu suất mạng của một số đường truyền
mạng nào đó.
Hầu hết các tường lửa được thiết lập một cách mặc định là để sút các gói tin.
1.6. Loaị đặc điểm nào của gói tin mà bạn có thể lọc trong một Ruleset?
Hầu hết các tường lửa và bộ lọc gói tin đều có khả năng kiểm tra các đặc điểm
dưới đây một cách nhỏ nhất :
•
•
•
•
•
•
Loại giao thức (IP, TCP, UDP, ICMP, IPSec, etc.)
Địa chỉ IP nguồn và cổng
Địa chỉ IP đích và cổng.
Loại thông báo mã ICMP và mã.
Thẻ TCP (SYN, FIN, ACK, etc.)
Giao diện mạng mà gói tin đến.
4
Vì vậy nếu bạn muốn ngăn chặn gói tin Ping đến từ mạng nhà của bạn
192.168.1.0/24,bạn hãy viết một nguyên tắc như thế này.Đừng lo lắng về cú pháp cụ thể nào
deny proto icmp type 8:0 from any to 192.168.1.0/24
hoặc nếu bạn muốn cho phép luồng Web đi tới 192.168.1.50 và từ chối tất cả các luồng khác.
allow proto tcp from any:any to 192.168.1.50:80
deny proto all from any to 192.168.1.0/24
Bạn cũng có thể dùng tường lửa để bảo vệ mạng của bạn bằng cách giả mạo địa chỉ IP.Ví
dụ,chúng ta gọi giao diện bên ngoài tường lửa của bạn (called eth 1) có địa chỉ IP là 10.0.0.1 với
mặt lạ mạng là 255.255.255.0.Giao diện bên trong tường lửa của bạn có địa chỉ IP là
192.168.1.1,với mặt lạ mạng là 255.255.255.0.Bất kỳ đường truyền mạng nào đến từ địa chỉ
192.168.1.0 đến mạng 10.0.0.0 sẽ đến giao diện eth0 và ra khỏi giao diện eth1,như trong hình
minh họa sau đây.
Ngược lại đường truyền từ mạng 10.0.0.0 tới mạng 192.168.1.0 đi ra từ giao diện eth1 và đi vào
từ giao diện eth0.Vì vậy,bạn sẽ không bao giờ thấy đường truyền với địa chỉ nguồn 192.168.1.x
được gửi đến từ giao diện eth1.Nếu bạn thấy,điều đó có nghĩa là một vài người nào đó bên ngoài
mạng 10.0.0.0 đang cố gắng giả mạo 1 đia chỉ trong dải địa chỉ IP địa phương của bạn
deny proto any from 192.168.1.0/24 to any on eth1
Bây giờ, nếu chúng ta xem xét cẩn thận tại quy định này, có vẻ một chút mơ hồ. Có thểquy tắc
này phù hợp với hợp pháp giao thông đến từ 192.168.1.0 tiêu đề ra với mạng bên ngoài? Nó có
thể, nhưng nó phụ thuộc vào giải thích tường lửa của cú pháp. Vì chúng ta đang sử dụng
một cú pháp bức tường lửa hư cấu cho các ví dụ này, quy định này vẫn còn mơ hồ
và có thể không hiệu quả. Điều này minh họa một điểm quan trọng:Bạn phải rất cẩn thận
khi viết các quy tắc tường lửa. Chúng tôi biết những gì chúng tôi đãcố gắng để ngăn
chặn, nhưng đã làm chúng tôi thực hiện nó một cách chính xác? Bạnphải chắc chắn rằng bạn
hiểu làm thế nào bức tường lửa áp dụng các quy tắc và nhữnggì mặc định của nó hoặc hành
vi giả định có thể được. Chúng tôi có thể viết các quy tắcchống giả mạo ít mơ hồ nếu chúng
ta quy định các giao diện mạng mà trên đó để áp dụng các quy tắc.
deny proto any from 192.168.1.0/24 to any in on eth1
allow proto any from 192.168.1.0/24 to any out on eth1
1.7.
Sự khác nhau giữa một tường lửa không trạng thái và đa trạng thái?
5
Trở về chương 4,chúng ta đã đề cập các công cụ như nmap có thể được sử dụng để xem
xét xem liệu một tường lửa có phải là stateless or stateful.Vậy đích thực nó là loại nào?Một
tường lửa không trạng thái chỉ có thể kiểm tra một gói dữ liệu cá nhân tại một thời điểm cô
lập,không để ý đến các gói tin đã đến trước nó.Nói một cách khác,một tường lửa đa trạng thái,có
thể đặt gói tin trong một ngữ cảnh của một luồng điều khiển của một giao thức khác và trong
giao thức đặc biệt như TCP/IP hay FTP.Điều này cho phép tường lửa đa trạng thái nhóm các gói
tin riêng lẻ với nhau vào một connection,session hay conversation.Do đó,một bức tường lửa đa
trạng thái có thể lọc lưu lượng truy cập không chỉ dựa vào đặc tính của gói tin riêng lẻ mà còn
dựa vào ngữ cảnh của gói tin theo một phiên họp(session) hay một cuộc hội thoại(conversation).
Tường lửa đa trạng thái cũng cho phép nhiều tập nguyên tắc hơn.Ví dụ,một máy tính
trong mạng nội bộ 192.168.1.0 muốn kết nối tới một máy chủ web nằm trên Internet.Các bước
sau đây chứng minh những hạn chế để thử kiểm tra gói đơn đến phân luồng.
1.8.
Tìm hiểu về Network Adress Translation (NAT) và Port Forward.
Nhiều thiết bị tường lửa được dùng để tách các mạng bên ngoài với địa chỉ IP truy cập công cộng
từ một mạng nội bộ với địa chỉ IP riêng.Giao diện bên ngoài của thiết bị có một địa chỉ IP
chung,trong khi giao diện bên trong của thiết bị có địa chỉ IP riêng.Địa chỉ chung cũng được
tham chiếu tới như bộ định tuyến và địa chỉ riêng cũng thường được tham chiếu như địa chỉ vô
đinh tuyến.Trong thực tế,một trong hai không gian địa chỉ riêng hay chung là bộ định
tuyến.Nhưng nếu phân biệt cụ thể,địa chỉ riêng không được sử dụng cho cho địa chỉ trên
Internet.Địa chỉ riêng được dành riêng cho các tổ chức để tạo ra các mạng nội bộ.
Internet Assigned Numbers Authority (IANA) thuộc các khối IP nhất định cho các mạng riêng
tư.Điều này có nghĩa là các bộ định tuyến công cộng sẽ không(hay ít nhất sẽ không nên) định
tuyến luồng đi và đến các máy nằm trong phạm vi mạng này.Phạm vi mạng như sau :
192.168.0.0 thông qua 192.168.255.255 được viết 192.168.0.0/16 o hay
192.168.0.0/255.255.0.0.
Như trên thì,điều này sẽ mang lại cho chúng ta một số lượng lớn địa chỉ IP và mặt nạ
mạng(sunnet)cho địa chỉ mạng nội bộ.Bất kỳ một mạng riêng tư nào mà hệ thống của nó không
được truy cập vào một máy nằm trong mạng Internet sẽ sử dụng một subnet mạng riêng tư thuộc
phạm vi này như một subnet của nó.
Tuy nhiên,điều này đặt ra một vấn đề,nếu bất kỳ một hệ thống trên mạng riêng tư muốn truy cập
tới Internet.Hãy nhớ rằng các hành vi được đề nghị rằng các bộ định tuyến Internet công cộng sẽ
không phải đinh tuyến luồng hoặc hệ thống các địa chỉ tư nhân.Điều này dường như ngụ ý rằng
một địa chỉ riêng tư không bao giờ có thể truy cập tới một trang Web trên Internet.
NAT giải quyết vấn đề này bằng cách chuyển(translating) các gói tin từ địa chỉ riêng tư thành địa
chỉ công cộng.NAT thường được thực hiện bởi một thiết bị tường lửa trên giao diện bên ngoài
của nó vì lời ích của các hệ thống trên giao diện nội bộ của mình.Nhiều thiết bị mạng có thể thực
hiện NAT,bao gồm cả thiết bị định tuyến.Một thiết bị NAT cho phép các máy trên mạng riêng
6
nội bộ của nó,giả trang như là địa chỉ IP được gán cho thiết bị NAT,bao gồm cả thiết bị định
tuyến.Hệ thống riêng tư có thể giao tiếp với Internet thông qua định tuyến,địa chỉ IP truy cập
công cộng trên giao diện ngoài của thiết bị NAT.
Khi một thiết bị NAT nhận được lưu lượng truy cập từ mạng riêng tư dành cho các mạng
ngoài(Internet),nó ghi nguồn của gói dữ liệu và các chi tiết đích.Thiết bị này sau đó viết lại tiêu
đề của gói tin như việc địa chỉ IP nguồn được đặt cùng với bên ngoài thiết bị,địa chỉ IP công
cộng.
Sau đó thiết bị sẽ gửi gói tin tới địa chỉ IP đích.Từ quan điểm hệ thống đích của gói tin đã đến
trực tiếp từ các thiết bị NAT.Hệ thống đích đáp ứng cần thiết để gói tin,gửi nó trở lại địa chỉ IP
của thiết bị NAT.
Khi thiết bị NAT nhận được gói tin trả lời,nó kiểm tra bảng dịch địa chỉ của nó để xem nếu các
địa chỉ và thông tin của gói tin phù hợp với bất kỳ của các gới tin đã được gửi ra.Nếu trận đấu
không được tìm thấy,gói tin được giảm xuống hoặc bị xử lý theo bất kỳ quy tắc tường lửa hoạt
động trên các thiết bị.Nếu một trện đấu được tìm thấy,các thiết bị NAT viết lại địa chỉ đích của
gói tin IP với điah chỉ riêng của hệ thống ban đầu gừi gói tin.
Cuối cùng các thiết bị NAT sẽ gửi gói tin đến đích nội bộ của mình.Dịch địa chỉ mạng là hoàn
toàn minh bạch để các hệ thống trên địa chỉ IP nội bộ tư nhân và các điểm đến Internet.Các hệ
thống tư nhân có thể truy cập vào Internet,nhưng một hệ thống Internet có thể không trực tiếp
giải quyết nó.
Nếu bạn đang gặp sự cố cố hình dung những gì đang xảy ra,có lẽ minh họa sau đây sẽ giúp bạn:
NAT không có những hạn chế. Các thao tác tiêu đề gói tin sẽ can thiệp với bất kỳ giao thức đòi
hỏi phải sử dụng đúng địa chỉ IP, chẳng hạn như IPsec. Ngoài ra, bất kỳ giao thức yêu cầu một
kết nối riêng biệt, ngược lại đến, chẳng hạn như hoạt động chế độ FTP, sẽ không làm việc. Đi
7
FTP kiểm soát kết nối đến máy chủ FTP sẽ làm cho nó thông qua NAT chỉ là tốt, nhưng khi máy
chủ FTP cố gắng để thiết lập kết nối dữ liệu, thiết bị NAT sẽ không biết phải làm gì bởi vì nó
không có một mục tương ứng trongbảng dịch của nó. NAT của tỷ lệ hiện nhiễm đã ảnh hưởng
đến mọi người để tạo ra cách giải quyết để giải quyết những hạn chế này.
Cuối cùng, NAT đã trở thành thiếu tường lửa và an ninh mạng. Nó cung cấp một lớp bảo mật bổ
sung một thiết bị tường lửa, vì nó không chỉ bảo vệ máy phía sau giao diện nội bộ của mình,
nhưng nó cũng ẩn chúng đi. Nhưng điều gì sẽ xảy ra nếu bạn quyết định bạn muốn để lộ một
dịch vụ cụ thể trên mạng riêng của bạn với Internet? Điều gì sẽ xảy ra nếu bạn muốn một người
nào đó trên khắp đất nước để có thể nhìn vào một cái gì đó mà bạn đã đăng trên máy chủ web nội
bộ của bạn? Có cách nào để cho phép máy Internet để bắt đầu giao tiếp với một máy tính tư
nhân?
Đối với điều này, bạn có thể sử dụng một kỹ thuật được gọi là cổng chuyển tiếp. Các thiết bị
NAT có thể chuyển tiếp bất kỳ lưu lượng truy cập nhận được trên một cổng đặc biệt trên giao
diện bên ngoài của thiết bị một cổng trên một máy tính nội bộ tư nhân. Một hệ thống trên mạng
Internet kết nối với các thiết bị NAT trên cổng này sẽ có hiệu quả kết nối với các cổng trên hệ
thống nội bộ, mặc dù nó chỉ cần biết địa chỉ IP của thiết bị NAT.
Đây là tất cả tốt và tốt, nhưng bây giờ bạn đã thực hiện mạng riêng của bạn một chút ít tư nhân
bằng cách mở cổng chuyển tiếp này. Bây giờ bất cứ ai trên Internet có thể truy cập vào máy chủ
web nội bộ của bạn bằng cách kết nối vào cổng trên thiết bị NAT của bạn. Nếu thiết bị NAT của
bạn là một bức tường lửa, bạn có thể sử dụng quy tắc tường lửa để hạn chế địa chỉ IP được phép
truy cập vào nó. Trong khi điều này là an toàn hơn, bạn vẫn đang chỉ dựa trên chứng thực trên
nền IP. Nhiều lần, người sử dụng đã xây dựng được tăng cường, mạng lưới tư nhân có thể tìm
thấy nó cần thiết để mở các tài nguyên mạng nội bộ đến một cơ sở từ xa. Có nhiều cách để hạn
chế truy cập từ đó thiết bị từ xa và ngăn cấm các phần còn lại của Internet. Nhưng chúng ta có
thực sự muốn chuyển tiếp hàng chục cổng và hàng chục mở lỗ hổng trong tường lửa của chúng
tôi, hoặc hàng chục các quy tắc và các ngoại lệ? Đây là nơi mà các mạng riêng ảo đi vào chơi.
1.9. Khái niệm cơ bản của các mạng riêng ảo (Virtual Private Networks)
VPN là một chủ đề phức tạp.Chúng ta đề cập nó ở đây là vì rất nhiều thiết bị tường lửa
cung cấp một vài cách đo lường khả năng của VPN.Máy chủ VPN nằm trên các thiết bị và đợi
kết nối từ các máy khách VPN.Các máy khách này có thể là dựa trên phần mềm,như một
laptop,hoặc các giải pháp dựa trên phần cứng,như một thiết bị ngang hàng.Các văn phòng từ xa
thường cài đặt một thiết bị tường lửa/VPN và cấu hình thiết bị để chúng có thể kết nối bởi một
dòng dữ liệu chuyên dụng.Sự khác biệt duy nhất là nó là một dòng dữ liệu ảo.Luồng vẫn truyền
trên Internet.Nhưng VPN cung cấp thêm các tầng bảo mật qua việc mã hóa và bảo vệ tường lửa.
Một phái cạnh chính của VPN là xác thực người dùng.Người sử dụng từ xa sử dụng một
phần mềm VPN client và đang nhập vào máy chủ VPN để thiết lập kết nối của họ.Các thiết bị
8
phần cứng VPN thường sử dụng một vài loại thuật toán xác thực khóa được chia sẻ.Điều này là
mạnh hơn nhiều trong cả an ninh và thuận tiện hơn dựa vào xác địa chỉ IP.
Luồng truy cập VPN thường được mã hóa.Điều này nhằm bảo vệ dữ liệu trong khi chúng
được truyền đi tới các thiết bị đầu cuối VPN.Thậm chí,dữ liệu vẫn được qua các
router,switch,hoặc các thiết bị khác trên Internet.Nó gần như là an toàn như khi nó sử dụng một
dòng dữ liệu chuyên dụng
VPN thường có thể chuyển tiếp giữa tất cả các đường trên một mạng trên một tập các
cổng đơn.Hãy tưởng tượng có bao nhiêu hướng cổng và quy tắc tường lửa bạn phải viết,nếu bạn
phải mở một vài tài nguyên mạng nội bộ tới một vị trí ở xa.Chia sẻ file,chia sẻ máy in,kho lưu
trữ mã và các dịch vụ khác sẽ tạo một NAT và cấu hình cổng chuyển tiếp.
Bằng cách kết hợp các khả năng của một tường lửa,thiết bị NAT và VPN trong một thiết
bị mạng,bạn có thể cải thiện an ninh bên ngoài mạng của bạn mà không mất sự thuận tiện hay
năng suất.
1.10.
Bên trong khu phi quân sự
Một cuộc thảo luận về tường lửa sẽ không hoàn thành mà nếu không nhắc đến khu phi
quân sự,hoặc DMZ.DMZ đã trở thành một từ thông dụng không may là nhiều người sử dụng khi
nói về mạng và tường lửa,nhưng ít người hiểu những gì nó có.Chúng tôi đã thảo luận về tường
lửa và các thiết bị NAT có một giao diện bên ngoài với một địa chỉ IP công cộng định tuyến và
một giao diện bên ngoài với một địa chỉ IP công cộng định tuyến và một giao diện nội bộ,tư nhân
với một địa chỉ IP.Điều gì sẽ xảy ra nếu tổ chức của chúng tôi có một máy chủ FTP,máy chủ
Web và máy chủ DNS mà chúng ta muốn để làm cho truy cập công công?Vâng,chúng ta có thể
giữ chúng trên các mạng riêng và thiết lập chuyển tiếp cổng,nhưng điều gì sẽ xảy ra nếu chúng ta
có nhiều máy chủ web?Chúng ta không thể ràng buộc một cổng bên ngoài cổng 80 một số các hệ
thống nội bộ.
2. Freeware firewalls.
2.1. Ipchans
Ipchans là các bộ lọc gói tin đầu tiên chúng ta sẽ thảo luận.Ipchans ban đầu được dựa trên một
công cụ gọi là ipfwadm.Ý tưởng đằng sau ipchans là để tạo ra chuỗi các quy tắc cho một gói tin
đi qua.Tại bất kỳ điểm nào trong chuỗi, gói tin có thể được thông qua hoặc bị từ
chối.Ipchains có tất cả nhưng được thay thế bởi iptables cho hạt nhân Linux đang chạy dòng2.6,
tuy nhiên, nó có thể được bao gồm trong hầu hết các bản phân phối Linux cùng
vớiiptables. Nó là một điểm khởi đầu tốt đẹp cho cái nhìn đầu tiên của chúng tôi tại góitường
lửa, và nó cũng cho chúng ta một ví dụ về một bức tường lửa không trạng thái.
Để sử dụng ipchains, tất cả những gì bạn cần là một hộp Linux với các tùy chọn thíchhợp biên
dịch vào trong nhân. Bạn có thể cho biết nếu hạt nhân của bạn có hỗ trợ ipchains nếu tập
9
tin / proc / net / ip_fwchains tồn tại. Hiện tại hầu hết các phiên bản cài đặt Linux sẽ có các tùy
chọn này đi kèm theo, nhưng phiên bản trước đó của Linux có thể cần phải được sửa
đổi. Thật không may, chúng tôi không thể đi vào chi tiết cách xây dựng một hạt
nhân Linux, rất nhiều tài nguyên Internet có sẵn cho việc xây dựng hạt nhân hỗ trợ tường
lửa. Bạn có thể kiểm tra trang web chính của ipchains hoặc truy cập vào trang web sau đây để
biết thêm chi tiết:http://www.tldp.org/HOWTO/IPCHAINS-HOWTO.html.
Chú ý : Bạn cũng sẽ cần phải chắc chắn rằng tập tin / proc/sys/net/ipv4/ip_forward chứa giá
trị 1 nếu bạn muốn để có thể chuyển tiếp các gói tin từ một mạng sang mạng khác.Bạn có thể
gõ echo 1> / proc / sys / net/ipv4/ip_forward như là người quản trị mạng để đảm bảo rằng tường
lửa của bạn đã sẵn sàng để chuyển tiếp các gói tin.
Ipchains là một giao diện người sử dụng cho việc lọc gói tin của nhân Linux. Tất cả việc kiểm tra
gói tin thực tế được thực hiện trong không gian bộ nhớ của hạt nhân. Chương trình ipchains chỉ
đơn giản ra lệnh các quy tắc tới hạt nhân. Thật không may, điều này có nghĩa là hạt
nhân sẽ quên quy tắc của bạn bất cứ lúc nào khi hệ thống được khởi động lại. Rất may, bạn có
thể sử dụng các công cụ ipchains-save và ipchains-khôi phục lại để tạo ra một tập các quy
tắc ipchains hiện tại trong sử dụng và khôi phục lại chúng sau khi khởi động lại.
2.2. Implementation
Nếu hộp Linux của bạn có hỗ trợ ipchans,điều đầu tiên bạn cần phải làm là liệt kê tập quy
tắc hiện tại.
[root@originix /root]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
Lệnh này liệt kê các quy tắc gói tin hiện tại đang sử dụng.Như bạn có thể thấy,ipchans
định nghĩa ba chuỗi theo mặc định: input,forward và output.Chính sách mặc định cho mỗi
chuỗi(chains) là các gói tin được chấp nhận.Điều này có nghĩa rằng nếu một gói tin đi qua toàn
bộ chuỗi và không phù hợp với bất kỳ quy tắc nào,nó được coi là chấp nhận được và đi qua giao
diện.Bạn có thể chọn từ sáu mục tiêu phổ biến trong xây dựng.
10
Điều quan trọng là bạn hiểu làm thế nào mỗi chuỗi(chains) mặc định được sử dụng.Bất
kỳ gói tin nào đi vào một giao diện của hệ thống đầu tiên sẽ đi vào chuỗi đầu vào quy định cho
giao diện của nó.Các gói tin mà không phải là dành cho các tường lửa chính nó sẽ cần phải vượt
qua chuỗi định hướng(forward chain) trước khi tiếp tục đi đến đích của nó.Cuối cùng,bất kỳ gói
tin đi ra khỏi hệ thống phải vượt qua thông qua chuỗi đầu ra(output chain).Điều này có nghĩa bất
kỳ đường truyền nào đi qua giữa một hệ thống mạng riêng và một hệ thống mạng chung sẽ phải
đi qua cả ba chuỗi trên.Điều quan trọng cũng cần lưu ý rằng đầu vào và đầu ra không nhất thiết
đồng nghĩa với gửi đến và gửi đi.Các gói tin nhận chuỗi đầu vào đầu tiên cho dù họ có đến từ các
mạng nội bộ để eth0 hoặc từ mạng bên ngoài eth1.
Ở đây chúng ta sẽ thảo luận về các lệnh ipchains được sử dụng để thao tác với các quy
tắc cũng như các cú pháp.Trước tiên,chúng ta hãy xem xét các lệnh cơ bản cho phép thêm.loại
bỏ,và sửa đổi các quy tắc và các chuỗi trong bảng 13-1
Table 13-1: Ipchains Commands
Các lệnh mà bạn sẽ sử dụng thường xuyên nhất là để thêm các quy tắc cho một chuỗi,liệt kê
danh sách các quy tắc về một chuỗi và thay đổi chính sách một trên một chuỗi.Ngoài ra,bạn còn
có thể tạo ra chuỗi được định nghĩa bởi người dùng có thể sử dụng được như là mục tiêu.Ví dụ
bạn muốn kiểm tra một gói tin cụ thể chống lại một tập các quy tắc nhất định,nhưng nếu nó chỉ
phù hợp với một số tiêu chí ban đầu,bạn có thể có gói tin nhảy đến chuỗi do người dùng định
nghĩa.Chuỗi người dùng định nghĩa không có chính sách mặc định,không giông như 3 chuỗi mặc
định,nếu một gói tin đi đến điểm kết thúc của chuỗi do người dùng định nghĩa,nó “rơi
khỏi”chuỗi đó và trở lại chuỗi khi nó đến.
Trước tiên,chúng ta hãy xém ví dụ một quy tắc.Hãy tưởng tượng chúng tôi muốn chặn bất cứ
ping đến(yêu cầu ICMP echo) tại giao diện bên ngoài của chúng tôi.Làm thế nào chúng ta sẽ làm
điều này?
11
ipchains -A input -p 1 -i eth1 -s 0.0.0.0/0 8 -d 0.0.0.0/0 -j DENY
Đầu tiên,chúng ta có thể thấy rằng chúng ta thêm nguyên tắc này (-A) vào chuỗi đầu vào(input
chain). Thẻ -p xác nhận loại giao thức IP.Trong trường hợp này,chúng tôi đang tìm kiếm số giao
thức IP số 1,đó là ICMP. Thẻ –i là cờ cho phép chúng ta xác định xem giao diện mạng nào mà
chúng ta đang kiểm tra.Trong trường hợp này chúng ta có liên quan đến ping,đến giao diện bên
ngoài.vì vậy chỉ định eth1.Cờ s- và d- được sử dụng để xác định nguồn và đích của gói tin.Trong
trường hợp này,0.0.0.0/0 sẽ phù hợp với tất cả các địa chỉ IP,vì vậy chúng ta đang thực sự nói
rằng”từ bất kỳ tới bất kỳ”.
Điều đó không đến nỗi quá xấu.Chúng ta hãy xem xét một quy tắc có liên quan đến TCP.Nếu
bạn muốn chỉ những đường truyền tới web server của bạn tại 192.168.1.50 và chặn tất cả các
đường truyền khác lại.Chúng ta sẽ làm điều đó như nào?
ipchains -A input -p 6 -i eth1 -d 192.168.1.50 80 -j ACCEPT
ipchains -P input DENY
Chú ý rằng chúng ta không chỉ định một địa chỉ nguồn.Trong trường hợp này,Nó là không cần
thiết bởi vì chúng ta muốn chấp nhận bất kỳ truy cập nào đến 192.168.1.50 trên cổng 80,bất kể
nguồn kỳ gói tin không phù hợp với quy tắc này.Khi 192.168.1.50 cống gắng kiên lạc lại,nó sẽ
được gửi đường truyền nội địa trên eth0.Vì không có nguyên tắc phù hợp nào tòn tại và chính
sách mặc định sẽ DENY đường truyền,tất cả đáp ứng bị khóa.
Nếu quy tắc đó là nguyên tắc mà chỉ có trên chuỗi đầu vào của chúng ta.web server sẽ không trả
lời được bất kì ai đang nói chuyện với nó.Chúng ta nói rằng chúng ta chỉ cho phép đường truyền
nội địa trên eth 1 tới địa chỉ 192.168.1.50 nẳm trên cổng 80.
Bạn có thể sử dụng một dấu chấm than để đảo ngược gần như bất kỳ như giá trị có thể.Ví
dụ,chúng ta hãy nói rằng bạn muốn tất cả mọi người có quyền truy cập máy chủ web này,ngoại
trừ người dùng trên lớp C 192.168.69.0.Bạn có thể đảo ngược để viết lại các quy tắc đầu tiên
ipchains -R 1 input -p 6 -i eth1 -s ! 192.168.69.0/24
-d 192.168.1.50 80 -j ACCEPT
Các cổng TCP và UDP cũng có thể được xác định trong một số cách khác nhau.Bạn có thể sử
dụng tên tượng trưng cho các cổng,được đinh nghĩa trong tập tin/etc/,hoặc số lượng của
cảng.Bạn có thể chỉ định một loạt các cổng(như 6000:6001)hoặc mở cổng(:1023 quy định tất cả
các cổng theo năm 1024).Cổng có thể được đi trước với các nhà điều hành đảo ngược(!).Để phủ
nhận giá trị.
Bảng 13-2 cho thấy một số dòng lệnh biểu diện cờ lệnh khác nhau mà bạn có thể sử
dụng trong quy tắc và những gì chúng làm .
12
Bây giờ bạn đã quen thuộc với cú pháp quy tắc,hãy giải thích một tập hợp các quy tắc
cho một số hệ thống mới.Sau đây được lấy từ một quy tắc ipchans tập tin được tạo ra bằng cách
sử dụng tiện ích ipchans- tiết kiệm.Nó có thể được nạp lại và hạt nhân bằng cách sử dụng các
tiện ích ipchans-khôi phục.
1):input DENY
2):forward DENY
3):output ACCEPT
4):unkwn-in -5)-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i eth1 -j unkwn-in
6)-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i eth0 -j ACCEPT
7)-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i lo -j ACCEPT
8)-A forward -s 192.168.1.0/255.255.255.0 -d 0.0.0.0/0.0.0.0 -i eth1 -j MASQ
9)-A unkwn-in -s 192.168.1.0/255.255.255.0 -d 0.0.0.0/0.0.0.0 -j DENY
10)-A unkwn-in -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT
11)-A unkwn-in -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j ACCEPT
12)-A unkwn-in -s 0.0.0.0/0.0.0.0 20:20 -d 0.0.0.0/0.0.0.0 1024:5999 -p 6 -j ACCEPT
13)-A unkwn-in -s 0.0.0.0/0.0.0.0 20:20 -d 0.0.0.0/0.0.0.0 6010:65535 -p 6 -j ACCEPT
14)-A unkwn-in -s 0.0.0.0/0.0.0.0 0:0 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT
15)-A unkwn-in -s 0.0.0.0/0.0.0.0 3:3 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT
16)-A unkwn-in -s 10.3.0.6/255.255.255.255 53:53 -d 0.0.0.0/0.0.0.0 -p 17 -j ACCEPT
17)-A unkwn-in -s 10.3.0.7/255.255.255.255 53:53 -d 0.0.0.0/0.0.0.0 -p 17 -j ACCEPT
18)-A unkwn-in -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y
19)-A unkwn-in -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l
3. IPFW2
3.1. Implementation
Một điều quan trọng cần lưu ý rằng các tập tin cấu hình của FreeBSD sẽ tự động làm cho
việc sử dụng của ipfw cho dù bạn đã rõ ràng nói với nó hay không. Theo mặc định, hệ thống
sẽ phân tích / etc / rc.firewall kịch bản như là một phần của quá trình khởi động hệ thống. Các
13