LILO và GRUB

Một phần của tài liệu Tìm hiểu về hệ điều hành Linux (Trang 51 - 77)

LILO và GRUB là các trình quản lý khởi động trong Linux . Như chúng ta đã biết , khi một máy tính bắt đầu khởi động , bộ vi xử lý sẽ tìm đến cuối vùng nhớ hệ thống của BIOS và thực hiện các chỉ thị ở đó. BIOS sẽ kiểm tra hệ thống , tìm và kiểm tra các thiết bị , tìm kiếm đĩa chứa trình khởi động . Thông thường , BIOS sẽ kiểm tra ổ đĩa mềm , hoặc CDROM xem có thể khởi động từ chúng được không , rồi sau đó đến đĩa cứng . Thứ tự của việc kiểm tra các ổ đĩa phụ thuộc vào các cài đặt trong BIOS. Khi kiểm tra ổ cứng , BIOS tìm đến MBR (Master Boot Record – sector đầu tiên của ổ đĩa đầu tiên ) và nạp vào vùng nhớ hoạt động chuyển quyền điều khiển cho nó.

MBR chứa các chỉ dẫn cho biết cách nạp các trình quản lý khởi động (LILO/GRUB cho Linux ). MBR sau khi nạp trình quản lý khởi động, sẽ chuyển quyền điều khiển cho trình quản lý khởi động .Trình quản lý khởi động sẽ cho hiện trên màn hình một danh sách các tùy chọn để người dùng xử lý xem nên khởi động hệ điều hành nào. Các chỉ dẫn cho việc nạp hệ điều hành thích hợp được ghi rõ trong các tệp tin cấu hình tương ứng với các trình quản lý khởi động:

+ LILO lưu cấu hình trong tệp tin /etc/lilo.conf

• LILO là một boot manager nằm trọn gói chung với các bản phát hành Redhat và Caldera , và là boot manager mặc định cho các bản Linux Redhat từ 7.1 trở về trước , từ phiên bản 7.2 trở đi trình boot manager mặc định là GRUB.

Tệp tin cấu hình LILO : prompt

timeout=50 default=DOS boot = /dev / hda

map = / boot / map install = / boot / boot . b linear

image = / boot /vmlinuz-2.4.22-1.2115.nptl label = linux

initrd = boot /initrd-2.4.22-1.2115.npt1.img read-only

append= ”rhgb root=LABEL=/” other = / dev /hda1

optional label=DOS

• GRUB ( Grand Unified Bootloader – trình khởi động thống nhất tổng quát ). Đây là trình quản lý khởi động tương tự như LILO , được nạp vào MBR để khởi động hệ điều hành mà người dùng chọn . Trong Fedora Core 1 , đây là trình khởi động mặc định.

Tệp tin cấu hình GRUB

# grub.conf generated by anaconda

# Note that you do not have to reru grub after making changes to this file # NOTICE : You have a /boot partition . This means that

# all kernel and initrd paths are relative to /boot ,eg. # root ( hd0 ,4)

# kernel /vmlinuz-version ro root=/dev/hda8 # initrd /initrd-version.img

# boot=dev/had default = 1 timeout = 10

splashimage = ( hd0, 4 ) / grub /splash.xpm.gz title Fedora Core ( 2.4.22-1.2115.nptl)

root ( hd0 , 4 )

kernel /vmlinuz-2.4.22-1.2115.nptl ro root = LABEL= / rhgb initrd / initrd-2.4.22-1.2115.nptl.img

boot title DOS

rootnoverify ( hd0 , 0 ) chainloader +1

• Tiến trình khởi động : Redhat và phần lớn các bản phát hành sau này của Linux đều sủ dụng tiến trình khởi động mang tên SysV init thay vì kiểu BSD init cũ. init là chương trình đầu tiên mà kernel thực thi ngay từ lúc khởi động máy , do đó init được mang chỉ số tiến trình ( PID ) số 1 , trở thành tiến trình “ mẹ “ của tất cả các tiến trình khác chạy với Linux.

PID của một tiến trình là con số mà hệ điều hành dùng để nhận diện tiến trình ấy . Nhiều lệnh của Linux dùng PID ấy làm tham số .

Để khởi động , Linux theo những bước sau :

+ Kernel chạy init , chương trình này nằm trong thư mục /sbin + init chạy shell script /etc/rc.d/rc.sysinit.

