Sunday, June 29, 2014

Phân quyền trong Linux - cách sử dụng của CHMOD và UMASK



1.     Tổng quan về CHMOD


CHMOD là viết tắt của “Change Mode” và nó là lệnh của Linux được sử dụng để thay đổi quyền truy cập tập tin và thư mục. Trong Linux/ Unix, khái niệm về người sử dụng (owner) và nhóm là rất cơ bản, giống như mọi người đều muốn mọi thứ của họ đều được sử dụng một cách đảm bảo an toàn và có tổ chức. Đó là lý do vì sao tất cả tập tin và thư mục có một chủ sở hữu và một nhóm liên kết với nó và họ có quyền truy cập khác nhau để truy cập vào một tập tin cụ thể
·        Quyền chủ sở hữu : Họ xác định những hoạt động chủ sở hữu của tập tin có thể thực thi trên các tập tin.

·        Quyền nhóm : Họ xác định những hoạt động người dùng thuộc nhóm liên kết với tập tin có thể thực thi trên các tập tin.

·        Quyền khác : Học chỉ ra những hoạt động tất cả các người dùng khác có thể hiện trên các tập tin.

Vì vậy, có ba hoạt động cơ bản thực thi trên tập tin/ thư mục mà một người dùng/ nhóm người dùng/ người dùng khác có thể thực hiện trên các tập tin và thư mục

·        Read (r) : Cho phép đọc nội dung của tập tin/ thư mục. Trong trường hợp các thư mục, một người có thể xem tất cả các tập tin và thư mục con thuộc vào thư mục.

·        Write (w) : Cho phép thay đổi nộ dung của tập tin/ thư mục. Trong trường hợp, một người có thể tạo ra một tập tin hoặc thư mục con trong thư mục đó.

·        Execute (x) : Cho phép thực thi một tập tin như một script/program. Thực thi một thư mục! Ví dụ, để sử dụng ls và các lệnh cd trong thư mục nào đó, người dùng phải có quyền truy cập thực thi.

CHMOD gán giá trị số cho quyền Read, Write, Thực thi như sau:
·        Read : 4
·        Write : 2
·        Execute : 1


Vì vậy, các quyền liên quan đến bất kì tập tin/ thư mục trong linux đều có định dạng 3x3 loại quyền (Read, Write, Execute) mà có sẵn cho 3 loại người sử dụng ( chủ sở hữu, nhóm, khác ).


Để quan sát điều này, chỉ cần nhập lệnh ls –l để hiển thị 9 kí tự cho tất cả các tập tin/ thư mục đại diện cho các quyền truy cập cho tất cả a loại người sử dụng.

Friday, June 27, 2014

Run level trong Linux


Với việc cần thực thi các ứng dụng trên nhiều chế độ khác nhau của hệ thống, trong Linux xuất hiện khái niệm Run level. Run level là các chế độ hoạt động khác nhau của hệ thống. Có 6 chế độ khác nhau của hệ điều hành, và tùy distro khác nhau mà sẽ có định nghĩa khác nhau về số thứ tự của các chế độ. Ví dụ trong Redhat:

0 - halt (Do NOT set initdefault to this)
1 - Single user mode
2 - Multiuser, without NFS (The same as 3, if you do not have networking)
3 - Full multiuser mode
4 - unused
5 - X11
6 - reboot (Do NOT set initdefault to this)

Chế độ Single user mode là một chế độ hỗ trợ người dùng truy cập để thực hiện các recovery hoặc thay đổi password(tham khảo bài viết về thay đổi password tại đây).

