Xây dựng mạng truy cập Internet dùng Server Linux
Một giải pháp cho việc xây dựng một mạng truy cập Internet ổn định là
dùng server chạy hệ điều hành Linux. Hiện nay, Linux đang được coi là
một trong những hệ điều hành tốt nhất cho môi trường mạng. Giải pháp này
giúp giảm chi phí đầu tư về phần cứng cho server, tăng tốc độ của mạng
cục bộ và bảo đảm một môi trường mạng chạy ổn định.
Một cách tổng quát, mạng được xây dựng trên mô hình client-server.
Server là một máy chủ truy cập trực tiếp Internet và chạy trên nền hệ
điều hành Linux, thực hiện các dịch vụ như cache proxy server, DHCP
server, Samba server. Các máy client thông thường có thể chạy trên hệ
điều hành Windows hoặc cả Linux nữa, cùng truy xuất Internet thông qua
proxy server. Phổ biến nhất là hình thức truy cập Internet thông qua
modem kết nối với line điện thoại.
Server kết nối với mạng cục bộ thông qua một card giao tiếp mạng
(NIC), trong trường hợp này tôi giả sử đặt địa chỉ IP tĩnh cho máy
server là 192.168.1.1; subnet mask là 255.255.255.0.
Các máy con có thể được cấp IP động bởi DHCP server hoặc có thể gán IP tĩnh cho từng máy, từ 192.168.1.2 -255/24.
Để cấu hình IP cho NIC, bạn dùng ifconfig, ví dụ:
QUOTE
Một cách khác mà bạn có thể dùng là trình network config bằng lệnh:
QUOTE
Hoặc dùng #redhat-config-network từ dòng lệnh để chạy chương trình cấu hình cho card mạng (NIC) và modem.
Để cho phép đặc tính IP forwarding trên server, bạn cần thực hiện lệnh sau:
QUOTE
Bạn có thể dùng lệnh sau để chỉ định modem. Giả sử modem của bạn gắn vào cổng COM2, tức là ttyS1
QUOTE
Các file cấu hình quan trọng của mạng:
QUOTE
: Chỉ định địa chỉ IP của DNS server và search domain.
QUOTE
: Chỉ định tìm đường (routing) và thông tin các host của tất cả các giao tiếp mạng.
QUOTE
chứa thông tin cấu hình cho mỗi network interface, chẳng hạn đối
với modem là ifcfg-ppp0. File này sẽ tự động được tạo nếu bạn dùng
wvdial, KPPP, Network Administrator Tool.
Nếu bạn coi server như một gateway, bạn dùng masquerading cho máy trong mạng nội bộ như sau:
QUOTE
Đó là đối với modem. Còn nếu đối với một card mạng đã được ISP gán
IP tĩnh, chẳng hạn eth0, ta làm như sau, với x.x.x.x là IP do ISP cung
cấp:
QUOTE
Masquerade: Nếu một trong những máy thuộc mạng cục bộ muốn gửi
thông tin ra bên ngoài thì nó sẽ giả thông tin được gởi như chính thông
tin từ máy Linux làm gateway này. (Các máy cục bộ không được cấp địa chỉ
IP thực). Tương tự cho chiều ngược lại, các gói dữ liệu gửi đến từ bên
ngoài, máy chủ sẽ phân tích và tự động chuyển thông tin đó đến đúng máy
tính tương ứng bên trong mạng nội bộ. Như vậy, mạng nội bộ coi như được
cách ly, mặc dù chúng có thể trao đổi thông tin với bên ngoài.
Việc thiết kế cho các máy con truy cập Internet thông qua proxy
server sẽ giúp giảm chi phí đường truyền của kết nối Internet. Tất cả
các gói dữ liệu đi từ Internet vào mạng đều được lưu trữ trong bộ nhớ
đệm (cache) của server, và do đó khi một yêu cầu truy xuất đến thông tin
từ Internet mà đã được truy xuất trước đó rồi thì có thể thông tin đó
đã nằm trên cache, server chỉ việc chuyển thẳng dữ liệu đó đến máy con
mà không cần phải tốn chi phí tải lại từ Internet về trong mỗi lần truy
cập. Ta dùng chương trình squid của Linux làm proxy server.
Cấu hình SQUID:
Khi squid đã được cài đặt, bạn cần cấu hình squid từ file
QUOTE
Theo mặc định, port để “lắng nghe” các proxy client là 3128. Bạn có
thể thêm vào port 8080 như sau: Trỏ tới phần #http_port 3128, bỏ dấu
QUOTE
“#”
đi và thêm vào port 8080:
QUOTE
Còn rất nhiều cấu hình trong file squid.conf, bạn có thể tự mình sửa. Sau đó, bạn có thể khởi động squid:
QUOTE
Để các máy con có thể truy xuất web, bạn cần cấu hình lại web browser.
Đối với Internet Explorer, bạn mở Internet Options, chọn
Connections và bấm vào LAN Settings, không chọn Automatically detect
settings. Trong phần proxy server, chọn use a proxy server. Trong trường
hợp Address, bạn nhập vào địa chỉ IP của Squid Proxy (192.168.1.1),
port là 8080.
Ngoài ra, bạn có thể cấu hình để các máy client trong mạng được cấp
IP động, dùng DHCP server, chia sẻ máy in và tài nguyên đĩa, dữ liệu
với nhau bằng Samba server.
Mạng và Linux
Làm việc nhiều với mạng, chắc chắn bạn càng nghe nói nhiều về Linux
- hệ điều hành trẻ trung đầy sinh lực mà thời gian gần đây đã được cho
là đối thủ cân tài, cân sức với Microsoft Windows NT. Do là hệ điều hành
cho nhiều người sử dụng, với phần nhân (kernel) được thiết kế chức năng
mạng ngay từ ban đầu nên Linux là ứng cử viên hệ điều hành mạng sáng
giá.
Vì thế hãy xem xét Linux khi bạn đang dự định thiết lập một mạng
máy tính nghiêm túc, đó là chưa kể chi phí cho mạng này rất thấp. Ngoài
ra, sự hỗ trợ của Linux cho X Windows cho phép bạn sử dụng được hầu hết
những ứng dụng X có trên Internet: trình duyệt Netscape như Navigator và
Communicator, hoặc X11amp MP3. Đúng vậy, bạn có thể đã có những ứng
dụng này trên Windows, nhưng kinh nghiệm Internet của bạn sẽ tiến nhanh
hơn bằng con đường Linux. Tính ổn định và sức đề kháng tốt cũng là hai
yếu tố khiến Linux trở thành hệ điều hành cao cấp dành cho những tác vụ
quan trọng - vượt hơn hẳn Windows.
Thoạt đầu Linux làm bạn ái ngại, nhất là khi so sánh với vẻ thân
thiện, khả ái, cắm-là-chạy (plug and play) của môi trường Windows 95/98.
Cần khẳng định là cài đặt và sử dụng Linux không dễ dàng song cũng
không quá khó như một số người thường nghĩ. Hơn nữa, yếu tố miễn phí
cũng đáng quan tâm đấy chứ! Và chưa hết, nếu đang làm việc trong môi
trường mạng, sự hiểu biết về Unix sẽ giúp ích cho công việc của bạn, và
nhờ Linux, việc tìm hiểu về một hệ điều hành thông dụng sẽ đỡ nhọc công
hơn.
Linux - hệ điều hành linh hoạt
Linux có đáp ứng được những tiêu chuẩn CNTT về mặt thương mại? Nó
có đủ sức mạnh và tính linh hoạt cần thiết? Hiển nhiên, khả năng tính
toán xí nghiệp với Linux là một chủ đề lớn, trong khuôn khổ giới hạn của
bài báo này thì chỉ xin nêu một vài điểm nổi bật mà thôi.
Đầu tiên, Linux là hệ điều hành thích hợp cho máy trạm và tùy thuộc
vào cách thức xác lập cấu hình, Linux thỏa mãn được những yêu cầu
chuyên biệt cho thương mại. Linux có thể sử dụng làm môi trường phát
triển, hub truyền thông, và với những ứng dụng chạy trên X Windows, nó
có thể đảm nhận cả vai trò một máy để bàn truyền thống.
Hai là, có một thứ mà Linux có thể thực hiện tốt hơn những hệ thống
khác, đó là khả năng phục vụ. Với những tính năng truyền thông và mạng
cực mạnh, Linux là hệ điều hành server lý tưởng cho môi trường tính toán
xí nghiệp.
Linux - server quản lý tập tin và in ấn
Linux được phân phối cùng với SAMBA - bộ giao thức SMB miễn phí -
cho phép truy cập tập tin và máy in trên máy Linux từ máy trạm DOS,
Win95, Win98 và Windows NT trên mạng cục bộ. Điều này có nghĩa là Linux
hoạt động như một file server. Một tính năng tuyệt vời khác là có thể
cấu hình SAMBA để quản trị bảo mật: hoặc thông qua những chức năng gốc
của Unix, hoặc bằng server password (Windows NT). SAMBA còn cung cấp
phần mềm cho client, cho phép máy trạm Linux truy cập tập tin trên máy
Windows.
Linux - server thư điện tử
Ngay cả khi bạn không muốn kết nối mạng LAN với Internet, đây cũng
vẫn là lựa chọn thú vị do Linux có nhiều phần mềm về truyền thông thích
hợp để bạn xây dựng mạng Intranet cộng tác mà không phải mất thêm phí
tổn phần mềm. Dịch vụ đơn giản nhất có lẽ là sendmail - chương trình
phục vụ mail truyền thống của Unix, cho phép gửi email trên mạng cộng
tác hoặc Internet. Với hệ thống mail cho xí nghiệp, bạn chỉ cần tạo lập
các tài khoản người dùng và chương trình nhận mail cho những máy trên
mạng LAN.
Trong mạng Intranet phức tạp hơn, có lẽ bạn còn muốn triển khai
những dịch vụ ftp, Usenet và Web server. Có rất nhiều phần mềm Web
server miễn phí, và còn kèm theo ngay trong bản Linux của bạn (có thể là
httpd). Một Web server thông dụng nữa là Apache, bạn có thể tải chương
trình này tại địa chỉ http://www.apache.org/.
Linux - server cho WAN hoặc gateway
Thông thường, mọi sự trở nên phức tạp và tốn kém hơn nếu bạn đi quá
giới hạn của LAN. Tuy nhiên, việc kết nối mạng diện rộng (WAN) với
Linux chỉ là một sự mở rộng chức năng LAN. Thông thường, bạn có thể
triển khai PPP bằng kết nối thông qua modem hay tân tiến hơn thì bằng
đường dây thuê bao và kết nối ISDN. Linux có cả PPP và SLIP, hỗ trợ bức
tường lửa, che chắn IP (IP masquerading), giấu password (nhằm tăng cường
chống bẻ khóa, tập tin lưu trữ password sẽ được đặt tại /etc/shadow
thay vì /etc/passwd), NFS và NIS - là những điểm bắt đầu khá tốt với
WAN.
Nếu say mê Internet, hẳn bạn đã nghe nói đến TCP/IP (Transmission
Control Protocol/Internet Protocol), bộ giao thức này cung cấp nền tảng
phần mềm cho các hệ thống mạng máy tính liên kết với nhau trên khắp
Internet. Linux sử dụng bộ giao thức chuẩn TCP/IP, bộ giao thức truyền
thông Unix-Unix, thường được gọi là UUCP (Unix to Unix Copy Protocol) -
và nhiều phương thức truyền thông qua cổng tuần tự khác.
Tính năng mạng của Linux rất linh động, cho phép cấu hình hệ thống
mạng với quy mô từ mạng SME LAN cho đến mạng cộng tác trải rộng khắp thế
giới. Bạn cũng nên biết rằng TCP/IP đã được sử dụng gần 2 thập kỷ qua
và có hàng triệu người dùng hiện còn tin tưởng vào bộ giao thức này. Vì
thế, nó rất thích hợp với môi trường cộng tác và những ứng dụng then
chốt. Hơn nữa, Linux hỗ trợ đầy đủ cho TCP/IP cùng với những tính năng
cao cấp như bức tường lửa, che chắn địa chỉ IP.
Trong môi trường quy mô trung bình, bước đầu đến với mạng có lẽ là
kết nối một máy đơn Linux với Internet. Điều này thực hiện khá dễ dàng
nếu bạn có modem và tài khoản dial-up tới một nhà cung cấp dịch vụ
Internet (ISP) nào đó: xác lập dịch vụ PPP (Point-to-Point Protocol) và
chọn tùy chọn TCP/IP trong khi cấu hình phần nhân Linux. Trong một số
trường hợp, bộ giao thức cũ SLIP vẫn được sử dụng thay vì PPP, nhưng có
nhiều nhà cung cấp dịch vụ vẫn đưa ra loại tài khoản SLIP được triển
khai trên nền phần mềm mô phỏng PPP, vì vậy, bạn vẫn có khả năng sử dụng
PPP trên máy trạm. Phần khó khăn nhất có lẽ là xác lập PPP ở máy trạm
kể cả sửa đổi lại một số tập tin cấu hình trong thư mục /etc/ppp. Còn
một cách khác là sử dụng chương trình linuxconf để cấu hình tính năng
dial-out của PPP hay SLIP.
Chưa hết: bạn có thể cấu hình máy Linux thành trạm gateway Internet
trong mạng LAN của bạn. Điều này có nghĩa là cho phép nhiều máy cùng sử
dụng và chia sẻ một tài khoản Internet - một ý tưởng rất tuyệt nếu bạn
dự định sử dụng chung truy cập Internet cho 2 hoặc 3 máy. Có thể cấu
hình Linux thành một server SLIP hay PPP để truy cập bằng modem, hay
thậm chí thành hẳn một nút Internet thực sự.
Hầu hết người dùng cộng tác đều quan tâm đến việc có một mạng LAN,
để tập trung và chia sẻ những dữ liệu quan trọng, tạo điều kiện thuận
lợi trong truyền thông nội bộ. Kết nối nhiều máy Linux thành một mạng
LAN không khó khăn lắm: mỗi máy chỉ cần một card Ethernet, dây cáp thích
hợp và một vài thiết bị mạng như hub Ethernet.
Linux hỗ trợ nhiều card mạng Ethernet (như 3Com, D-Link,...), tự
động nhận ra cấu hình của card LAN vào lúc khởi động để khởi tạo lớp
phần mềm giao tiếp mạng theo đúng cấu hình này. Mỗi máy cần có một địa
chỉ IP và tên máy chủ (host name) riêng để giao tiếp với nhau trên mạng
(điều này cũng giống như kiểu cấu hình được sử dụng trên những mạng
Windows).
Sau khi đã thiết lập mạng xong, bạn có thể sử dụng rất nhiều ứng
dụng mạng có sẵn như mail, chương trình đọc tin (elm, pine, rn, nn, và
tin) được sử dụng với mail server (sendmail) và news server NNTP. Một số
công cụ thông dụng khác như telnet hoặc rlogin cho phép bạn đăng nhập
và thi hành các lệnh trên một máy khác; FTP (File Transfer Protocol) để
truyền tập tin giữa các máy trên mạng; finger để tìm kiếm thông tin về
người dùng trên mạng cục bộ hay Internet. Bạn sẽ kinh ngạc về khối lượng
thông tin đồ sộ "nhặt" được chỉ bằng một lệnh finger đơn giản. Người
dùng cộng tác cũng muốn có một cơ sở dữ liệu cho phép chia sẻ thông tin
tập trung chẳng hạn như dữ liệu khách hàng, danh mục sản phẩm, đơn đặt
hàng, hoá đơn, ... Linux cung cấp một hệ thống ổn định và đáng tin cậy
cho loại ứng dụng này. Trong hệ thống client/server, máy trạm gửi yêu
cầu về cơ sở dữ liệu đến server Linux và sẽ nhận được kết quả dưới dạng
thức SQL. Kỹ thuật này làm giảm lưu lượng trên mạng xuống mức thấp nhất
và phân bố tải một cách cân bằng giữa những máy trạm.
Linux được phân phối cùng với NFS (Network File System), một hệ
thống file phân bố cho phép chia sẻ tập tin trên toàn bộ mạng Linux,
nghĩa là việc truy cập tập tin ở máy khác được thực hiện như thể chúng
đang được lưu trữ trên đĩa cứng cục bộ. Ngoài ra còn có NIS (Network
Information Service), cho phép hệ thống tự động thu thập thông tin về
tài khoản người dùng, nhóm, đặc quyền truy cập, và thông tin từ những
server khác trên mạng. Nói tóm lại, NFS và NIS cho phép nhiều server
Linux, mạng LAN, WAN hoạt động như một hệ thống nhất.
Cuối cùng, có nhiều bộ phần mềm gắn liền với Linux, được dùng để
xây dựng các "mạng tạp chủng". Những bộ phần mềm này tích hợp server
Linux trong một mạng gồm các client với nhiều hệ điều hành khác nhau như
Windows 3.1, Windows 95, NT, Novell, và Macintosh. Với bộ giao thức
SAMBA, Linux có thể cung cấp dịch vụ file và in ấn. SAMBA cho phép máy
Windows tìm duyệt và truy cập tập tin thông qua Windows Explorer và File
Manager. Chương trình Mars NetWare Emulator cung cấp những chức năng
của một file server Netware cho máy trạm chạy DOS và Windows (bạn có thể
tải xuống từ địa chỉ http://www.compu-art.de/mars_nwe). Và giờ đây là thời điểm đúng đắn nhất nếu bạn đang có một mạng Novell hoặc dự định cài đặt trong tương lai gần.
Tăng cường an ninh cho hệ thống Linux
Linux đã tạo ra một sự bùng nổ trong lĩnh vực tin học và ngày càng
trở nên phổ biến hiện nay. Rất nhiều các công ty, tổ chức trên thế giới
chấp nhận Linux như là một platform cho sản phẩm của họ, cũng như nhiều
công ty, ISPs sử dụng máy chủ Linux như là các Internet gateway. Vấn đề
an toàn an ninh cho hệ thống Linux ngày càng trở nên quan trọng và bức
thiết hơn. Tài liệu này sẽ cho bạn một cái nhìn tổng quát về an toàn hệ
thống và những hướng dẫn giúp tăng cường mức độ an toàn cho hệ thống
Linux của bạn. (Tài liệu này được báo cáo tại hội thảo Linux Việt Nam
vào tháng 12/2000 nên có một số phần đã cũ so với hiện nay.)
GIỚI THIỆU
Cùng với sự phát triển không ngừng của truyền thông kỹ thuật số,
Internet và sự phát triển nhảy vọt của nền công nghiệp phần mềm, bảo mật
máy tính là một vấn đề ngày càng trở nên quan trọng. Cần phải hiểu rằng
không có hệ thống máy tính nào là an toàn tuyệt đối. Tất cả những gì
bạn có thể làm là giúp cho hệ thống của bạn trở nên an toàn hơn.
Kể từ khi Linux được phát triển một cách rộng rãi và nhanh chóng,
đặc biệt là trong các giao dịch kinh doanh quan trọng, an ninh là một
vấn đề quyết định sự sống còn của Linux. Với hàng trăm công cụ bảo vệ
sẵn có, người dùng Linux được trang bị tốt hơn để ngăn chặn và duy trì
một hệ thống an toàn. Linux không những hoạt động tốt mà còn có những
tính năng và sản phẩm liên quan cho phép xây dựng một môi trường tương
đối an toàn.
NHỮNG NGUY CƠ AN NINH TRÊN LINUX
Linux và các ứng dụng trên nó có thể không ít các lỗ hổng an ninh
hơn những hệ điều hành khác. Theo quan điểm của một số chuyên gia máy
tính, Linux có tính an toàn cao hơn các hệ điều hành của Microsoft, vì
các sản phẩm của Microsoft không được xem xét kỹ lưỡng và chặt chẽ bằng
các sản phẩm mã nguồn mở như Linux. Hơn nữa, Linux dường như là "miễn
nhiễm" với virus máy tính (hiện tại đã có xuất hiện một vài loại virus
hoạt động trên môi trường Linux nhưng không ảnh hưởng gì mấy đến người
dùng Linux). Nhưng một hệ thống Linux được cấu hình không tốt sẽ tệ hơn
nhiều so với một hệ thống Microsoft được cấu hình tốt !!! Khi có được
một chính sách an ninh tốt và hệ thống được cấu hình theo đúng chính
sách đó thì sẽ giúp bạn tạo được một hệ thống an toàn (ở mức mà chính
sách của bạn đưa ra).
Nhưng sự an toàn không phải là thứ có thể đạt được như một mục tiêu
cuối cùng. Đúng hơn đó là tập hợp của những cách cài đặt, vận hành và
bảo trì một hệ điều hành, mạng máy tính, ... Nó phụ thuộc vào các hoạt
động hàng ngày của hệ thống, người dùng và người quản trị. Bạn phải bắt
đầu từ một nền tảng ban đầu và từ đó cải thiện tính an toàn của hệ thống
của bạn nhiều nhất có thể được mà vẫn đảm bảo các hoạt động bình thường
của hệ thống.
XEM XÉT CHÍNH SÁCH AN NINH CỦA BẠN
Kết nối vào Inernet là nguy hiểm cho hệ thống mạng của bạn với mức
an toàn thấp. Từ những vấn đề trong các dịch vụ TCP/IP truyền thống,
tính phức tạp của việc cấu hình máy chủ, các lỗ hổng an ninh bên trong
quá trình phát triển phần mềm và nhiều nhân tố khác góp phần làm cho
những hệ thống máy chủ không được chuẩn bị chu đáo có thể bị xâm nhập và
luôn tồn tại những nguy cơ tiềm tàng về vấn đề an toàn trong đó.
Mục đích của một chính sách an toàn hệ thống là quyết định một tổ
chức sẽ phải làm như thế nào để bảo vệ chính nó. Để có được một chính
sách an ninh hiệu quả, người xây dựng các chính sách này phải hiểu và có
thể kết hợp tất cả các thông tin, yêu cầu, ...
Khi một tình huống xảy ra nằm ngoài dự kiến, chẳng hạn một sự xâm
nhập trái phép vào hệ thống của bạn, câu hỏi lớn nhất là "sẽ phải làm gì
đây ?"
Không may là có hàng triệu câu trả lời khác nhau cho câu hỏi đó.
Nếu một người mà chưa từng phải đối phó với một kẻ xâm nhập trước đây
thì kẻ xâm nhập có thể dễ dàng biến mất vì các dấu vết đã trở nên qúa cũ
và không còn hữu ích nữa.
Những sai sót trong chính sách an ninh không chỉ liên quan đến
những kẻ xâm nhập, mà còn liên quan đến những vấn đề bình thường như
thời tiết, thiên tai, cháy, nổ, hư hỏng thiết bị,... Do vậy, việc thiết
lập một chính sách an ninh tốt cho việc giải quyết những sự cố phải được
lên kế hoạch kỹ lưỡng, được xem xét và chứng nhận bởi người có quyền
hạn trong công ty.
Một chính sách an ninh tốt nên bao gồm các vấn đề sau :
QUOTE
Bạn có thể nhờ tư vấn của các công ty, tổ chức làm dịch vụ tư vấn
về an toàn máy tính để giúp bạn xây dụng một chính sách an ninh tốt. Các
công ty này có các chuyên gia về an toàn máy tính, họ có sẵn các biểu
mẫu chính sách an ninh nên có thể thiết lập nhanh chóng các chính sách
mà bao gồm tất cả các mặt trong việc an toàn hệ thống máy tính.
TĂNG CƯỜNG AN NINH CHO KERNEL
Mặc dù thừa hưởng những đặc tính của hệ thống UNIX và khá an ninh
hơn một số hệ điều hành khác, hệ thống GNU/Linux hiện nay vẫn tồn tại
những nhược điểm sau:
Quyền của user ‘root’ có thể bị lạm dụng. User ‘root’ có thể dễ dàng thay đổi bất kỳ điều gì trên hệ thống.
Nhiều file hệ thống có thể dễ dàng bị sửa đổi. Nhiều file hệ thống quan trọng như
QUOTE
có thể bị sửa đổi bởi hacker để cho phép đăng nhập không cần mật
khẩu. Nhưng những file loại này lại hiếm khi nào thay đổi trừ phi khi
nâng cấp hệ thống.
Các module có thể được dùng để chặn kernel. “Loadable Kernel
Module” là một thiết kế tốt để tăng cường tính uyển chuyển, linh hoạt
cho kernel. Nhưng sau khi một module được nạp vào kernel, nó sẽ trở
thành một phần của kernel và có thể hoạt động như kernel nguyên thủy. Vì
vậy, các chưng trình mục đích xấu có thể được viết dạng module và nạp
vào kernel, rồi sau đó hoạt động như một virus.
Các process không được bảo vệ. Các process như web server có thể
trở thành mục tiêu bị tấn công của hacker sau khi thâm nhập hệ thống.
Để cải thiện tính an ninh cho các server Linux, chúng ta cần có một
kernel an toàn hơn. Điều này có thể thực hiện được bằng cách sửa đổi
kernel nguyên thuỷ bằng các ‘patch’ tăng cường tính an ninh cho hệ
thống. Các patch này có các tính năng chính yếu sau:
Bảo vệ – bảo vệ các file hệ thống quan trọng khỏi sự thay đổi ngay
cả với user root. Bảo vệ các process quan trọng khỏi bị ngừng bởi lệnh
‘kill’. Chặn các tác vụ truy cập IO mức thấp (RAW IO) của các chương
trình không được phép.
Phát hiện – Phát hiện và cảnh báo với người quản trị khi server bị
scan. Cũng như khi có các tác vụ trên hệ thống vi phạm các luật (rules)
định trước.
Đối phó – Khi phát hiện sự vi phạm trên hệ thống, các ghi nhận chi
tiết sẽ được thực hiện cũng như có thể ngừng lập tức phiên làm việc gây
ra
Một vài công cụ sửa đổi kernel được sử dụng rộng rãi là LIDS (Linux Intrusion Detection System), Medusa, ...
AN TOÀN CHO CÁC GIAO DỊCH TRÊN MẠNG
Có rất nhiều dịch vụ mạng truyền thống giao tiếp thông qua giao
thức văn bản không mã hoá, như TELNET, FTP, RLOGIN, HTTP, POP3. Trong
các giao dịch giữa người dùng với máy chủ, tất cả các thông tin dạng gói
được truyền qua mạng dưới hình thức văn bản không được mã hoá. Các gói
tin này có thể dễ dàng bị chặn và sao chép ở một điểm nào đó trên đường
đi. Việc giải mã các gói tin này rất dễ dàng, cho phép lấy được các
thông tin như tên người dùng, mật khẩu và các thông tin quan trọng khác.
Việc sử dụng các giao dịch mạng được mã hoá khiến cho việc giải mã
thông tin trở nên khó hơn và giúp bạn giữ an toàn các thông tin quan
trọng. Các kỹ thuật thông dụng hiện nay là IPSec, SSL, TLS, SASL và PKI.
Quản trị từ xa là một tính năng hấp dẫn của các hệ thống UNIX.
Người quản trị mạng có thể dễ dàng truy nhập vào hệ thống từ bất kỳ nơi
nào trên mạng thông qua các giao thức thông dụng như telnet, rlogin. Một
số công cụ quản trị từ xa được sử dụng rộng rãi như linuxconf, webmin
cũng dùng giao thức không mã hoá. Việc thay thế tất cả các dịch vụ mạng
dùng giao thức không mã hoá bằng giao thức có mã hoá là rất khó. Tuy
nhiên, bạn nên cung cấp việc truy cập các dịch vụ truyền thống như
HTTP/POP3 thông qua SSL, cũng như thay thế các dịch vụ telnet, rlogin
bằng SSH.
AN TOÀN CHO CÁC GIAO DỊCH TRÊN MẠNG
Có rất nhiều dịch vụ mạng truyền thống giao tiếp thông qua giao thức văn bản không mã hoá, như
QUOTE
. Trong các giao dịch giữa người dùng với máy chủ, tất cả các thông
tin dạng gói được truyền qua mạng dưới hình thức văn bản không được mã
hoá. Các gói tin này có thể dễ dàng bị chặn và sao chép ở một điểm nào
đó trên đường đi. Việc giải mã các gói tin này rất dễ dàng, cho phép lấy
được các thông tin như tên người dùng, mật khẩu và các thông tin quan
trọng khác. Việc sử dụng các giao dịch mạng được mã hoá khiến cho việc
giải mã thông tin trở nên khó hơn và giúp bạn giữ an toàn các thông tin
quan trọng. Các kỹ thuật thông dụng hiện nay là
QUOTE
Quản trị từ xa là một tính năng hấp dẫn của các hệ thống UNIX.
Người quản trị mạng có thể dễ dàng truy nhập vào hệ thống từ bất kỳ nơi
nào trên mạng thông qua các giao thức thông dụng như telnet, rlogin. Một
số công cụ quản trị từ xa được sử dụng rộng rãi như linuxconf, webmin
cũng dùng giao thức không mã hoá. Việc thay thế tất cả các dịch vụ mạng
dùng giao thức không mã hoá bằng giao thức có mã hoá là rất khó. Tuy
nhiên, bạn nên cung cấp việc truy cập các dịch vụ truyền thống như
HTTP/POP3 thông qua SSL, cũng như thay thế các dịch vụ telnet, rlogin
bằng SSH.
LINUX FIREWALL
An toàn hệ thống luôn luôn là một vấn đề sống còn của mạng máy tính
và firewall là một thành phần cốt yếu cho việc đảm bảo an ninh.
Một firewall là một tập hợp các qui tắc, ứng dụng và chính sách đảm
bảo cho người dùng truy cập các dịch vụ mạng trong khi mạng bên trong
vẫn an toàn đối với các kẻ tấn công từ Internet hay từ các mạng khác. Có
hai loại kiến trúc firewall cơ bản là : Proxy/Application firewall và
filtering gateway firewall. Hầu hết các hệ thống firewall hiện đại là
loại lai (hybrid) của cả hai loại trên.
Nhiều công ty và nhà cung cấp dịch vụ Internet sử dụng máy chủ
Linux như một Internet gateway. Những máy chủ này thường phục vụ như máy
chủ mail, web, ftp, hay dialup. Hơn nữa, chúng cũng thường hoạt động
như các firewall, thi hành các chính sách kiểm soát giữa Internet và
mạng của công ty. Khả năng uyển chuyển khiến cho Linux thu hút như là
một thay thế cho những hệ điều hành thương mại.
Tính năng firewall chuẩn được cung cấp sẵn trong kernel của Linux được xây dựng từ hai thành phần :
QUOTE
.
là một cơ chế lọc gói tin IP. Những tính năng của IP Chains cho
phép cấu hình máy chủ Linux như một filtering gateway/firewall dễ dàng.
Một thành phần quan trọng khác của nó trong kernel là IP Masquerading,
một tính năng chuyển đổi địa chỉ mạng (network address translation- NAT)
mà có thể che giấu các địa chỉ IP thực của mạng bên trong.
Để sử dụng ipchains, bạn cần thiết lập một tập các luật mà qui định các kết nối được cho phép hay bị cấm. Ví dụ:
QUOTE
Ngoài ra, bạn có thể dùng các sản phẩm firewall thương mại như
Check Point FireWall-1, Phoenix Adaptive Firewall, Gateway Guardian,
XSentry Firewall, Raptor, ... hay rất nhiều các phiên bản miễn phí, mã
nguồn mở cho Linux như T.Rex Firewall, Dante, SINUS, TIS Firewall
Toolkit, ...
DÙNG CÔNG CỤ DÒ TÌM ĐỂ KHẢO SÁT HỆ THỐNG
Thâm nhập vào một hệ thống bất kỳ nào cũng cần có sự chuẩn bị.
Hacker phải xác định ra máy đích và tìm xem những port nào đang mở trước
khi hệ thống có thể bị xâm phạm. Quá trình này thường được thực hiện
bởi các công cụ dò tìm (scanning tool), kỹ thuật chính để tìm ra máy
đích và các port đang mở trên đó. Dò tìm là bước đầu tiên hacker sẽ sử
dụng trước khi thực hiện tấn công. Bằng cách sử dụng các công cụ dò tìm
như Nmap, hacker có thể rà khắp các mạng để tìm ra các máy đích có thể
bị tấn công. Một khi xác định được các máy này, kẻ xâm nhập có thể dò
tìm các port đang lắng nghe. Nmap cũng sử dụng một số kỹ thuật cho phép
xác định khá chính xác loại máy đang kiểm tra.
Bằng cách sử dụng những công cụ của chính các hacker thường dùng,
người qun trị hệ thống có thể nhìn vào hệ thống của mình từ góc độ của
các hacker và giúp tăng cường tính an toàn của hệ thống. Có rất nhiều
công cụ dò tìm có thể sử dụng như: Nmap, strobe, sscan, SATAN, ...
Dưới đây là một ví dụ sử dụng Nmap:
QUOTE
Tuy nhiên, sử dụng các công cụ này không thể thay thế cho một người
quản trị có kiến thức. Bởi vì việc dò tìm thường dự báo một cuộc tấn
công, các site nên ưu tiên cho việc theo dõi chúng. Với các công cụ dò
tìm, các nhà quản trị hệ thống mạng có thể phát hiện ra những gì mà các
hacker có thể thấy khi dò trên hệ thống của mình.
PHÁT HIỆN SỰ XÂM NHẬP QUA MẠNG
Nếu hệ thống của bạn có kết nối vào internet, bạn có thể trở thành
một mục tiêu bị dò tìm các lỗ hổng về bảo mật. Mặc dù hệ thống của bạn
có ghi nhận điều này hay không thì vẫn không đủ để xác định và phát hiện
việc dò tìm này. Một vấn đề cần quan tâm khác là các cuộc tấn công gây
ngừng dịch vụ (Denial of Services - DoS), làm thế nào để ngăn ngừa, phát
hiện và đối phó với chúng nếu bạn không muốn hệ thống của bạn ngưng
trệ.
Hệ thống phát hiện xâm nhập qua mạng (Network Intrusion Detection
System - NIDS) theo dõi các thông tin truyền trên mạng và phát hiện nếu
có hacker đang cố xâm nhập vào hệ thống (hoặc gây gây ra một vụ tấn công
DoS). Một ví dụ điển hình là hệ thống theo dõi số lượng lớn các yêu cầu
kết nối TCP đến nhiều port trên một máy nào đó, do vậy có thể phát hiện
ra nếu có ai đó đang thử một tác vụ dò tìm TCP port. Một NIDS có thể
chạy trên máy cần theo dõi hoặc trên một máy độc lập theo dõi toàn bộ
thông tin trên mạng.
Các công cụ có thể được kết hợp để tạo một hệ thống phát hiện xâm
nhập qua mạng. Chẳng hạn dùng tcpwrapper để điều khiển, ghi nhận các
dịch vụ đã được đăng ký. Các chương trình phân tích nhật ký hệ thống,
như swatch, có thể dùng để xác định các tác vụ dò tìm trên hệ thống. Và
điều quan trọng nhất là các công cụ có thể phân tích các thông tin trên
mạng để phát hiện các tấn công DoS hoặc đánh cắp thông tin như tcpdump,
ethereal, ngrep, NFR (Network Flight Recorder), PortSentry, Sentinel,
Snort, ...
Khi hiện thực một hệ thống phát hiện xâm nhập qua mạng bạn cần phải
lưu tâm đến hiệu suất của hệ thống cũng như các chính sách bảo đảm sự
riêng tư.
KIỂM TRA KHẢ NĂNG BỊ XÂM NHẬP
Kiểm tra khả năng bị xâm nhập liên quan đến việc xác định và sắp
xếp các lỗ hổng an ninh trong hệ thống bằng cách dùng một số công cụ
kiểm tra. Nhiều công cụ kiểm tra cũng có khả năng khai thác một số lỗ
hổng tìm thấy để làm rõ quá trình thâm nhập trái phép sẽ được thực hiện
như thế nào. Ví dụ, một lỗi tràn bộ đệm của chương trình phục vụ dịch vụ
FTP có thể dẫn đến việc thâm nhập vào hệ thống với quyền ‘root’. Nếu
người quản trị mạng có kiến thức về kiểm tra khả năng bị xâm nhập trước
khi nó xảy ra, họ có thể tiến hành các tác vụ để nâng cao mức độ an ninh
của hệ thống mạng.
Có rất nhiều các công cụ mạng mà bạn có thể sử dụng trong việc kiểm
tra khả năng bị xâm nhập. Hầu hết các quá trình kiểm tra đều dùng ít
nhất một công cụ tự động phân tích các lỗ hổng an ninh. Các công cụ này
thăm dò hệ thống để xác định các dịch vụ hiện có. Thông tin lấy từ các
dịch vụ này sẽ được so sánh với cơ sở dữ liệu các lỗ hổng an ninh đã
được tìm thấy trước đó.
Các công cụ thường được sử dụng để thực hiện các kiểm tra loại này
là ISS Scanner, Cybercop, Retina, Nessus, cgiscan, CIS, ...Kiểm tra khả
năng bị xâm nhập cần được thực hiện bởi những người có trách nhiệm một
cách cẩn thận. Sự thiếu kiến thức và sử dụng sai cách có thể sẽ dẫn đến
hậu quả nghiêm trọng không thể lường trước được.
ĐỐI PHÓ KHI HỆ THỐNG CỦA BẠN BỊ TẤN CÔNG
Gần đây, một loạt các vụ tấn công nhắm vào các site của những công
ty lớn như Yahoo!, Buy.com, E-Bay, Amazon và CNN Interactive gây ra
những thiệt hại vô cùng nghiêm trọng. Những tấn công này là dạng tấn
công gây ngừng dịch vụ "Denial-Of-Service" mà được thiết kế để làm ngưng
hoạt động của một mạng máy tính hay một website bằng cách gửi liên tục
với số lượng lớn các dữ liệu tới mục tiêu tấn công khiến cho hệ thống bị
tấn công bị ngừng hoạt động, điều này tương tự như hàng trăm người cùng
gọi không ngừng tới 1 số điện thoại khiến nó liên tục bị bận.
Trong khi không thể nào tránh được mọi nguy hiểm từ các cuộc tấn
công, chúng tôi khuyên bạn một số bước mà bạn nên theo khi bạn phát hiện
ra rằng hệ thống của bạn bị tấn công. Chúng tôi cũng đưa ra một số cách
để giúp bạn bảo đảm tính hiệu qủa của hệ thống an ninh và những bước
bạn nên làm để giảm rủi ro và có thể đối phó với những cuộc tấn công.
Nếu phát hiện ra rằng hệ thống của bạn đang bị tấn công, hãy bình tĩnh. Sau đây là những bước bạn nên làm:
Tập hợp 1 nhóm để đối phó với sự tấn công:
- Nhóm này phải bao gồm những nhân viên kinh nghiệm, những người mà
có thể giúp hình thành một kế hoạch hành động đối phó với sự tấn công.
Dựa theo chính sách và các quy trình thực hiện về an ninh của công
ty, sử dụng các bước thích hợp khi thông báo cho mọi người hay tổ chức
về cuộc tấn công.
Tìm sự giúp đỡ từ nhà cung cấp dịch vụ Internet và cơ quan phụ trách về an ninh máy tính:
- Liên hệ nhà cung cấp dịch vụ Internet của bạn để thông báo về
cuộc tấn công. Có thể nhà cung cấp dịch vụ Internet của bạn sẽ chặn đứng
được cuộc tấn công.
- Liên hệ cơ quan phụ trách về an ninh máy tính để thông báo về cuộc tấn công
Tạm thời dùng phương thức truyền thông khác (chẳng hạn như qua điện
thoại) khi trao đổi thông tin để đảm bo rằng kẻ xâm nhập không thể chặn
và lấy được thông tin.
Ghi lại tất cả các hoạt động của bạn (chẳng hạn như gọi điện thoại, thay đổi file, ...)
Theo dõi các hệ thống quan trọng trong qúa trình bị tấn công bằng
các phần mềm hay dịch vụ phát hiện sự xâm nhập (intrusion detection
software/services). Điều này có thể giúp làm giảm nhẹ sự tấn công cũng
như phát hiện những dấu hiệu của sự tấn công thực sự hay chỉ là sự quấy
rối nhằm đánh lạc hướng sự chú ý của bạn(chẳng hạn một tấn công DoS với
dụng ý làm sao lãng sự chú ý của bạn trong khi thực sự đây là một cuộc
tấn công nhằm xâm nhập vào hệ thống của bạn).
- Sao chép lại tất cả các files mà kẻ xâm nhập để lại hay thay đổi (như những đoạn mã chương trình, log file, ...)
Liên hệ nhà chức trách để báo cáo về vụ tấn công.
Những bước bạn nên làm để giảm rủi ro và đối phó với sự tấn công trong tương lai :
Xây dựng và trao quyền cho nhóm đối phó với sự tấn công
Thi hành kiểm tra an ninh và đánh giá mức độ rủi ro của hệ thống
Cài đặt các phần mềm an toàn hệ thống phù hợp để giảm bớt rủi ro
Nâng cao khả năng của mình về an toàn máy tính
Các bước kiểm tra để giúp bạn bảo đảm tính hiệu quả của hệ thống an ninh
Kiểm tra hệ thống an ninh mới cài đặt : chắc chắn tính đúng đắn của chính sách an ninh hiện có và cấu hình chuẩn của hệ thống.
Kiểm tra tự động thường xuyên : để khám phá sự “viếng thăm” của
những hacker hay những hành động sai trái của nhân viên trong công ty.
Kiểm tra ngẫu nhiên: để kiểm tra chính sách an ninh và những tiêu
chuẩn, hoặc kiểm tra sự hiện hữu của những lỗ hổng đã được phát hiện
(chẳng hạn những lỗi được thông báo từ nhà cung cấp phần mềm)
Kiểm tra hằng đêm những file quan trọng: để đánh giá sự toàn vẹn của những file và cơ sở dữ liệu quan trọng
Kiểm tra các tài khoản người dùng: để phát hiện các tài khoản không sử dụng, không tồn tại, ...
Kiểm tra định kỳ để xác định trạng thái hiện tại của hệ thống an ninh của bạn
QUOTE
Hiện nay, trên môi trường máy chủ, Linux ngày càng chiếm một vị trí
quan trọng. Nguyên nhân khiến Linux dần trở thành một đối thủ tiềm năng
của hệ điều hành Microsoft Windows là do tính ổn định, độ linh hoạt và
khả năng chịu tải lớn: đây là những đặc điểm quan trọng hàng đầu của một
hệ thống máy phục vụ.
Tính bảo mật tốt cũng là một trong những điểm nổi bật của Linux.
Tuy nhiên, để một hệ thống Linux có khả năng chống lại các cuộc tấn
công, người quản trị cũng cần phải nắm được một số kỹ năng nhất định.
Trong bài viết này, chúng tôi xin giới thiệu một số kinh nghiệm nhằm
nâng cao tính an toàn cho một hệ thống Linux (để dễ theo dõi cho bạn
đọc, chúng tôi sẽ minh hoạ bằng RedHat, một phiên bản Linux rất phổ biến
ở Việt Nam và trên thế giới).
1.1. Loại bỏ tất cả các account và nhóm đặc biệt
Ngay sau khi cài đặt Linux, người quản trị nên xoá bỏ tất cả các
account và nhóm (group) đã được tạo sẵn trong hệ thống nhưng không có
nhu cầu sử dụng, ví dụ như lp, sync, shutdown, halt, news, uucp,
operator, games, gopher, v.v... (Tuy nhiên bạn đọc cần biết rõ những
account và nhóm nào không cần cho hệ thống của mình rồi hãy xoá)
Thực hiện việc xoá bỏ account với lệnh :
QUOTE
Ví dụ, nếu không có nhu cầu về in ấn trên hệ thống, có thể xoá account lp như sau:
QUOTE
Tương tự như vậy, có thể thực hiện việc xoá bỏ các nhóm không cần thiết với lệnh
QUOTE
2.2. Che giấu file chứa mật khẩu
Từ lịch sử xa xưa của Unix và cả Linux, mật khẩu của toàn bộ các
account đã từng được lưu ngay trong file /etc/password, file có quyền
đọc bởi tất cả các account trong hệ thống! Đây là một kẽ hở lớn cho các
kẻ phá hoại: Mặc dù các mật khẩu đều được mã hoá, nhưng việc giải mã
ngược là có thể thực hiện được (và có thể thực hiện khá dễ dàng, đặc
biệt vì cơ chế mã hoã mật khẩu không phải là khó phá và ngày nay khả
năng tính toán và xử lý của máy tính rất mạnh). Vì lí do trên, gần đây
các nhà phát triển Unix và Linux đã phải đặt riêng mật khẩu mã hoá vào
một file mà chỉ có account root mới đọc được: file /etc/shadow. (Khi sử
dụng phương pháp này, để đảm bảo tính tương thích, nơi vốn đặt mật khẩu
trong file /etc/password người ta đánh dấu "x")
Nếu bạn đọc đang sử dụng các phiên bản RedHat gần đây (ví dụ RedHat
6.x hay 7.x) thì nhớ chọn lựa Enable the shadow password khi cài đặt
RedHat để sử dụng tính năng che giấu mật khẩu này (Cũng thật may vì chọn
lựa này là mặc định trong hầu hết các phiên bản Linux đang sử dụng rộng
rãi hiện nay)
3.3. Tự động thoát khỏi shell
Người quản trị hệ thống rất hay quên thoát ra khỏi dấu nhắc shell
khi kết thúc công việc. Bản thân tôi cũng đã từng nhiều lần khi đang
thực hiện việc quản trị với account root thì bỏ đi vì một số công việc
khác. Thật nguy hiểm nếu lúc đó có một kẻ phá hoại ở đó: Kẻ này có thể
dễ dàng có quyền truy xuất hệ thống ở mức cao nhất mà chẳng cần tốn một
chút công sức nào cả.
Để giảm nguy cơ này, người quản trị nên cài đặt tính năng tự động
thoát ra khỏi shell khi không có sự truy xuất nào trong một khoảng thời
gian định trước bằng cách đặt một tham số quy định khoảng thời gian hệ
thống vẫn duy trì dấu nhắc shell.
Muốn cài đặt tham số này, người sử dụng biến môi trường TMOUT và
gán cho nó một giá trị số thể hiện khoảng thời gian tính bằng giây hệ
thống vẫn duy trì dấu nhắc. Để thực hiện điều này cho tất cả các account
trong hệ thống, cách đơn giản nhất là đặt nó vào file /etc/profile dòng
lệnh sau: (giả sử ta đặt khoảng thời gian là 600 giây)
TMOUT=600
Như vậy là nếu trong khoảng 10 phút người sử dụng không truy xuất
shell, shell sẽ tự động thoát ra. Tuy nhiên cần chú ý: Mẹo này sẽ không
"ổn" nếu lúc đó người dùng đang chạy một chương trình nào đó như vi hay
mc,... Có nghĩa là người dùng phải đang làm việc trực tiếp với shell chứ
không phải với bất kỳ một chương trình nào khác.
4.4. Loại bỏ các dịch vụ không sử dụng
Một điều khá nguy hiểm là sau khi cài đặt, hệ thống tự động bật
chạy khá nhiều dịch vụ (và đa số là các dịch vụ không mong muốn), dẫn
tới tốn tài nguyên và gây nên nhiều nguy cơ về bảo mật. Người quản trị
nên loại bỏ ngay lập tức các dịch vụ không dùng tới ngay sau khi cài
máy. Hoặc đơn giản bằng cách xoá bỏ các gói phần mềm/dịch vụ không sử
dụng (qua công cụ quản trị gói phần mềm rpm của RedHat) hoặc sử dụng
công cụ ntsysv để duyệt xem tất cả các dịch vụ đang cài đặt rồi vô hiệu
hoá những dịch vụ không cần thiết (bằng cách bỏ đánh dấu các dịch vụ
không sử dụng với phím Space). Sau khi thoát ra khỏi ntsysv thì khởi
động lại máy: các dịch vụ không mong muốn sẽ không chạy nữa.
5.5. Không tiết lộ thông tin về hệ thống qua telnet
Dịch vụ cho phép truy xuất hệ thống từ xa telnet có khả nǎng tiết
lộ thông tin về hệ thống, dễ tạo điều kiện cho những kẻ phá hoại tấn
công dựa vào những điểm yếu đã biết. Điều này rất dễ nhận thấy: Mọi
người dùng kết nối từ xa vào dịch vụ telnet đều nhận được thông tin về
tên máy, phiên bản Linux và phiên bản của nhân (kernel) của máy chủ.
Để tránh điều này, ta cần thực hiện việc kích hoạt telnetd (telnet
server) với tham số -h. Do các phiên bản RedHat 7.x khi chạy telnetd
không còn sử dụng inetd nữa (mà sử dụng xinetd - một phiên bản nâng cấp
và có nhiều cải tiến so với inetd) nên cách cấu hình lại telnetd sẽ khác
nhau tuỳ theo phiên bản RedHat đang sử dụng.
+ Với các phiên bản RedHat 6.x và trước đó, thực hiện các bước sau:
Trong file /etc/inetd.conf, thay đổi dòng
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetdchuyển thành :
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
Tiếp theo, khởi động lại inetd bằng câu lệnh:
QUOTE
+ Với các phiên bản RedHat 7.x, thực hiện bước sau:
Trong file
QUOTE
, thêm chọn lựa:
QUOTE
File trên sẽ có dạng như sau;
QUOTE
Tiếp theo, khởi động lại xinetd bằng câu lệnh:
QUOTE
6.6. Tránh sử dụng các dịch vụ không mã hoá thông tin trên đường truyền
Mặc dù ở trên chúng tôi đã trình bày cách ngưng dịch vụ telnet tiết
lộ thông tin, nhưng chúng tôi xin có lời khuyên: Tuyệt đối tránh sử
dụng những dịch vụ kiểu như telnet, ftp (ngoại trừ ftp anonymous) vì
những dịch vụ này hoàn toàn không hề mã hoá mật khẩu khi truyền qua
mạng. Bất kỳ một kẻ phá hoại nào cũng có thể dễ dàng "tóm" được mật khẩu
của bạn bằng những công cỠ
Một giải pháp cho việc xây dựng một mạng truy cập Internet ổn định là
dùng server chạy hệ điều hành Linux. Hiện nay, Linux đang được coi là
một trong những hệ điều hành tốt nhất cho môi trường mạng. Giải pháp này
giúp giảm chi phí đầu tư về phần cứng cho server, tăng tốc độ của mạng
cục bộ và bảo đảm một môi trường mạng chạy ổn định.
Một cách tổng quát, mạng được xây dựng trên mô hình client-server.
Server là một máy chủ truy cập trực tiếp Internet và chạy trên nền hệ
điều hành Linux, thực hiện các dịch vụ như cache proxy server, DHCP
server, Samba server. Các máy client thông thường có thể chạy trên hệ
điều hành Windows hoặc cả Linux nữa, cùng truy xuất Internet thông qua
proxy server. Phổ biến nhất là hình thức truy cập Internet thông qua
modem kết nối với line điện thoại.
Server kết nối với mạng cục bộ thông qua một card giao tiếp mạng
(NIC), trong trường hợp này tôi giả sử đặt địa chỉ IP tĩnh cho máy
server là 192.168.1.1; subnet mask là 255.255.255.0.
Các máy con có thể được cấp IP động bởi DHCP server hoặc có thể gán IP tĩnh cho từng máy, từ 192.168.1.2 -255/24.
Để cấu hình IP cho NIC, bạn dùng ifconfig, ví dụ:
QUOTE
#ifconfig eth0 192.168.1.1/255.255.255.0
Một cách khác mà bạn có thể dùng là trình network config bằng lệnh:
QUOTE
#netconfig
Hoặc dùng #redhat-config-network từ dòng lệnh để chạy chương trình cấu hình cho card mạng (NIC) và modem.
Để cho phép đặc tính IP forwarding trên server, bạn cần thực hiện lệnh sau:
QUOTE
#echo “1” >/proc/sys/net/ipv4/ip_forward
Bạn có thể dùng lệnh sau để chỉ định modem. Giả sử modem của bạn gắn vào cổng COM2, tức là ttyS1
QUOTE
#/ln -s/ dev/modem/ dev/ttyS1
Các file cấu hình quan trọng của mạng:
QUOTE
etc/resolv.conf
: Chỉ định địa chỉ IP của DNS server và search domain.
QUOTE
/etc/sysconfig/network
: Chỉ định tìm đường (routing) và thông tin các host của tất cả các giao tiếp mạng.
QUOTE
etc/sysconfig/network-scripts/ifcfg-
chứa thông tin cấu hình cho mỗi network interface, chẳng hạn đối
với modem là ifcfg-ppp0. File này sẽ tự động được tạo nếu bạn dùng
wvdial, KPPP, Network Administrator Tool.
Nếu bạn coi server như một gateway, bạn dùng masquerading cho máy trong mạng nội bộ như sau:
QUOTE
#/sbin//iptable –t nat –A POSTROUTING –o ppp0 –j MASQUERADE
Đó là đối với modem. Còn nếu đối với một card mạng đã được ISP gán
IP tĩnh, chẳng hạn eth0, ta làm như sau, với x.x.x.x là IP do ISP cung
cấp:
QUOTE
#/sbin//iptable –t nat –A POSTROUTING –o eth0 –j SNAT –to x.x.x.x
Masquerade: Nếu một trong những máy thuộc mạng cục bộ muốn gửi
thông tin ra bên ngoài thì nó sẽ giả thông tin được gởi như chính thông
tin từ máy Linux làm gateway này. (Các máy cục bộ không được cấp địa chỉ
IP thực). Tương tự cho chiều ngược lại, các gói dữ liệu gửi đến từ bên
ngoài, máy chủ sẽ phân tích và tự động chuyển thông tin đó đến đúng máy
tính tương ứng bên trong mạng nội bộ. Như vậy, mạng nội bộ coi như được
cách ly, mặc dù chúng có thể trao đổi thông tin với bên ngoài.
Việc thiết kế cho các máy con truy cập Internet thông qua proxy
server sẽ giúp giảm chi phí đường truyền của kết nối Internet. Tất cả
các gói dữ liệu đi từ Internet vào mạng đều được lưu trữ trong bộ nhớ
đệm (cache) của server, và do đó khi một yêu cầu truy xuất đến thông tin
từ Internet mà đã được truy xuất trước đó rồi thì có thể thông tin đó
đã nằm trên cache, server chỉ việc chuyển thẳng dữ liệu đó đến máy con
mà không cần phải tốn chi phí tải lại từ Internet về trong mỗi lần truy
cập. Ta dùng chương trình squid của Linux làm proxy server.
Cấu hình SQUID:
Khi squid đã được cài đặt, bạn cần cấu hình squid từ file
QUOTE
/etc/squid/squid.conf
Theo mặc định, port để “lắng nghe” các proxy client là 3128. Bạn có
thể thêm vào port 8080 như sau: Trỏ tới phần #http_port 3128, bỏ dấu
QUOTE
“#”
đi và thêm vào port 8080:
QUOTE
http_port 3128 8080
Còn rất nhiều cấu hình trong file squid.conf, bạn có thể tự mình sửa. Sau đó, bạn có thể khởi động squid:
QUOTE
#/etc/rc.d/init.d/squid start
Để các máy con có thể truy xuất web, bạn cần cấu hình lại web browser.
Đối với Internet Explorer, bạn mở Internet Options, chọn
Connections và bấm vào LAN Settings, không chọn Automatically detect
settings. Trong phần proxy server, chọn use a proxy server. Trong trường
hợp Address, bạn nhập vào địa chỉ IP của Squid Proxy (192.168.1.1),
port là 8080.
Ngoài ra, bạn có thể cấu hình để các máy client trong mạng được cấp
IP động, dùng DHCP server, chia sẻ máy in và tài nguyên đĩa, dữ liệu
với nhau bằng Samba server.
Mạng và Linux
Làm việc nhiều với mạng, chắc chắn bạn càng nghe nói nhiều về Linux
- hệ điều hành trẻ trung đầy sinh lực mà thời gian gần đây đã được cho
là đối thủ cân tài, cân sức với Microsoft Windows NT. Do là hệ điều hành
cho nhiều người sử dụng, với phần nhân (kernel) được thiết kế chức năng
mạng ngay từ ban đầu nên Linux là ứng cử viên hệ điều hành mạng sáng
giá.
Vì thế hãy xem xét Linux khi bạn đang dự định thiết lập một mạng
máy tính nghiêm túc, đó là chưa kể chi phí cho mạng này rất thấp. Ngoài
ra, sự hỗ trợ của Linux cho X Windows cho phép bạn sử dụng được hầu hết
những ứng dụng X có trên Internet: trình duyệt Netscape như Navigator và
Communicator, hoặc X11amp MP3. Đúng vậy, bạn có thể đã có những ứng
dụng này trên Windows, nhưng kinh nghiệm Internet của bạn sẽ tiến nhanh
hơn bằng con đường Linux. Tính ổn định và sức đề kháng tốt cũng là hai
yếu tố khiến Linux trở thành hệ điều hành cao cấp dành cho những tác vụ
quan trọng - vượt hơn hẳn Windows.
Thoạt đầu Linux làm bạn ái ngại, nhất là khi so sánh với vẻ thân
thiện, khả ái, cắm-là-chạy (plug and play) của môi trường Windows 95/98.
Cần khẳng định là cài đặt và sử dụng Linux không dễ dàng song cũng
không quá khó như một số người thường nghĩ. Hơn nữa, yếu tố miễn phí
cũng đáng quan tâm đấy chứ! Và chưa hết, nếu đang làm việc trong môi
trường mạng, sự hiểu biết về Unix sẽ giúp ích cho công việc của bạn, và
nhờ Linux, việc tìm hiểu về một hệ điều hành thông dụng sẽ đỡ nhọc công
hơn.
Linux - hệ điều hành linh hoạt
Linux có đáp ứng được những tiêu chuẩn CNTT về mặt thương mại? Nó
có đủ sức mạnh và tính linh hoạt cần thiết? Hiển nhiên, khả năng tính
toán xí nghiệp với Linux là một chủ đề lớn, trong khuôn khổ giới hạn của
bài báo này thì chỉ xin nêu một vài điểm nổi bật mà thôi.
Đầu tiên, Linux là hệ điều hành thích hợp cho máy trạm và tùy thuộc
vào cách thức xác lập cấu hình, Linux thỏa mãn được những yêu cầu
chuyên biệt cho thương mại. Linux có thể sử dụng làm môi trường phát
triển, hub truyền thông, và với những ứng dụng chạy trên X Windows, nó
có thể đảm nhận cả vai trò một máy để bàn truyền thống.
Hai là, có một thứ mà Linux có thể thực hiện tốt hơn những hệ thống
khác, đó là khả năng phục vụ. Với những tính năng truyền thông và mạng
cực mạnh, Linux là hệ điều hành server lý tưởng cho môi trường tính toán
xí nghiệp.
Linux - server quản lý tập tin và in ấn
Linux được phân phối cùng với SAMBA - bộ giao thức SMB miễn phí -
cho phép truy cập tập tin và máy in trên máy Linux từ máy trạm DOS,
Win95, Win98 và Windows NT trên mạng cục bộ. Điều này có nghĩa là Linux
hoạt động như một file server. Một tính năng tuyệt vời khác là có thể
cấu hình SAMBA để quản trị bảo mật: hoặc thông qua những chức năng gốc
của Unix, hoặc bằng server password (Windows NT). SAMBA còn cung cấp
phần mềm cho client, cho phép máy trạm Linux truy cập tập tin trên máy
Windows.
Linux - server thư điện tử
Ngay cả khi bạn không muốn kết nối mạng LAN với Internet, đây cũng
vẫn là lựa chọn thú vị do Linux có nhiều phần mềm về truyền thông thích
hợp để bạn xây dựng mạng Intranet cộng tác mà không phải mất thêm phí
tổn phần mềm. Dịch vụ đơn giản nhất có lẽ là sendmail - chương trình
phục vụ mail truyền thống của Unix, cho phép gửi email trên mạng cộng
tác hoặc Internet. Với hệ thống mail cho xí nghiệp, bạn chỉ cần tạo lập
các tài khoản người dùng và chương trình nhận mail cho những máy trên
mạng LAN.
Trong mạng Intranet phức tạp hơn, có lẽ bạn còn muốn triển khai
những dịch vụ ftp, Usenet và Web server. Có rất nhiều phần mềm Web
server miễn phí, và còn kèm theo ngay trong bản Linux của bạn (có thể là
httpd). Một Web server thông dụng nữa là Apache, bạn có thể tải chương
trình này tại địa chỉ http://www.apache.org/.
Linux - server cho WAN hoặc gateway
Thông thường, mọi sự trở nên phức tạp và tốn kém hơn nếu bạn đi quá
giới hạn của LAN. Tuy nhiên, việc kết nối mạng diện rộng (WAN) với
Linux chỉ là một sự mở rộng chức năng LAN. Thông thường, bạn có thể
triển khai PPP bằng kết nối thông qua modem hay tân tiến hơn thì bằng
đường dây thuê bao và kết nối ISDN. Linux có cả PPP và SLIP, hỗ trợ bức
tường lửa, che chắn IP (IP masquerading), giấu password (nhằm tăng cường
chống bẻ khóa, tập tin lưu trữ password sẽ được đặt tại /etc/shadow
thay vì /etc/passwd), NFS và NIS - là những điểm bắt đầu khá tốt với
WAN.
Nếu say mê Internet, hẳn bạn đã nghe nói đến TCP/IP (Transmission
Control Protocol/Internet Protocol), bộ giao thức này cung cấp nền tảng
phần mềm cho các hệ thống mạng máy tính liên kết với nhau trên khắp
Internet. Linux sử dụng bộ giao thức chuẩn TCP/IP, bộ giao thức truyền
thông Unix-Unix, thường được gọi là UUCP (Unix to Unix Copy Protocol) -
và nhiều phương thức truyền thông qua cổng tuần tự khác.
Tính năng mạng của Linux rất linh động, cho phép cấu hình hệ thống
mạng với quy mô từ mạng SME LAN cho đến mạng cộng tác trải rộng khắp thế
giới. Bạn cũng nên biết rằng TCP/IP đã được sử dụng gần 2 thập kỷ qua
và có hàng triệu người dùng hiện còn tin tưởng vào bộ giao thức này. Vì
thế, nó rất thích hợp với môi trường cộng tác và những ứng dụng then
chốt. Hơn nữa, Linux hỗ trợ đầy đủ cho TCP/IP cùng với những tính năng
cao cấp như bức tường lửa, che chắn địa chỉ IP.
Trong môi trường quy mô trung bình, bước đầu đến với mạng có lẽ là
kết nối một máy đơn Linux với Internet. Điều này thực hiện khá dễ dàng
nếu bạn có modem và tài khoản dial-up tới một nhà cung cấp dịch vụ
Internet (ISP) nào đó: xác lập dịch vụ PPP (Point-to-Point Protocol) và
chọn tùy chọn TCP/IP trong khi cấu hình phần nhân Linux. Trong một số
trường hợp, bộ giao thức cũ SLIP vẫn được sử dụng thay vì PPP, nhưng có
nhiều nhà cung cấp dịch vụ vẫn đưa ra loại tài khoản SLIP được triển
khai trên nền phần mềm mô phỏng PPP, vì vậy, bạn vẫn có khả năng sử dụng
PPP trên máy trạm. Phần khó khăn nhất có lẽ là xác lập PPP ở máy trạm
kể cả sửa đổi lại một số tập tin cấu hình trong thư mục /etc/ppp. Còn
một cách khác là sử dụng chương trình linuxconf để cấu hình tính năng
dial-out của PPP hay SLIP.
Chưa hết: bạn có thể cấu hình máy Linux thành trạm gateway Internet
trong mạng LAN của bạn. Điều này có nghĩa là cho phép nhiều máy cùng sử
dụng và chia sẻ một tài khoản Internet - một ý tưởng rất tuyệt nếu bạn
dự định sử dụng chung truy cập Internet cho 2 hoặc 3 máy. Có thể cấu
hình Linux thành một server SLIP hay PPP để truy cập bằng modem, hay
thậm chí thành hẳn một nút Internet thực sự.
Hầu hết người dùng cộng tác đều quan tâm đến việc có một mạng LAN,
để tập trung và chia sẻ những dữ liệu quan trọng, tạo điều kiện thuận
lợi trong truyền thông nội bộ. Kết nối nhiều máy Linux thành một mạng
LAN không khó khăn lắm: mỗi máy chỉ cần một card Ethernet, dây cáp thích
hợp và một vài thiết bị mạng như hub Ethernet.
Linux hỗ trợ nhiều card mạng Ethernet (như 3Com, D-Link,...), tự
động nhận ra cấu hình của card LAN vào lúc khởi động để khởi tạo lớp
phần mềm giao tiếp mạng theo đúng cấu hình này. Mỗi máy cần có một địa
chỉ IP và tên máy chủ (host name) riêng để giao tiếp với nhau trên mạng
(điều này cũng giống như kiểu cấu hình được sử dụng trên những mạng
Windows).
Sau khi đã thiết lập mạng xong, bạn có thể sử dụng rất nhiều ứng
dụng mạng có sẵn như mail, chương trình đọc tin (elm, pine, rn, nn, và
tin) được sử dụng với mail server (sendmail) và news server NNTP. Một số
công cụ thông dụng khác như telnet hoặc rlogin cho phép bạn đăng nhập
và thi hành các lệnh trên một máy khác; FTP (File Transfer Protocol) để
truyền tập tin giữa các máy trên mạng; finger để tìm kiếm thông tin về
người dùng trên mạng cục bộ hay Internet. Bạn sẽ kinh ngạc về khối lượng
thông tin đồ sộ "nhặt" được chỉ bằng một lệnh finger đơn giản. Người
dùng cộng tác cũng muốn có một cơ sở dữ liệu cho phép chia sẻ thông tin
tập trung chẳng hạn như dữ liệu khách hàng, danh mục sản phẩm, đơn đặt
hàng, hoá đơn, ... Linux cung cấp một hệ thống ổn định và đáng tin cậy
cho loại ứng dụng này. Trong hệ thống client/server, máy trạm gửi yêu
cầu về cơ sở dữ liệu đến server Linux và sẽ nhận được kết quả dưới dạng
thức SQL. Kỹ thuật này làm giảm lưu lượng trên mạng xuống mức thấp nhất
và phân bố tải một cách cân bằng giữa những máy trạm.
Linux được phân phối cùng với NFS (Network File System), một hệ
thống file phân bố cho phép chia sẻ tập tin trên toàn bộ mạng Linux,
nghĩa là việc truy cập tập tin ở máy khác được thực hiện như thể chúng
đang được lưu trữ trên đĩa cứng cục bộ. Ngoài ra còn có NIS (Network
Information Service), cho phép hệ thống tự động thu thập thông tin về
tài khoản người dùng, nhóm, đặc quyền truy cập, và thông tin từ những
server khác trên mạng. Nói tóm lại, NFS và NIS cho phép nhiều server
Linux, mạng LAN, WAN hoạt động như một hệ thống nhất.
Cuối cùng, có nhiều bộ phần mềm gắn liền với Linux, được dùng để
xây dựng các "mạng tạp chủng". Những bộ phần mềm này tích hợp server
Linux trong một mạng gồm các client với nhiều hệ điều hành khác nhau như
Windows 3.1, Windows 95, NT, Novell, và Macintosh. Với bộ giao thức
SAMBA, Linux có thể cung cấp dịch vụ file và in ấn. SAMBA cho phép máy
Windows tìm duyệt và truy cập tập tin thông qua Windows Explorer và File
Manager. Chương trình Mars NetWare Emulator cung cấp những chức năng
của một file server Netware cho máy trạm chạy DOS và Windows (bạn có thể
tải xuống từ địa chỉ http://www.compu-art.de/mars_nwe). Và giờ đây là thời điểm đúng đắn nhất nếu bạn đang có một mạng Novell hoặc dự định cài đặt trong tương lai gần.
Tăng cường an ninh cho hệ thống Linux
Linux đã tạo ra một sự bùng nổ trong lĩnh vực tin học và ngày càng
trở nên phổ biến hiện nay. Rất nhiều các công ty, tổ chức trên thế giới
chấp nhận Linux như là một platform cho sản phẩm của họ, cũng như nhiều
công ty, ISPs sử dụng máy chủ Linux như là các Internet gateway. Vấn đề
an toàn an ninh cho hệ thống Linux ngày càng trở nên quan trọng và bức
thiết hơn. Tài liệu này sẽ cho bạn một cái nhìn tổng quát về an toàn hệ
thống và những hướng dẫn giúp tăng cường mức độ an toàn cho hệ thống
Linux của bạn. (Tài liệu này được báo cáo tại hội thảo Linux Việt Nam
vào tháng 12/2000 nên có một số phần đã cũ so với hiện nay.)
GIỚI THIỆU
Cùng với sự phát triển không ngừng của truyền thông kỹ thuật số,
Internet và sự phát triển nhảy vọt của nền công nghiệp phần mềm, bảo mật
máy tính là một vấn đề ngày càng trở nên quan trọng. Cần phải hiểu rằng
không có hệ thống máy tính nào là an toàn tuyệt đối. Tất cả những gì
bạn có thể làm là giúp cho hệ thống của bạn trở nên an toàn hơn.
Kể từ khi Linux được phát triển một cách rộng rãi và nhanh chóng,
đặc biệt là trong các giao dịch kinh doanh quan trọng, an ninh là một
vấn đề quyết định sự sống còn của Linux. Với hàng trăm công cụ bảo vệ
sẵn có, người dùng Linux được trang bị tốt hơn để ngăn chặn và duy trì
một hệ thống an toàn. Linux không những hoạt động tốt mà còn có những
tính năng và sản phẩm liên quan cho phép xây dựng một môi trường tương
đối an toàn.
NHỮNG NGUY CƠ AN NINH TRÊN LINUX
Linux và các ứng dụng trên nó có thể không ít các lỗ hổng an ninh
hơn những hệ điều hành khác. Theo quan điểm của một số chuyên gia máy
tính, Linux có tính an toàn cao hơn các hệ điều hành của Microsoft, vì
các sản phẩm của Microsoft không được xem xét kỹ lưỡng và chặt chẽ bằng
các sản phẩm mã nguồn mở như Linux. Hơn nữa, Linux dường như là "miễn
nhiễm" với virus máy tính (hiện tại đã có xuất hiện một vài loại virus
hoạt động trên môi trường Linux nhưng không ảnh hưởng gì mấy đến người
dùng Linux). Nhưng một hệ thống Linux được cấu hình không tốt sẽ tệ hơn
nhiều so với một hệ thống Microsoft được cấu hình tốt !!! Khi có được
một chính sách an ninh tốt và hệ thống được cấu hình theo đúng chính
sách đó thì sẽ giúp bạn tạo được một hệ thống an toàn (ở mức mà chính
sách của bạn đưa ra).
Nhưng sự an toàn không phải là thứ có thể đạt được như một mục tiêu
cuối cùng. Đúng hơn đó là tập hợp của những cách cài đặt, vận hành và
bảo trì một hệ điều hành, mạng máy tính, ... Nó phụ thuộc vào các hoạt
động hàng ngày của hệ thống, người dùng và người quản trị. Bạn phải bắt
đầu từ một nền tảng ban đầu và từ đó cải thiện tính an toàn của hệ thống
của bạn nhiều nhất có thể được mà vẫn đảm bảo các hoạt động bình thường
của hệ thống.
XEM XÉT CHÍNH SÁCH AN NINH CỦA BẠN
Kết nối vào Inernet là nguy hiểm cho hệ thống mạng của bạn với mức
an toàn thấp. Từ những vấn đề trong các dịch vụ TCP/IP truyền thống,
tính phức tạp của việc cấu hình máy chủ, các lỗ hổng an ninh bên trong
quá trình phát triển phần mềm và nhiều nhân tố khác góp phần làm cho
những hệ thống máy chủ không được chuẩn bị chu đáo có thể bị xâm nhập và
luôn tồn tại những nguy cơ tiềm tàng về vấn đề an toàn trong đó.
Mục đích của một chính sách an toàn hệ thống là quyết định một tổ
chức sẽ phải làm như thế nào để bảo vệ chính nó. Để có được một chính
sách an ninh hiệu quả, người xây dựng các chính sách này phải hiểu và có
thể kết hợp tất cả các thông tin, yêu cầu, ...
Khi một tình huống xảy ra nằm ngoài dự kiến, chẳng hạn một sự xâm
nhập trái phép vào hệ thống của bạn, câu hỏi lớn nhất là "sẽ phải làm gì
đây ?"
Không may là có hàng triệu câu trả lời khác nhau cho câu hỏi đó.
Nếu một người mà chưa từng phải đối phó với một kẻ xâm nhập trước đây
thì kẻ xâm nhập có thể dễ dàng biến mất vì các dấu vết đã trở nên qúa cũ
và không còn hữu ích nữa.
Những sai sót trong chính sách an ninh không chỉ liên quan đến
những kẻ xâm nhập, mà còn liên quan đến những vấn đề bình thường như
thời tiết, thiên tai, cháy, nổ, hư hỏng thiết bị,... Do vậy, việc thiết
lập một chính sách an ninh tốt cho việc giải quyết những sự cố phải được
lên kế hoạch kỹ lưỡng, được xem xét và chứng nhận bởi người có quyền
hạn trong công ty.
Một chính sách an ninh tốt nên bao gồm các vấn đề sau :
QUOTE
Chính sách phục hồi dữ liệu khi có sự cố
Chính sách phục hồi hệ thống trong trường hợp hư hỏng thiết bị
Chính sách, cách thức điều tra những kẻ xâm nhập trái phép
Chính sách, cách thức điều tra khi công ty bị cáo buộc xâm nhập vào các hệ thống khác
Cách thức, quy trình và nơi thông báo sự xâm nhập trái phép từ bên ngoài hay gây ra bởi các nhân viên của mình.
Chính sách an ninh về mặt vật lý của hệ thống
...
Bạn có thể nhờ tư vấn của các công ty, tổ chức làm dịch vụ tư vấn
về an toàn máy tính để giúp bạn xây dụng một chính sách an ninh tốt. Các
công ty này có các chuyên gia về an toàn máy tính, họ có sẵn các biểu
mẫu chính sách an ninh nên có thể thiết lập nhanh chóng các chính sách
mà bao gồm tất cả các mặt trong việc an toàn hệ thống máy tính.
TĂNG CƯỜNG AN NINH CHO KERNEL
Mặc dù thừa hưởng những đặc tính của hệ thống UNIX và khá an ninh
hơn một số hệ điều hành khác, hệ thống GNU/Linux hiện nay vẫn tồn tại
những nhược điểm sau:
Quyền của user ‘root’ có thể bị lạm dụng. User ‘root’ có thể dễ dàng thay đổi bất kỳ điều gì trên hệ thống.
Nhiều file hệ thống có thể dễ dàng bị sửa đổi. Nhiều file hệ thống quan trọng như
QUOTE
/bin/login
có thể bị sửa đổi bởi hacker để cho phép đăng nhập không cần mật
khẩu. Nhưng những file loại này lại hiếm khi nào thay đổi trừ phi khi
nâng cấp hệ thống.
Các module có thể được dùng để chặn kernel. “Loadable Kernel
Module” là một thiết kế tốt để tăng cường tính uyển chuyển, linh hoạt
cho kernel. Nhưng sau khi một module được nạp vào kernel, nó sẽ trở
thành một phần của kernel và có thể hoạt động như kernel nguyên thủy. Vì
vậy, các chưng trình mục đích xấu có thể được viết dạng module và nạp
vào kernel, rồi sau đó hoạt động như một virus.
Các process không được bảo vệ. Các process như web server có thể
trở thành mục tiêu bị tấn công của hacker sau khi thâm nhập hệ thống.
Để cải thiện tính an ninh cho các server Linux, chúng ta cần có một
kernel an toàn hơn. Điều này có thể thực hiện được bằng cách sửa đổi
kernel nguyên thuỷ bằng các ‘patch’ tăng cường tính an ninh cho hệ
thống. Các patch này có các tính năng chính yếu sau:
Bảo vệ – bảo vệ các file hệ thống quan trọng khỏi sự thay đổi ngay
cả với user root. Bảo vệ các process quan trọng khỏi bị ngừng bởi lệnh
‘kill’. Chặn các tác vụ truy cập IO mức thấp (RAW IO) của các chương
trình không được phép.
Phát hiện – Phát hiện và cảnh báo với người quản trị khi server bị
scan. Cũng như khi có các tác vụ trên hệ thống vi phạm các luật (rules)
định trước.
Đối phó – Khi phát hiện sự vi phạm trên hệ thống, các ghi nhận chi
tiết sẽ được thực hiện cũng như có thể ngừng lập tức phiên làm việc gây
ra
Một vài công cụ sửa đổi kernel được sử dụng rộng rãi là LIDS (Linux Intrusion Detection System), Medusa, ...
AN TOÀN CHO CÁC GIAO DỊCH TRÊN MẠNG
Có rất nhiều dịch vụ mạng truyền thống giao tiếp thông qua giao
thức văn bản không mã hoá, như TELNET, FTP, RLOGIN, HTTP, POP3. Trong
các giao dịch giữa người dùng với máy chủ, tất cả các thông tin dạng gói
được truyền qua mạng dưới hình thức văn bản không được mã hoá. Các gói
tin này có thể dễ dàng bị chặn và sao chép ở một điểm nào đó trên đường
đi. Việc giải mã các gói tin này rất dễ dàng, cho phép lấy được các
thông tin như tên người dùng, mật khẩu và các thông tin quan trọng khác.
Việc sử dụng các giao dịch mạng được mã hoá khiến cho việc giải mã
thông tin trở nên khó hơn và giúp bạn giữ an toàn các thông tin quan
trọng. Các kỹ thuật thông dụng hiện nay là IPSec, SSL, TLS, SASL và PKI.
Quản trị từ xa là một tính năng hấp dẫn của các hệ thống UNIX.
Người quản trị mạng có thể dễ dàng truy nhập vào hệ thống từ bất kỳ nơi
nào trên mạng thông qua các giao thức thông dụng như telnet, rlogin. Một
số công cụ quản trị từ xa được sử dụng rộng rãi như linuxconf, webmin
cũng dùng giao thức không mã hoá. Việc thay thế tất cả các dịch vụ mạng
dùng giao thức không mã hoá bằng giao thức có mã hoá là rất khó. Tuy
nhiên, bạn nên cung cấp việc truy cập các dịch vụ truyền thống như
HTTP/POP3 thông qua SSL, cũng như thay thế các dịch vụ telnet, rlogin
bằng SSH.
AN TOÀN CHO CÁC GIAO DỊCH TRÊN MẠNG
Có rất nhiều dịch vụ mạng truyền thống giao tiếp thông qua giao thức văn bản không mã hoá, như
QUOTE
TELNET, FTP, RLOGIN, HTTP, POP3
. Trong các giao dịch giữa người dùng với máy chủ, tất cả các thông
tin dạng gói được truyền qua mạng dưới hình thức văn bản không được mã
hoá. Các gói tin này có thể dễ dàng bị chặn và sao chép ở một điểm nào
đó trên đường đi. Việc giải mã các gói tin này rất dễ dàng, cho phép lấy
được các thông tin như tên người dùng, mật khẩu và các thông tin quan
trọng khác. Việc sử dụng các giao dịch mạng được mã hoá khiến cho việc
giải mã thông tin trở nên khó hơn và giúp bạn giữ an toàn các thông tin
quan trọng. Các kỹ thuật thông dụng hiện nay là
QUOTE
IPSec, SSL, TLS, SASL và PKI.
Quản trị từ xa là một tính năng hấp dẫn của các hệ thống UNIX.
Người quản trị mạng có thể dễ dàng truy nhập vào hệ thống từ bất kỳ nơi
nào trên mạng thông qua các giao thức thông dụng như telnet, rlogin. Một
số công cụ quản trị từ xa được sử dụng rộng rãi như linuxconf, webmin
cũng dùng giao thức không mã hoá. Việc thay thế tất cả các dịch vụ mạng
dùng giao thức không mã hoá bằng giao thức có mã hoá là rất khó. Tuy
nhiên, bạn nên cung cấp việc truy cập các dịch vụ truyền thống như
HTTP/POP3 thông qua SSL, cũng như thay thế các dịch vụ telnet, rlogin
bằng SSH.
LINUX FIREWALL
An toàn hệ thống luôn luôn là một vấn đề sống còn của mạng máy tính
và firewall là một thành phần cốt yếu cho việc đảm bảo an ninh.
Một firewall là một tập hợp các qui tắc, ứng dụng và chính sách đảm
bảo cho người dùng truy cập các dịch vụ mạng trong khi mạng bên trong
vẫn an toàn đối với các kẻ tấn công từ Internet hay từ các mạng khác. Có
hai loại kiến trúc firewall cơ bản là : Proxy/Application firewall và
filtering gateway firewall. Hầu hết các hệ thống firewall hiện đại là
loại lai (hybrid) của cả hai loại trên.
Nhiều công ty và nhà cung cấp dịch vụ Internet sử dụng máy chủ
Linux như một Internet gateway. Những máy chủ này thường phục vụ như máy
chủ mail, web, ftp, hay dialup. Hơn nữa, chúng cũng thường hoạt động
như các firewall, thi hành các chính sách kiểm soát giữa Internet và
mạng của công ty. Khả năng uyển chuyển khiến cho Linux thu hút như là
một thay thế cho những hệ điều hành thương mại.
Tính năng firewall chuẩn được cung cấp sẵn trong kernel của Linux được xây dựng từ hai thành phần :
QUOTE
ipchains và IP Masquerading
.
là một cơ chế lọc gói tin IP. Những tính năng của IP Chains cho
phép cấu hình máy chủ Linux như một filtering gateway/firewall dễ dàng.
Một thành phần quan trọng khác của nó trong kernel là IP Masquerading,
một tính năng chuyển đổi địa chỉ mạng (network address translation- NAT)
mà có thể che giấu các địa chỉ IP thực của mạng bên trong.
Để sử dụng ipchains, bạn cần thiết lập một tập các luật mà qui định các kết nối được cho phép hay bị cấm. Ví dụ:
QUOTE
# Cho phép các kết nối web tới Web Server của bạn
/sbin/ipchains -A your_chains_rules -s 0.0.0.0/0 www -d 192.16.0.100 1024: -j ACCEPT
# Cho phép các kết nối từ bên trong tới các Web Server bên ngoài
/sbin/ipchains -A your_chains_rules -s 192.168.0.0/24 1024: -d 0.0.0.0/0 www -j ACCEPT
# Từ chối truy cập tất cả các dịch vu khác
/sbin/ipchains -P your_chains_rules input DENY
Ngoài ra, bạn có thể dùng các sản phẩm firewall thương mại như
Check Point FireWall-1, Phoenix Adaptive Firewall, Gateway Guardian,
XSentry Firewall, Raptor, ... hay rất nhiều các phiên bản miễn phí, mã
nguồn mở cho Linux như T.Rex Firewall, Dante, SINUS, TIS Firewall
Toolkit, ...
DÙNG CÔNG CỤ DÒ TÌM ĐỂ KHẢO SÁT HỆ THỐNG
Thâm nhập vào một hệ thống bất kỳ nào cũng cần có sự chuẩn bị.
Hacker phải xác định ra máy đích và tìm xem những port nào đang mở trước
khi hệ thống có thể bị xâm phạm. Quá trình này thường được thực hiện
bởi các công cụ dò tìm (scanning tool), kỹ thuật chính để tìm ra máy
đích và các port đang mở trên đó. Dò tìm là bước đầu tiên hacker sẽ sử
dụng trước khi thực hiện tấn công. Bằng cách sử dụng các công cụ dò tìm
như Nmap, hacker có thể rà khắp các mạng để tìm ra các máy đích có thể
bị tấn công. Một khi xác định được các máy này, kẻ xâm nhập có thể dò
tìm các port đang lắng nghe. Nmap cũng sử dụng một số kỹ thuật cho phép
xác định khá chính xác loại máy đang kiểm tra.
Bằng cách sử dụng những công cụ của chính các hacker thường dùng,
người qun trị hệ thống có thể nhìn vào hệ thống của mình từ góc độ của
các hacker và giúp tăng cường tính an toàn của hệ thống. Có rất nhiều
công cụ dò tìm có thể sử dụng như: Nmap, strobe, sscan, SATAN, ...
Dưới đây là một ví dụ sử dụng Nmap:
QUOTE
# nmap -sS -O 192.168.1.200
Starting nmap V. 2.54 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on comet (192.168.1.200):
Port State Protocol Service
7 open tcp echo
19 open tcp chargen
21 open tcp ftp
...
TCP Sequence Prediction: Class=random positive increments
Difficulty=17818 (Worthy challenge)
Remote operating system guess: Linux 2.2.13
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds
Tuy nhiên, sử dụng các công cụ này không thể thay thế cho một người
quản trị có kiến thức. Bởi vì việc dò tìm thường dự báo một cuộc tấn
công, các site nên ưu tiên cho việc theo dõi chúng. Với các công cụ dò
tìm, các nhà quản trị hệ thống mạng có thể phát hiện ra những gì mà các
hacker có thể thấy khi dò trên hệ thống của mình.
PHÁT HIỆN SỰ XÂM NHẬP QUA MẠNG
Nếu hệ thống của bạn có kết nối vào internet, bạn có thể trở thành
một mục tiêu bị dò tìm các lỗ hổng về bảo mật. Mặc dù hệ thống của bạn
có ghi nhận điều này hay không thì vẫn không đủ để xác định và phát hiện
việc dò tìm này. Một vấn đề cần quan tâm khác là các cuộc tấn công gây
ngừng dịch vụ (Denial of Services - DoS), làm thế nào để ngăn ngừa, phát
hiện và đối phó với chúng nếu bạn không muốn hệ thống của bạn ngưng
trệ.
Hệ thống phát hiện xâm nhập qua mạng (Network Intrusion Detection
System - NIDS) theo dõi các thông tin truyền trên mạng và phát hiện nếu
có hacker đang cố xâm nhập vào hệ thống (hoặc gây gây ra một vụ tấn công
DoS). Một ví dụ điển hình là hệ thống theo dõi số lượng lớn các yêu cầu
kết nối TCP đến nhiều port trên một máy nào đó, do vậy có thể phát hiện
ra nếu có ai đó đang thử một tác vụ dò tìm TCP port. Một NIDS có thể
chạy trên máy cần theo dõi hoặc trên một máy độc lập theo dõi toàn bộ
thông tin trên mạng.
Các công cụ có thể được kết hợp để tạo một hệ thống phát hiện xâm
nhập qua mạng. Chẳng hạn dùng tcpwrapper để điều khiển, ghi nhận các
dịch vụ đã được đăng ký. Các chương trình phân tích nhật ký hệ thống,
như swatch, có thể dùng để xác định các tác vụ dò tìm trên hệ thống. Và
điều quan trọng nhất là các công cụ có thể phân tích các thông tin trên
mạng để phát hiện các tấn công DoS hoặc đánh cắp thông tin như tcpdump,
ethereal, ngrep, NFR (Network Flight Recorder), PortSentry, Sentinel,
Snort, ...
Khi hiện thực một hệ thống phát hiện xâm nhập qua mạng bạn cần phải
lưu tâm đến hiệu suất của hệ thống cũng như các chính sách bảo đảm sự
riêng tư.
KIỂM TRA KHẢ NĂNG BỊ XÂM NHẬP
Kiểm tra khả năng bị xâm nhập liên quan đến việc xác định và sắp
xếp các lỗ hổng an ninh trong hệ thống bằng cách dùng một số công cụ
kiểm tra. Nhiều công cụ kiểm tra cũng có khả năng khai thác một số lỗ
hổng tìm thấy để làm rõ quá trình thâm nhập trái phép sẽ được thực hiện
như thế nào. Ví dụ, một lỗi tràn bộ đệm của chương trình phục vụ dịch vụ
FTP có thể dẫn đến việc thâm nhập vào hệ thống với quyền ‘root’. Nếu
người quản trị mạng có kiến thức về kiểm tra khả năng bị xâm nhập trước
khi nó xảy ra, họ có thể tiến hành các tác vụ để nâng cao mức độ an ninh
của hệ thống mạng.
Có rất nhiều các công cụ mạng mà bạn có thể sử dụng trong việc kiểm
tra khả năng bị xâm nhập. Hầu hết các quá trình kiểm tra đều dùng ít
nhất một công cụ tự động phân tích các lỗ hổng an ninh. Các công cụ này
thăm dò hệ thống để xác định các dịch vụ hiện có. Thông tin lấy từ các
dịch vụ này sẽ được so sánh với cơ sở dữ liệu các lỗ hổng an ninh đã
được tìm thấy trước đó.
Các công cụ thường được sử dụng để thực hiện các kiểm tra loại này
là ISS Scanner, Cybercop, Retina, Nessus, cgiscan, CIS, ...Kiểm tra khả
năng bị xâm nhập cần được thực hiện bởi những người có trách nhiệm một
cách cẩn thận. Sự thiếu kiến thức và sử dụng sai cách có thể sẽ dẫn đến
hậu quả nghiêm trọng không thể lường trước được.
ĐỐI PHÓ KHI HỆ THỐNG CỦA BẠN BỊ TẤN CÔNG
Gần đây, một loạt các vụ tấn công nhắm vào các site của những công
ty lớn như Yahoo!, Buy.com, E-Bay, Amazon và CNN Interactive gây ra
những thiệt hại vô cùng nghiêm trọng. Những tấn công này là dạng tấn
công gây ngừng dịch vụ "Denial-Of-Service" mà được thiết kế để làm ngưng
hoạt động của một mạng máy tính hay một website bằng cách gửi liên tục
với số lượng lớn các dữ liệu tới mục tiêu tấn công khiến cho hệ thống bị
tấn công bị ngừng hoạt động, điều này tương tự như hàng trăm người cùng
gọi không ngừng tới 1 số điện thoại khiến nó liên tục bị bận.
Trong khi không thể nào tránh được mọi nguy hiểm từ các cuộc tấn
công, chúng tôi khuyên bạn một số bước mà bạn nên theo khi bạn phát hiện
ra rằng hệ thống của bạn bị tấn công. Chúng tôi cũng đưa ra một số cách
để giúp bạn bảo đảm tính hiệu qủa của hệ thống an ninh và những bước
bạn nên làm để giảm rủi ro và có thể đối phó với những cuộc tấn công.
Nếu phát hiện ra rằng hệ thống của bạn đang bị tấn công, hãy bình tĩnh. Sau đây là những bước bạn nên làm:
Tập hợp 1 nhóm để đối phó với sự tấn công:
- Nhóm này phải bao gồm những nhân viên kinh nghiệm, những người mà
có thể giúp hình thành một kế hoạch hành động đối phó với sự tấn công.
Dựa theo chính sách và các quy trình thực hiện về an ninh của công
ty, sử dụng các bước thích hợp khi thông báo cho mọi người hay tổ chức
về cuộc tấn công.
Tìm sự giúp đỡ từ nhà cung cấp dịch vụ Internet và cơ quan phụ trách về an ninh máy tính:
- Liên hệ nhà cung cấp dịch vụ Internet của bạn để thông báo về
cuộc tấn công. Có thể nhà cung cấp dịch vụ Internet của bạn sẽ chặn đứng
được cuộc tấn công.
- Liên hệ cơ quan phụ trách về an ninh máy tính để thông báo về cuộc tấn công
Tạm thời dùng phương thức truyền thông khác (chẳng hạn như qua điện
thoại) khi trao đổi thông tin để đảm bo rằng kẻ xâm nhập không thể chặn
và lấy được thông tin.
Ghi lại tất cả các hoạt động của bạn (chẳng hạn như gọi điện thoại, thay đổi file, ...)
Theo dõi các hệ thống quan trọng trong qúa trình bị tấn công bằng
các phần mềm hay dịch vụ phát hiện sự xâm nhập (intrusion detection
software/services). Điều này có thể giúp làm giảm nhẹ sự tấn công cũng
như phát hiện những dấu hiệu của sự tấn công thực sự hay chỉ là sự quấy
rối nhằm đánh lạc hướng sự chú ý của bạn(chẳng hạn một tấn công DoS với
dụng ý làm sao lãng sự chú ý của bạn trong khi thực sự đây là một cuộc
tấn công nhằm xâm nhập vào hệ thống của bạn).
- Sao chép lại tất cả các files mà kẻ xâm nhập để lại hay thay đổi (như những đoạn mã chương trình, log file, ...)
Liên hệ nhà chức trách để báo cáo về vụ tấn công.
Những bước bạn nên làm để giảm rủi ro và đối phó với sự tấn công trong tương lai :
Xây dựng và trao quyền cho nhóm đối phó với sự tấn công
Thi hành kiểm tra an ninh và đánh giá mức độ rủi ro của hệ thống
Cài đặt các phần mềm an toàn hệ thống phù hợp để giảm bớt rủi ro
Nâng cao khả năng của mình về an toàn máy tính
Các bước kiểm tra để giúp bạn bảo đảm tính hiệu quả của hệ thống an ninh
Kiểm tra hệ thống an ninh mới cài đặt : chắc chắn tính đúng đắn của chính sách an ninh hiện có và cấu hình chuẩn của hệ thống.
Kiểm tra tự động thường xuyên : để khám phá sự “viếng thăm” của
những hacker hay những hành động sai trái của nhân viên trong công ty.
Kiểm tra ngẫu nhiên: để kiểm tra chính sách an ninh và những tiêu
chuẩn, hoặc kiểm tra sự hiện hữu của những lỗ hổng đã được phát hiện
(chẳng hạn những lỗi được thông báo từ nhà cung cấp phần mềm)
Kiểm tra hằng đêm những file quan trọng: để đánh giá sự toàn vẹn của những file và cơ sở dữ liệu quan trọng
Kiểm tra các tài khoản người dùng: để phát hiện các tài khoản không sử dụng, không tồn tại, ...
Kiểm tra định kỳ để xác định trạng thái hiện tại của hệ thống an ninh của bạn
QUOTE
BẠN CÓ THỂ XEM THÊM THÔNG TIN TẠI
Các trung tâm giúp đối phó tai nạn trên Internet
http://www.cert.org/
http://www.first.org/
http://ciac.llnl.gov/
http://www.cert.dfn.de/eng/csir/europe/certs.html
Một số website về an toàn máy tính
http://www.cs.purdue.edu/coast/
http://www.linuxsecurity.com/
http://www.securityportal.com/
http://www.tno.nl/instit/fel/intern/wkinfsec.html
http://www.icsa.net/
http://www.sans.org/
http://www.iss.com/
http://www.securityfocus.com/
Thông tin về an toàn từ nhà cung cấp
http://www.calderasystems.com/news/security/
http://www.debian.org/security/
http://www.redhat.com/cgi-bin/support/
Một số sách về an toàn máy tính
Actually Useful Internet Security Techniques by Larry J. Hughes Jr.
Applied Cryptography: Protocols, Algorithms and Source Code in C by Bruce Schneier
Building Internet Firewall by Brent Chapman & Elizabeth D. Zwicky
Cisco IOS Network Security by Mike Kaeo
Firewalls and Internet Security by Bill Cheswick & Steve Bellovin
Halting the Hacker: A practical Guide To Computer Security by Donal L. Pipkin
Intrusion Detection: An Introduction to Internet Surveillance,
Correlation, Traps, Trace Back and Response by Edward G. Amoroso
Intrusion Detection: Network Security Beyond the Firewall by Terry Escamilla
Linux Security by Jonh S. Flowers
Hiện nay, trên môi trường máy chủ, Linux ngày càng chiếm một vị trí
quan trọng. Nguyên nhân khiến Linux dần trở thành một đối thủ tiềm năng
của hệ điều hành Microsoft Windows là do tính ổn định, độ linh hoạt và
khả năng chịu tải lớn: đây là những đặc điểm quan trọng hàng đầu của một
hệ thống máy phục vụ.
Tính bảo mật tốt cũng là một trong những điểm nổi bật của Linux.
Tuy nhiên, để một hệ thống Linux có khả năng chống lại các cuộc tấn
công, người quản trị cũng cần phải nắm được một số kỹ năng nhất định.
Trong bài viết này, chúng tôi xin giới thiệu một số kinh nghiệm nhằm
nâng cao tính an toàn cho một hệ thống Linux (để dễ theo dõi cho bạn
đọc, chúng tôi sẽ minh hoạ bằng RedHat, một phiên bản Linux rất phổ biến
ở Việt Nam và trên thế giới).
1.1. Loại bỏ tất cả các account và nhóm đặc biệt
Ngay sau khi cài đặt Linux, người quản trị nên xoá bỏ tất cả các
account và nhóm (group) đã được tạo sẵn trong hệ thống nhưng không có
nhu cầu sử dụng, ví dụ như lp, sync, shutdown, halt, news, uucp,
operator, games, gopher, v.v... (Tuy nhiên bạn đọc cần biết rõ những
account và nhóm nào không cần cho hệ thống của mình rồi hãy xoá)
Thực hiện việc xoá bỏ account với lệnh :
QUOTE
# userdel
Ví dụ, nếu không có nhu cầu về in ấn trên hệ thống, có thể xoá account lp như sau:
QUOTE
# userdel lp
Tương tự như vậy, có thể thực hiện việc xoá bỏ các nhóm không cần thiết với lệnh
QUOTE
# groupdel
2.2. Che giấu file chứa mật khẩu
Từ lịch sử xa xưa của Unix và cả Linux, mật khẩu của toàn bộ các
account đã từng được lưu ngay trong file /etc/password, file có quyền
đọc bởi tất cả các account trong hệ thống! Đây là một kẽ hở lớn cho các
kẻ phá hoại: Mặc dù các mật khẩu đều được mã hoá, nhưng việc giải mã
ngược là có thể thực hiện được (và có thể thực hiện khá dễ dàng, đặc
biệt vì cơ chế mã hoã mật khẩu không phải là khó phá và ngày nay khả
năng tính toán và xử lý của máy tính rất mạnh). Vì lí do trên, gần đây
các nhà phát triển Unix và Linux đã phải đặt riêng mật khẩu mã hoá vào
một file mà chỉ có account root mới đọc được: file /etc/shadow. (Khi sử
dụng phương pháp này, để đảm bảo tính tương thích, nơi vốn đặt mật khẩu
trong file /etc/password người ta đánh dấu "x")
Nếu bạn đọc đang sử dụng các phiên bản RedHat gần đây (ví dụ RedHat
6.x hay 7.x) thì nhớ chọn lựa Enable the shadow password khi cài đặt
RedHat để sử dụng tính năng che giấu mật khẩu này (Cũng thật may vì chọn
lựa này là mặc định trong hầu hết các phiên bản Linux đang sử dụng rộng
rãi hiện nay)
3.3. Tự động thoát khỏi shell
Người quản trị hệ thống rất hay quên thoát ra khỏi dấu nhắc shell
khi kết thúc công việc. Bản thân tôi cũng đã từng nhiều lần khi đang
thực hiện việc quản trị với account root thì bỏ đi vì một số công việc
khác. Thật nguy hiểm nếu lúc đó có một kẻ phá hoại ở đó: Kẻ này có thể
dễ dàng có quyền truy xuất hệ thống ở mức cao nhất mà chẳng cần tốn một
chút công sức nào cả.
Để giảm nguy cơ này, người quản trị nên cài đặt tính năng tự động
thoát ra khỏi shell khi không có sự truy xuất nào trong một khoảng thời
gian định trước bằng cách đặt một tham số quy định khoảng thời gian hệ
thống vẫn duy trì dấu nhắc shell.
Muốn cài đặt tham số này, người sử dụng biến môi trường TMOUT và
gán cho nó một giá trị số thể hiện khoảng thời gian tính bằng giây hệ
thống vẫn duy trì dấu nhắc. Để thực hiện điều này cho tất cả các account
trong hệ thống, cách đơn giản nhất là đặt nó vào file /etc/profile dòng
lệnh sau: (giả sử ta đặt khoảng thời gian là 600 giây)
TMOUT=600
Như vậy là nếu trong khoảng 10 phút người sử dụng không truy xuất
shell, shell sẽ tự động thoát ra. Tuy nhiên cần chú ý: Mẹo này sẽ không
"ổn" nếu lúc đó người dùng đang chạy một chương trình nào đó như vi hay
mc,... Có nghĩa là người dùng phải đang làm việc trực tiếp với shell chứ
không phải với bất kỳ một chương trình nào khác.
4.4. Loại bỏ các dịch vụ không sử dụng
Một điều khá nguy hiểm là sau khi cài đặt, hệ thống tự động bật
chạy khá nhiều dịch vụ (và đa số là các dịch vụ không mong muốn), dẫn
tới tốn tài nguyên và gây nên nhiều nguy cơ về bảo mật. Người quản trị
nên loại bỏ ngay lập tức các dịch vụ không dùng tới ngay sau khi cài
máy. Hoặc đơn giản bằng cách xoá bỏ các gói phần mềm/dịch vụ không sử
dụng (qua công cụ quản trị gói phần mềm rpm của RedHat) hoặc sử dụng
công cụ ntsysv để duyệt xem tất cả các dịch vụ đang cài đặt rồi vô hiệu
hoá những dịch vụ không cần thiết (bằng cách bỏ đánh dấu các dịch vụ
không sử dụng với phím Space). Sau khi thoát ra khỏi ntsysv thì khởi
động lại máy: các dịch vụ không mong muốn sẽ không chạy nữa.
5.5. Không tiết lộ thông tin về hệ thống qua telnet
Dịch vụ cho phép truy xuất hệ thống từ xa telnet có khả nǎng tiết
lộ thông tin về hệ thống, dễ tạo điều kiện cho những kẻ phá hoại tấn
công dựa vào những điểm yếu đã biết. Điều này rất dễ nhận thấy: Mọi
người dùng kết nối từ xa vào dịch vụ telnet đều nhận được thông tin về
tên máy, phiên bản Linux và phiên bản của nhân (kernel) của máy chủ.
Để tránh điều này, ta cần thực hiện việc kích hoạt telnetd (telnet
server) với tham số -h. Do các phiên bản RedHat 7.x khi chạy telnetd
không còn sử dụng inetd nữa (mà sử dụng xinetd - một phiên bản nâng cấp
và có nhiều cải tiến so với inetd) nên cách cấu hình lại telnetd sẽ khác
nhau tuỳ theo phiên bản RedHat đang sử dụng.
+ Với các phiên bản RedHat 6.x và trước đó, thực hiện các bước sau:
Trong file /etc/inetd.conf, thay đổi dòng
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetdchuyển thành :
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
Tiếp theo, khởi động lại inetd bằng câu lệnh:
QUOTE
# /etc/rc.d/init.d/inetd restart
+ Với các phiên bản RedHat 7.x, thực hiện bước sau:
Trong file
QUOTE
/etc/xinetd.d/telnet
, thêm chọn lựa:
QUOTE
server_args = -h
File trên sẽ có dạng như sau;
QUOTE
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
server_args = -h
}
Tiếp theo, khởi động lại xinetd bằng câu lệnh:
QUOTE
# /etc/rc.d/init.d/xinetd restart
6.6. Tránh sử dụng các dịch vụ không mã hoá thông tin trên đường truyền
Mặc dù ở trên chúng tôi đã trình bày cách ngưng dịch vụ telnet tiết
lộ thông tin, nhưng chúng tôi xin có lời khuyên: Tuyệt đối tránh sử
dụng những dịch vụ kiểu như telnet, ftp (ngoại trừ ftp anonymous) vì
những dịch vụ này hoàn toàn không hề mã hoá mật khẩu khi truyền qua
mạng. Bất kỳ một kẻ phá hoại nào cũng có thể dễ dàng "tóm" được mật khẩu
của bạn bằng những công cỠ