+ rc.sinit lập các biến hệ thống khác nhau và thực hiện các động tác vận hành ban đầu.

+ init chạy shell script /etc/rc.d/rc.serial.

+ rc.serial sử dụng một số lệnh set serial để thiết lập cấu hình của các cổng serial cho hệ thống

+ init chạy tất cả các script được xác định ở cấp độ chạy mặc định. + init chạy script /etc/rc.d/rc.local.

Chương trình này khởi động nhiều tiến trình khác , đồng thời chuyển thông tin cho thiết bị và cho tệp tin đăng nhập hệ thống /var/log/messages biết về trạng thái của từng tiến trình đã khởi động.

4.2 QUẢN LÝ ACCOUNT CỦA CÁC USER

Mỗi một user có một tên đăng nhập đặc trưng .Tên này giúp nhận dạng từng user và tránh được tình trạng người này xóa dữ liệu của người kia .Mỗi user phải có một mật khẩu riêng .

Trong Linux chỉ có root mới có quyền thêm , thay đổi các User .

Để thêm vào một User ta dùng lệnh adduser. Khi thêm một user , tệp tin mật khẩu nằm trong thư mục/etc/passwd sẽ có thêm một mục ghi theo dạng thức sau:

Danh sách các trường

logname Tên dùng khi đăng nhập

encrpt_passwd Mật khẩu nhận dạng từng user ; đây là biện pháp đầu tiên để ngăn chặn việc vi phạm an ninh . Trong trường hợp này , mật khẩu được mã hóa.

userID Con số đặc trưng mà hệ điều hành dùng để nhận dạng user. ( chỉ số user )

groupID Con số hoặc tên đặc trưng dùng để nhận dạng nhóm sơ cấp cho user . Nếu thuộc về nhiều nhóm , một user có thể chuyển qua lại các nhóm khác khi được quản trị viên cho phép.( chỉ số nhóm ).

userInfo Thông tin về user , chẳng hạn như tên họ chức vụ. login_directory Home directory của user , nơi user được chỉ định hoạt động sau khi đăng nhập.

login_shell Shell được user dùng sau khi đăng nhập

Trong chế độ đồ họa GNOME , ta có thể dùng trình Red Hat User Manager để quản lý Account của các User.

Minh học 4.1 Trình quản lý Account các User. 4.3 CÀI ĐẶT FONTS TIẾNG VIỆT

Cũng giống như Windows , để đọc được các văn bản bằng tiếng Việt thì Linux cần phải có các font chữ tiếng Việt dùng trong văn bản. Để làm được điều này cần phải cài font vào hệ thống . Các fonts sau khi cài đặt sẽ nằm trong thư mục /usr/share/fonts/

Các bộ fonts được đặt trong thư mục \data\fontvn Cài đặt :

[duong@localhost duong]$ cd

[duong@localhost duong]$ cd /data/ [duong@localhost data]$ su

password:

[root@localhost data]# cp –r fontvn /usr/share/fonts/ [root@localhost data]# fc-cache /usr/share/fonts/fontvn [root@localhost data]# exit

Minh họa 4.2 Các fonts chữ sau khi cập nhật 4.4 NHẬP LIỆU TIẾNG VIỆT TRONG LINUX.

Hiện nay phổ biến trong Linux hai tiện ích nhập liệu Tiếng Việt đó là X- Unikey của tác giả Phan Kim Long và xvnkb của Đào Hải Lâm .Cả hai chương trình đều xuất sắc và giải quyết gần như trọn vẹn các vấn đề bảng mã .Hai chương trình này đều hỗ trợ các phương thức nhập liệu quen thuộc như VNI và Telex .

Hai tiện ích này không tích hợp sẵn trong Linux , muốn sử dụng được người dùng cần phải cài đặt.

Cài đặt bộ gõ X-Unikey từ mã nguồn . Bộ gõ X-Unikey được nén đặt trong thư mục /data

[duong@localhost duong]$ cd [duong@localhost duong]$ cd /data

[duong@localhost data]$ tar xvjf x-unikey-0.9.1d.tar.bz2 [duong@localhost data]$ cd x-unikey-0.9.1d

[duong@localhost x-unikey-0.9.1d]$ ./configure [duong@localhost x-unikey-0.9.1d]$ make [duong@localhost x-unikey-0.9.1d]$ su password :

[root@localhost x-unikey-0.9.1d]# make install [root@localhost x-unikey-0.9.1d]# exit

exit