Run level mặc định trong Redhat và Debian được định nghĩa trong file /etc/inittab. Ví dụ trong Redhat:

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

 Các dòng cấu hình luôn gồm 4 trường cách nhau bởi dấu hai chấm (:)
  •  Trường đầu tiên (ví dụ: id, si, l0, ca, pf, pr) là tên gọi cho dòng đó. Tên gọi không quan trọng nhưng cần khác nhau cho mỗi dòng.
  • Trường thứ hai (ví dụ: 3, 1, 2345 hoặc để trống) là run level mà dòng cấu hình này áp dụng cho. Nếu trường là 2345 thì dòng áp dụng cho 4 run level là 2, 3, 4, 5; nếu để trống thì áp dụng cho tất cả các level.

Wednesday, June 18, 2014

Nhập xuất trong Linux

1. Giới thiệu

Trên hầu hết các hệ điều hành nói chung và Linux/Unix nói riêng thì có 3 dòng xuất nhập chuẩn (I/O) là STDIN, STDOUT STDERR mà chức năng tương ứng là dòng nhập chuẩn, dòng xuất chuẩn và dòng xuất lỗi chuẩn. Chúng được gọi là các open file và hệ thống gán cho mỗi file này một con số gọi là file descriptor. Ba con số tương ứng với 3 dòng xuất nhập chuẩn ở trên là 0, 1 và 2. Cụ thể:

standard input -> stdin tương đương với 0<
standard output -> stdout 
tương đương với 1>
standard error -> stderr 
tương đương với 2>

Trong C++ thì 3 dòng xuất nhập chuẩn này tương ứng với 3 đối tượng cin, cout và cerr.

Chú ý: Trong bài tut này thì mình sử dụng Bourne shell trong đó dấu $ thể hiện user bình thường và # thể hiện user root. Tuy nhiên hầu hết nội dung trong bài này có thể áp dụng với một số loại shell khác như sh, csh, tcsh... Với C chell (csh, tcsh) thì không sử dụng được các con số (file descriptor).


2. Xuất/Nhập


Trong chế độ command line của hầu hết các hệ điều hành thì "<" dùng cho chuyển hướng nhập và ">" dùng cho chuyển hướng xuất. Vì sao phải chuyển hướng? Vì có nhiều lúc ta muốn kết quả xuất ra màn hình được lưu lại vào một file và dữ liệu nhập vào thay vì từ bàn phím thì lại từ một file.

2.1. STDIN


STDIN chỉ các dòng nhập chuẩn nói chung và nó thường là từ bàn phím. Khi chúng ta gõ bàn phím tức là chúng ta đang nhập vào STDIN. Để dữ liệu đầu vào là một file thì ta dùng dấu "<". Ví dụ, nếu ta dùng lệnh cat mà không có tham số thì khi ta gõ gì nó sẽ hiển thị ra cái đó, hay nói đúng hơn sẽ hiển thị lại những gì ta nhập vào từ input chuẩn. Vậy thì giả dụ ta cần hiển thị file /etc/passwd thì ngoài cách truyền thống là
  
$ cat /etc/passwd

thì ta có thể sử dụng:

$ cat < /etc/passwd

hoặc 

$ cat 0< /etc/passwd

Tại sao lại có thể bỏ số 0 mà chức năng vẫn tương tự? Đó là vì mỗi khi khởi tạo một process thì hệ thống đã gắn một dòng nhập chuẩn cho process đó mà ở đây là STDIN hay 0.

Safe File Overwrite With Noclobber


Thông thường khi một file đã tồn tại trong hệ thống. 
Ví dụ: ls -l *conf > output.txt 
sau đó: echo “Input” > output.tx
Thì file output sẽ bị ghi đè nội dung của lệnh sau.
 Trong một số trường hợp bạn muốn tránh không xảy ra tình huống ghi đè file như vậy thì phải làm sao? 
