Tài liệu Cài đặt hệ điều hành Linux Redhat 8.0

CÀI ĐẶT HỆ ĐIỀU HÀNH LINUX REDHAT  
8.0  
1. Một số điều lưu ý trước khi cài:  
Để cài RedHat 8.0 chạy trơn tru thoải mái, bạn cần hệ thống PII, 64MB Ram trở lên, và  
phân vùng ổ cứng dành để cài Linux cần khoảng 2GB trở lên. Tuy nhiên không có gì cản  
trở bạn cài Linux trên một hệ thống cấu hình thấp hơn, nhưng khi đó bạn chỉ thể  
chạy với các ứng dụng hạn chế trên hệ thống.  
· Nên tìm hiểu thông số cấu hình của hệ thống trước khi cài đặt. Điều này rất quan trọng,  
giúp bạn thuận lợi trong quá trình cấu hình hệ thống sau khi cài đặt. Bạn sẽ phải lựa chọn  
cho đúng thông số của các linh kiện phần cứng trong quá trình cấu hình hệ thống như: loại  
card màn hình, loại màn hình( tần số quét ngang, dọc), card mạng, card âm thanh. v.v.  
· Cần chuẩn bị phân vùng đĩa còn trống để cài Linux. Linux cần tối thiểu hai phân vùng là  
Linux Native (ext3) và Linux swap. Đơn giản, bạn thể dùng Partition Magic để phân chia  
đĩa.  
§ Một partition là Linux native ext3. Cần khoảng 2GB trở lên để cài Linux, bao gồm cả KDE  
và Gnome, các tiện ích đồ họa, multimedia, và lập trình. Tối thiểu bạn cần 400MB và cài  
toàn bộ là 4,5GB.  
§ Một partition là Linux swap, là phân vùng tráo đổi của Linux dành cho việc sử dụng bộ  
nhớ ảo, làm không gian trao đổi. Thông thường, dung lượng bộ nhớ ảo tối ưu sẽ gấp đôi  
dung lượng bộ nhớ RAM của hệ thống.  
2. Bắt đầu cài đặt:  
Cách đơn giản và thông dụng nhất để cài Redhat Linux là cài đặt từ bộ CDROM:  
Khởi động hệ thống từ bộ đĩa CD cài đặt ( CD số 1), và nhấn Enter từ dấu nhắc khởi động  
để mặc định cài đặt theo chế độ đồ hoạ. Chương trình cài đặt sẽ tự động dò thông số của  
bàn phím, chuột, card màn hình, màn hình và sau đó đi vào quá trình cài đặt. Thông qua  
từng bước wizard để bạn chọn các thông số về hệ thống như bàn phím, chuột, ngôn ngữ  
trong quá trình cài đặt, giờ hệ thống.  
a. Chọn kiểu cài đặt:  
- Personal Desktop: dành cho người mới bắt đầu với Linux hoặc cho những hệ thống  
desktop cá nhân. Chương trình cài đặt sẽ chọn lựa những gói phần mềm cần thiết nhất cho  
cấu hình này. Dung lượng đĩa cần cho kiểu cài đặt này chiếm khoảng 1,5GB, bao gồm cả  
môi trường đồ hoạ.  
- WorkStation: dành cho những trạm làm việc với chức năng đồ hoạ cao cấp và các công  
cụ phát triển.  
- Server: cài đặt hệ thống đóng vai trò máy chủ như webserver, ftpsever, SQL server.v.v.  
- Custom: đây lựa chọn linh hoạt cho bạn trong quá trình cài đặt. Bạn thể chọn các  
gói phần mềm, các môi trường làm việc, boot loader tuỳ theo ý bạn.  
b. Thiết lập phân vùng cài Linux:  
Đây là quá trình nhạy cảm nhất và nguy hiểm nhất trong quá trình cài đặt, chỉ cần bất  
cẩn chọn sai thì dữ liệu trên ổ cứng của bạn thể bị mất sạch.  
Chức năng “automatic partition” sẽ giúp bạn tự động tạo các phân vùng cho Linux. Hãy  
cẩn thận nếu bạn chọn option “remove all partition on this system”, vì như thế tất cả các  
phân vùng trên ổ cứng của bạn đều bị xoá. Option “remove all Linux partition on this  
system” sẽ chỉ xoá các phân vùng của Linux mà thôi  
Ở đây, để thuận tiện thì bạn thể dùng Partition Magic để phân chia đĩa trước. Tới giai  
đoạn này chỉ là công việc tạo định dạng cho phân vùng cài đặt mà thôi. Tuy nhiên bạn vẫn  
thể thao tác phân chia phân vùng cài đặt dễ dàng với Disk Druid.  
Thông thường, bạn nên chọn “ Manually partition with Disk Druid ” để tạo các phân vùng:  
· Một phân vùng chứa mount point là “/”, có kiểu file hệ thống là Linux Native ext3.  
· Một phân vùng swap cho Linux, kiểu của phân vùng này là Linux swap, kích thước tối ưu  
gấp đôi dung lượng RAM của hệ thống hiện tại.  
Các button trên màn hình giao diện cho phép bạn thao tác phân chia và định dạng phân  
vùng. Nút New, Delete để tạo mới hay xoá một phân vùng. Nút Edit để định dạng phân  
vùng đó, kiểu là gì (ext3, swap, fvat…), qui định lại kích thước, thư mục gì trong hệ  
thống phân cấp bộ nhớ.  
Bạn thể Reset quá trình thao tác nếu chưa thoả mãn yêu cầu của mình, chưa một  
thay đổi nào được thực hiện cho đến khi bạn hoàn thành công việc với Disk Druid.  
c. Cách quản đĩa trong Linux:  
Trong cấu trúc cây thứ bậc của Linux, cao nhất là “/”, dưới đó là /boot, /etc, /root, /mnt  
.v.v.  
Đối với Linux, mọi thiết bị phần cứng đều được coi như file hoặc thư mục nằm trong hệ  
thống phân cấp cây thư mục. Chẳng hạn hệ thống của bạn có hai ổ cứng thì đĩa cứng thứ  
nhất là /dev/had, ổ cứng thứ hai là /dev/hdb. Trong cùng một ổ dĩa, các hệ thống file được  
chia thành các phân vùng khác nhau. Một ổ cứng có 4 phân vùng chính (primary) được  
đánh số thứ tự từ 1 đến 4. tương ứng với ổ cứng đầu tiên sẽ là hda1, hda2 .v.v, phân vùng  
thuộc phần mở rộng (extended) được đánh số bắt đầu từ số 5: ví dụ hda5, hda6 …  
d. Cài đặt boot loader  
Đây chương trình dùng để khởi động Linux cũng như các hệ điều hành khác (dual boot)  
khi bạn nhiều hơn một hệ điều hành được cài trên hệ thống. Grub là boot loader mặc  
định khi cài RedHat 8.0. Đây chương trình rất mạnh uyển chuyển. Grub tự động dò  
các hệ điều hành hiện có trên hệ thống và thêm vào trong danh sách khởi động. Các tuỳ  
chọn trên màn hình tương đối dễ hiểu.  
Với tuỳ chọn “ configure advance boot loader option” cho phép bạn chọn việc cài grub lên  
đâu trong ổ cứng:  
Nếu chọn Grub để khởi động hệ thống , grub sẽ được cài lên Master boot record (  
/dev/hda).  
Nếu chọn một chương trình khác để khởi động như system commander chẳng hạn, bạn  
hãy chọn cài grub lên “first sector of boot partition”. Như vậy, system commander sẽ tự  
động nhận ra Linux và thêm vào mục nhập khởi động cho Linux.  
e. Cấu hình account:  
Việc cấu hình acount dùng để thiết lập mật khẩu root và có thể tạo thêm các account khác  
để log in vào hệ thống khi việc cài đặt hoàn tất.  
Tài khoản root là tài khoản quyền cao nhất trong hệ thống. Bạn thể cài đặt, cấu hình  
hệ thống hay làm mọi chuyện một khi đăng nhập vào hệ thống với tài khoản này.  
f. Các lưu ý lựa chọn gói phần mềm cài đặt:  
Với Redhat 8.0, việc chọn các gói phần mềm để cài đặt được thực hiện rất thuận tiên khi  
các gói phần mềm được gom lại thành nhóm. Có thể chọn cài các gói phần mềm ngay lúc  
này các gói cần thiết hoặc thể cài thêm sau khi hoàn tất cài đặt.  
Bạn chọn mục “select individual package” để cài thêm các gói mà mặc định sẽ không cài  
cho bạn. dụ như mc (Midnight Commander, tương tự NC trong DOS). Sau khi lựa chọn  
xong, chương trình cài đặt sẽ duyệt các gói phụ thuộc để bạn cài thêm.  
Trong suốt quá trình chọn gói phần mềm cài đặt, bạn được thông báo dung lượng cần để  
cài đặt. Nên chú ý để không vượt quá dung lượng phân vùng mà bạn đã dành cho Linux  
trong quá trình chọn lựa. Một điều chú ý là bạn nên cài các programming develop và  
kernerl source, các thư viện lập trình để thuận tiện cho việc sau này cần biên dịch lại nhân  
hệ điều hành hoặc cài đặt và biên dịch phần mềm và driver cho hệ thống.  
g. Cấu hình X  
Để làm việc được với giao diện đồ hoạ, bạn cần cấu hình cho X Window. Nếu may mắn,  
card đồ hoạ và màn hình của bạn sẽ nằm trong danh sách được Linux hỗ trợ. Còn nếu  
không, cách chắc chắn với loại card đồ họa để chạy được chọn loại vesa. Về màn hình,  
Linux sẽ tự dò cho bạn hoặc bạn sẽ cấu hình bằng tay việc chọn tần số quét cho màn hình.  
Hãy cẩn thận vì quá trình này dễ làm hỏng màn hình và card đồ hoạ của bạn. Đây chính là  
lý do bạn cần nắm vững thông số của các linh kiện phần cứng.  
Nếu không cần Linux tự dò tìm và cấu hình dùm bạn, bạn thể mở file  
/etc/X11/XF86Config (hoặc XF86Config-4) để cấu hình bằng tay.  
Sau khi nhấn nút test để kiểm tra hệ thống chạy tốt với chế độ đồ họa chưa, nếu mọi  
việc suôn sẻ, chúc mừng bạn đã hoàn tất quá trình cài đặt Linux.  
Lưu ý về card đồ họa  
Mặc dù Linux nhận dạng hỗ trợ đúng nhiều loại card đồ hoạ được sản xuất trong 2 năm  
gần đây, sau khi cấu hình, card đồ hoạ vẫn chạy với bus PCI cho dù card đồ họa của bạn là  
loại AGP, và bạn vẫn chưa tận dụng được các chứng năng đồ hoạ 3D cao cấp của nó. Lý do  
là các nhà sản xuất linh kiện vì lý do bảo mật bản quyền nên chưa hỗ trợ cho các nhà  
phát triển Linux. Tuy nhiên, hiện nay nhiều nhà sản xuất phần cứng đã bắt đầu hỗ trợ  
driver cho các linh kiện của mình trên các hệ thống Linux. Chẳng hạn với nhà sản xuất  
Nvidia, bạn thể tải driver của nó thông qua www.nvidia.com hoặc  
ftp://download.nvidia.com/XFree86_40/1.0-3123. Các game 3D chạy với hình ảnh rất mịn  
màng không thua kém gì trên MS Window sau khi bạn đã cài driver cho hệ thống.  
Cách cài đặt font và in ấn tiếng Việt trên  
Linux  
Có 2 cách cài đặt Unicode fonts cho X Window.  
1. Sử dụng ttmkfdir (cách cũ)  
2. Sử dụng fontconfig (cách mới cho Mandrake-9.0, RedHat-8.0)  
1. Sử dụng ttmkfdir (cách cũ):  
a. Tạo /usr/share/fonts, nếu chưa có, bằng lệnh:  
mkdir /usr/share/fonts  
b. Mở utf8.tar.gz trong thư mục /usr/share/fonts bằng lệnh:  
cd /usr/share/fonts && tar xvzf utf8.tar.gz  
c. Tạo danh sách chứa fonts bằng lệnh:  
cd utf8 && ttmkfdir > fonts.scale && mkfontdir  
d. Báo cho fonts server biết địa điểm của Unicode fonts bằng lệnh:  
chkfontpath --add /usr/share/fonts/utf8  
e. Khởi động lại X font server bằng lệnh:  
/etc/rc.d/init.d/xfs restart  
2. Sử dụng fontconfig (cách mới cho Mandrake-9.0, RedHat-8.0):  
a. Bỏ utf8.tar.gz vô /usr/share/fonts và mở nó ra bằng lệnh:  
cp utf8.tar.gz /usr/share/fonts && cd /usr/share/fonts && tar xvzf utf8.tar.gz  
b. Cập nhật danh sánch fonts bằng lệnh:  
fc-cache  
Chỉ vậy thôi không cần khởi động lại xfs hay X.  
Bạn cũng thể bỏ arial font (tải về địa chỉ ở dưới) vô trong ~/.fonts và không phải restart  
cái chi hết nếu bạn xài fontconfig (Red Hat 8 hoặc 9 hoặc Mandrake-9.1).  
dụ:  
cd ~  
mkdir ~/.fonts (nếu chưa có)  
tar xvjf arial.tar.bz2  
cp arialuni.ttf ~/.fonts  
Xem trang web tiếng Việt và cách in tiếng Việt:  
Thông thường nếu bạn xem trang web bằng Mozilla thì không cần phải set font gì cả. Nếu  
bạn xài Konqueror trên Red Hat 8.0 thì bạn phải set fonts trong Konqueror như hình ở đây  
thì mới xem và in được tiếng Việt.  
Nếu bạn xài bản Mandrake mới nhất (9.1) thì bạn sẽ không cần làm gì hết. Việc hiển thị và  
in ấn tiếng Việt được hỗ trợ rất tốt.  
Thêm chi tiết:  
.Unicode fonts: có thể tải về từ http://www.vnlinux.org/fonts/utf8.tar.gz hoặc  
http://www.vnlinux.org/arial.tar.bz2 nếu bạn vẫn chưa hiển thị được tiêng Việt 100%  
.fontconfig homepage tại http://www.fontconfig.org.  
.ttmkfdir có thể tải về từ http://www.joerg-pommnitz.de/TrueType/xfsft.html  
.mkfontdir nằm trong gói XFree86-3x (hoặc XFree86-4x)  
Thủ thuật bảo mật cho Linux  
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).  
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 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 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, dụ  
như lp, sync, shutdown, halt, news, uucp, operator, games, gopher, v.v... (Tuy  
nhiên bạn đọc cần biết 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 :  
# userdel  
dụ, nếu không có nhu cầu về in ấn trên hệ thống, thể xoá account lp như  
sau:  
# userdel lp  
Tương tự như vậy, thể thực hiện việc xoá bỏ các nhóm không cần thiết với lệnh  
# 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 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 ngược là có thể thực hiện được (và có thể  
thực hiện khá dễ dàng, đặc biệt 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ử 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 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 chẳng cần tốn một chút công sức nào cả.  
Để giảm nguy 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 đặ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 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 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 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. (Tham số -h sẽ ngǎn telnet tiết lộ các thông tin và chỉ in ra dấu nhắc  
"Login:" cho những người kết nối từ xa).  
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.telnetd  
chuyể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:  
# /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 /etc/xinetd.d/telnet , thêm chọn lựa:  
server_args = -h  
File trên sẽ dạng như sau;  
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:  
# /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 trên chúng tôi đã trình bày cách ngǎn 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ụ nghe lén kiểu như  
sniffer.  
Ơ' những trường hợp thể, nên sử dụng dịch vụ ssh thay thế cho cả ftp và  
telnet: dịch vụ SSH (Secure Shell) dùng cơ chế mã hoá công khai để bảo mật  
thông tin, thực hiện mã hoá cả mật khẩu lẫn thông tin chuyển trên đường truyền.  
Hiện đang được sử dụng khá rộng rãi, gói phần mềm của SSH cũng được đóng  
kèm trong hầu hết các phiên bản gần đây của Linux. Chẳng hạn, các phiên bản  
RedHat từ 7.0 trở lên mặc định đều cài OpenSSH, một sản phẩm nguồn mở có  
thể sử dụng hoàn toàn miễn phí. (Bạn đọc thể tham khảo website  
www.openssh.org về sản phẩm này).  
Ngoài ra, những dịch vụ "r" kiểu như rsh, rcp hay rlogin chúng tôi cũng khuyên  
nên tuyệt đối tránh sử dụng. Lý do là các dịch vụ này ngoài việc truyền mật khẩu  
không mã hoá còn thực hiện việc kiểm tra quyền truy xuất dựa trên địa chỉ máy  
kết nối, một điều cực kỳ nguy hiểm. Các kẻ phá hoại sử dụng kỹ thuật spoofing  
đều thể dễ dàng đánh lừa được cách kiểm tra này khi "làm giả" được địa chỉ  
của máy truy xuất dịch vụ hợp lệ.  
7. 7. Cấm sử dụng account root từ consoles  
thể bạn đọc đều nhận thấy, ngay sau khi cài đặt RedHat, account root sẽ  
không có quyền kết nối telnet vào dịch vụ telnet trên hệ thống (chỉ những  
account thường mới thể kết nối). Nguyên nhân là do file /etc/securetty quy  
định những console được phép truy nhập bởi root chỉ liệt những console "vật  
lý" (tức chỉ truy xuất được khi ngồi trực tiếp tại máy chủ) bỏ qua những kết  
nối qua mạng. Dịch vụ ftp cũng sẽ bị hạn chế này: account root không được phép  
truy xuất ftp qua mạng.  
Để tǎng tính bảo mật hơn nữa, soạn thảo file /etc/securetty và bỏ đi những  
console bạn không muốn root truy nhập từ đó.  
8.8. Cấm "su" lên root  
Trong Linux, lệnh su (Substitute User) cho phép người dùng chuyển sang một  
account khác. Nếu không muốn một người bất kỳ "su" thành root, thêm hai dòng  
sau vào nội dung file /etc/pam.d/su  
auth sufficient /lib/security/pam_rootok.so debug  
auth required /lib/security/Pam_wheel.so group=wheel  
Như vậy, chỉ những người đǎng ký là thành viên của nhóm wheel mới có  
quyền "su" thành root. Để cho phép một người dùng có quyền này, người quản trị  
chỉ việc gán account của người này vào nhóm wheel (qua file /etc/group)  
9.9. Hạn chế các thông tin ghi bởi bash shell  
Thông thường, tất cả các lệnh được thực hiện tại dấu nhắc shell của các account  
đều được ghi vào file ".bash_history" nằm trong thư mục cá nhân của các  
account. Điều này cũng gây nên những nguy hiểm tiềm ẩn, đặc biệt với những  
ứng dụng đòi hỏi phải gõ các thông mật như mật khẩu trên dòng lệnh. Người  
quản trị nên hạn chế nguy này dựa trên 2 biến môi trường HISTFILESIZE và  
HISTSIZE: Biến môi trường HISTFILESIZE xác định số lệnh (gõ tại dấu nhắc shell)  
sẽ được lưu lại cho lần truy nhập sau, còn biến môi trường HISTSIZE xác định số  
lệnh sẽ được ghi nhớ trong phiên làm việc hiện thời. Ta có thể giảm giá trị của  
HISTSIZE và đặt bằng 0 giá trị HISTFILESIZE để giảm tối đa những nguy hiểm đã  
nêu trên.  
Để thực hiện việc này, chỉ cần đơn giản thay đổi giá trị hai biến này trong file  
/etc/profile như sau:  
HISTFILESIZE=0  
HISTSIZE=20  
Như vậy, tại phiên làm việc hiện thời, shell chỉ ghi nhớ 20 lệnh gần nhất, đồng  
thời không ghi lại các lệnh người dùng đã gõ khi người dùng thoát ra khỏi shell.  
10.10. Cấm nhòm ngó tới những file script khởi động Linux  
Khi khởi động Linux, các file script được đặt tại thư mục /etc/rc.d/init.d sẽ được  
thực hiện. Để tránh những sự tò mò không cần thiết, người quản trị nên hạn chế  
quyền truy xuất tới những file này chỉ cho account root bằng lệnh sau:  
# chmod -R 700 /etc/rc.d/init.d/*  
11.11. Xoá bỏ những chương trình SUID/SGID không sử dụng  
Thông thường, những ứng dụng được thực hiện dưới quyền của account gọi thực  
hiện ứng dụng. Tuy nhiên, Unix và Linux sử dụng một kỹ thuật đặc biệt cho phép  
một số chương trình thực hiện dưới quyền của người quản chương trình (chứ  
không phải người thực hiện). Đây chính là lý do tại sao tất cả mọi user trong hệ  
thống đều thể đổi mật khẩu của mình trong khi không hề quyền truy xuất  
lên file /etc/shadow: Nguyên nhân vì lệnh passwd có gán thuộc tính SUID và  
được quản bởi root, mà chỉ có root mới quyền truy xuất /etc/shadow.  
Tuy nhiên, khả nǎng này có thể gây nên những nguy cơ tiềm tàng: Nếu một  
chương trình có tính nǎng thực thi được quản bởi root, do thiết kế tồi hoặc do  
được cài đặt cố tình bởi những kẻ phá hoại lại thuộc tính SUID thì mọi điều  
tồi tệ đều thể xảy ra. Thực tế cho thấy, khá nhiều kỹ thuật xâm nhập hệ thống  
mà không có quyền root được thực hiện nhờ kỹ thuật này: kẻ phá hoại bằng cách  
nào đó tạo được một shell (ví dụ bash) được quản bởi root, có thuộc tính SUID.  
Sau đó mọi truy xuất phá hoạt sẽ được thực hiện qua shell này vì mọi lệnh thực  
hiện trong shell sẽ được thực hiện dưới quyền của root.  
Thuộc tính SGID cũng tương tự như thuộc tính SUID: các chương trình được thực  
hiện với quyền nhóm là nhóm quản chương trình chứ không phải nhóm của  
người chạy chương trình.  
Như vậy, người quản trị sẽ phải thường xuyên kiểm tra xem trong hệ thống có  
những ứng dụng nào có thuộc tính SUID hoặc SGID mà không được phép không?  
Để tìm tất cả các file có thuộc tính SUID/SGID, sử dụng lệnh find như sau:  
# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls ưlg {} \;  
Nếu phát hiện được một file có thuộc tính SUID/SGID một cách không cần thiết,  
thể loại bỏ các thuộc tính này bằng lệnh:  
# chmod a-s  
12.12. Tǎng tính bảo mật cho nhân (kernel) của Linux  
Thực tế cho thấy, Linux không hẳn được thiết kế với các tính nǎng bảo mật thật  
chặt chẽ: khá nhiều lỗ hổng thể bị lợi dụng bởi những tin tặc thông thạo về hệ  
thống. Do đó, việc sử dụng một hệ điều hành với nhân được củng cố rất quan  
trọng: Một khi nhân - phần cốt lõi nhất của hệ điều hành - được thiết kế tốt thì  
nguy cơ bị phá hoại sẽ giảm đi rất nhiều.  
Bạn đọc thể xem xét việc củng cố nhân Linux thông qua các miếng vá (patch).  
Tôi xin giới thiệu một trong những website tốt nhất chuyên cung cấp các miếng  
bổ sung cho nhân Linux về bảo mật tại địa chỉ www.grsecurity.net. Tại đây bạn  
đọc thể tìm hiểu thông tin hữu ích và tải xuống các miếng bổ sung cho hệ  
thống Linux của mình.  
Bảo mật hệ thống *nix với PAM  
1. Đặt vấn đề  
Chắc hẳn bạn đã từng tự hỏi tại sao các chương trình ftp, su, login, passwd, sshd, rlogin …  
lại thể hiểu và làm việc với shadow password; hay tại sao các chương trình su, rlogin lại  
đòi hòi password; tại sao một số hệ thống chỉ cho một nhóm nào đó quyền su, hay  
sudo, hay hệ thống chỉ cho phép một số người dùng, nhóm người dùng đến từ các host xác  
định và các thiết lập giới hạn cho những người dùng đó, …Tất cả đều thể giải với PAM.  
Ứng dụng của PAM còn nhiều hơn những gì tôi vừa nêu nhiều, và nó bao gồm các module  
để tiện cho người quản trị lựa chọn.  
2. Cấu trúc PAM  
- Các ứng dụng PAM được thiết lập trong thư mục /etc/pam.d hay trong file /etc/pam.conf  
( login, passwd, sshd, vsftp, …)  
- Thư viện các module được lưu trong /lib/security ( pam_chroot.so, pam_access.so,  
pam_rootok.so, pam_deny.so, … )  
- Các file cấu hình được lưu trong /etc/security ( access.conf, chroot.conf, group.conf ,… )  
+access.conf – Điều khiển quyền truy cập, được sử dụng cho thư viện pam_access.so.  
+group.conf – Điểu khiển nhóm người dùng, sử dụng bởi pam_group.so  
+limits.conf – thiết lập các giới hạn tài nguyên hệ thống, được sử dụng bởi pam_limits.so.  
+pam_env – Điểu khiển khả năng thay đổi các biến môi trường, sử dụng cho thư viện  
pam_env.so .  
+time – Thiết lập hạn chế thời gian cho dịch vụ quyền người dùng, sử dụng cho thư  
viện pam_time.so.  
3. Cách hoạt động của PAM  
Thuật ngữ  
- Các chương trình login, pass, su, sudo, … trên được gọi là privilege-granting application (  
chương trình trao đặc quyền ).  
- PAM-aware application: là chương trình giúp các privile-granting application làm việc với  
thư viện PAM.  
Các bước hoạt động:  
1. Người dùng chạy một ứng dụng để truy cập vào dịch vụ mong muốn, vd login.  
2. PAM-aware application gọi thư viện PAM để thực hiện nhiệm vụ xác thực.  
3. PAM library sẽ dựa vào file cấu hình của chương trình đó trong /etc/pam.d ( vd ở đây là  
login -> file cấu hình /etc/pam.d/login ) xác định loại xác thực nào được yêu cầu cho  
chương trình trên. Trong trường hợp không có file cấu hình, thì file /etc/pam.d/other sẽ  
được sử dụng.  
4. PAM library sẽ load các module yêu cầu cho xác thực trên.  
5. Các modules này sẽ tạo một liên kết tới các hàm chuyển đổi ( conversation functions )  
trên chương trình.  
6. Các hàm này dựa vào các modules mà đưa ra các yêu cầu với người dùng, vd chúng yêu  
cầu người dùng nhập password.  
7. Người dùng nhập thông tin vào theo yêu cầu.  
8. Sau khi quá trình xác thực kết thúc, chương trình này sẽ dựa vào kết quả đáp ứng  
yêu cầu người dùng ( vd cho phép login vào hệ thống ) hay thông báo thất bại với người  
dùng.  
4. Bây giờ chúng ta sẽ nghiên cứu file config  
Listing 10-1: The /etc/pam.d/rlogin file  
#%PAM-1.0  
auth required /lib/security/pam_securetty.so  
auth sufficient /lib/security/pam_rhosts_auth.so  
auth required /lib/security/pam_stack.so service=system-auth  
auth required /lib/security/pam_nologin.so  
account required /lib/security/pam_stack.so service=system-auth  
password required /lib/security/pam_stack.so service=system-auth  
session required /lib/security/pam_stack.so service=system-auth  
Các dòng trong file config có dạng sau:  
module-type control-flag module-path module-args  
----MODULE TYPE  
auth: thực hiện xác thực. Thông thường, một auth module sẽ yêu cầu password để kiểm  
tra, hay thiết lập các định danh như nhóm người dùng, hay thẻ kerberos.  
Account điều khiển sự kiểm tra “bề mặt” với yêu cầu xác thực. dụ, nó có thể kiểm tra  
người dùng truy cập dịch vụ từ một host và trong thời gian cho phép hay không.  
Password: thiết lập password. Thông thường, nó luôn có sự tương ứng giữa một module  
auth và một module password..  
Session: điều khiển các nhiệm vụ quản lý session. Được sử dụng để đảm bảo rằng người  
dùng sử dụng tài khoản của họ khi đã được xác thực..  
----PAM MODULE CONTROL FLAGS  
Require: cờ điều khiển này nói với PAM library yêu cầu sự thành công của modules tương  
ứng, vd “auth required /lib/security/pam_securetty.so” à module pam_securetty.so phải  
thành công. Nếu module đó không được thực hiện thành công thì quá trình xác thực thất  
bại. Nhưng lúc đó, PAM vẫn tiếp tục với các module khác, tuy nhiên nó chỉ có tác dụng  
nhằm tránh khỏi việc người dùng có thể đoán được quá trình này đã bị thất bại ở giai đoạn  
nào.  
Sufficient: cờ này khác với cờ trên ở chỗ, khi có một module thực hiện thành công nó sẽ  
thông báo hoàn thành ngay quá trình xác thực, mà không duyệt các module khác nữa.  
Requisite: cờ này có ý nói PAM library loại bỏ ngay quá trình xác thực khi gặp bất kỳ thông  
báo thất bại của module nào.  
Optional: cờ này ít khi được sử dụng, nó có ý nghĩa là module này được thực hiện thành  
công hay thất bại cũng không quan trọng, không ảnh hưởng quá trình xác thực.  
----MODULE-PATH – Đường dẫn đên thư viện PAM.  
----ARGUMENTS – Các biến tùy chọn cho các module.  
Các module ( auth, account, password, session ) được thực hiện trong stack và chúng được  
thực hiện theo thứ tự xuất hiện trong file config.  
Các chương trình yêu cầu xác thực đều thể sử dụng PAM.  
5.Sau đây tôi xin giới thiệu chức năng của một số module  
_ pam_access.so:  
- Support module type :account  
- Module này sử dụng file thiết lập trong etc/security/access.conf .  
File cấu hình này có dạng như sau:  
< + or - > : : + : grant permission  
- : deny permission  
Với username list là người dùng hay nhóm người dùng, tty list là login qua console, host  
list xác định các host hay domain. Chúng ta có thể sử dụng các từ khóa ALL=tất cả,  
EXCEPT=trừ, LOCAL=cục bộ.  
dụ sau cho cấm osg login từ tất cả, và cho phép linet login từ xa.  
account required pam_access.so  
-:osg:ALL  
+:linet:ALL EXCEPT LOCAL  
pam_chroot.so:  
Support module type :account; session; authentication  
Dùng để chroot cho các user thiết lập trong /etc/security/chroot.conf  
dụ, tôi thực hiện chroot cho sshd để người dùng linet chỉ quyền truy cập trong  
/home/osg mà không có quyền truy cập đến các thư mục home của người dùng khác  
Thêm dòng sau trong /etc/pam.d/sshd ( lưu ý trong /etc/sshd/sshd_config phải thiết lập  
UsePAM = yes )  
session required pam_chroot.so  
_ pam_deny.so:  
Support module type: account; authentication; password; session  
Module này luôn trả về giá trị false. Vd nó được dùng trong /etc/pam.d/other để từ chối  
mọi truy cập của người dùng khi truy cập vào các PAM-aware program mà không có file  
cấu hình PAM  
- Acount module type: Từ chối người dùng quyền truy cập vào hệ thống  
#add this line to your other login entries to disable all accounts  
login account required pam_deny.so  
- Authentication module type: từ chối truy cập, thiết lập giá trị mặc định. vd trong  
/etc/pam.d/other. Khi người dùng login vào hệ thống, đầu tiên sẽ gọi các module trong  
/etc/pam.d/login ra và yêu cầu người dùng nhập thông tin tương ứng ( username,  
password ), nếu các thông tin này không đáp ứng thì PAM sẽ gọi /etc/pam.d/other ra để  
deny quyền truy cập.  
#/etc/pam.d/other  
auth required /lib/security/$ISA/pam_deny.so  
account required /lib/security/$ISA/pam_deny.so  
password required /lib/security/$ISA/pam_deny.so  
session required /lib/security/$ISA/pam_deny.so  
- Password module type: Không cho phép change password  
dụ không cho phép người dùng đổi passwd  
Thêm dòng sau vào /etc/pam.d/passwd  
password required pam_deny.so  
_ pam_limits.so  
- Support module type: session  
Thiết lập các giới hạn tài nguyên trong /etc/security/limit  
username|@groupname type resource limit.  
A resource can be one of these keywords:  
· core - Limits the size of a core file (KB).  
· data - Maximum data size (KB).  
· fsize - Maximum file size (KB).  
· memlock - Maximum locked-in memory address space (KB).  
· nofile - Maximum number of open files.  
· rss - Maximum resident set size (KB).  
· stack - Maximum stack size (KB).  
· cpu - Maximum CPU time in minutes.  
· nproc - Maximum number of processes.  
· as - Address space limit.  
· maxlogins - Maximum number of logins allowed for this user.  
Thông tin chi tiết ở trong /etc/security/limits.conf  
Vd dưới đây, tất cả user giới hạn 10 MB mỗi session và cho phép max là 4 logins đồng thời.  
ftp được cho phép 10 login đồng thời ( hứu ích cho anonymous ftp ); thành viên của nhóm  
manager giới hạn 40 process, nhóm developers giới hạn 64MB bộ nhớ, và các user thuộc  
wwwusers không thể tạo files lớn hơn 50 MB = 500000 KB.  
Listing 3. Setting quotas and limits  
Tải về để xem bản đầy đủ
doc 32 trang baolam 09/05/2022 4120
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Cài đặt hệ điều hành Linux Redhat 8.0", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • doctai_lieu_cai_dat_he_dieu_hanh_linux_redhat_8_0.doc