Tải bản đầy đủ (.pdf) (15 trang)

Mẹo giữ server Ubuntu Linux của bạn an toàn ppt

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 (203.3 KB, 15 trang )






Mẹo giữ server Ubuntu Linux của bạn an toàn

Khi là quản trị viên hệ thống, một trong những nhiệm vụ trọng yếu của
bạn là xử lý các vấn đề bảo mật server. Nếu server của bạn được kết nối
Internet, bạn nên đặt nó trong vùng xung đột. Nếu đó chỉ là một server nội
bộ, bạn vẫn cần xử lý (có thể là một cách ngẫu nhiên) những đối tượng nguy
hiểm, các nhân viên chống đối hay gã kế toán nào đó muốn đọc trộm e-mail
bí mật của sếp.

Thông thường Ubuntu Server rất an toàn.
Ubuntu Server Team - nhóm sản xuất các phiên
bản update bảo mật văn phòng - đã thực hiện lần
lột xác thành công nhất trong lịch sử ngành
công nghiệp bảo mật với Ubuntu Server.
Ubuntu không được gắn với chính sách cổng mở. Có nghĩa là sau khi bạn cài
đặt, để chế dộ desktop hay server cho Ubuntu xong, mặc định sẽ không có
chương trình ứng dụng nào chấp nhận kết nối đến internet. Giống như
Ubuntu desktop, Ubuntu Server sử dụng cơ chế sudo trong quản trị hệ thống,
tránh sử dụng tài khoản gốc. Các bản update bảo mật còn được bảo hành ít
nhất 18 tháng sau khi phát hành (một số bản lên đến 5 năm như Dapper) và
hoàn toàn miễn phí.

Trong phần này chúng tôi muốn bàn về vấn đề bảo mật file hệ thống, các giới
hạn nguồn hệ thống, xử lý các bản ghi và an ninh mạng. Nhưng bảo mật
trong Linux là một đề tài khó và rộng lớn nên chúng tôi chỉ xin cung cấp cho
các bạn một số cách giải quyết xung đột cơ bản. Để trở thành một quản trị


viên tốt, bạn nên quan tâm tới vấn đề này và học hỏi thêm từ các nguồn khác
mà chúng tôi sẽ cung cấp trong bài.

Quản trị tài khoản người dùng

Nhiều khía cạnh quản trị người dùng của hệ thống Linux được thực hiện nhất
quán trên các phân phối của nó. Trước đây, hãng Debian cung cấp một số tiện
ích như mã lệnh useadd, giúp bạn quản trị dễ dàng hơn. Sau này Ubuntu kế
thừa đầy đủ mô hình quản trị người dùng của Debian. Chúng ta sẽ không đi
sâu vào chi tiết của Debian mặc dầu nó được coi là mô hình chuẩn trong quản
trị người dùng. Các bạn muốn tìm hiểu thêm có thể tham khảo tại website của
O’Reilly. Vấn đề chúng ta quan tâm ở đây là sự khác biệt của Ubuntu với mô
hình chuẩn: sudo.

Ubuntu không cho phép đặt mặc định root, administrator, account. Nó có
cách xử lý lợi ích bảo mật khá hay và một số phương án giảm cấp đáng kinh
ngạc. Đó là văn bản hoá tất cả trong các trang chính của file gốc sudo_root.

Trong quá trình cài đặt, bạn thêm vào người dùng nào thì mặc định người
dùng đó sẽ được đặt trong nhóm admin và có thể dùng sudo để thực hiện các
nhiệm vụ quản trị hệ thống. Sau khi thêm tên người dùng mới vào hệ thống,
bạn có thể đưa họ vào nhóm admin bằng câu lệnh:

$ sudo adduser username admin

Nếu muốn loại một người nào ra khỏi nhóm admin, đơn giản bạn chỉ cần đặt
lệnh deluser thay thế adduser.

Một điều bạn nên chú ý là sudo không chỉ cung cấp quyền truy cập thư mục
gốc. Nó còn có thể điều khiển các quyền nhỏ bên trong, chẳng hạn như việc

ra lệnh: “chỉ cho phép người dùng này thực thi 3 câu lệnh với các đặc quyền
của superuser”

