Lưu ý: vấn đề này đã bị tranh chấp vì đặc quyền của Quản trị viên thường được yêu cầu để khai thác vấn đề này, do đó ranh giới đặc quyền không bị vượt qua - Điểm CVSS & Loại lỗ hổng Đ
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM
KHOA: Công nghệ thông tin
Trang 2Lab 1 Quét mạng (Scanning networks)
1 Using nmap to scan a machine (via IP address or name) to detect an OS & services
• Students can use some commands:
$ sudo nmap –F <network> //replace <Network> with 192.168.12.0/24
$ sudo nmap –O <IP-target> //replace <IP-target> with 192.168.12.254
$ sudo nmap –A <IP-target>
$ sudo nmap –sV <IP-target>
• Tìm sự khác biệt khi sử dụng các câu lệnh này với:
Tắt tường lửa trên máy mục tiêu ( 192.168.1.20 )
Bước 1: Tắt tường lửa trên máy Windown 7 ( Máy mục tiêu)
Bước 2: Sử dụng câu lệnh trên Ubuntu:
sudo nmap -A 192.168.1.20 Trong đó Tùy chọn -A trong lệnh nmap kích hoạt một loạt các quét nâng cao nhằm thu thập thông tin chi tiết về máy chủ mục tiêu:
- Phát hiện Hệ điều hành
- Phát hiện Phiên bản dịch vụ
- Thực hiện Scripts Scan
- Quét Traceroute
Trang 3Khi tắt tường lửa các hạn chế đối với lưu lượng mạng bị loại bỏ, máy ubuntu tấn công
sẽ quét được các thông số bên máy windown 7 như thông tin hệ điều hành, các
PORT,…
Bật tường lửa trên máy mục tiêu (192.168.1.20)
Bước 1: Bật tường lửa trên máy Windown 7 ( máy mục tiêu)
Trang 4Bước 2: Sử dụng câu lệnh trên Ubuntu:
sudo nmap -A 192.168.1.20
Khi bật tường lửa máy ubuntu tấn công sẽ không quét được các thông tin bên máy bị
tấn công
2 Sử dụng nmap với vul-scrip để phát hiện các lỗ hổng trên một hệ điều hành
Bước 1: Cài đặt vul-scrip (để phát hiện các lỗ hổng chi tiết)
Ta cài git bằng lệnh sudo apt install git
Sau khi cài git xong thì ta bắt đầu sử dụng câu lệnh của git để cài đặt Vulscan
script: git clone https://github.com/scipag/vulscan scipag_vulscan
(lệnh để clone project từ github về máy)
Trang 5sudo ln -s ~/lab1/scipag_vulscan /usr/share/nmap/scripts/vulscan
(tạo một symbol link cho phép thực thi các lệnh trong thư mục với quyền quản trị
viên)
ls -l /usr/share/nmap/scripts/
(Kiểm tra lại liên kết để xác nhận rằng liên kết tượng trưng đã được tạo thành
công, có thể liệt kê các file trong thư mục /usr/share/nmap/scripts/)
Bước 2: Chạy câu lệnh
nmap -sV script=vulscan/vulscan.nse 192.168.1.20
192.168.1.20 là địa chỉ ip của máy Win 7 nạn nhân
Sau khi quét xong sẽ cho ra kết quả:
Trang 6Kết quả sẽ cho ra danh sách các lỗi CVE
Trang 7Thông báo đã chạy xong script
Vulnerability Details : CVE-2004-2339
Microsoft Windows 2000, XP và có thể cả 2003 cho phép người dùng cục bộ có đặc quyền SeDebugPrivilege thực thi mã tùy ý dưới dạng hạt nhân và đọc hoặc ghi bộ nhớ hạt nhân thông qua hàm NtSystemDebugControl, hàm này không xác minh các đối số con trỏ của nó Lưu ý: vấn đề này đã bị tranh chấp vì đặc quyền của Quản trị viên
thường được yêu cầu để khai thác vấn đề này, do đó ranh giới đặc quyền không bị vượt qua
- Điểm CVSS & Loại lỗ hổng
Điểm CVSS: 7.2
Ảnh hưởng đến tính bảo mật: Quyền truy cập cục bộ: Lỗ hổng này cho phép người dùng
có đặc quyền SeDebugPrivilege thực thi mã tùy ý dưới dạng hạt nhân (kernel) và truy cập vào bộ nhớ hạt nhân Điều này có thể dẫn đến việc kiểm soát toàn bộ hệ thống, bao gồm việc đọc hoặc ghi vào bộ nhớ kernel, vốn là một phần cốt lõi của hệ điều hành và thường được bảo vệ nghiêm ngặt
Tác động đến tính chính trực
Trang 8Tác động đến tính chính trực: nghiêm trọng (Người tấn công có thể thay đổi hoặc làm sai lệch các cấu trúc dữ liệu quan trọng trong bộ nhớ kernel, dẫn đến việc hệ điều hành hoạt động không đúng cách hoặc gây ra lỗi hệ thống Mất hoàn toàn khả năng bảo vệ hệ thống, dẫn đến toàn bộ hệ thống bị xâm phạm.)
Tác động đến tính khả dụng: nghiêm trọng (Việc sửa đổi bộ nhớ kernel có thể làm hỏng
hệ điều hành, gây ra lỗi hệ thống (crash) hoặc làm cho hệ thống không thể hoạt động được Điều này ảnh hưởng trực tiếp đến tính khả dụng của hệ thống.)
Truy cập độ phức tạp: Thấp (Người dùng có đặc quyền SeDebugPrivilege có thể khai thác lỗ hổng này mà không cần thêm bất kỳ bước xác thực nào khác
Xác thực: Không bắt buộc (Không cần xác thực để khai thác lỗ hổng.)
Đạt được truy cập: Không có
(Các) loại lỗ hổng: thực thi mã
Vulnerability Details : CVE-2004-2307
Microsoft Internet Explorer 6.0.2600 trên Windows XP cho phép kẻ tấn công từ xa gây
ra sự từ chối dịch vụ (sự cố trình duyệt) thông qua shell: URI có dấu gạch chéo ngược kép (\\) trong thẻ HTML như IFRAME hoặc A
- Điểm CVSS & Loại lỗ hổng
Điểm CVSS: 5.0
Hoàn thành tác động bảo mật (Lỗ hổng này liên quan đến cách các đặc quyền của kernel được xử lý Điều này có thể dẫn đến sự can thiệp vào hoạt động của hệ điều hành.) Toàn bộ tác động toàn vẹn (Có một sự xâm phạm hoàn toàn về tính toàn vẹn của hệ thống Mất hoàn toàn khả năng bảo vệ hệ thống, dẫn đến toàn bộ hệ thống bị xâm phạm.)
Tác động sẵn sàng Hoàn thành (Tài nguyên bị ảnh hưởng đã tắt hoàn toàn Kẻ tấn công
có thể làm cho tài nguyên hoàn toàn không khả dụng.)
Mức độ phức tạp của truy cập: Thấp (Việc khai thác lỗ hổng này không yêu cầu nhiều kỹ thuật phức tạp, nhưng cần có quyền truy cập cục bộ và hiểu biết về cấu trúc kernel để khai thác thành công.)
Xác thực Không cần xác thực (Không cần xác thực để khai thác lỗ hổng.)
Trang 9loại lỗ hổng bảo mật: Từ chối dịch vụ
Vulnerability Details : CVE-2004-2291
Microsoft Windows Internet Explorer 5.5 và 6.0 cho phép kẻ tấn công từ xa thực thi mã tùy ý thông qua một tập lệnh nhúng sử dụng đối tượng Shell Helper và một phím tắt (liên kết) để thực thi tập lệnh đích
- Điểm CVSS & Loại lỗ hổng
Tác động sẵn sàng Hoàn thành (Tài nguyên bị ảnh hưởng đã tắt hoàn toàn Kẻ tấn công
có thể làm cho tài nguyên hoàn toàn không khả dụng.)
Mức độ phức tạp của truy cập Thấp (Khai thác lỗ hổng này không đòi hỏi kỹ thuật phức tạp, nhưng cần quyền truy cập cục bộ vào hệ thống và hiểu biết về cơ chế quản lý bộ nhớ của hệ điều hành.)
Xác thực Không bắt buộc (Không cần xác thực để khai thác lỗ hổng.)
Có được quyền truy cập Không có
loại lỗ hổng bảo mật: thực thi mã
Vulnerability Details : CVE-2004-2290
Microsoft Windows XP Explorer cho phép kẻ tấn công thực thi mã tùy ý thông qua HTML
và tập lệnh trong thư mục tự thực thi tham chiếu đến tệp thực thi trong thư mục, tệp này được thực thi tự động khi người dùng truy cập vào thư mục.- Điểm CVSS & Loại lỗ hổng
Điểm CVSS 7.5
Tác động đến tính bảo mật Không có (Không có tác động đến tính bảo mật của hệ thống.)
Trang 10Tác động đến tính toàn vẹn một phần (Có thể sửa đổi một số tệp hệ thống hoặc thông tin, nhưng kẻ tấn công không có quyền kiểm soát những gì có thể được sửa đổi hoặc phạm vi của những gì kẻ tấn công có thể ảnh hưởng bị hạn chế.)
Tác động đến tính khả dụng Một phần (Hiệu suất bị giảm hoặc khả năng cung cấp tài nguyên bị gián đoạn.)
Mức độ phức tạp của truy cập Thấp (Không có các điều kiện tiếp cận chuyên biệt hoặc các tình tiết giảm nhẹ Cần rất ít kiến thức hoặc kỹ năng để khai thác.)
Xác thực Không bắt buộc (Không cần xác thực để khai thác lỗ hổng.)
Có được quyền truy cập: Không có
(Các) loại lỗ hổng: thực thi mã
Vulnerability Details : CVE-2004-2289
Microsoft Windows XP Explorer cho phép người dùng cục bộ thực thi mã tùy ý thông qua thư mục hệ thống có tệp Desktop.ini chứa mã xác định ShellClassInfo với giá trị CLSID được liên kết với tệp thực thi
Điểm CVSS 10.0
Hoàn thành tác động bảo mật (Có toàn bộ thông tin tiết lộ, dẫn đến tất cả các tệp hệ thống bị tiết lộ.)
Ảnh hưởng đến tính toàn vẹn Có (Có tác động đến tính toàn vẹn của hệ thống)
Ảnh hưởng đến tính khả dụng Có (Khai thác lỗ hổng này có thể dẫn đến việc hệ thống không thể truy cập hoặc hoạt động đúng cách do các khóa registry quan trọng bị giải phóng không hợp lệ, dẫn đến lỗi hệ thống hoặc các vấn đề về khả dụng.)
Mức độ phức tạp của truy cập Thấp (Không có các điều kiện tiếp cận chuyên biệt hoặc các tình tiết giảm nhẹ Cần rất ít kiến thức hoặc kỹ năng để khai thác.)
Xác thực Không bắt buộc (Không cần xác thực để khai thác lỗ hổng.)
(Các) loại lỗ hổng :thực thi mã
3 Khai thác lỗ hổng : Sử dụng metaploit để truy cập vào các máy với các lỗ hổng remote
Dùng lệnh msfconsole để mở metaploit framework
Trang 11Dùng lệnh search theo lỗ hổng MS17-010
Lỗ hổng MS17-010 hay còn được gọi là lỗ hổng EternalBlue là một lỗ hổng bảo mật nhắm đến dịch vụ SMBv1 chạy trên các hệ thống Windows; trải dài từ Windows XP cho đến tận Windows
10 version 1607
Trang 12Dùng module exploit/windows/smb/ms17_010_eternalblue của metaploit để remote máy nạn nhân
Trang 13Đang remote máy nạn nhân: Dùng lệnh ipconfig để kiểm tra địa chỉ ip máy nạn nhân
Trang 14Dùng lệnh help để xem những câu lệnh mình có thể điều khiển và kiểm tra ở máy nạn nhân
Trang 154 Hướng khắc phục
Để chống lại quá trình quét mạng của attacker, có thể thực hiện các biện pháp bảo mật sau:
Firewall: Cấu hình firewall để chặn các gói tin quét mạng không mong muốn từ địa chỉ IP
không xác định hoặc từ các địa chỉ IP được biết đến là nguồn tấn công
Monitoring và Logging: Theo dõi và ghi lại các hoạt động mạng, bao gồm các yêu cầu kết
nối từ các địa chỉ IP không xác định hoặc từ các địa chỉ IP được biết đến là nguồn tấn công Phát hiện sớm các hoạt động quét mạng là một phần quan trọng trong việc phòng ngừa tấn công
Phân tích Traffic Pattern: Sử dụng công cụ phân tích traffic để nhận biết và loại bỏ các
luồng traffic không bình thường hoặc có dấu hiệu của quá trình quét mạng
Trang 16Tăng cường Authentication: Sử dụng các phương thức xác thực mạnh mẽ như hai yếu
tố xác thực (2FA) để ngăn chặn tấn công từ các tài khoản có thể bị tấn công
Segmentation của Mạng: Chia mạng thành các mạng con hoặc vùng mạng để giảm thiểu
tác động của một cuộc tấn công và ngăn chặn sự lan rộng của nó
Cập nhật và Patching: Đảm bảo hệ thống được cập nhật đầy đủ và triển khai các bản vá
bảo mật mới nhất để loại bỏ các lỗ hổng có thể được tận dụng trong quá trình quét mạng
Sử dụng Intrusion Detection/Prevention Systems (IDS/IPS): Triển khai hệ thống phát
hiện và ngăn chặn xâm nhập để phát hiện và ngăn chặn các hoạt động tấn công, bao gồm cả quá trình quét mạng
Tích hợp Honeypots và Honeytokens: Sử dụng honeypots và honeytokens để gây cản
trở và phát hiện sự quét mạng của attacker bằng cách cung cấp dữ liệu giả mạo hoặc dẫn dụ
Trang 17Lab2 Buffer Overflows
Lỗi tràn bộ đệm thông thường xảy ra khi một bộ đệm đã được cấp phát một không gian lưu trữ cụ thể và có nhiều dữ liệu được sao chép vào nó hơn nó có thể
xử lý
Các bước khai thác lỗ hỏng Buffer overflow :
1 Tìm sự hiện diện và vị trí của lỗ hổng tràn bộ đệm
2 Ghi thêm dữ liệu vào bộ đệm nhiều hơn nó có thể xử lý
3 Ghi đè địa chỉ trả về của một hàm
4 Thay đổi luồng thực thi sang mã hacker
Bước 0 Chuẩn bị công cụ và tài liệu liên quan
- Ubuntu 16.04 (32-bit)
- Source code: stack.c, exploit.c
Code được cung cấp bởi giảng viên
Trang 19Bước 1 Tắt địa chỉ Randomization
$ sudo sysctl –w kernel.randomize_va_space=0
Để có thể tìm được địa chỉ của mã độc dễ hơn vì file được lưu ở một địa chỉ
cố định không bị lưu ngẫu nhiên gây có tìm kiếm Giúp thực hiện bài lab này dễ
hơn
Trang 20Bước 2 Xác định địa chỉ trả về thích hợp để chèn đoạn code thực thi
2.1 Tạo file debug stack_dbg (bỏ qua StackGuard và cho phép stack có thể executable)
$gcc –z execstack –fno-stack-protector –g –o stack_dbg stack.c
StackGuard: kỹ thuật bảo vệ trong lập trình để tránh tấn công Buffer
overflow nên ta cần phải bỏ qua StackGuard để thực hiện đc bài Lab
Cho phép stack có thể executable là cho phép mã thực thi trong vùng nhớ
đó có thể được thực thi trực tiếp từ một trình biên dịch hoặc trình thông dịch mà
không cần sao chép vào một vùng nhớ thực thi khác trước
2.2 Chúng ta tạo một file “badfile”, được thực hiện bằng lệnh:
$touch badfile
2.3 Tiến hành vào chương trình debug cho file stack.c, bằng cách khởi động gdb và set file cần debug ngay
$ gdb stack_dbg
Trang 212.4 Thực hiện đặt breakpoint tại hàm bof (tên hàm trong file stack.c):
2.5 Thực hiện dòng lệnh:
(gdb)b bof
Xem địa chỉ dòng lệnh bof và thuộc dòng thứ mấy trong file stack
Trang 222.6 Tiến hành kích hoạt chương trình chạy đến breakpoint:
(gdb)run
Lấy ra địa chỉ của thanh ghi ebp
(gdb)p $ebp
$1 = (void *) 0xbfffeb28
Ta xác định được địa chỉ thanh ghi ebp = (void *) 0xbfffeb38
EBP thanh ghi con trỏ cơ sở (Base Pointer), thường dùng để tham chiếu đến các biến tham số sử dụng trong chương trình con
Từ kết quả $1 ta thấy địa chỉ của chương trình con bof trong file stack có địa chỉ là 0xbfffeb28
Trang 23Tiếp theo tiến hành xác định địa chỉ biến buffer:
(gdb)p &buffer
$2 = (char (*) [24]) 0xbfffeb08
Ta xác định được địa chỉ biến buffer = (char (*)[24]) 0xbfffeb08
Tính khoảng cách từ ebp – buffer:
$3 = 32
Từ các dữ liệu trên ta có thể tính được địa chỉ trả về của hàm bof:
Return address = ebp + (32 + 4) = ebp + 36
(Ta cộng thêm 4 vì ta bỏ qua 4 byte (32 bit) vùng Return address)
Bước 3 Chỉnh sửa file exploit.c
Thay đổi địa chỉ trả về thành:
Dùng hàm memcpy để copy sizeof(shellcode) kí tự từ mảng shellcode đến địa chỉ (buffer + sizeof(buffer) – sizeof(shellcode)) phía sau của vùng Buffer:
memcpy(buffer + sizeof(buffer) – sizeof(shellcode), shellcode,
sizeof(shellcode));
Trang 24Bước 4 Thực thi:
Tiến hành tạo liên kết giữa /bin/zsh và /bin/sh:
$ sudo ln -sf /bin/zsh /bin/sh
Tạo một liên kết mềm (symbolic link) từ /bin/zsh đến /bin/sh trên hệ thống Khi thực hiện lệnh này với quyền quản trị (sudo), nó sẽ ghi đè lên bất kỳ tập tin
hoặc liên kết hiện có có tên /bin/sh
Tiếp đến, compile file stack.c và cho phép stack executable đồng thời bỏ qua StackGuard và thay đổi giá chị của biến DBUF_SIZE trong file stack.c thành 100
Đặt quyền sỡ hữu file stack.c sang cho root:
$ sudo chown root stack
Thay đổi file stack thành chương trình đặc quyền:
$ sudo chmod 4755 stack
Kiểm tra xem chương trình đã có đặc quyền cho file stack bằng câu lệnh:
$ls -l stack
Để thực hiện tiếp chương trình từ bước hai sử dụng lệnh ”quit” để thoát
chương trình và sau đó thực hiện tiếp theo
Trang 25Compile chương trình exploit.c (chương trình khai thác lỗ hỏng)
Khởi động cuộc tấn công bằng cách chạy chương trình dễ bị tấn công
Chương trình dễ bị tấn công ở đây là chương trình stack
Kết quả là “#” tức là ta đang có quyền root trong máy nạn nhân Có thể điều
khiển máy bạn nhân theo ý muốn
Đến bước này thì phần khai thác lỗ hỏng Buffer overflow đã thành công
Chúng ta đã thành công xâm nhập vào máy nạn nhân
Bước 5 Defeating Address Randomization (ASLR)
Tiến hành bật lại Address Randomization
$sudo sysctl –w kernel.randomize_va_space=2
Trang 26Trong ASLR, khi sử dụng phần randomize_va_space Các giá trị sau được
hỗ trợ:
0 - Không ngẫu nhiên Mọi thứ đều tĩnh
1 - Ngẫu nhiên bảo thủ Thư viện được chia sẻ, stack, mmap(), VDSO và
heap là ngẫu nhiên
2 - Hoàn toàn ngẫu nhiên Ngoài các phần tử được liệt kê ở điểm trước, bộ nhớ được quản lý thông qua brk() cũng được ngẫu nhiên hóa
Vậy nên khi ta đặt giá trị = 2 thì điểm đến của các vị trí ô nhớ sẽ bị ngẫu
nhiên không thể đoán trước được nên việc đoán mù ra giá trị là hoàn toàn bất khả thi
Bước 6 Bật lại tùy chọn StackGuard Protection
Tiến hành compile chương trình stack mà không có tùy chọn
-fno-stack-protector
Thực thi chương trình bị ngăn chặn
StackGuard là một kỹ thuật bảo vệ trong lập trình máy tính, nhằm ngăn chặn các cuộc tấn công thực hiện thông qua việc tận dụng lỗ hổng tràn bộ nhớ (buffer overflow) Kỹ thuật này thường được áp dụng vào việc bảo vệ bộ nhớ stack trong
Trang 27quá trình thực thi chương trình Mặc định khi compile chương trình đã được bật kỹ thuật này
Khi một chương trình được biên dịch với StackGuard, nó sẽ tự động chèn
các giá trị canary (gọi là "guard") vào giữa các biến cục bộ và các khung stack
Canaries này sẽ là các giá trị được chọn ngẫu nhiên mỗi khi chương trình được
thực thi Khi chương trình kết thúc hoặc một hàm kết thúc, giá trị canary sẽ được kiểm tra xem nó đã bị thay đổi không Nếu canary đã bị thay đổi, điều này cho thấy rằng có một cuộc tấn công buffer overflow đã xảy ra và chương trình có thể chấm dứt thực thi hoặc thực hiện các hành động bảo vệ khác
StackGuard là một trong những kỹ thuật đầu tiên được phát triển để ngăn
chặn các cuộc tấn công buffer overflow và vẫn được sử dụng trong một số hệ
thống và môi trường lập trình Tuy nhiên, các kỹ thuật bảo vệ khác như Address
Space Layout Randomization (ASLR) và các biến thể của StackGuard đã được
phát triển để đối phó với các hình thức tấn công mới và phức tạp hơn
Step 7 Bật tùy chọn Non-executable Stack Protection
Compile chương trình với tùy chọn noexecstack
$ gcc -o stack -fno-stack-protector -z noexecstack stack.c
nhau yêu cầu stack thực thi trên nhiều kiến trúc Để tránh phá vỡ các tệp nhị phân
và các thư viện được chia sẻ cần stack thực thi, các tệp nhị phân ELF và các thư
Trang 28viện được chia sẻ hiện có thể được đánh dấu là yêu cầu stack thực thi hoặc không yêu cầu stack
Người dùng có thể ghi đè điều này tại code assembly (thông qua tùy chọn trình hợp dịch execstack hoặc noexecstack), tại thời điểm liên kết (thông qua -z thực thi hoặc -z tùy chọn trình liên kết noexecstack) và sử dụng công cụ thực thi cũng trên thư viện đã chia sẻ hoặc nhị phân trình liên kết Công cụ này đặc biệt hữu ích cho các thư viện được chia sẻ của bên thứ ba, nơi được biết rằng chúng không cần ngăn xếp thực thi hoặc thử nghiệm chứng minh điều đó
Lab 03 Authentication
1 Password policies
a) Linux:Ubuntu
Bước 1: Tải package: PAM (lib-pamquality)
$ sudo apt install libpam-pwquality
Trang 29Bước 2 Chỉnh sửa cấu hình:
$sudo vi /etc/pam.d/common-password
Trong đó có các tùy chọn:
Retry = 4: Số lần liên tiếp người dùng có thể nhập sai mật khẩu
Minlen= 9: độ dài ngắn nhất của mật khẩu
Difok = 4: Số ký tự có thể giống với mật khẩu cũ
lcredit: = -2: Số chữ thường tối thiểu là 2
Ucredit = -2: Số chữ hoa tối thiểu là 2
Dcredit = -1: Số chữ số tối thiểu là 1
Ocredit = -1: Ký hiệu đặc biệt tối thiểu là 1
Reject_username: Từ chối mật khẩu chứa tên người dùng
Trang 30Enforce_for_root: Cũng thực thi chính sách cho người dùng root
Ví dụ: password requisite pam_pwquality.so retry=4 minlen=9 difok=4
lcredit=-2 ucredit=-lcredit=-2 dcredit=-1 ocredit=-1 reject_username enforce_for_root
- Ở đây ta nhập: password requisite pam_pwquality.so retry=3 minlen=3 difok=2 reject_username enforce_for_root
- Cấu hình password requisite pam_pwquality.so retry=4 minlen=3 difok=0
reject_username enforce_for_root trong tệp common-password thiết lập các chính sách mật khẩu như sau: Người dùng được phép nhập sai mật khẩu tối đa 4 lần
(retry=4) Mật khẩu phải có độ dài tối thiểu là 3 ký tự (minlen=3) Mật khẩu mới phải khác iít nhất 2 kí tự so với mật khẩu cũ (difok=2) Mật khẩu không được chứa tên người dùng (reject_username) Chính sách này cũng áp dụng cho tài khoản root (enforce_for_root) Cấu hình này giúp đảm bảo mật khẩu đáp ứng các yêu cầu cơ bản về độ dài và tính bảo mật, đồng thời ngăn chặn việc sử dụng tên người dùng trong mật khẩu
Trang 31- Nhấn phím Esc để thoát khỏi chế độ chèn, sau đó gõ :wq và nhấn Enter để lưu các thay đổi và thoát khỏi vi
Xác minh cấu hình:
- Tạo tài khoản mới:
$sudo useradd testuser : Tạo tài khoản testuser
$sudo passwd testuser : Tạo mật khẩu cho testuser
Pass: nnn2004
- Ở phần đặt mật khẩu thì ta sẽ đặt mật khẩu theo đúng yêu cầu, nếu không đáp ứng
đủ yêu cầu thì ta sẽ nhập mật khẩu khác để đáp ứng yêu cầu file cấu hình
- Đăng nhập vào testuser : Chuyển màn hình: ctrl+Alt+F1
Trang 32- Đã đăng nhập vào tài khoản testuser thành công
- Bấm ctrl+Alt+F7 để quay về
Trang 33Bước 3 Chỉnh sửa cấu hình :
$sudo vi /etc/login.defs
Trang 34- Tệp login.defs quản lý các tham số liên quan đến xác thực người dùng, đăng nhập
và mật khẩu
- Password Aging Controls:
+ PASS_MAX_DAYS: Số ngày tối đa một mật khẩu có thể được sử dụng trước
khi phải thay đổi 99999 ngày - Mật khẩu có thể dùng rất lâu trước khi hết hạn
+ PASS_MIN_DAYS: Số ngày tối thiểu phải trôi qua giữa hai lần thay đổi mật
khẩu 0 ngày - Người dùng có thể thay đổi mật khẩu bất cứ lúc nào
+ PASS_WARN_AGE: Số ngày trước khi mật khẩu hết hạn mà hệ thống sẽ cảnh báo cho người dùng 7 ngày - Cảnh báo trước khi mật khẩu hết hạn
+ PASS_MAX_DAYS và PASS_MIN_DAYS: Quản lý tuổi thọ mật khẩu, tăng
cường bảo mật
- UID and GID Allocation:
+ UID_MIN và UID_MAX: 1000 đến 60000 - Phạm vi UID cho người dùng mới + SYS_UID_MIN và SYS_UID_MAX: 100 đến 999 - Phạm vi UID cho tài khoản
hệ thống
+ UID_MIN, UID_MAX, SYS_UID_MIN, SYS_UID_MAX: Quản lý phạm vi ID, tránh trùng lặp, giới hạn tối thiểu và tối đa cho việc tự động chọn User ID (UID) khi tạo tài khoản mới bằng lệnh useradd Tài khoản mới sẽ được gán một UID
Trang 35trong khoảng từ 1000 đến 60000 Điều này giúp quản lý UID tránh xung đột và hỗ trợ quản lý tài khoản người dùng trên hệ thống
- Trích đoạn trong tệp cấu hình /etc/login.defs được sử dụng để thiết lập các quy tắc về tuổi thọ mật khẩu (password aging controls) và xác định phạm vi UID (User ID) tự động khi tạo tài khoản mới bằng lệnh useradd
b) MS Windows:
- Tạo một tài khoản và kiểm tra một số chức năng:
+ Tối thiểu hóa độ dài mật khẩu
- Điều hướng đến Password Policy:
+ Trong Local Group Policy Editor, điều hướng đến Computer Configuration > Windows Settings > Security Settings > Account Policies > Password Policy
Trang 36- Cấu hình các chính sách mật khẩu:
+ Minimum password length: Đặt độ dài mật khẩu tối thiểu Nhấp đúp vào
Minimum password length và nhập số ký tự tối thiểu
+ Password must meet complexity requirements: Đảm bảo mật khẩu phải có độ
phức tạp
+ Account lockout threshold: Đặt ngưỡng khóa tài khoản Điều hướng đến
Account Lockout Policy và nhấp đúp vào Account lockout threshold và nhập số
lần đăng nhập thất bại trước khi tài khoản bị khóa
+ Nhấp đúp vào Password must meet complexity requirements, chọn Enabled
+ Khởi động lại máy tính nếu cần thiết và kiểm tra các chính sách mật khẩu bằng cách thử đăng nhập với các mật khẩu khác nhau
Trang 38- Ngưỡng khóa tài khoản: Tài khoản sẽ bị tạm khóa khi nhập sai 10 lần
- Ở đây ta thiết lập: Minimum password length = 8 ( Độ dài mật khẩu tối thiểu 8),
Trang 39Password must meet complexity requirements: enable (Đảm bảo mật khẩu phải có
độ phức tạp), Account lockout threshold = 8 (Đặt ngưỡng khóa tài khoản = 8, tài khoản sẽ bị khóa nếu nhập sai 8 lần)
- Tiếp theo, chúng ta thử khởi tạo một mật khẩu yếu chỉ toàn số và đây là cảnh báo của hệ thống Đầu tiên ta vào Control Panel > User Accounts > Manage another
account > Add a user account
- Sau đó, ta tạo 1 account để test thử và xem 1 vài thông báo do ban nãy ta đã thiết lập Do ban nãy, ta thiết lập Minimum password length = 8 nên việc để password
là 123 sẽ không thõa mãn Ta thử lại với password mạnh hơn: nd2004lk@ Ta đã tạo thành công nhờ mật khẩu độ phức tạp thõa mãn cài đặt ban nãy