Bạn có thể tránh các trường hợp nhầm lẫn hoặc vô tình xóa dữ liệu bằng cách thiết lập tham số “noclobber” để tránh làm hỏng dữ liệu trước đó bởi việc ghi đè vào các file đã tồn tại.
Cú pháp như sau: set -o noclobber 
Khi đó nếu vẫn vô tình thực hiện câu lệnh ghi vào 1 file đang tồn tại thì sẽ nhận được thông báo lỗi: bash: output.txt: cannot overwrite existing file.
Để thiết lập “noclobber” cho 1 file nào đó, ví dụ với file .bashrc ta thực hiện: 
echo 'set -o noclobber' >> ~/.bashrc 
Nếu vì lý do nào đó mà không muốn thực hiện tính năng này thì có thể thực hiện câu lệnh: 
set +o noclobber 
Để tắt tạm thời do mục đích nào đó. Để thực hiện điều đó hãy sử dụng toán tử | để tạm thời cho phép overwrite.
Ví dụ: ls /etc >| output.txt


Friday, June 13, 2014

Linux Security Hardening - Phần 3



11.      Cấu hình và sử dụng Iptables và TCPWrapper

Iptables nên được cấu hình để chỉ cho phép các dữ liệu cần thiết trên mạng. Đối với Workstations, có thể thiết lập bocking tất cả các dữ liệu đến, ngoại trừ trong trường hợp liên quan đến bắt đầu hệ thống. Nếu Iptables đang chạy, xem policy hiện tại với câu lệnh sau:

/sbin/iptables –L

Mặc định, các luật cho output được lưu ở file /etc/sysconfig/iptables. Cần hiểu và điều chỉnh các luật này hợp lý hơn, xóa bỏ những dòng cho phép dữ liệu qua không cần thiết. Để cập nhật các luật, tiến hành restart service.

Tương tự vậy cấu hình TCP Wrapper để bạo vệ dịch vụ mạng bằng cách thêm vào các luật vào:

/etc/hosts.allow/etc/hosts.deny

12.      Delete X Windows

X Windows là tính năng không cần thiết với Server. Sẽ không có lý do gì cần phải chạy X Windows nếu server chỉ để chạy Web server và Mail. Do vậy, bạn nên disable hoặc xóa X Windows để gia tăng tính an toàn và hiệu năng. Chỉnh sửa /etc/inittab để run với level 3. Cuối cùng là xóa X Windows khỏi hệ thống

# yum groupremove "X Window System"

13.      Linux Kernel /etc/sysctl.conf hardening

/etc/sysctl.còn là file được sử dụng để cấu hình các tham số trong quá trình kernel được thực thi (runtime). Linux đọc và áp dụng các thiêt lập khi boot. Với sysctl bạn có thể cấu hình cho network và system có thể ngăn chặn một số hình thức tấn công như: IP spoofing, SYN Flood ... 

Cụ thể như sau:

 # Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1 

# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter = 1

# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0

# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

# Make sure spoofed packets get logged
# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

#Allow for more PIDs
kernel.pid_max = 65536

#Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000

Để update thông tin vừa chỉnh sửa:
Sudo sysctl -p

Thursday, June 12, 2014

Linux Security Hardening - Phần 2




6.      Encrypt data communication

Tất cả dữ liệu truyền trên mạng đều có thể bị nghe lén bởi, và do vậy cần mã hóa dữ liệu khi truyền khi có thể bằng password hoặc sử dụng các kênh truyền có mã hóa.

Sử dụng scp, ssh, rsyncm hoặ sftp cho việc truyền file. Với các công cụ sshfs và fuse bạn có thể mount file system hoặc thư mục home của chính bạn từ xa (remote server file system).

GnuPG cho phép mã hóa và ký vào dữ liệu và thông điệp của bạn, thêm nữa hỗ trợ quản lý file một cách tiện lợi.

Fugu là một giao diện đồ họa frontend hỗ trợ SFTP. SFTP là một giao thức an toàn hơn FTP, vì nó mã hóa dữ liệu trên đường truyền. Hoặc có lựa chọn khác là sử dụng FileZilla.

OpenVPN là một giải pháp hiệu quả

Không sử dụng FTP, Telnet và Rlogin/Rsh 

