A. LINUX USER AUTHENTICATION I. TÀI KHOẢN NGƯỜI DÙNG Như đã biết, trong hệ điều hành đa người dùng, cần phân biệt người dùng khác nhau do quyền sở hữu các tài nguyên trong hệ thống, chẳng hạn như, mỗi người dùng có quyền hạn với file, quá trình thực hiện thao tác của riêng họ. Điều này vẫn rất quan trọng thậm chí cả khi máy tính chỉ có một người sử dụng tại một thời điểm. Mọi truy cập hệ thống Linux đều thông qua tài khoản người dùng. Vì thế, mỗi người sử dụng được gắn với tên duy nhất (đã được đăng ký) và tên đó được sử dụng để đăng nhập. Tuy nhiên một người dùng thực sự có thể có nhiều tên đăng nhập khác nhau. Tài khoản người dùng có thể hiểu là tất cả các file, các tài nguyên, và các thông tin thuộc về người dùng đó. Khi cài đặt hệ điều hành Linux, đăng nhập “Root” sẽ được tự động tạo ra. Đăng nhập này được xem là thuộc về tài khoản của siêu người dùng (người dùng cấp cao nhất, người quản trị), vì khi đăng nhập với tư cách người dùng “root”, có thể làm bất cứ điều gì muốn trên hệ thống. Tốt nhất chỉ nên đăng nhập root khi thực sự cần thiết, và hãy đăng nhập vào hệ thống với tư cách là một người dùng bình thường. Nội dung phần này giới thiệu các lệnh để tạo một người dùng mới, thay đổi thuộc tính của một người dùng cũng như xóa bỏ một người dùng. Lưu ý, chỉ có thể thực hiện được các lệnh này nếu có quyền của một siêu người dùng – hay thực hiện bằng tài khoản của siêu người dùng “root”. II. CÁC LỆNH CƠ BẢN QUẢN LÝ NGƯỜI DÙNG Người dùng được quản lý thông qua tên người dùng (thực ra là chỉ số người dùng). Nhân hệ thống quản lý người dùng theo chỉ số, vì việc quản lý theo chỉ số sẽ dễ dàng và nhanh thông qua một cơ sở dữ liệu lưu trữ các thông tin về người dùng. Việc thêm một người dùng mới chỉ có thể thực hiện được nếu đăng nhập với tư cách là siêu người dùng. Để tạo một người dùng mới, cần phải thêm thông tin về người dùng đó vào trong cơ sở dữ liệu người dùng, và tạo một thư mục cá nhân cho riêng người dùng đó. Điều này rất cần thiết để thiết lập các biến môi trường phù hợp cho người dùng. Lệnh chính để thêm người dùng trong hệ thống Linux là useradd (hoặc adduser). 1. File/etc/passowd ........................ ........................ ........................
MỤC LỤC A LINUX USER AUTHENTICATION I TÀI KHOẢN NGƯỜI DÙNG II CÁC LỆNH CƠ BẢN QUẢN LÝ NGƯỜI DÙNG File/etc/passowd Thêm người dùng với lệnh useradd Thay đổi thuộc tính người dùng Xóa bỏ người dùng (lệnh userdel) III CÁC LỆNH CƠ BẢN LIÊN QUAN ĐẾN NHÓM NGƯỜI DÙNG Nhóm người dùng file /etc/group Thêm nhóm người dùng Sửa đổi thuộc tính nhóm người dùng (lệnh groupmod) Xóa nhóm người dùng (lệnh groupdel) IV CÁC LỆNH CƠ BẢN LIÊN QUAN ĐẾN NGƯỜI DÙNG Đăng nhập với tư cách người dùng khác dùng lệnh su Xác định người dùng đăng nhập (lệnh who) Xác định trình tiến hành (lệnh w) B DATA ENCRYTION I DISK ENCRYTION Tại sử dụng mã hóa Mã hóa đĩa so với mã hóa hệ thống tập tin cấp Mã hóa ổ đĩa Trusted Platform Module Triển khai thực Các mối quan ngại II FILESYSTEM – LEVELENCRYPTION Hệ thống tập tin có mục đích chung với mã hóa Hệ thống tập tin mã hóa III DM-CRYPT C NETWORK SECURITY I ĐỊNH NGHĨA II NỘI DUNG Gói Sniffers Dịch vụ hệ thống tcp_wrappers Xác minh thông tin DNS identd SATAN, ISS, Other Network Scanners Các công từ chối dịch vụ NFS (Network File System) Security NIS (Network Information Service) (trước YP) Firewalls (Tường lửa) D PACKET FILTERING I PACKET FILTERING (BỘ LỌC GÓI) II IPTABLES Định nghĩa Netfilter/iptables Iptables sử dụng để cấu hình ba loại bảng cho gói tường lửa Kỹ thuật sử dụng lọc gói Một gói qua lọc gặp trường hợp sau III SNORT NIDS SNORT Nguyên tắc rule Rule Action E NSA SECURITY – ENHANCED LINUX I ĐỊNH NGHĨA II BỐI CẢNH SECURITY – ENHANCED LINUX Sự chuyển tiếp miền Bối cảnh SELinux cho trình Bối cảnh SELinux cho người dùng III CHÍNH SÁCH MỤC TIÊU Quy trình giới hạn Quy trình không giới hạn Hạn chế không giới hạn người dùng IV LÀM VIỆC VỚI SELINUX Gói SELinux Những tập Log sử dụng Cấu hình tập tin Kích hoạt vô hiệu hóa SELinux Các chế độ SELinux Các thuật toán Bối cảnh SELinux – Ghi tệp tin Các loại file_t default_t Lắp đặt hệ thống tệp tin 10 Duy trì tên SELinux V GIỚI HẠN NGƯỜI DÙNG Ánh xạ Linux người dùng SELinux Thay đổi ánh xạ mặc định xguest: Chế độ Kiosk VI XỬ LÝ SỰ CỐ Điều xảy truy cập bị từ chối Ba lý vấn đề Sửa lỗi A LINUX USER AUTHENTICATION I TÀI KHOẢN NGƯỜI DÙNG Như biết, hệ điều hành đa người dùng, cần phân biệt người dùng khác quyền sở hữu tài nguyên hệ thống, chẳng hạn như, người dùng có quyền hạn với file, trình thực thao tác riêng họ Điều quan trọng chí máy tính có người sử dụng thời điểm Mọi truy cập hệ thống Linux thông qua tài khoản người dùng Vì thế, người sử dụng gắn với tên (đã đăng ký) tên sử dụng để đăng nhập Tuy nhiên người dùng thực có nhiều tên đăng nhập khác Tài khoản người dùng hiểu tất file, tài nguyên, thông tin thuộc người dùng Khi cài đặt hệ điều hành Linux, đăng nhập “Root” tự động tạo Đăng nhập xem thuộc tài khoản siêu người dùng (người dùng cấp cao nhất, người quản trị), đăng nhập với tư cách người dùng “root”, làm điều muốn hệ thống Tốt nên đăng nhập root thực cần thiết, đăng nhập vào hệ thống với tư cách người dùng bình thường Nội dung phần giới thiệu lệnh để tạo người dùng mới, thay đổi thuộc tính người dùng xóa bỏ người dùng Lưu ý, thực lệnh có quyền siêu người dùng – hay thực tài khoản siêu người dùng “root” II CÁC LỆNH CƠ BẢN QUẢN LÝ NGƯỜI DÙNG Người dùng quản lý thông qua tên người dùng (thực số người dùng) Nhân hệ thống quản lý người dùng theo số, việc quản lý theo số dễ dàng nhanh thông qua sở liệu lưu trữ thông tin người dùng Việc thêm người dùng thực đăng nhập với tư cách siêu người dùng Để tạo người dùng mới, cần phải thêm thông tin người dùng vào sở liệu người dùng, tạo thư mục cá nhân cho riêng người dùng Điều cần thiết để thiết lập biến môi trường phù hợp cho người dùng Lệnh để thêm người dùng hệ thống Linux useradd (hoặc adduser) File/etc/passowd Danh sách người dùng thông tin tương ứng lưu trữ file/etc/passwd Ví dụ nội dung file /etc/passwd: Mỗi dòng file tương ứng với bảy trường thông tin người dùng, trường ngăn cách dấu “:” Ý nghĩa trường thông tin sau: Tên người dùng (user name) Mật người dùng (passwd – mã hóa) Chỉ số người dùng (user id) Tên đầy đủ thông tin khác tài khoản người dùng (comment) Thư mục để người dùng đăng nhập Shell đăng nhập (chương trình chạy lúc đăng nhập Bất kỳ người dùng hệ thống đọc nội dung file /etc/passwd, đăng nhập với tư cách người dùng khác họ biết mật khẩu, lý mật đăng nhập người dùng không hiển thị nội dung file Thêm người dùng với lệnh useradd Siêu người dùng (Root) sử dụng lệnh useradd để tạo người dùng cập nhật ngầm định thông tin người dùng Cú pháp lệnh: useradd [tùy-chọn] useradd –D [tùy-chọn] Nếu tùy chọn –D, lệnh useradd tạo tài khoản người dùng sử dụng giá trị dòng lệnh giá trị mặc định hệ thống Tài khoản người dùng nhập vào file hệ thống, thư mục cá nhân tạo, hay file khởi tạo chép, điều tùy thuộc vào tùy chọn đưa Các tùy chọn sau: • • • • • • • • • • • • o -c, comment: soạn thảo trường thông tin người dùng -d, home_dir: tạo thư mục đăng nhập cho người dùng -e, expire_date: thiết đặt thời gian (YYYY-MM-DD) tài khoản người dùng bị hủy bỏ -f, inactive_days: tùy chọn xác định số ngày trước mật người dùng hết hiệu lực tài khoản bị hủy bỏ Nếu =0 hủy bỏ tài khoản người dùng sau mật hết hiệu lực, =-1 ngược lại (mặc định -1) -g, initial_group: tùy chọn xác định tên số khởi tạo đăng nhập nhóm người dùng Tên nhóm phải tồn tại, số nhóm phải tham chiếu đến nhóm tồn Số nhóm ngầm định -G, group: danh sách nhóm phụ mà người dùng thành viên thuộc nhóm Mỗi nhóm ngăn cách với nhóm khác dấu “,”, mặc định người dùng thuộc vào nhóm khởi tạo -m: với tùy chọn này, thư mục cá nhân người dùng tạo chưa tồn -M: không tạo thư mục người dùng -n: ngầm định thêm người dùng, nhóm tên với người dùng tạo Tùy chọn loại bỏ ngầm định -p, passwd: tạo mật đăng nhập cho người dùng -s, shell: thiết lập shell đăng nhập cho người dùng -u, uid: thiết đặt số người dùng, giá trị phải Thay đổi giá trị ngầm định Khi tùy chọn –D sử dụng, lệnh useradd bỏ qua giá trị ngầm định cập nhật giá trị -b, de default_home: thêm tên người dùng vào cuối thư mục cá nhân để tạo tên thư mục cá nhân -e, default_expire_date: thay đổi thời hạn hết giá trị tài khoản người dùng -f, default_inactive: xác định thời điểm hết hiệu lực mật đăng nhập tài khoản người dùng bị xóa bỏ -g, default_group: thay đổi số nhóm người dùng -s, default_shell: thay đổi shell đăng nhập Ngoài lệnh useradd, tạo người dùng cách sau: Soạn thảo file /etc/passwd vipw Lệnh vipw mở trình soạn thảo hệ thống hiệu chỉnh tạm file /etc/passwd Việc sử dụng file tạm khóa file có tác dụng chế khóa để ngăn việc hai người dùng soạn thảo file lúc Lúc thêm dòng thông tin người dùng cần tạo Hãy cẩn thận việc soạn thảo tránh nhầm lẫn Riêng trường mật nên để trống tạo mật sau Khi file lưu, vipw kiểm tra đồng file bị thay đổi Nếu tất thứ dường thích hợp có nghĩa file /etc/passwd cập nhật Ví dụ: Thêm người dùng có tên new, số người dùng 503, số nhóm 100, thư mục cá nhân /home/new shell đăng nhập shell bash: # vipw mail:x:8:12:mail:/var/spool/mail: games:x:12:100:games:/usr/games: gopher:x:13:30:gopher:/usr/lib/gopher-data: bien:x:500:0:Nguyen Thanh Bien:/home/bien:/bin/bash sang:x:17:100:Nguyen Minh Sang:/home/sangnm:/bin/bash lan:x:501:0:Lan GNU:/home/lan:/bin/bash new::503:100:them mot nguoi moi:/home/new:/bin/bash Tạo thư mục cá nhân người dùng với lệnh mkdir #mkdir /home/new • Sao chép file từ thư mục /etc/skel/ (đây thư mục lưu trữ file cần thiết cho người dùng) vào file cá nhân vừa tạo • Thay đổi quyền sở hữu quyền truy nhập file /home/new với lệnh chown chmod # chown new /home/new # chmod go=u,go-w /home/new Thiết lập mật người dùng với lệnh passwd # passwd new passwd: Sau thiết lập mật cho người dùng bước cuối cùng, tài khoản người dùng làm việc Nên thiết lập mật người dùng bước cuối cùng, không họ vô tình đăng nhập chép file • • • • • • • • • Thay đổi thuộc tính người dùng Trong linux có nhiều lệnh cho phép thay đổi thuộc tính tài khoản người dùng như: chfn: thay đổi thông tin cá nhân người dùng chsh: thay đổi shell đăng nhập passwd: thay đổi mật Một số thuộc tính khác phải thay đổi tay Ví dụ, để thay đổi tên người dùng, cần soạn thảo lại trực tiếp trê file /etc/passwd (với lệnh vipw) Nhưng có lệnh tổng quát cho phép thay đổi thông tin tài khoản người dùng, lệnh usermod Cú pháp lệnh: usermod [tùy-chọn] Lệnh usermod sửa đổi file tài khoản hệ thống theo thuộc tính xác định dòng lệnh Các tùy chọn lệnh: -c, comment: thay đổi thông tin cá nhân tài khoản người dùng -d, home_dir: thay đổi thư mục cá nhân tài khoản người dùng -e, expire_date: thay đổi thời điểm hết hạn tài khoản người dùng (YYYY-MM-DD) g, initial_group: tùy chọn thay đổi tên số khởi tạo đăng nhập nhóm người dùng Tên nhóm phải tồn tại, số nhóm phải tham chiếu đến nhóm tồn Số nhóm ngầm định -G, group: thay đổi danh sách nhóm phụ mà người dùng thành viên thuộc nhóm Mỗi nhóm ngăn cách với nhóm khác dấu ',' mặc định người dùng thuộc vào nhóm khởi tạo -l, login_name: thay đổi tên đăng nhập người dùng Trong số trường hợp, tên thư mục • • • riêng người dùng thay đổi để tham chiếu đến tên đăng nhập -p, passwd: thay đổi mật đăng nhập tài khoản người dùng -s, shell: thay đổi shell đăng nhập -u, uid: thay đổi số người dùng Lệnh usermod không cho phép thay đổi tên người dùng đăng nhập Phải đảm bảo người dùng không thực trình lệnh usermod thực thay đổi thuộc tính người dùng Ví dụ muốn thay đổi tên người dùng new thành tên newuser, gõ lệnh sau: # usermod -l new newuser Xóa bỏ người dùng (lệnh userdel) Để xóa bỏ người dùng, trước hết phải xóa bỏ thứ có liên quan đến người dùng Lệnh hay dùng để xóa bỏ tài khoản người dùng lệnh userdel với cú pháp: userdel [-r] Lệnh thay đổi nội dung file tài khoản hệ thống cách xóa bỏ thông tin người dùng đưa dòng lệnh Người dùng phải thực tồn Tuỳ chọn -r có ý nghĩa: -r: file tồn thư mục riêng người dùng file nằm thư mục khác có liên quan đến người dùng bị xóa bỏ lúc với thư mục người dùng Lệnh userdel không cho phép xóa bỏ người dùng họ đăng nhập vào hệ thống Phải hủy bỏ trình có liên quan đến người dùng trước xoá bỏ người dùng Ngoài xóa bỏ tài khoản người dùng cách hiệu chỉnh lại file /etc/passwd III CÁC LỆNH CƠ BẢN LIÊN QUAN ĐẾN NHÓM NGƯỜI DÙNG Mỗi người dùng hệ thống Linux thuộc vào nhóm người dùng cụ thể Tất người dùng nhóm truy nhập trình tiện ích, cần truy cập thiết bị máy in chẳng hạn Một người dùng lúc thành viên nhiều nhóm khác nhau, nhiên thời điểm, người dùng thuộc vào nhóm cụ thể Nhóm thiết lập quyền truy nhập để thành viên nhóm truy cập thiết bị, file, hệ thống file toàn máy tính mà người dùng khác không thuộc nhóm truy cập Nhóm người dùng file/etc/group Thông tin nhóm người dùng lưu file /etc/group, file có cách bố trí tương tự file /etc/passwd Ví dụ nội dung file /etc/group sau: Mỗi dòng file có bốn trường phân cách dấu ‘:’ Ý nghĩa trường hợp theo thứ tự xuất sau: Tên nhóm người dùng (groupname) Mật nhóm người dùng (passwd - mã hóa), trường rỗng, tức nhóm người dùng không yêu cầu mật Chỉ số nhóm người dùng (group id) Danh sách người dùng thuộc nhóm (users) Thêm nhóm người dùng Cho phép hiệu chỉnh thông tin file /etc/group trình soạn thảo văn có hệ thống để thêm nhóm người dùng, cách nhanh sử dụng lệnh groupadd Cú pháp lệnh: groupadd [tùy-chọn] Các tùy chọn là: -g, gid: tùy chọn xác định số nhóm người dùng, số phải Chỉ số phải có giá trị lớn 500 lớn số nhóm có hệ thống Giá trị từ đến 499 dùng cho nhóm hệ thống -r: tùy chọn dùng muốn thêm tài khoản hệ thống -f: tùy chọn bỏ qua việc nhắc nhở, nhóm người dùng tồn tại, bị ghi đè Ví dụ: Thêm nhóm người dùng soạn thảo file /etc/group installer:x:102:hieu, huy, sang tiengviet:x:103:minh, long, dung Hai dòng bổ sung hai nhóm người dùng danh sách thành viên nhóm: nhóm installer với số nhóm 102 thành viên người dùng có tên hieu, huy, sang Tương tự nhóm tiengviet với số nhóm 103 danh sách thành viên minh, long, dung Đây hai nhóm (102, 103) người dùng hệ thống Thêm nhóm người dùng với lệnh groupadd # groupadd -r installer Lệnh cho phép tạo nhóm người dùng có tên installer, nhiên thành viên nhóm phải bổ sung cách soạn thảo file /etc/group Sửa đổi thuộc tính nhóm người dùng (lệnh groupmod) Trong số trường hợp cần phải thay đổi số thông tin nhóm người dùng lệnh groupmod với cú pháp sau: groupmod [tùy-chọn] Thông tin nhóm xác định qua tham số tên-nhóm điều chỉnh Các tùy chọn lệnh: -g, gid: thay đổi giá trị số nhóm người dùng -n, group_name: thay đổi tên nhóm người dùng Xóa nhóm người dùng (lệnh groupdel) Nếu không muốn nhóm tồn việc xóa tên nhóm file /etc/group Nhưng phải lưu ý rằng, xóa nhóm người dùng thuộc nhóm Ngoài sử dụng lệnh groupdel để xóa nhóm người dùng Cú pháp lệnh: groupdel Lệnh sửa đổi file tài khoản hệ thống, xóa tất thực thể liên quan đến nhóm Tên nhóm phải thực tồn IV CÁC LỆNH CƠ BẢN LIÊN QUAN ĐẾN NGƯỜI DÙNG Ngoài lệnh thêm người dùng, xóa người dùng , có số lệnh khác giúp ích nhiều làm việc hệ thống đa người dùng Đăng nhập với tư cách người dùng khác dùng lệnh su Đôi lúc muốn thực lệnh người dùng khác sử dụng file hay thiết bị thuộc quyền sở hữu người dùng Lệnh su cho phép thay đổi tên người dùng cách hiệu cấp cho quyền truy nhập người dùng Cú pháp lệnh: su Nếu đăng nhập với tư cách người dùng bình thường muốn trở thành siêu người dùng (root) dùng lệnh sau: # su root Khi hệ thống yêu cầu nhập mật siêu người dùng Nếu cung cấp mật mã, người dùng root dùng lệnh exit CTRL+d để đăng xuất khỏi tài khoản trở đăng nhập ban đầu Tương tự, đăng nhập với tư cách root muốn trở thành người dùng bình thường có tên newer gõ lệnh sau: # su newer • • Sẽ không bị hỏi mật thay đổi từ siêu người dùng sang người dùng khác Tuy nhiên đăng nhập với tư cách người dùng bình thường muốn chuyển đổi sang đăng nhập người dùng khác phải cung cấp mật người dùng Xác định người dùng đăng nhập (lệnh who) Lệnh who lệnh đơn giản, cho biết có đăng nhập hệ thống với cú pháp sau: who [tùy – chọn] Các tùy chọn là: -H, heading: hiển thị tiêu đề cột nội dung lệnh -m: hiển thị tên máy tên người dùng với thiết bị vào chuẩn -q, count: hiển thị tên người dùng đăng nhập số người dùng đăng nhập Ví dụ: # who root tty1 Nov 15 03:54 lan pts/0 Nov 15 06:07 # Lệnh who hiển thị ba cột thông tin cho người dùng hệ thống Cột đầu tên người dùng, cột thứ hai tên thiết bị đầu cuối mà người dùng sử dụng, cột thứ ba hiển thị ngày người dùng đăng nhập Ngoài who, sử dụng thêm lệnh users để xác định người đăng nhập hệ thống Ví dụ: # users lan root # Trong trường hợp người dùng không nhớ tên đăng nhập phiên làm việc (điều nghe vô lý tình đôi lúc gặp phải), sử dụng lệnh whoami who am i Cú pháp lệnh: whoami who am i Ví dụ: # whoami lan # # who am i may9!lan pts/0 Nov 15 06:07 # Lệnh who am i kết đầy đủ với tên máy đăng nhập, tên người dùng đăng nhập, tên thiết bị ngày đăng nhập tin khác Đây trạng thái an toàn nhất, gây bất tiện gói tin hợp pháp vô tình bị bỏ qua Trong trạng thái thứ hai, lọc thả gói tin mà xác định chắn không an toàn, trạng thái gây bất tiện đặc biệt trình duyệt web thông thường Trong trạng thái thứ ba,nếu lọc gặp gói tin mà không xác định được,gói liệu bị thả truy vấn cụ thể Điều bất tiện tạo nhiều hộp thoại… IPTABLES II Định nghĩa Linux ngày phát triển mạnh Lý việc đơn giản mạnh mẽ hệ điều hành Bênh cạnh có số ưu điểm so với hệ điều hành khác, ưu điểm quan trọng bảo mật linux Một chế bảo mật sẵn có tường lửa linux Linux cung câp chế linh hoạt mạnh mẽ để tùy chỉnh tường lửa Cơ chế IPTABLES LINUX Netfilter/iptables: Hai khái niệm dễ bị nhầm lẫn với Cả hai Netfilter iptables có liên quan đến Iptables không gian sử dụng Netfilter không gian hạt nhân Iptables cung cấp thiết bị để người dùng tùy chình tường lửa Linux Tường lửa thực tùy chỉnh thông qua Netfilters Chức Netfilter có sẵn hạt nhân linux Iptables sử dụng để cấu hình ba loại bảng cho gói tường lửa Filter table (bộ lọc bảng): bảng sử dụng để lọc gói tin NAT table: bảng không sử dụng cho việc lọc gói tin nưng lại cung cấp NAT/PAT ip giả mạo Mangle table: bảng sử dụng để thay đổi gói sử dụng để đánh dấu gói tin để lọc Kỹ thuật sử dụng lọc gói Chuỗi PREROUTING bao gồm kỹ thuật sử dụng cho gói tin Các gói nhập chuỗi trước địn định tuyến thực Chuỗi đầu vào bao gồm quy tắc áp dụng cho gói liệu mênh cho máy Netfilter/iptables tường lửa chạy Vì vậy, chuỗi chứa quy tắc lọc cho gói tin đến Chuỗi đầu bao gồm quy tắc áp dụng cho gói tin có nguồn gốc từ máy tính Netfiler/iptables tường lửa chạy Vì vậy,chuỗi chứa quy tắc lọc cho gói liệu gửi Chuỗi phía trước bao gồm quy tắc áp dụng cho gói tin chuyển tiếp mởi máy mà Netfilter/iptables tường lửa chạy Đối với loại gói tin,máy tính Linux hoạt động router Vì vậy, chuỗi chứa quy tắc lọc cho gói tin chuyển tiếp Postrouting chain: bao gồm quy tắc áp dụng cho gói liệu chuyển tiếp Các gói nhập chuỗi trước chuyển tới phận khác Một gói qua lọc gặp trường hợp sau Chấp nhận: gói tin đáng tin cậy thông qua tường lửa REJECT: trường hợp âp dụng cho gói tin không chắn an toàn có câu trả lời ICMP gửi tới người khởi tạo thông tin xảy với gói tin Thả: trường hợp áp dụng cho gói liệu koong an toàn, gói liệu bị bỏ mà không gửi trả lời ICMP giống không đến tường lửa Nếu gói tin không phù hợp với quy tắc chỗi áp dụng ba trạng thái bị từ chối,điều phụ thuộc vào cấu hình tường lửa Thông qua Iptables quy tắc thiết lập cho chuỗi cụ thể cách sử dụng không gian sử dụng Bất gói tin đến hệ thống Linux từ kiểm tra hạt nhân Linux bên sau cần phải chuyển tiếp dành cho hệ thống Có, đặt chuỗi nhập vào chuỗi phía trước mô-đun netfilter tương ứng Bất gói tin tạo từ bên máy mệnh để số máy khác sau Linux kernel đặt chuỗi đầu mô-đun netfilter Gói lần xuất chống lại tất quy tắc chuỗi phù hợp với quy tắc Nếu gói liệu phù hợp với nguyên tắc thành công mục tiêu cho quy tắc áp dụng cho gói tin không phù hợp gói tin đến quy tắc diễn Nếu gói liệu không phù hợp với quy tắc chuỗi sau mục tiêu mặc định áp dụng cho gói tin III SNORT o o o o NIDS NIDS viết tắt cụm từ A NETWORK INTRUSION DETECTION SYSTEM Mục đích sử dụng NIDS để bảo vệ hệ thống bên trong, ngăn chặn cảnh báo công từ bên lệnh remote từ bên vào hệ thống BO ( back office ) SNORT SNORT NIDS Martin Roesh phát triển mô hình mã nguồn mở Tuy miễn phí lại có nhiều tính tuyệt vời mà sản phẩm thương mại có Nó xây dựng để phát chống xâm nhập Được thiết kế module để kiểm tra gói liệu vào Windows, Linux, OpenBSD, FreeBSD, NetBSD, Mac OS Snort cấu hình để chạy NIDS, Snort hỗ trợ khả hoạt động giao thức sau: Ethernet, 802.11, Token Ring, FDI, Cisco HDLC, SLIP, PPP, PF OpenBSD Cấu truc Snort bao gồm nhiều thành phần, với phần có chức riêng Các phần Mô đun giải mã gói tin: Snort sử dụng thư viện pap để bắt gói tin mạng lưu thông qua hệ thống ( hình mô tả việc gói tin giải mã nào) Bắt gói liệu khác tầng network ( ethernet,SLIP, PPP….) Một gói tin sau giải mã đưa tiếp vào mô đun tiền sử lý Module tiền sử lý: Chuẩn bị liệu cho hệ thống phân tích -> phát liệu bất thường dựa vào header gói tin -> chống phân mảnh gói tin ->giải mã HTTP URL -> lắp ráp lại gói (TCP, UDP …) Module phát hiện: Đây module quan trọng Snort Nó chịu trách nhiệm phát dấu hiệu xâm nhập Module phát sử dụng rule định nghĩa trước để so sánh với liệu thu thập từ xác định xem có hợp lệ hay không Một module phát có khả tách phần gói tin áp dụng luật phần gói tin Các phần là: IP heaer Header tầng giao vận: TCP, UDP Header tầng ứng dụng: DNS header HTTP header, FTP header,… Phần tải gói tin ( bạn áp dụng luật lên phần liệu truyền gói tin) Chú ý: rule có chế độ ưu tiên gói tin bị áp dụng nhiều rule thực rule có thử tự ưu tiên Logging and Alerting System: tùy thuộc vào việc module phát có nhận dạng xâm nhập hay không mà gói tin bị ghi log đưa cảnh báo Các file log file text liệu ghi nhiều định dạng khác Module xuất thông tin: xuất thông tin định dạng khác tùy theo ta cấu hình • • Nguyên tắc rule Rule có hai phần header option: Phần Header chưa thông tin hành động mà luật thực phát có xâm nhập nằm gói tin chứa tiểu chuẩn để áp dụng luật với gói tin Phần Option chữa thông điệp cảnh báo thông tin phần phụ thêm để đối sánh luật với gói tin Một luật phát hay nhiều hoạt động thăm dò hay công Các luật thông minh có khả áp dụng cho nhiều dấu hiệu xâm nhập Rule Action Pass: hành động hướng dẫn Snort bở qua gói tin Hành động đóng vai trò quan trọng việc tăng cường tốc độ hoạt động Snort mà ta không muốn áp dụng kiểm tra gói tin định Ví dụ ta sử dụng bẫy (đặt máy đó) để nhử hacker công vào ta phải cho tất gói tin đến máy Hoặc dùng quét để kiểm tra độ an toàn mạng ta phải bỏ qua tất gói tin đến từ máy kiểm tra Log: Hành động dùng để log gói tin Có thể vào file hay vào sở liệu tùy thuộc vào nhu cầu Alert: Gửi thông điệp cảnh báo dấu hiệu xâm nhập phát Có nhiều cách để gửi thông điệp gửi file Console Tất nhiên sau gửi thông điệp cảnh báo gói tin log lại Activate: Sử dụng để tạo cảnh báo kích hoạt luật khác kiểm tra thêm điều kiện ogis tin Dyamic: Chỉ luật gọi luật khác có hành động Activate E NSA SECURITY – ENHANCED LINUX I ĐỊNH NGHĨA SE Linux thực chế kiểm soát truy cập bắt buộc nhân Linux, kiểm tra hoạt động sau cho phép kiểm soát truy cập chuẩn tùy ý kiểm tra Nó tạo NSA thực thi quy định tệp tin quy trình hệ thống Linux, hành động chúng dự sách định nghĩa Khi sử dụng SELinux, tập tin, bao gồm thư mục thiết bị, gọi đối tượng Quy trình, chẳng hạn người dùng chạy lệnh ứng dụng Mozilla Firefox, gọi đối tượng Hầu hết hệ điều hành sử dụng hệ thống điều khiển truy cập tùy ý (DAC) điều khiển giao đối tương tác với đối tượng, làm đối tượng tương tác với Trên hệ điều hành sử dụng DAC, người sử dụng kiểm soát quyền truy cập tập tin (đối tượng) mà họ sở hữu Ví dụ, Linux hoạt động hệ thống, người dùng làm cho thư mục nhà họ toàn giới đọc được, đem lại cho người sử dụng trình (đối tượng) có khả truy cập thông tin nhạy cảm, thêm bảo vệ không mong muốn hành động Dựa vào chế DAC đủ để bảo vệ hệ thống mạnh mẽ DAC định truy cập dựa nhận dạng người sử dụng quyền sở hữu, bỏ qua bảo mật liên quan khác thông tin vai trò người sử dụng, chức tin cậy chương trình, độ nhạy tính toàn vẹn liệu Mỗi người dùng có quyền định hoàn toàn tập tin họ, làm cho thực thi sách bảo mật hệ thống Hơn nữa, chương trình điều hành người sử dụng thừa kế tất quyền cấp cho người sử dụng tự thay đổi quyền truy cập vào tập tin người dùng, không bảo vệ cung cấp chống lại phần mềm độc hại Nhiều dịch vụ hệ thống chương trình đặc quyền phải chạy với quyền hạt thô vượt xa yêu cầu họ, đó, lỗ hổng trong chương trình khai thác để chiếm quyền truy cập hệ thống Sau ví dụ quyền sử dụng hệ điều hành Linux không chạy SELinux Các điều khoản đầu ví dụ khác với hệ thống bạn Sử dụng lệnh ls -l để xem tập tin cho phép: $ ls -l file1 -rw-rw-r user1 group1 May 11 10:46 file1 Ba bit cho phép, rw, kiểm soát truy cập người dùng Linux User (trong trường hợp này, chủ sở hữu) file1 Ba bit cho phép tiếp theo, rw-, kiểm soát truy cập nhóm Linux group1 file1 Ba bit cho phép cuối cùng, r , kiểm soát truy cập tất người khác file1, bao gồm tất người dùng trình Security-Enhanced Linux (SELinux) cho biết thêm Mandatory Access Control (MAC) cho nhân Linux, kích hoạt theo mặc định Fedora Một kiến trúc MAC mục đích chung cần khả để thực thi sách an ninh hành chính, thiết lập tất quy trình tập tin hệ thống, sở định nhãn có chứa loạt thông tin bảo mật liên quan Khi thực cách, cho phép hệ thống đầy đủ để bảo vệ thân cung cấp hỗ trợ quan trọng cho ứng dụng bảo mật cách bảo vệ chống lại can thiệp vào, bỏ qua ứng dụng bảo đảm MAC cung cấp tách mạnh mẽ ứng dụng cho phép thực an toàn ứng dụng không đáng tin cậy Khả để hạn chế đặc quyền liên quan đến trình thực giới hạn phạm vi thiệt hại tiềm kết việc khai thác lỗ hổng ứng dụng dịch vụ hệ thống MAC cho phép thông tin bảo vệ từ người dùng hợp pháp có quyền hạn chế từ người dùng có thẩm quyền, người vô tình thực ứng dụng độc hại Sau ví dụ nhãn có chứa thông tin bảo mật có liên quan sử dụng quy trình, người sử dụng Linux, tập tin, hệ thống Linux chạy SELinux hoạt động Thông tin gọi bối cảnh SELinux, xem cách sử dụng lệnh ls –Z: $ ls -Z file1 -rw-rw-r user1 group1 unconfined_u:object_r:user_home_t:s0 file1 Trong ví dụ này, SELinux cung cấp cho người dùng (unconfined_u), vai trò (object_r), loại (user_home_t), mức độ (s0) Thông tin sử dụng để đưa định kiểm soát truy cập Với DAC, truy cập được kiểm soát dựa Linux người dùng nhóm ID Điều quan trọng phải nhớ quy tắc sách SELinux kiểm tra sau điều luật DAC Quy tắc sách SELinux không sử dụng quy tắc DAC từ chối truy cập Người dùng Linux SELinux Trên Linux hệ thống chạy SELinux hoạt động, có người dùng Linux người dùng SELinux Người sử dụng SELinux phần sách SELinux Người dùng Linux ánh xạ tới người sử dụng SELinux Để tránh nhầm lẫn, hướng dẫn sử dụng "người dùng Linux" "SELinux User" để phân biệt hai người Lợi ích chạy SELinux • Tất quy trình tập tin dán nhãn với loại Một loại định nghĩa tên miền cho trình, loại cho tập tin Quá trình ngăn cách với cách chạy lĩnh vực riêng họ, quy tắc sách SELinux xác định trình tương tác với tập tin, làm trình tương tác với Truy cập phép quy tắc sách SELinux tồn mà đặc biệt cho phép • Kiểm soát truy cập hạt mịn Đẩy mạnh vượt quyền UNIX truyền thống kiểm soát mức sử dụng theo ý dựa người dùng ID nhóm Linux, định truy cập SELinux dựa tất thông tin có sẵn, chẳng hạn người sử dụng SELinux, vai trò, chủng loại, tùy chọn, cấp độ • Chính sách SELinux hành xác định, toàn hệ thống thực thi, không thiết lập người dùng định • Giảm lỗ hổng để công leo thang đặc quyền Một ví dụ: kể từ tiến trình chạy lĩnh vực, tách rời nhau, quy tắc sách SELinux xác định cách xử lý tập tin truy cập trình khác, trình bị tổn thương, kẻ công truy cập vào chức bình thường trình đó, tập tin trình cấu hình để truy cập Ví dụ: máy chủ Apache HTTP bị tổn thương, kẻ công không sử dụng trình đọc tập tin thư mục người sử dụng, trừ quy tắc sách SELinux cụ thể thêm vào cấu hình phép truy cập • Các dịch vụ có hạn chế Tàu với khả hạn chế dịch vụ daemon để họ dự đoán phép truy cập cần thiết cho hoạt động bình thường họ SELinux • SELinux sử dụng để thực thi bảo mật liệu tính toàn vẹn, quy trình bảo vệ từ đầu vào không đáng tin cậy SELinux là: • Phần mềm chống virus • Một thay cho mật khẩu, tường lửa, hệ thống bảo mật khác • Giải pháp bảo mật all – in – one Kiến trúc Security – Enhanced Linux SELinux module bảo mật Linux xây dựng vào hạt nhân Linux SELinux thúc đẩy quy định sách nạp Khi truy cập bảo mật có liên quan diễn ra, chẳng hạn trình cố gắng để mở tập tin, hoạt động bị chặn hạt nhân SELinux Nếu quy tắc sách SELinux cho phép hoạt động, tiếp tục, không, hoạt động bị chặn trình nhận lỗi Quyết định SELinux, chẳng hạn cho phép hay không cho phép truy cập, lưu trữ Bộ nhớ cache gọi Access Vector Cache (AVC) Quyết định nhớ đệm làm giảm mức độ thường xuyên quy định sách SELinux cần phải kiểm tra, làm tăng hiệu suất Hãy nhớ quy tắc sách SELinux hiệu lực quy tắc DAC từ chối truy cập II BỐI CẢNH SECURITY – ENHANCED LINUX Quy trình tập tin dán nhãn với bối cảnh SELinux có thông tin, chẳng hạn người sử dụng SELinux, vai trò, chủng loại, tùy chọn, cấp độ Khi chạy SELinux, tất thông tin sử dụng để đưa định kiểm soát truy cập Trong Fedora, SELinux cung cấp kết hợp vai trò-Based Access Control (RBAC), Loại Enforcement (TE), tùy chọn, Multi-Level Security (MLS) Sau ví dụ cho thấy bối cảnh SELinux Bối cảnh SELinux sử dụng quy trình, người sử dụng Linux, tập tin, hệ thống Linux chạy SELinux hoạt động Sử dụng ls -Z lệnh để xem bối cảnh SELinux tập tin thư mục: $ ls -Z file1 -rw-rw-r user1 group1 unconfined_u:object_r:user_home_t:s0 file1 Người dùng SE Linux Danh tính người dùng SELinux sắc biết đến với sách ủy quyền cho tập vai trò, phạm vi cụ thể Số Mỗi người sử dụng Linux ánh xạ tới người sử dụng thông qua sách SELinux SELinux Điều cho phép người dùng Linux kế thừa hạn chế người dùng SELinux Các ánh xạ danh tính người dùng SELinux sử dụng bối cảnh SELinux cho trình phiên họp đó, để xác định vai trò mức độ họ nhập Chạy đăng nhập lệnh-l semanage người dùng root Linux để xem danh sách ánh xạ tài khoản người sử dụng SELinux Linux: # /usr/sbin/semanage login -l Login Name SELinux User MLS/MCS Range default unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023 Output khác đôi chút từ hệ thống để hệ thống Các cột liệt kê tên đăng nhập người dùng Linux, danh sách SELinux SELinux cột danh mà người dùng sử dụng Linux ánh xạ tới Đối với quy trình, giới hạn sử dụng SELinux mà vai trò mức độ truy cập Cột cuối cùng, Số / MCS Range, mức sử dụng Multi-Level Security (MLS) nhiều mục Security (MCS) Sự chuyển tiếp miền Một trình trình chuyển đổi tên miền tên miền khác cách thực ứng dụng có loại entrypoint cho tên miền Việc cho phép entrypoint sử dụng sách SELinux, điều khiển ứng dụng sử dụng để nhập vào tên miền Ví dụ sau cho thấy chuyển đổi tên miền: Một người dùng muốn thay đổi mật họ Để làm điều này, họ chạy ứng dụng passwd/Usr/bin/passwd thực thi dán nhãn với loại passwd_exec_t: $ ls -Z /usr/bin/passwd -rwsr-xr-x root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd Các ứng dụng truy cập passwd / etc / shadow, dán nhãn với loại shadow_t: $ ls -Z /etc/shadow root root system_u:object_r:shadow_t:s0 /etc/shadow Một SELinux tiểu bang quy định sách mà trình hoạt động lĩnh vực passwd_t phép đọc ghi tập tin dán nhãn với loại shadow_t Các loại shadow_t áp dụng cho tập tin yêu cầu cho thay đổi mật Điều bao gồm /etc/gshadow,/etc/shadow, tập tin lưu họ Một quy tắc sách SELinux nói miền passwd_t có quyền entrypoint đến loại passwd_exec_t Khi người dùng chạy /usr/bin/passwd ứng dụng, trình chuyển đổi vỏ người sử dụng tên miền passwd_t Với SELinux, kể từ hành động mặc định để từ chối, quy tắc tồn cho phép (trong số thứ khác) ứng dụng chạy lĩnh vực passwd_t để truy cập tập tin dán nhãn với loại shadow_t, ứng dụng passwd phép truy cập /etc/shadow, cập nhật mật người dùng Ví dụ không đầy đủ, sử dụng ví dụ để giải thích trình chuyển đổi tên miền Mặc dù có quy tắc thực tế cho phép đối tượng hoạt động lĩnh vực passwd_t để truy cập đối tượng dán nhãn với loại tập tin shadow_t, quy tắc sách SELinux khác phải đáp ứng trước đối tượng chuyển đổi sang tên miền Trong ví dụ này, Loại thực thi đảm bảo: • Miền passwd_t nhập cách thực ứng dụng dán nhãn với loại passwd_exec_t; thực từ thư viện chia sẻ có thẩm quyền, chẳng hạn loại lib_t; thực ứng dụng khác • Lĩnh vực có thẩm quyền, chẳng hạn passwd_t, viết thư cho tập tin dán nhãn với loại shadow_t Ngay trình khác chạy với quyền siêu người dùng tiến trình ghi vào file dán nhãn với loại shadow_t, họ không chạy lĩnh vực passwd_t • Lĩnh vực có thẩm quyền chuyển đổi sang lĩnh vực passwd_t Ví dụ, trình sendmail chạy lĩnh vực sendmail_t lý đáng để thực passwd; đó, không chuyển đổi sang lĩnh vực passwd_t • Tiến trình chạy lĩnh vực passwd_t đọc ghi loại thẩm quyền, chẳng hạn file dán nhãn với loại etc_t shadow_t Điều ngăn cản ứng dụng passwd bị lừa đọc viết tập tin tùy ý Bối cảnh SELinux cho trình Sử dụng lệnh ps –eZ để xem bối cảnh SELinux cho trình Ví dụ: Mở thiết bị đầu cuối, chẳng hạn Applications → System Tools → Terminal Chạy lệnh /usr/bin/passwd Không nhập mật Mở tab mới, thiết bị đầu cuối khác, chạy lệnh -eZ ps | grep passwd Các đầu tương tự sau: unconfined_u:unconfined_r:passwd_t:s0-s0:c0.c1023 13212 pts/1 00:00:00 passwd Trong tab / thiết bị đầu cuối, nhấn Ctrl + C để hủy bỏ việc áp dụng passwd Trong ví dụ này, thư mục /usr/bin/passwd ứng dụng (có nhãn với loại passwd_exec_t) thực hiện, trình chuyển đổi vỏ người sử dụng tên miền passwd_t Hãy nhớ rằng: loại định nghĩa tên miền cho trình, loại cho tập tin Sử dụng ps -eZ lệnh để xem bối cảnh SELinux cho tiến trình chạy Sau ví dụ hạn chế đầu ra, khác hệ thống bạn: system_u:system_r:dhcpc_t:s0 1869 ? 00:00:00 dhclient system_u:system_r:sshd_t:s0-s0:c0.c1023 1882 ? 00:00:00 sshd system_u:system_r:gpm_t:s0 1964 ? 00:00:00 gpm system_u:system_r:crond_t:s0-s0:c0.c1023 1973 ? 00:00:00 crond system_u:system_r:kerneloops_t:s0 1983 ? 00:00:05 kerneloops system_u:system_r:crond_t:s0-s0:c0.c1023 1991 ? 00:00:00 atd Vai trò system_r sử dụng cho trình hệ thống, chẳng hạn daemon Loại thực thi sau tách lĩnh vực Bối cảnh SELinux cho người dùng Sử dụng id -Z lệnh để xem bối cảnh SELinux kết hợp với người sử dụng Linux bạn: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 Trong Fedora, người dùng Linux chạy không bị giới hạn theo mặc định Bối cảnh SELinux cho thấy người sử dụng Linux ánh xạ tới unconfined_u SELinux dùng, chạy vai trò unconfined_r, chạy lĩnh vực unconfined_t s0-s0 Số phạm vi, mà trường hợp này, giống s0 Các loại người sử dụng truy cập xác định c0.c1023, tất loại (c0 qua c1023) III CHÍNH SÁCH MỤC TIÊU Chính sách mục tiêu sách SELinux mặc định sử dụng Ubuntu Khi sử dụng sách, quy trình nhắm mục tiêu chạy miền giới hạn, trình mà mục tiêu chạy miền không giới hạn mục tiêu Ví dụ, theo mặc định, người dùng đăng nhập chạy lĩnh vực unconfined_t, trình hệ thống bắt đầu init chạy lĩnh vực initrc_t - hai lĩnh vực không bị giới hạn Lĩnh vực không bị giới hạn (cũng lĩnh vực hạn chế) kiểm tra nhớ thực thi ghi Theo mặc định, đối tượng hoạt động lĩnh vực không bị giới hạn cấp phát nhớ cho phép ghi thực Điều làm giảm lỗ hổng tràn đệm attacks1 Những kiểm tra nhớ vô hiệu hóa cách thiết lập Boolean, cho phép sách SELinux sửa đổi thời gian chạy Cấu hình Boolean thảo luận sau Quy trình giới hạn Hầu hết dịch vụ mà nghe mạng giới hạn Fedora Ngoài ra, hầu hết trình chạy người sử dụng gốc Linux thực nhiệm vụ cho người sử dụng, chẳng hạn ứng dụng passwd, bị hạn chế Khi trình giới hạn, chạy phạm vi nó, chẳng hạn trình httpd chạy lĩnh vực httpd_t Nếu trình hạn chế bị tổn hại kẻ công, tùy thuộc vào cấu hình sách SELinux, truy cập kẻ công với nguồn lực thiệt hại họ làm hạn chế Quy trình không giới hạn Quá trình không giới hạn chạy lĩnh vực không bị giới hạn, ví dụ, chương trình init chạy lĩnh vực initrc_t không bị giới hạn, quy trình hạt nhân không bị giới hạn chạy lĩnh vực kernel_t, người dùng Linux không bị giới hạn chạy lĩnh vực unconfined_t Đối với trình không bị giới hạn, quy tắc sách SELinux áp dụng, quy tắc sách tồn cho phép tiến trình chạy lĩnh vực không bị giới hạn hầu hết truy cập Tiến trình chạy lĩnh vực không bị giới hạn rơi trở lại cách sử dụng quy tắc DAC độc quyền Nếu trình không áp bị tổn thương, SELinux không ngăn chặn kẻ công từ đạt quyền truy cập vào tài nguyên hệ thống liệu, tất nhiên, quy tắc DAC sử dụng SELinux tăng cường an ninh quy tắc DAC - không thay chúng Hạn chế không giới hạn người dùng Mỗi người sử dụng Linux ánh xạ tới SELinux User thông qua sách SELinux Điều cho phép người dùng Linux kế thừa hạn chế SELinux User Bản đồ Linux User nhìn thấy cách chạy lệnh semanage login -l Linux root user: # /usr/sbin/semanage login -l Login Name SELinux User MLS/MCS Range default unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023 Trong Fedora 13, người dùng Linux ánh xạ tới SELinux default đăng nhập mặc định (được ánh xạ tới SELinux unconfined_u user) Sau định nghĩa mặc định, lập đồ: default unconfined_u s0-s0:c0.c1023 Hạn chế không giới hạn người dùng Linux kiểm tra nhớ thực thi ghi được, bị hạn chế MCS (và MLS, sách MLS sử dụng) Nếu người dùng Linux không bị giới hạn thực thi ứng dụng định nghĩa sách SELinux chuyển từ miền unconfined_t vào miền giới hạn riêng mình, người dùng Linux không bị giới hạn chịu hạn chế tên miền bị hạn chế IV LÀM VIỆC VỚI SELINUX Gói SELinux Trong Ubuntu, gói SELinux cài đặt theo mặc định cài đặt đầy đủ, trừ trường hợp loại trừ tay cài đặt Nếu thực cài đặt tối thiểu chế độ văn bản, gói policycoreutils-python không cài đặt theo mặc định Ngoài ra, theo mặc định, sách SELinux sử dụng, SELinux chạy chế độ thực thi Những tập Log sử dụng Trong Fedora 13, gói dbus, setroubleshoot-server kiểm toán cài đặt gói không gỡ bỏ từ chọn lựa gói mặc định Trong Fedora 13, setroubleshootd không liên tục chạy dịch vụ, nhiên sử dụng để phân tích thông điệp AVC Hai chương trình hoạt động phương pháp để bắt đầu setroubleshoot cần thiết: sedispatch seapplet sedispatch chạy phần hệ thống phụ kiểm toán, thông qua dbus, gửi thông điệp từ chối AVC xảy ra, mà thẳng đến setroubleshootd chạy, bắt đầu setroubleshootd không chạy Seapplet công cụ mà chạy công cụ hệ thống, chờ đợi thông điệp dbus setroubleshootd, tung bong bóng thông báo, cho phép người dùng xem lại từ chối Cấu hình tập tin /Etc/SELinux/config file tập tin cấu hình SELinux Nó điều khiển chế độ SELinux sách SELinux sử dụng: # This file controls the state of SELinux on the system # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced # permissive - SELinux prints warnings instead of enforcing # disabled - No SELinux policy is loaded SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection SELINUXTYPE=targeted SELINUX=enforcing Các tùy chọn SELinux thiết lập chế độ SELinux chạy SELinux có ba chế độ: Thực thi, cho phép, không thực thi Khi sử dụng chế độ thực thi, sách SELinux thi hành, SELinux từ chối truy cập dựa nguyên tắc sách SELinux Thông báo từ chối đăng nhập Khi sử dụng chế độ cho phép, sách SELinux không thực thi SELinux không từ chối truy cập, từ chối ghi nhận cho hành động bị từ chối chạy SELinux chế độ thực thi Khi sử dụng chế độ không thực thi, SELinux bị vô hiệu hóa (các mô-đun SELinux không đăng ký với hạt nhân Linux), quy định DAC sử dụng SELINUXTYPE=targeted Các tùy chọn SELINUXTYPE đặt sách SELinux để sử dụng Chính sách mục tiêu sách mặc định Chỉ thay đổi tùy chọn bạn muốn sử dụng sách MLS Để sử dụng sách MLS, cài đặt gói SELinux-chính sách ml; cấu hình SELINUXTYPE = ml /etc/SELinux/config, khởi động lại hệ thống bạn Chú ý: Khi hệ thống chạy với SELinux chế độ dễ dãi hay vô hiệu hóa, người dùng có quyền đặt tên tập tin không xác Ngoài ra, tập tin tạo SELinux bị vô hiệu hóa nhãn Điều gây vấn đề thay đổi sang chế độ thực thi Để ngăn chặn tập tin không xác nhãn dán nhãn từ gây vấn đề, hệ thống tập tin tự động dán nhãn thay đổi từ chế độ vô hiệu hóa chế độ dãi thi hành Kích hoạt vô hiệu hóa SELinux Sử dụng lệnh /usr/sbin/getenforce /usr/sbin/sestatus để kiểm tra tình trạng SELinux Các lệnh trả getenforce Thi hành, Được chấp nhận, Disabled Các lệnh trả getenforce Thi hành SELinux kích hoạt (quy định sách SELinux thực thi): $ /usr/sbin/getenforce Enforcing Các lệnh getenforce trở Permissive SELinux kích hoạt, quy tắc sách SELinux không thực thi, quy định DAC sử dụng Các lệnh trả getenforce Enforcing SELinux bị vô hiệu hóa _Kích hoạt SELINUX Trên hệ thống với SELinux bị vô hiệu hóa SELINUX = disabled lựa chọn cấu hình /etc/SELinux/config: # This file controls the state of SELinux on the system # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced # permissive - SELinux prints warnings instead of enforcing # disabled - No SELinux policy is loaded SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection SELINUXTYPE=targeted Để kích hoạt SELinux: Sử dụng lệnh rpm -qa | grep SELinux, rpm -q policycoreutils, rpm -qa | grep setroubleshoot để xác nhận gói SELinux cài đặt Hướng dẫn giả định gói sau cài đặt: SELinux-policy-targeted, SELinux-policy, libSELinux, libSELinux-python, libSELinux-utils, policycoreutils, setroubleshoot, setroubleshoot, setroubleshoot-plugins Nếu gói không cài đặt, Linux root user, cài đặt chúng thông qua lệnh yum install package-name Những gói sau tùy chọn: policycoreutils-gui, setroubleshoot, SELinux-policy devel, mcstrans Trước SELinux kích hoạt, tập tin hệ thống tập tin phải dán nhãn với bối cảnh SELinux Trước điều xảy ra, lĩnh vực giới hạn bị từ chối truy cập, ngăn chặn hệ thống bạn khởi động cách xác Để ngăn chặn điều này, cấu hình SELinux = permissive / etc / SELinux / config: # This file controls the state of SELinux on the system # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced # permissive - SELinux prints warnings instead of enforcing # disabled - No SELinux policy is loaded SELINUX=permissive # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection SELINUXTYPE=targeted Khi người sử dụng gốc Linux chạy lệnh khởi động lại để khởi động lại hệ thống Trong khởi động tiếp theo, hệ thống tập tin dán nhãn Quá trình nhãn nhãn tất tập tin với bối cảnh SELinux: *** Warning SELinux targeted policy relabel is required *** Relabeling could take a very long time, depending on file *** system size and speed of hard drives **** Mỗi ký tự * dòng đại diện cho 1.000 tác phẩm dán nhãn Trong ví dụ trên, bốn ký tự * đại diện cho 4.000 tập tin dán nhãn Thời gian cần dán nhãn tất file phụ thuộc vào số lượng file hệ thống, tốc độ ổ đĩa cứng Trên hệ thống đại, trình 10 phút Trong chế độ permissive, sách SELinux không thực thi, phủ nhận ghi nhận cho hành động bị từ chối chạy chế độ thực thi Trước thay đổi để thực thi chế độ, người dùng root Linux, chạy grep "SELinux ngăn chặn" /var/log / tin nhắn lệnh người dùng root Linux để xác nhận SELinux không phủ nhận hành động trình khởi động cuối Nếu SELinux không phủ nhận hành động trình khởi động cuối cùng, lệnh không trả lại đầu Nếu thông báo từ chối /var/log/tin nhắn, cấu hình SELinux = enforcing /etc/SELinux/config: # This file controls the state of SELinux on the system # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced # permissive - SELinux prints warnings instead of enforcing # disabled - No SELinux policy is loaded SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection SELINUXTYPE=targeted Khởi động lại hệ thống bạn Sau khởi động lại, xác nhận lệnh getenforce trả Enforcing: $ /usr/sbin/getenforce Enforcing Với Linux root user, chạy lệnh /usr/sbin/semanage login –l để xem ánh xạ SELinux SELinux User Thông số đưa là: Login Name SELinux User MLS/MCS Range default unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023 Nếu trường hợp, chạy lệnh sau với Linux root user để sửa chữa đồ sử dụng Nó cách an toàn để bỏ qua cảnh báo SELinux-user username is already defined chúng xảy ra, nơi tên người dùng unconfined_u, guest_u, xguest_u: /usr/sbin/semanage user -a -S targeted -P user -R "unconfined_r system_r" -r s0s0:c0.c1023 unconfined_u /usr/sbin/semanage login -m -S targeted -s "unconfined_u" -r s0-s0:c0.c1023 default /usr/sbin/semanage login -m -S targeted -s "unconfined_u" -r s0-s0:c0.c1023 root /usr/sbin/semanage user -a -S targeted -P user -R guest_r guest_u /usr/sbin/semanage user -a -S targeted -P user -R xguest_r xguest_u _ Vô hiệu hóa SELinux Để vô hiệu hóa SELinux, cấu hình SELinux = disabled /etc/SELinux/config: # This file controls the state of SELinux on the system # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced # permissive - SELinux prints warnings instead of enforcing # disabled - No SELinux policy is loaded SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection SELINUXTYPE=targeted Khởi động lại hệ thống bạn Sau khởi động lại, xác nhận lệnh Getenforce trả Disable: $ /usr/sbin/getenforce Disabled Các chế độ SELinux SELinux có chế độ: Thực Thi: Chính sách SELinux thi hành SELinux từ chối truy cập dựa nguyên tắc sách SELinux Cho Phép: Chính sách SELinux không thực thi SELinux không từ chối truy cập, từ chối ghi nhận cho hành động bị từ chối chạy chế độ thực thi Vô Hiệu Hóa: SELinux bị vô hiệu hóa Chỉ có quy tắc DAC sử dụng Sử dụng lệnh /usr /sbin/setenforce để thay đổi chế độ thực thi cho phép Những thay đổi thực với /usr/sbin/setenforce không tồn khởi động lại Để thay đổi sang chế độ thực thi, người sử dụng gốc Linux, chạy lệnh /usr/sbin/setenforce Để thay đổi chế độ Cho Phép, chạy lệnh /usr/sbin/setenforce Sử dụng lệnh /usr/sbin/getenforce để xem chế độ cho SELinux hành Các thuật toán _Liệt kê thuật toán Đối với danh sách thuật toán, cho dù chúng bật tắt, chạy lệnh -l boolean semanage người dùng root Linux _Cấu hình thuật toán Lệnh setsebool boolean-name x khiến thuật toán bật tắt, boolean-name tên thuật toán, x lựa chọn on (bật) off (tắt) _Thuật toán cho NFS CIFS Theo mặc định, gắn kết NFS mặt hàng dán nhãn với bối cảnh mặc định xác định sách cho hệ thống tập tin NFS Trong sách chung, ngữ cảnh mặc định sử dụng loại nfs_t Ngoài ra, theo mặc định, Samba gắn mặt hàng dán nhãn với bối cảnh mặc định xác định sách Trong sách chung, ngữ cảnh mặc định sử dụng loại cifs_t Bối cảnh SELinux – Ghi tệp tin Trên hệ thống chạy SELinux, tất quy trình tập tin dán nhãn cách đại diện cho an ninh - thông tin có liên quan Thông tin gọi bối cảnh SELinux _Thay đổi tạm thời: chcon Các lệnh chcon thay đổi bối cảnh SELinux cho tập tin Tuy nhiên, thay đổi thực với lệnh chcon không tồn hệ thống tập tin relabel, thực lệnh /sbin/restorecon Chính sách SELinux kiểm soát xem người dùng sửa đổi nội dung SELinux cho tập tin Khi sử dụng chcon, người sử dụng cung cấp tất phần bối cảnh SELinux để thay đổi Một loại tập tin không xác nguyên nhân phổ biến SELinux từ chối truy cập _Những thay đổi liên tục: semanage fcontext Lệnh /usr/sbin/semanage fcontext thay đổi bối cảnh SELinux cho tập tin Khi sử dụng sách cụ thể, thay đổi thực với lệnh thêm vào /etc/SELinux/targeted/contexts/files/file_contexts.=Nếu thay đổi dẫn đến file tồn file_contexts, thêm vào file_contexts.local cho tập tin thư mục mới, chẳng hạn tạo thư mục /web/ Setfiles, sử dụng hệ thống tập tin dán nhãn, /sbin/restorecon, phục hồi bối cảnh SELinux mặc định Điều có nghĩa thay đổi thực /usr/sbin/semanage fcontext liên tục, hệ thống tập tin dán nhãn Chính sách SELinux kiểm soát xem người dùng sửa đổi nội dung SELinux cho tập tin Các loại file_t default_t Đối với hệ thống tập tin hỗ trợ thuộc tính mở rộng, tập tin mà thiếu bối cảnh SELinux đĩa truy cập, xử lý thể có ngữ cảnh mặc định theo quy định sách SELinux Trong sách chung, ngữ cảnh mặc định sử dụng loại file_t Điều cần sử dụng loại hình này, tập tin mà bối cảnh đĩa phân biệt sách, nói chung giữ tiếp cận đến lĩnh vực giới hạn Các loại file_t không nên tồn hệ thống tập tin cách xác, dán nhãn, tất tập tin hệ thống chạy SELinux cần phải có bối cảnh SELinux, loại file_t không sử dụng cấu hình tập tin ngữ cảnh Các loại default_t sử dụng tập tin không phù hợp với mô hình khác tập tin cấu hình ngữ cảnh, tập tin phân biệt với tập tin mà bối cảnh đĩa, thường giữ tiếp cận đến lĩnh vực giới hạn Nếu bạn tạo thư mục cấp độ mới, chẳng hạn /mydirectory/, thư mục dán nhãn với loại default_t Nếu dịch vụ cần truy cập vào thư mục, cập nhật tập tin cấu hình, bối cảnh cho vị trí Lắp đặt hệ thống tệp tin Theo mặc định, hệ thống tập tin hỗ trợ thuộc tính mở rộng gắn kết, bối cảnh an ninh cho tập tin lấy từ thuộc tính mở rộng security.SELinux tập tin Các tập tin hệ thống tập tin không hỗ trợ thuộc tính mở rộng định nhất, bối cảnh an ninh mặc định từ cấu hình sách, dựa loại hệ thống tập tin Sử dụng lệnh mount-o context để ghi đè lên thuộc tính mở rộng có, định ngữ cảnh mặc định khác cho hệ thống tập tin không hỗ trợ thuộc tính mở rộng Điều hữu ích bạn không tin tưởng hệ thống tập tin để cung cấp thuộc tính xác 10 Duy trì tên SELinux a Sao chép tập tin thư mục Khi tập tin thư mục chép, tập tin thư mục tạo không tồn Đó tập tin thư mục bối cảnh dựa quy tắc mặc định ghi nhãn, file gốc thư mục bối cảnh (trừ tùy chọn sử dụng để bảo vệ bối cảnh ban đầu) b Di chuyển tệp tin thư mục Tập tin thư mục giữ SELinux bối cảnh chúng chúng chuyển Trong nhiều trường hợp, điều không xác cho vị trí chúng chuyển đến c Kiểm tra bối cảnh SELinux mặc định Sử dụng lệnh /usr/sbin/matchpathco để kiểm tra xem tập tin thư mục có bối cảnh SELinux xác d Lưu trữ tệp tin với tar tar không giữ lại thuộc tính mở rộng theo mặc định Từ bối cảnh SELinux lưu trữ thuộc tính mở rộng, bối cảnh bị lưu trữ tập tin Sử dụng tar SELinux để tạo lưu trữ mà giữ lại bối cảnh Nếu kho lưu trữ Tar chứa tập tin mà thuộc tính mở rộng, bạn muốn thuộc tính mở rộng để phù hợp với mặc định hệ thống, chạy kho lưu trữ thông qua /sbin/restorecon: $ tar -xvf archive.tar | /sbin/restorecon -f – e Lưu trữ tệp tin với star star không giữ lại thuộc tính mở rộng theo mặc định Từ bối cảnh SELinux lưu trữ thuộc tính mở rộng, bối cảnh bị lưu trữ tập tin Sử dụng star -xattr -H = exustar để tạo lưu trữ mà giữ lại bối cảnh Các gói phần mềm star không cài đặt theo mặc định Để cài đặt star, chạy lệnh yum install star Linux root user V GIỚI HẠN NGƯỜI DÙNG Ánh xạ Linux người dùng SELinux Khi Linux root user, chạy lệnh semanage login -l để xem ánh xạ người sử dụng người dùng Linux SELinux: # /usr/sbin/semanage login -l Login Name SELinux User MLS/MCS Range default unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023 Thay đổi ánh xạ mặc định Trong Fedora 13, người dùng Linux ánh xạ để SELinux default đăng nhập mặc định (đó ánh xạ tới SELinux unconfined_u user) Nếu bạn muốn người dùng Linux mới, người dùng Linux không ánh xạ đặc biệt để người sử dụng SELinux bị giới hạn theo mặc định, thay đổi ánh xạ mặc định với lệnh đăng nhập semanage xguest: Chế độ Kiosk Các gói phần mềm xguest cung cấp tài khoản người dùng kiosk Tài khoản sử dụng để bảo vệ máy mà người đến sử dụng, chẳng hạn người thư viện, ngân hàng, sân bay, ki-ốt thông tin, cà phê VI XỬ LÝ SỰ CỐ Điều xảy truy cập bị từ chối SELinux định, chẳng hạn cho phép hay không cho phép truy cập, lưu trữ Bộ nhớ cache gọi Access Vector Cache (AVC) Thông báo từ chối đăng nhập SELinux từ chối truy cập Những từ chối gọi "AVC denials", ghi nhận vào vị trí khác nhau, tùy thuộc vào daemon chạy: Daemon Log Location auditd on /var/log/audit/audit.log auditd off; rsyslogd on /var/log/messages setroubleshootd, rsyslogd, and /var/log/audit/audit.log Easier-to-read denial mesangges auditd on also sent to /var/log/messages Nếu bạn chạy X Window System, có gói setroubleshoot setroubleshoot-server cài đặt, setroubleshootd daemon auditd chạy, cảnh báo hiển thị truy cập bị từ chối SELinux: Nhấp vào "Show" trình bày phân tích chi tiết lý SELinux từ chối truy cập, giải pháp cho phép truy cập Nếu bạn chạy X Window System rõ ràng truy cập bị từ chối SELinux Ba lý vấn đề +Vấn đề ghi tên +Làm để dịch vụ bị hạn chế chạy? +Quy định phát triển ứng dụng bị hỏng Sửa lỗi +Quyền Linux +Trang hướng dẫn sử dụng cho dịch vụ +Tên miền Permissive +Tìm kiếm xem Permissive +Tin nhắn Kiểm toán liệu +Tin nhắn sealer +Cho phép truy cập: audit2allow