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 (613.59 KB, 124 trang )
Tìm hiểu về an toàn và bảo mật trên mạng
mỏy vừa bị tấn công trong vài phút khi bắt đầu kết nối Internet; hiếm khi nó
có thể xảy ra.
Các phần tiếp theo mô tả từng bước chính trong xây dựng một máy
chủ pháo đài. Chúng cũng đề cập một cách ngắn gọn đến quá trình tiếp tục
duy trì và bảo vệ máy chủ pháo đài; lưu ý, các vấn đề về sự duy trì được
thảo luận chủ yếu ở chương 12.
7.1 Bảo vệ máy
Để bắt đầu, xây dựng một máy với một hệ điều hành chuẩn, bảo mật
đến mức có thể. Bắt đầu với một hệ điều hành không lỗi và tiếp theo là các
thủ tục mà chúng ta sẽ mô tả trong phần này.
Bắt đầu với việc cài đặt hệ điều hành ít lỗi nhất
Bắt đầu với việc cài đặt một hệ điều hành không lỗi, từ các nhà cung
cấp phân phối truyền thông. Nếu bạn làm như thế, bạn sẽ biết chính xác vấn
đề bạn cần làm. Bạn sẽ không cần trang bị thêm thiết bị mới . Sử dụng một
hệ thống như vậy cũng sẽ làm cho các công việc sau dơn giản hơn. Hầu hết
các sửa tạm bảo mật nhà cung ứng, cũng nh là các chỉ dẫn cấu hình nhà cung
ứng và tài liệu khác, giả sử rằng bạn đang bắt đầu với một cài đặt không thay
đổi.
Trong khi bạn đang cài đặt hệ điều hành, cài đặt ít như là bạn có thể
tránh. Sẽ đơn giản khi tránh cài đặt it các mẫu tin hơn là xoá toàn bộ các
mẫu tin này sau đó. Với vấn đề này, một khi hệ điều hành của bạn ít chức
năng nhất, nó sẽ khụng khú để thờm cỏc thành phần nếu bạn nhận ra bạn cần
chúng. Đừng cài đặt các hệ thống con không cần thiết trừ khi bạn biết rằng
bạn sẽ cần nó.
Sửa chữa tất cả các lỗi đã biết
Tìm hiểu về an toàn và bảo mật trên mạng
Tạo một danh sách của các đoạn sửa tạm bảo mật đã biết và các tư
vấn cho hệ điều hành của bạn; qua chỳng xỏc định cái phù hợp với hệ thống
của riêng bạn, và sửa tất cả các vấn đề được mô tả trong các đoạn sửa tạm và
các tư vấn. Bạn nhận được thông tin này từ nhà tư vấn hay các nhà liên hệ
cung cấp kỹ thuật, hoặc từ các nhóm người sử dụng, hay từ danh sách thư
diện tử dành cho nền riêng của bạn.
Một danh sách hữu ích của các liên hệ có sẵn qua FTP nặc danh tại
các tường lửa danh sách lưu trữ thư:
ftp://ftp.greatcircle.com/pub/firewalls/vendor_security_contacts"
Bổ sung thêm, chắc chắn có được từ Compurter Emergency Response
Team Coordination Center (CERT-CC) tư vấn hợp lệ cho nền tảng của bạn,
và làm việc với chúng. (Cho thông tin trên cách liên hệ CERT-CC và phục
hồi thông tin của nó, xem danh sách của các phương pháp trong phụ lục A).
Sử dụng bản liệt kê các mục cần kiểm tra
Chắc chắn là bạn không bỏ qua bất cứ điều gì trong bảo mật máy chủ
pháo đài của bạn, sử dụng một bảng liệt kê các mục cần kiểm tra. Có rất
nhiều các mục cần kiểm tra. Chắc chắn khi sử dụng một bản mục phù hợp
với phần nền của bạn và phiên bản hệ điều hành.
Phụ lục A của Practicakl UNIX security, được nhắc đến từ trước, bao
gồm một bảng liệt kê các mục cần kiểm tra cho phần lớn các phần nền
UNIX. Các bảng liệt kê các mục cần kiểm tra cụ thể cho từng hệ điều hành
riêng thường tồn tại qua cỏc kờnh xác nhận chuẩn hoặc không chuẩn cho các
phần nền đó; kiểm tra với các nhà liên hệ cung cấp kỹ thuật, hoặc từ các
nhóm người sử dụng, hay từ các danh sách thư dành cho phần nền.
Bảo vệ cho các truy cập hệ thống
Tìm hiểu về an toàn và bảo mật trên mạng
Bước tiếp theo trong việc xây dựng máy chủ pháo đài là đảm bảo rằng
bạn có một phương thức bảo vệ cho các truy cập hệ thống cho máy chủ pháo
đài. Các truy cập hệ thống trên máy chủ pháo đài là quan trong vì hai lý do
sau:
•
Chúng là một trong các phương thức tốt nhất của việc
quyết định nếu máy chủ pháo đài của bạn đang hoạt động như là nó
cần. Nếu mọi việc mà máy chủ pháo đài làm là truy cập (và nó cần
làm thế), bạn nờn cú khả năng kiểm tra các truy cập để xác định chính
xác cái mà nó đang thực hiện và quyết định công việc mà nó dự tính
phải làm.
•
Khi một ngày nào đó, một người nào đó thành công trong
việc phá huỷ máy chủ pháo đài, các truy cập hệ thống là một trong
những kỹ thuật căn bản để xác định chính xác điều gì đã xảy ra. Bằng
việc kiểm tra các truy cập và đoán nhận những sai sót, bạn cần có khả
năng giữ lại cuộc tấn công tránh xảy ra thêm một lần nữa.
Bạn nên đặt các truy cập hệ thống ở đâu? Một mặt, bạn muốn các truy
cập hệ thống ở nơi tiện lợi; bạn muốn chúng ở tại nơi chúng có thể đơn giản
kiểm tra và xác định công việc mà máy chủ pháo đài đang làm. Mặt khác,
bạn muốn các truy cập hệ thống được đặt ở nơi an toỏn; nú sẽ giữ chỳng
trỏnh cỏc can thiệp trong trường hợp bạn cần sử dụng chúng để khôi phục lại
một sự việc đã xảy ra.
Giải pháp cho hai yêu cầu có vẻ trái ngược này là giữ hai bản sao của
các truy cập hệ thống - một cho vấn đề tiện dụng và một cho các tai biến.
Các truy cập hệ thống cho mục đích tiện lợi
Tìm hiểu về an toàn và bảo mật trên mạng
Bản sao đầu tiên của các truy cập hệ thống là bản mà bạn sẽ sử dụng
trên một nền tảng thông thường để giám sát các hoạt động đang diễn ra của
máy tính. Các truy cập này ngược lại với những truy cập mà bạn chạy các
bản ghi phân tích tự động hàng ngày và hàng tuần. Bạn có thể giữ các truy
cập trờn chớnh cỏc máy chủ pháo đài hay trên một máy chủ nội bộ nào đó.
Lợi thế của việc giữ chỳng trờn máy chủ pháo đài là dễ hiểu: bạn
không phải thực hiện truy cập tới một hệ thống nào khác, và bạn cũng không
phải định cấu hình lọc gói tin để chấp nhận nó. Lợi thế của việc đặt chỳng
trờn một máy chủ nội bộ là đơn giản cho truy cập: bạn không phải vào máy
chủ pháo đài, nơi không có các công cụ đại khái, để kiểm tra các truy cập.
Tánh truy cập tới pháo đài phòng thủ, trong bất cứ trường hợp nào.
Các truy cập hệ thống cho các tai biến
Bản sao thứ hai của các truy cập hệ thống là bản sao bạn sẽ sử dụng
sau khi có tai biến. Bạn không thể sử dụng các truy cập tiện ích của bạn
trong trường hợp này. Các truy cập tiện lợi sẽ không thể dùng được, hoặc
bạn sẽ không thể chắc chắn về tính toàn vẹn của chúng.
Một trong các phương thức đơn giản để tạo các bản ghi cho tai biến là
tấn công vào một tới cổng nối tiếp của máy chủ pháo đài, và đơn giản truy
cập một bản sao của mọi thứ tới cổng này. Có một số vấn đề với tiếp cận
này. Trước hết, bạn phải giữ cho máy in đầy giấy, không được chặt, và với
một giải băng mới. Sau nữa, mỗi khi các bản ghi được in ra, không có nhiều
việc cho bạn làm với chúng chỉ trừ bạn nhỡn chỳng. Bởi vì chúng ở dạng
điện từ, bạn không có cách nào tìm kiếm hay phân tích chúng trong dạng tự
động.
Tìm hiểu về an toàn và bảo mật trên mạng
Một phương thức hiệu quả hơn để tạo các truy cập cho tai biến là kết
nối một máy tính cá nhân chuyên môn tới một cổng nối tiếp trờn phỏo đài
phòng thủ, như một thiết bị truy cập. Cấu hình máy PC trong phương thức
mà nó khởi động vào một chương trình đầu cuối trong dạng “bản ghi”, và
thỉnh thoảng (ví dụ thường là 100,000 bytes), các tệp truy cập được luân
phiên nhau và được chặt khúc sao cho hệ thống không bao giờ bị tràn không
gian đĩa. Trong phương thức này, mỗi vấn đề mà máy chủ pháo đài để lộ ra
cổng nối tiếp đều sẽ được ghi lại trên đĩa của máy tính cá nhân. Trừ khi một
ai đú có truy cập vật lý tới PC (PC phải không được kết nối tới mạng), các
truy cập sẽ vẫn an toàn ngoài tầm với. Thuận lợi của cách tiếp cận phương
thức đầu tiên này là các dữ liệu vần ở dạng điện từ. Nếu bạn phải tìm kiếm
và phân tích trên dữ liệu (sau một tai biến chẳng hạn), bạn có thể khôi phục
nó từ từ máy thiếu an toàn.
Nếu bạn có sẵn một thiết bị ghi một lần, sử dụng thiết bị này; thực
hiện, đặc biệt nếu thiết bị ghi một lần của bạn có thể mô phỏng một hệ thống
file. Đảm bảo rằng bạn có thể tin tưởng vào tính năng viết một lần. Một số
từ quang có khả năng chứa cả toán tử ghi một lần và ghi nhiều lần, và giữ
rãnh ghi dạng của chúng bằng phần mềm. Nếu hệ thống bị làm tổn hại, nó có
thể có khả năng ghi lại như là một phương tiện ghi một lần.
Một số hệ điều hành (đặc biệt là BSD 4.4-Lite và các hệ thống bắt
nguồn từ nó, như là các bản phát hành hiện thời của BSDI, FreeBSD, và
NetBSD) hỗ trợ các tệp bổ sung dữ liệu. Đõy không phải là một lựa chọn
thích hợp cho phương tiện ghi một lần hoặc cho một máy thiếu an toàn. Dù
là bạn có thể tin cậy sự thực hiện của các tệp chỉ bổ sung dữ liệu, đĩa mà
chúng ở trên đó có thể ghi được, và có thế có phương tiện truy cập nó bên
ngoài hệ thống tệp, đặc biệt cho người xâm nhập muốn phá huỷ các bản ghi.
Tìm hiểu về an toàn và bảo mật trên mạng
Hình 5.2 chỉ ra cách thức bạn có thể kết nối một máy tính cá nhân tới
hệ thống của bạn để thực hiện việc truy cập.
Xây dựng các bản ghi hệ thống
Trên một hệ thống UNIX, việc truy cập được thực hiện bằng syslog.
Các bản ghi trình tiện Ých syslog đưa vào cỏc thụng điệp từ vùng khác nhau
của mỏy khỏch từ xa (các chương trình với cỏc thụng điệp mà chúng muốn
đưa vào). Mỗi thông điệp được gắn thẻ với cỏc mó tiện ích và có quyền ưu
tiên; mã tiện ích thông tin syslog biết hệ thống con chung nào thông điệp từ
đó đến (ví dụ, hệ thống thư, nhân, hệ thống in, hệ thống tin tức Usenet, …),
và mã quyền ưu tiên thông tin syslog tầm quan trọng của thông điệp (xếp
loại từ thông tin gỡ rối và cỏc thụng điệp có tin tức thường lệ qua nhiều mức
tuỳ theo tình trạng khẩn cấp của thông tin). Tệp /etc/syslog.conf điều khiển
công việc mà syslog tiến hành với cỏc thụng điệp, dựa trên quyền ưu tiên và
tiện ích của chúng. Một thông điệp được đưa ra có thể bị bỏ qua, được đưa
vào một hay nhiều file, gửi tới trình tiện ích syslog trên một hệ thống khác,
xuất hiện trờn cỏc màn hình của người sử dụng nào đó hoặc của tất cả người
sử dụng đang trực tiếp truy cập, hay bất kỳ kết hợp nào.
Tìm hiểu về an toàn và bảo mật trên mạng
Hình 2: Sử dụng máy tính nối nối tiếp để tạo ra những bản ghi tai
biến.
Khi bạn định cấu hình syslog để ghi nhận cỏc thụng điệp tới các file,
bạn có thể định cấu hình nó để gửi tất cả cỏc thụng điệp tới một file đơn lẻ,
hoặc tỏch cỏc thụng điệp tới các file phức tạp bằng cỏc mó tiện ích và quyền
ưu tiên. Nếu bạn tỏch cỏc thụng điệp bằng cỏc mó tiện ích và có quyền ưu
tiên, mỗi truy cập file sẽ mạch lạc hơn, nhưng bạn sẽ phải giám sát các file
phức tạp; bạn có thể có thời gian đơn giản hơn để tìm kiếm cỏc thụng điệp
từ một dịch vụ riêng. Mặt khác, nếu bạn gửi tất cả đến một file đơn, bạn sẽ
chỉ có một file đơn để kiểm tra tất cả cỏc thụng điệp, nhưng file sẽ rất lớn.
Nhiều hệ thống phi UNIX, đặc biệt các thiết bị mạng như các router,
có thể được định cấu hình để đưa vào cỏc thụng điệp qua syslog. Nếu các hệ
thống của bạn có khả năng này. định cấu hình chúng để vì vậy tất cả chúng
đưa vào pháo đài phòng thủ của bạn cung cấp một phương thức hữu hiệu
cho việc tập trung tất cả cỏc thụng điệp trong một vị trí đơn nhất.
Tìm hiểu về an toàn và bảo mật trên mạng
Nhận thấy rằng truy cập từ xa qua syslog (ví dụ, từ một router tới pháo
đài phòng thủ của bạn, hoặc từ pháo đài phòng thủ của bạn tới một máy chủ
nội bộ nào đó) là không đảm bảo độ tin cậy 100%. Trước hết là, syslog là
một dịch vụ dựa trên UDP, và người gửi một gói tin UDP khụng cỏch nào
biết được khi nào hay không người nhận có được gói tin đó trừ khi người
nhận thông tin lại cho người gửi (cỏc trỡnh tiện ích syslog không xác nhận
cho người gửi tới họ). Mặt khác, ngay cả nếu syslog đã dựa trên TCP, bạn
vẫn không thể phụ thuộc vào nó tuyệt đối hay không làm mất cỏc thụng
điệp; điều gì sẽ xảy ra nếu hệ thống nhận bị hỏng hoặc nếu không tồn tại?
Đõy là một lý do để cần thiết phải có một máy một máy tính nội bộ thiếu an
toàn để đạt được độ tin cậy cho tất cả cỏc thụng điệp syslog.
Không kể các điểm yếu của nó, syslog là một dịch vụ hữu ích; bạn nên
sử dụng chúng rộng rãi.
7.2. Vô hiệu hoỏ cỏc dịch vụ không được yêu cầu
Mỗi khi bạn vừa hoàn thành tiến trình cơ bản cho việc bảo mật pháo
đài phòng thủ của bạn, tiếp tục với bước tiếp theo: loại bỏ bất cứ dịch vụ nào
hoàn toàn không cần thiết cho pháo đài phòng thủ.
Bất cứ dịch vụ nào được cung cấp bởi pháo đài phòng thủ cũng có thể
có các lỗi hoặc các vấn đề về cấu hình có thể dẫn đến các vấn đề về bảo mật.
Rõ ràng, bạn sẽ phải cung cấp một số dịch vụ mà người sử dụng cần, chừng
nào chính sách bảo mật của bạn cho phép họ. Nhưng nếu dịch vụ này không
hoàn toàn cần thiết, đừng rước hoạ bằng việc cung cấp nó. Nếu một dịch vụ
không được cung cấp bởi pháo đài phòng thủ, bạn sẽ không phải lo lắng về
khả năng lỗi và các vấn đề về cấu hình.
Tìm hiểu về an toàn và bảo mật trên mạng
Nếu bạn có thể hoạt động mà không cần một dịch vụ, nó sẽ bị bỏ đi.
Nó đáng chịu đựng một số bất lợi. Điều đó có nghĩa là bạn cần suy nghĩ cẩn
thận về các dịch vụ. Bạn sẽ loại bỏ không chỉ những dịch vụ chưa bao giờ
nghe đến và không bao giờ sử dụng, mà cả các dịch vụ đã cho phép có chủ
định trờn cỏc mỏy khỏc. Xem xét mỗi dịch vụ và hỏi chính bạn “Làm thế
nào tối có thể tránh được nú? Tụi sẽ mất gì nếu tôi loại bỏ nú?”.
7.2.1. Các dịch vụ được quản lý như thế nào?
Trờn cỏc mỏy UNIX, hầu hết các dịch vụ được quản lý bằng một
trong hai phương thức sau:
•
Bằng việc điều khiển khi chúng bắt đầu và ai có thể sử
dụng chúng.
•
Bằng các file cấu hình dịch vụ đặc biệt.
Có hai phương thức mà các dịch vụ bắt đầu trong các hệ thống UNIX:
•
Tại thời điểm khởi động từ các file /etc/rc của một máy.
•
Trên yêu cầu bằng trình tiện ích inetd (được bắt đầu ngay
tại thời điểm khởi động).
Một vài dịch vụ , ví dụ như gửi thư, có thể được định cấu hình để chạy
dưới một hoặc cả hai kỹ thuật.
Các dịch vụ bắt đầu bằng các file /etc/rc
Các dịch vụ trong trường hợp đầu được thiết kế để chạy vô hạn định.
Chúng được bắt đầu ngay lập tức (khi máy khởi động), và chúng không bao
giờ được giả định là biến mất. (Tất nhiên, thỉnh thoảng chúng bị mất, khi
chúng bị tiêu diệt bởi người quản lý hệ thống, hoặc khi chúng gặp rối hoặc
một lỗi nào dú khỏc.) Cỏc máy chủ thường được viết trong phương thức này
nếu chúng cần thực hiện các giao dịch nhỏ một cách nhanh chóng, hoặc nếu
Tìm hiểu về an toàn và bảo mật trên mạng
chúng cần “nhớ” thông tin. Việc viết chúng theo phương thức này trỏnh cỏc
trì hoãn kết hợp với việc bắt đầu một bản sao mới của máy chủ để điều khiển
mỗi yêu cầu được tạo ra.
Các máy chủ của loại này được bắt đầu từ các file /etc/rc của một hệ
thống UNIX, chính là các chỉ lệnh trình tiện ích giao diện được chạy khi
máy khởi động. Các ví dụ của các máy chủ điển hình bắt đầu từ các file
/etc/rc để điều khiển NFS, SMTP, và DNS. Trong các phiên bản dựa trên
BSD của UNIX, thông thường có một vài file trong /etc với cỏc tờn bắt đầu
với “rc” (ví dụ /etc/rc.boot). Trong các phiên bản hệ thống dựa trên Version
của UNIX, thông thường cú cỏc thư mục trong /etc thay cho các file (ví
dụ, /etc/rc.0.d); các thư mục bao gồm cỏc cõu lệnh khởi động khác nhau,
mỗi cái trong một file nhỏ.
Trong mỗi trường hợp, bạn cần cẩn thận xem xét tất cả các chỉ lệnh
khởi động và tất cả các chỉ lệnh mà chúng gọi, theo đệ quy. Thường nhiều
hơn một lệnh được chạy trong tiến trình của việc đưa ra một hệ thống trên
tất cả các phương thức. Trờn cỏc hệ thống UNIX hiện đại, các lệnh đó
thường gọi các lệnh khác, thỉnh thoảng gián tiếp qua đa mức. Ví dụ, bạn có
thể tìm thấy một lệnh khởi động gọi một lệnh khác để khởi động mạng, và
lệnh này lại gọi một lệnh khác để khởi động dịch vụ file. Bạn cũng có thể
tìm thấy các lệnh khởi động sử dụng các tuỳ chọn bí ẩn cho các lệnh tương
tự nhau (ví dụ, chúng thường chạy ifconfig với các tuỳ chọn ít sử dụng làm
cho ifconfig lấy được thông tin cấu hình từ các vị trí mơ hồ). Đảm bảo chắc
chắn bạn hiểu các tuỳ chọn này và bạn thay thế tuỳ chọn nào đó để thông tin
cho máy lấy được thông tin về chính nó từ mạng (hoặc từ các dịch vụ mà nó
thường cung cấp nhưng bạn đang tiến hành loại bỏ).
Tìm hiểu về an toàn và bảo mật trên mạng
Một số phiên bản của UNIX cũng có một tiến trình bổ sung bắt đầu từ
những file này được thiết kế để khởi động lại các máy chủ khác nếu nó bị
hỏng. Nếu một chương trình như vậy tồn tại trên một hệ thống, nó sẽ thử
khởi động các máy chủ khác nếu chúng được gỡ bỏ từ các file khởi động
nhưng không phải từ file cấu hình của nó. Mỗi khi loại bỏ chương trình này
hay hoặc đảm bảo chắc chắn để gỡ bỏ từ file cấu hình của chương trình bất
cứ máy chủ gỡ bỏ từ các file khởi động. Bạn sẽ lưu ý tới chương trình khi
bạn làm việc với các file khởi động.
Các dịch vụ bắt đầu bằng inetd
Một số dịch vụ được thiết kế để bắt đầu “trờn yờu cầu” và biến mất
sau khi chúng cung cấp dịch vụ được yêu cầu. Các máy chủ loại này được sử
dụng đặc trưng cho các dịch vụ hiếm khi được yêu cầu; cho các dịch vụ
không nhạy cảm để trì hoãn trong việc bắt đầu một máy chủ mới; và cho các
dịch vụ yêu cầu một tiến trình phục vụ mới để giải quyết với mỗi yêu cầu (ví
dụ, Telnet hay cỏc phiờn FTP, ở đó một máy chủ chia sẻ được sử dụng cho
mỗi phiên động).
Các máy chủ loại này thường được chạy từ dịch vụ inetd. (Innetd
phục vụ chính nó, vỡ nú chạy vô hạn định, được bắt đầu từ các file /etc/rc,
như được mô tả trong phần trước). Dịch vụ inetd nghe các yêu cầu cho các
dịch vụ đặc biệt trong file cấu hình /etc/inetd.conf. Khi nó nghe thấy một
yêu cầu như vậy, nó bắt đầu một dịch vụ đúng để xử lý yêu cầu.
7.2.2. Cách thức loại bỏ các dịch vụ
Nếu bạn loại bỏ một dịch vụ tới hạn, trước hết bạn cần tạo sự chắc
chắn bạn có một phương thức khởi động máy tính. Nó có thể là một đĩa
cứng thứ hai với một phân chia gốc đầy đủ trờn nú hoặc một ổ đĩa CD-ROM