Các dữ liệu truyền trên mạng mà sử dụng các dịch vụ trên có thể bị nghe lén bới bất cứ ai bằng cách bắt gói tin (packet sniffer). Giải pháp hiệu quả là sử dụng các giao thức an toàn hơn như OpenSSH, SFTP hoặc FTPS (FTP over SSL). Thực hiện câu lệnh dưới đây để loại bỏ các dịch vụ không an toàn:

# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-server

7.      Không login với tài khoản root

Không bao giờ sử dụng tài khoản root. Bạn chỉ nên sử dụng sudo để thực thi với quyền của root mỗi khi cần. sudo giúp gia tăng tính bảo mật cho hệ thống khi không cần sử dụng mật khẩu của root cho tài khoản khác. Sudo còn cho phép auditing và tracking những gì đã được thực hiện.

Linux Security Hardening - Phần 1



     Các phiên bản của Linux luôn được nhắc tới với việc an toàn hơn Windows. Tuy nhiên có nhiều tính năng về bảo mật không được kích hoạt mặc định khi mới cài. Trong loạt bài này mình sẽ trình bày về một số chính sách nên được thiết lập để đảm bảo tính an toàn cho hệ thống Linux. 
     *** Bài viết được đưa ra với tinh thần học hỏi là chính, rất mong nhận được những góp ý từ các bạn.  ***

1.      Các vấn đề chung   

  •  Mã hóa dữ liệu truyền trên mạng. Mã hòa thông tin xác thực người dùng (như password) là điều tối quan trọng.
  • Cài đặt và chạy ít nhất các phần mềm có thể để giảm thiểu các lỗ hổng từ các phần mềm này.
  • Sử dụng phần mềm hoặc công cụ tăng cường tính an ninh cho hệ thống (như SELinux, Iptables). 
  •  Chạy mỗi dịch vụ mạng độc lập nếu có thể. Nhằm giảm thiểu tối đa các nguy cơ khi một dịch vụ bị lộ lọt gây ảnh hưởng tới các dịch vụ khác. 
  •  Chính sách với tài khoản người dùng: thiết lập một chính sách mật khẩu tốt và ép buộc phải sử dụng. Xóa các tài khoản không sử dụng. 
  •  Review log hệ thống và ứng dụng định kỳ. Gửi log tới một server độc lập khác để ngăn ngừa các nguy cơ bị chỉnh sửa hoặc xóa log. 
  •  Không bao giờ đăng nhập với tài khoản root, trừ khi thật sự cần thiết. Để quản trị hệ thống thì chỉ nên sử udnjg sudo để thực thi các lệnh với quyền root khi cần. Những account có thể sử dụng sudo được định nghĩa trong /etc/sudoers, chỉnh sửa với lệnh visudo. Mặc định, log được ghi trong /var/log/secure.
 2.      Physical security
  
Thiết lập mật khẩu cho BIOS và không cho phép boot từ ổ CD/DVD, floppies, và các thiết bị ngoại vi khác.

Tiếp theo thiếp lập mật khẩu cho Grub. Sinh password sử dụng câu lệnh sau: 
     /sbin/grub-md5-crypt 

Thiết lập chính sách mật khẩu trong Linux

Trong bài trước mình đã dẫn và giới thiệu về bảo mật hệ thống *nix với PAM. Trong bài viết này mình trình bày về làm sao để thiết lập chính sách mật khẩu (account password policy) cho hệ thống Linux sao cho đảm bảo các yếu tố an ninh.

1.      Giới hạn số ngày tối đa mà một mật khẩu được phép sử dụng trước khi nó phải thay đổi

Theo mặc định của các hệ thống Linux thì thời hạn tối đa của mật khẩu là 99999, tuy nhiên thời gian này là quá lớn và tương đương với việc password sẽ không bao giờ hết hạn. Để giới hạn số ngày tối đa mà một password được phép sử dụng, cần thiết lập lại  tham số: PASS_MAX_DAYS trong file /etc/login.defs