Tài liệu mô tả các quyền này nằm trong trang “sudoers” nhưng nó khá khó
hiểu. Bạn chỉ cảm thấy rõ ràng hơn đôi chút khi đọc đến phần ví dụ của nó,
tài liệu này cung cấp hầu hết các tình huống bạn cần dùng đến sudo. Khi đã
thực sự hiểu, đơn giản bạn chỉ cần chạy câu lệnh:

$ visudo

Ở đây bạn phải cẩn thận. Cơ sở dữ liệu sudoers, nằm trong “/etc/sudoers”
không mở được bằng một trình soạn thảo. Bởi vì một trình soạn thảo không
thể kiểm tra được cú pháp.

Nếu bạn làm rối cơ sở dữ liệu sudoers, có thể bạn sẽ phải tự mình tra tìm dữ
liệu mà không thể trở thành người quản trị được.

Bảo mật hệ thống file

Mô hình bảo mật file được chuẩn hoá trong hầu hết các hệ thống tựa Unix và
được gọi là mô hình POSIX. Mô hình này có 3 quyền truy cập file và thư
mục mở rộng cho: người sở hữu, nhóm và các đối tượng khác. Tất cả đều
được thực hiện giống nhau tại bất kỳ phân phối Linux nào. Đó là lý do vì sao
chúng ta không tập trung phân tích kỹ vấn đề này. Các bạn có thể tham khảo
thêm tại các trang “chmod” và “chown” trong phần trợ giúp của Linux hoặc
trên Internet.

Bây giờ chúng ta sẽ tập trung vào việc phân vùng bảo mật thông qua các tuỳ
chọn lắp ghép, một vấn đề quan trọng cần chú ý khi xử lý bảo mật hệ thống.
Việc phân vùng sẽ có tác động mạnh nếu được dùng thích hợp. Khi giải thích

cách thức phân vùng hệ thống chúng tôi đã nhấn mạnh ưu điểm của Linux
trong việc cung cấp các thư mục “/home”, “/tmp”, “/var” cho các phân vùng
riêng. Các thư mục này đề cập đến cách dùng các tuỳ chọn đặc biệt khi ghép
các phần vùng vào hệ thống file.

Nhiều tuỳ chọn lắp ghép là kiểu hệ thống file phụ thuộc. Nhưng những tuỳ
chọn chúng ta xét đến không phải loại này. Chúng ta có một số tuỳ chọn sau:

nodev: Một hệ thống file lắp ghép với tuỳ chọn nodev sẽ không cho phép sử
dụng hay tạo các file “device” đặc biệt. Chẳng có lý do tốt đẹp nào khi cho
phép hệ thống file biên dịch các ổ đặc biệt block, character vì như thế tức là
cho phép chúng tạo ra các nguy hiểm bảo mật tiềm ẩn.

nosuid Các file trong Unix nói chung và trong Linux nói riêng đều có thể
được đánh dấu bằng cờ để cho phép một người nào đó thực thi file bằng
quyền của người khác hay nhóm khác, thông thường là của người quản trị hệ
thống. Cờ này được gọi là setuid (suid) hay cờ nhị phân setgid bit. Nó cũng
cho phép thực thi file bên ngoài thư mục chứa các mã nhị phân hệ thống
không cần thiết, làm giảm độ an toàn. Nếu một người dùng được quyền sử
dụng thì anh ta có thể tạo hoặc lấy một cờ nhị phân suid theo cách chọn riêng.
Sau đó có thể sử dụng hệ thống một cách hiệu quả.

noexec: nếu một hệ thống file được đánh dấu cờ là noexec, người dùng sẽ
không thể chạy bất kỳ chương trình thực thi nào nằm trong nó.

noatime cờ này nói rằng hệ thống file không giữ bản ghi lần truy cập cuối
cùng của các file. Nếu sử dụng một cách bừa bãi có thể khiến giảm an toàn hệ
thống. Vì nó giới hạn thông tin ghi sự cố bảo mật. Cờ này cũng cung cấp các
lợi ích thực thi cho bất kỳ kiểu dùng nào. Bạn nên dùng trên các phân vùng,
nơi bảo mật cân bằng với tốc độ.