[duong@localhost x-unikey-0.9.1d]$ cd [duong@localhost duong]$ cat >> .bashrc export LANG=en_US.UTF-8

export XMODIFIERS=”@im=unikey” export GTK_IM_MODULE=”xim” [duong@localhost duong]$

4.5 LẬP TRÌNH C/C++ BẰNG GCC

Gcc ( GNU Compiler Collection ) là một tập hợp các thư viện ( glibc , libgcc , … ) , preprocessor ( cpp0 ) , assembler ( as ) , compiler ( cc1 ) , linker ( collect2 or /usr/bin/ld ),… dùng để phát triển các chương trình C/C++.

• Biên dịch chương trình viết bằng C.

Dùng Emacs , Vim hoặc gEdit soạn một chương trình hello.c , được lưu vào thư mục /data

# include <stdio.h> main ( ) {

printf ( “ hello world !! \n “); }

Biên dịch : Dùng lệnh cc để biên dịch các file C. [duong@localhost duong]$ cd /data

[duong@localhost data]$ cc hello.c [duong@localhost data]$ ./a.out hello world !!

[duong@localhost data]$

Có thể thay lệnh cc bằng lệnh gcc vì thực chất thì cc là một link của gcc . Theo mặc định , output file sẽ là một file executable tên là a.out . Muốn tạo một file khác cần thêm tùy chọn

–o file_name .

• Biên dịch chương trình viết bằng C++.

Dùng Emacs , Vim hoặc gEdit soạn một chương trình hello.cpp , được lưu vào thư mục /data

# include <iostream.h> using namespace std ;

main ( ) {

cout<<”\n Hello C++ !! “; }

Biên dịch : Dùng lệnh g++ để biên dịch các file ++ [duong@localhost duong]$ cd /data

[duong@localhost data]$ g++ -o hi hello.cpp [duong@localhost data]$ ./hi

Hello C++ !!

CHƯƠNG 5

BẢO MẬT TRONG LINUX

5.1 TĂNG CƯỜNG AN NINH CHO HỆ THỐNG LINUX.

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ì chúng ta có thể làm là giúp cho hệ thống máy tính của mình 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.

5.1.1 NHỮNG NGUY CƠ AN NINH TRÊN LINUX.

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 của 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 người dùng tạo được một hệ thống an toàn. 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ị.

5.1.2 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ư /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ừ 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 với 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’ ( miếng vá )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 .

5.1.3 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 ( bức tường lửa ) 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 : ipchains và IP Masquerading.

Linux IP Firewalling Chains 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, người dùng 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ụ:

# Cho phép các kết nối web tới Web Server :

/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, chúng ta cũng có thể sử 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, ...

5.2 AN TOÀN MẬT KHẨU TRÊN HỆ THỐNG MẠNG LINUX.5.2.1 BẢO VỆ MẬT KHẨU NGAY TẠI HỆ THỐNG. 5.2.1 BẢO VỆ MẬT KHẨU NGAY TẠI HỆ THỐNG.

Mật khẩu trên hệ thống Linux được lưu trong file /etc/passwd, một file chứa các tên người sử dụng, UIDs, GIDs, và các mật khẩu được mã hoá cho người sử dụng trên hệ thống. Ngoài ra, file này còn lưu các thông tin khác, như tên đầy đủ của người sử dụng, đường dẫn thư mục, hay hệ thống shell.

Bất kỳ ai truy cập hệ thống cũng có thể hiển thị nội dung của file /etc/passwd. Điều này tạo ra khả năng phá hoại với các user và những kẻ tấn công có thể tạo ra các lỗ hổng bảo mật để nhận được một bản sao của file mật khẩu này.

Trong các hệ thống Linux thường sử dụng thuật toán mã hoá (như thuật toán DES) DES sử dụng thuật toán mã hoá 56 bit. Với thuật toán này, DES đã được sử dụng như thuật toán mã hoá phổ biến trước đây. Tuy nhiên, theo thời gian, khi phần cứng phát triển và giá thành thiết bị rẻ đi, thuật toán này đã trở nên dễ dàng giải mã và tạo lại mã. Vì vậy, với các hệ thống tốc độ nhanh thì việc phá các mật khẩu không phải quá khó.

Việc phá mã có thể được cấu hình để tương thích với bất kỳ môi trường nào;

Một phần của tài liệu Tìm hiểu về hệ điều hành Linux (Trang 51 - 77)