Cú pháp sử dụng như sau: 
PASS_MAX_DAYS N
với N – là số ngày tối đa mà một mật khẩu được phép sử dụng

Ví dụ muốn thiết lập thời gian tối đa là 180 ngày:
PASS_MAX_DAYS 180

2.      Thiết lập chính sách yêu cầu mật khẩu phải thỏa mãn một số điều kiện 

Để chống lại các hình thức tấn công dò mật khẩu thông thường (dictionary attack, brute-force…) thì mật khẩu hợp lệ phải chứa càng nhiều loại ký tự khác nhau càng tốt: chữ thường, chữ viêt hoa, ký tự đặc biệt, số. Để thiết lập chính sách về việc mật khẩu sử dụng phải thỏa mãn các điều kiện về số lượng loại ký tự được phép sử dụng, cần thiết lập trong pam.d với thư viện pam_cracklib.so.

Cú pháp sử dụng như sau:
password required pam_cracklib.so difok=DI lcredit=L ucredit=U dcredit=D ocredit=O

Với DI,L,U,D,O>=1 và
 dcredit=D : Số lượng chữ số.
 ucredit=U: Số lượng chữ cái in hoa
 lcredit=L : Số lượng chữ cái thường.
ocredit=O : Số lượng các ký tự đặc biệt khác
 difok=DI: số lượng các ký tự của passwd mới được phép trùng với passwd cũ

*Lưu ý pam_cracklib.so đã được cài sẵn trên Redhat/Fedora/CentOS. Nếu hệ thống Debian/Ubuntu chưa có module này thì gõ lệnh sau để cài đặt nó: # apt-get install libpam-cracklib.

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 có 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 đó có 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 có thể lý 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ụ 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ả mà đá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.

Friday, June 6, 2014

Các SID trong hệ điều hành Windows

Trong các hệ điều hành Windows có một hệ thống các nhóm hoặc vấn đề chính được định nghĩa và gán với một giá trị nhất định (unique) và gọi là SID (Security Indentifier). Trong bài giới thiệu lần này mình sẽ giới thiệu các SID cơ bản trong Windows.
1. Các SID nên biết
   "S-1-0" { "Null Authority" }
   "S-1-0-0" { "Nobody" }
   "S-1-1" {"World Authority" }
   "S-1-1-0" { "Everyone" }
   "S-1-2" { "Local Authority" }
   "S-1-2-0" { "Local" }
   "S-1-2-1" { "Console Logon" }
   "S-1-3" { "Creator Authority" }
   "S-1-3-0" { "Creator Owner" }
   "S-1-3-1" { "Creator Group" }
   "S-1-3-4" { "Owner Rights" }
   "S-1-5-80-0" {"All Services" }
   "S-1-4" { "Non Unique Authority" }
   "S-1-5" { "NT Authority" }
   "S-1-5-1" { "Dialup" }
   "S-1-5-2" { "Network" }
   "S-1-5-3" { "Batch" }
   "S-1-5-4" { "Interactive" }
   "S-1-5-6" { "Service" }
   "S-1-5-7" { "Anonymous" }
   "S-1-5-9" { "Enterprise Domain Controllers"}
   "S-1-5-10" { "Self" }
   "S-1-5-11" { "Authenticated Users" }
   "S-1-5-12" { "Restricted Code" }
   "S-1-5-13" { "Terminal Server Users" }
   "S-1-5-14" { "Remote Interactive Logon" }
   "S-1-5-15" { "This Organization" }
   "S-1-5-17" { "This Organization" }
   "S-1-5-18" { "Local System" }
   "S-1-5-19" { "NT Authority Local Service" }
   "S-1-5-20" { "NT Authority Network Service" }
   "S-1-5-32-544" { "Administrators" }
   "S-1-5-32-545" { "Users"}
   "S-1-5-32-546" { "Guests" }
   "S-1-5-32-547" { "Power Users" }
   "S-1-5-32-548" { "Account Operators" }
   "S-1-5-32-549" { "Server Operators" }
   "S-1-5-32-550" { "Print Operators" }
   "S-1-5-32-551" { "Backup Operators" }
   "S-1-5-32-552" { "Replicators" }
   "S-1-5-32-554" { "Pre-Windows 2000 Compatibility Access"}
   "S-1-5-32-555" { "Remote Desktop Users"}
   "S-1-5-32-556" { "Network Configuration Operators"}
   "S-1-5-32-557" { "Incoming forest trust builders"}
   "S-1-5-32-558" { "Performance Monitor Users"}
   "S-1-5-32-559" { "Performance Log Users" }
   "S-1-5-32-560" { "Windows Authorization Access Group"}
   "S-1-5-32-561" { "Terminal Server License Servers"}
   "S-1-5-32-561" { "Distributed COM Users"}
   "S-1-5-32-569" { "Cryptographic Operators" }
   "S-1-5-32-573" { "Event Log Readers" }
   "S-1-5-32-574" { "Certificate Services DCOM Access" }
   "S-1-5-32-575" { "RDS Remote Access Servers" }
   "S-1-5-32-576" { "RDS Endpoint Servers" }
   "S-1-5-32-577" { "RDS Management Servers" }
   "S-1-5-32-575" { "Hyper-V Administrators" }
   "S-1-5-32-579" { "Access Control Assistance Operators" }
   "S-1-5-32-580" { "Remote Management Users" }