Quyết định sử dụng tuỳ chọn lắp ghép nào trong phân vùng nào là một kỹ
thuật cao. Bạn sẽ thường xuyên phải phát triển các tham chiếu khi trở nên
quen thuộc hơn với cơ chế quản trị. Dưới đây là kiểu lựa chọn cơ bản các bạn
có thể tham khảo. Tất nhiên các bạn có thể lựa chọn kiểu khác, nhưng nên bắt
đầu bằng kiểu cơ bản này:
• /home-nosuid, nodev
• /tmp-noatime, noexec, nodev, nosuid
• /var-noexec, nodev, nosuid

Giới hạn nguồn hệ thống

Mặc định Linux sẽ không sử dụng bất kỳ giới hạn nguồn nào trong các tiến
trình của người dùng. Điều này có nghĩa là bất kỳ người dùng nào đều được
tự do lấp đầy bộ nhớ làm việc trên máy, hoặc sinh ra các tiến trình lặp vô hạn,
trả lại hệ thống không dùng được trong vài giây. Giải pháp khắc phục là thiết
lập một số giới hạn nguồn bằng cách chỉnh sửa file “/etc/security/limits.conf”:

$ sudoedit /etc/security/limits.conf

Các thiết lập đều được giải thích trong các comment bên trong file. Các bạn
nên dùng ít nhất là giới hạn “nproc” hoặc cũng có thể là
“as/data/_memlock/rss”.

Mẹo nhỏ: một ví dụ giới hạn nguồn real-life

Chúng tôi mới chỉ giới thiệu sơ lược về các giới hạn như thế nào trên các
server sản xuất. Dưới đây là cấu hình server đăng nhập chung của Bộ môn
khoa học máy tính, trường đại học Harvard, Hoa Kỳ:
as 2097152

___________________

data 131072
___________________

memlock 131072
___________________

rss 1013352
___________________

hard nproc 128

Các giới hạn này quy định người dùng có thể sử dụng 128 tiến trình, với
không gian địa chỉ lớn nhất là 2GB, kích thước dữ liệu nhỏ nhất và địa chỉ
được khoá trong bộ nhớ là 128MB, giới hạn kích thước tập hợp lưu trú lớn
nhất là 1GB.

Các file bản ghi hệ thống

Khi là một quản trị viên hệ thống, các file bản ghi log là một trong số những
người bạn tốt nhất của bạn. Nếu bạn theo dõi các file này một cách thưòng
xuyên, cẩn thận, bạn sẽ phát hiện được lỗi sai trong hệ thống ngay khi nó vừa
xuất hiện. Do đó bạn có thể giải quyết được hầu hết mọi vấn đề trước khi
chúng kịp phát sinh.

Đáng tiếc, khả năng quan tâm tới các file log này ngày càng giảm. Vì thế các
quản trị viên thường chỉ sử dụng phần mềm thực hiện tiến trình log, cảnh báo
họ một số sự kiện nào đó, hoặc ghi các tuỳ chọn riêng của họ theo một số
ngôn ngữ như Perl và Python.


Các bản ghi log thường nằm trong thư mục “/var/log”. Sau khi server của bạn
chạy được một lúc, bạn sẽ thấy có rất nhiều phiên bản file log cũ đang tăng
lên trong thư mục này. Nhiều trong số chúng được nén trong chương trình
nén gzip (với đuôi mở rộng là “.gz”).

Dưới đây là một số file log cần chú ý:
 /var/log/syslog – file log hệ thống thông thường
 /var/log/auth.log – các file log thẩm định hệt thống
 /var/log/mail.log các file log thư hệ thốngsystem
 /var/log/messages – các tin nhắn log thông thường
 /var/log/dmesg – tin nhắn bộ đệm chuông ở nhân kernel, thông thường
từ khi khởi động hệ thống.
Hộp công cụ Toolbox Log

Khi xem lại các file log, có một vài công cụ lựa chọn mà bạn phải sử dụng
thuần thục. Phần cuối của các tiện ích được in ra đặt mặc định là mười dòng
cuối cùng của file, đây là tùy chọn gọn nhỏ cho biết thông tin về lần cuối
cùng truy cập vào file log.