2. Giải thích cụ thể về một số nhóm phổ biến
Account Operators: Thành viên của nhóm này có thể tạo tài khoản nhóm,tài khoản người dùng nhưng chỉ có thể quản lí những gì do nó tạo ra.

Thursday, June 5, 2014

Reset password Ubuntu/CentOS/Debian

Rất nhiều người đã từng quên mật khẩu trên các hệ điều hành Linux của mình và không ít trong số họ đã lựa chọn cách cài lại hệ điều hành? Tuy nhiên, điều đó là không cần thiết vì trên các phiên bản của Linux đều có hỗ trợ chế độ Recovery Mode - giúp bạn có thể dễ dàng reset mật khẩu của mình.
Các bước thực hiện như sau:
Bước 1: Boot vào chế độ Recovey Mode (nhấn giữ SHIFT trong quá trình boot của GRUB để hiển thị cửa sổ lựa chọn chế độ boot)
Bước 2: Trong màn hình tiếp theo, chọn "root - Drop to root shell prompt" và nhấn ok 
Bước 3: Nếu quên username, nhập vào câu lệnh "ls /home/" như sau
Bước 4: Thực thi câu lệnh "mount -rw -o remount" để mount thư mục gốc

Bước 5: Thực thi câu lệnh "passwd username", trong trường hợp này là "password ubuntu4" để reset mật khẩu, sau đó nhập vào mật khẩu mới và xác nhận. 
Bước 6: Nhập vào exit để thoát chế độ nhập dòng lệnh, và boot vào hệ thống và đăng nhập với mật khẩu mới.

*Lưu ý: Trong trường hợp này thì chế độ Recovery Mode thật sự hữu ích nhưng nếu trong máy bạn có chứa những dữ liệu quan trọng thì tốt nhất nên tắt chế độ Recovery Mode hoặc yêu cầu nhập mật khẩu khi truy cập vào chế độ này. Vì khi truy cập với chế độ này thì là với quyền root nhưng lại không yêu cầu mật khẩu, thì bất kỳ ai nếu có thể tiếp cận với máy tính của bạn thì họ có thể dễ dàng truy cập và lấy được dữ liệu trong đó. 
Phần bảo vệ Recovery Mode mình sẽ giới thiệu trong bài tiếp theo.