$ tail /var/log/syslog

Với tham số -f, phần đuôi được đưa vào theo mẫu dưới, nó sẽ mở các file và
thể hiện sự thay đổi trên màn hình cho bạn biết.

Các file z.grep, zcat, zless cũng hoạt động giống như các file tương ứng
không có chữ “z” ở đầu. Các file này là kiểu file nén của gzip. Ví dụ, để lấy
ra danh sách các dòng trong tất cả file log nén có từ “warthog” bạn chỉ cần
cung cấp câu lệnh sau:


$ zgrep -i warthog /var/log/*.gz

Hộp công cụ Toolbox của bạn xử lý các log phát triển theo kinh nghiệm và
dựa trên các tham chiếu của bạn nhưng bạn nên tìm kiếm trong apt-cache các
file log trước.

Một chút về bảo mật mạng

Quản trị bảo mật mạng là một thành phần khác, được hệ điều hành cung cấp
theo mảng khá rộng. Giữa Ubuntun và các mô hình phân phối khác của Linux
không có sự khác nhau nhiều lắm.

Câu lệnh iptables là phần mặt trước tới các bảng tường lửa rất mạnh của
Linux. Thật không may, thao tác xử lý với iptables có thể khó hơn nhiều nhất
là khi bạn đang cố gắng thiết lập các chính sách firewall tổng hợp. Câu lệnh
dưới đây xoá tất cả các gói dữ liệu đến từ một tên miền xấu:

$ sudo iptables -A INPUT -s www.slashdot.org -j DROP

Các tài liệu hướng dẫn, các cách thức thực hiện và các bài báo về iptables có
trên Internet với số lượng lớn và hệ thống trang chính cung cấp thông tin chi
tiết về các tuỳ chọn thích hợp. Bạn nên bỏ ra một chút thời gian học về
iptables vì nó sẽ cho phép bạn cài đặt chế độ bảo mật an toàn trên bất kỳ cơ
chế Linux nào và sẽ dễ dàng hơn khi học về các hệ thống tường lửa OS khác.

Những điểm cần chú ý cuối cùng về bảo mật

Trong bài này chúng ta mới chỉ lướt qua các vấn đề bề mặt của bảo mật hệ
thống. Mặc dù chúng tôi đã cố gắng cung cấp cho các bạn các gợi ý hay về
điểm bắt đầu và nơi có thể học hỏi thêm. Nhưng thật sự là không có một hệ

thống bảo mật hoàn hảo nào cả. Bảo mật không có nghĩa là xoá bỏ được hoàn
toàn các vi phạm, mà chỉ là làm cho chúng trở nên khó bị khai thác, khó bị
tấn công. Định nghĩa này có thể bị thay đổi dễ dàng. Bởi nó còn phụ thuộc
vào kẻ tấn công. Nếu kẻ tấn công là một đứa trẻ bụi đời, sống trong tầng hầm,
nhai bánh pizza lạnh thì nó có thể chán nản, dễ dàng bỏ cuộc nếu hàng rào an
ninh của bạn quá an toàn. Nhưng nếu bạn đang giữ các thông tin bí mật đắt
giá thì cho dù hệ thống bảo mật có an toàn đến đâu vẫn có thể bị phá vào một
ngày nào đó. Bởi hoạt động phá hoại lúc này xuất phát từ quan điểm giá cả,
lợi nhuận của kẻ tấn công.

Bảo mật cũng khá rõ ràng, vì nó được phát triển như là một khái niệm trong
khoa học máy tính. Muốn bảo mật thật tốt đòi hỏi phải thực sự hiểu sâu về
các hoạt động bên trong hệ thống máy tính. Tuy nhiên cũng sẽ chẳng có cải
tiến đáng kể nào nếu bạn hiểu sâu về nó mà không biết bắt đầu từ đâu. Các
bạn có thể bắt đầu ngay từ hôm nay, theo những tham khảo ở trên, và dùng
nó để nâng cao kiến thức bảo mật sau này của bạn.

×