Access Hub Scanner
Đang phát triểnĐồng bộ từ mã nguồn lúc 10:57, 03/10/2026
Skip to content

Danh mục kiểm tra cấu hình và hardening ​

Kiểm tra cấu hình AHS-* là một phần của Access Hub Scanner, làm ở giai đoạn P5 (12). Phát hiện bí mật và dữ liệu cá nhân trong nội dung tệp là danh mục riêng ở 14.

16 phút đọcCập nhật 03/10/2026access-hub-scanner, docs/05-checks-catalog.md

1. Nguyên tắc ​

  • Chỉ đọc. Kiểm tra đọc tệp, /proc, /sys, trạng thái unit systemd qua tệp. Không sửa, không khởi động lại, không gọi lệnh có tác dụng phụ. Không có kiểm tra "tự sửa" (ADR 0003).
  • Biên dịch sẵn. Danh mục nằm trong mã scanner. Cấu hình từ trung tâm chỉ bật, tắt theo mã AHS-* và chỉnh tham số số học có miền (ví dụ ngưỡng ngày), không nhận biểu thức, đường dẫn tùy ý hay lệnh.
  • Bằng chứng tối thiểu. Mỗi kết quả mang evidence gồm khóa trong danh sách trắng của chính kiểm tra đó, giá trị cắt tối đa 256 byte, tối đa 20 mục. Không bao giờ chứa nội dung tệp, băm mật khẩu, khóa (ADR 0006).
  • Kết quả: pass, fail, error (không đọc được, kèm mã lỗi), not_applicable (ví dụ không cài sshd), unknown (cấu hình quá phức tạp để kết luận, ví dụ khối Match của SSH).
  • Mã ổn định. AHS-<NHÓM>-<SỐ>, kèm check_version tăng khi logic đổi. Không dùng lại số.
  • Tham chiếu CIS. Cột "Tham chiếu" chỉ nêu chương chủ đề của CIS Benchmark. Số mục cụ thể khác nhau theo phiên bản benchmark và theo distro; ánh xạ chính xác làm ở giai đoạn P5 với bản benchmark có giấy phép hợp lệ (Q9). Sản phẩm không tự nhận là "CIS compliant".

Mức nghiêm trọng: critical, high, medium, low, info. Mức có thể ghi đè theo công ty (08), mặc định như bảng.

Quyền cần: U đọc được bởi người dùng thường; R cần CAP_DAC_READ_SEARCH (đọc tệp chỉ root đọc); A chạy ở bộ gửi accesshub-scan-uploader (có mạng đi ra, không đặc quyền, chỉ tới địa chỉ cục bộ của máy); C đánh giá tập trung.

2. SSH server ​

Phát hiện: parser sshd_config theo quy tắc của OpenSSH: giá trị đầu tiên của mỗi từ khóa có hiệu lực, xử lý Include (kể cả glob như /etc/ssh/sshd_config.d/*.conf) theo thứ tự xuất hiện, không phân biệt hoa thường ở từ khóa. Có khối Match ảnh hưởng tới từ khóa đang xét: kết quả unknown kèm evidence.match_blocks = N, trừ khi giá trị toàn cục đã đạt và mọi khối Match không ghi đè từ khóa đó. Không gọi sshd -T (cần root và là thực thi lệnh). not_applicable khi không có gói openssh-server trong inventory.

MãKiểm traMứcLý doPhát hiệnDương tính giảQuyềnTham chiếu
AHS-SSH-001PermitRootLogin khác nohigh (yes), low (prohibit-password)Đăng nhập trực tiếp bằng root làm mất truy vết cá nhân và là mục tiêu dò mật khẩuGiá trị hiệu lực; mặc định OpenSSH hiện đại là prohibit-passwordMáy chỉ cho root đăng nhập bằng khóa từ hệ thống tự động: ngoại lệ có lý doU hoặc R (một số distro để sshd_config 0600)Chương SSH Server
AHS-SSH-002PasswordAuthentication yesmediumMở đường dò mật khẩuGiá trị hiệu lực, cộng KbdInteractiveAuthenticationMáy sau bastion chỉ cho mạng nội bộ: ngoại lệU/RChương SSH Server
AHS-SSH-003PermitEmptyPasswords yescriticalTài khoản mật khẩu rỗng đăng nhập được từ xaGiá trị hiệu lựcRất hiếmU/RChương SSH Server
AHS-SSH-004Thuật toán yếu trong Ciphers, MACs, KexAlgorithmsmediumBộ mã CBC, arcfour, hmac-md5, hmac-sha1, diffie-hellman-group1-sha1 đã lỗi thờiSo danh sách khai báo với danh sách yếu trong mã; không khai báo thì dùng mặc định của phiên bản OpenSSH (lấy từ inventory)Mặc định thay đổi theo phiên bản OpenSSH: bảng mặc định phải kiểm thử theo distroU/RChương SSH Server
AHS-SSH-005X11Forwarding yeslowMở rộng bề mặt tấn công không cần thiết trên máy chủGiá trị hiệu lựcMáy dùng ứng dụng đồ họa từ xaU/RChương SSH Server
AHS-SSH-006MaxAuthTries lớn hơn 4lowTăng số lần thử mỗi kết nốiGiá trị hiệu lực, ngưỡng cấu hình 1 đến 10U/RChương SSH Server
AHS-SSH-007Quyền sshd_config hoặc tệp Include cho người khác ghi, hoặc chủ sở hữu không phải roothighNgười dùng thường sửa được cấu hình SSHstat: chế độ, uid, gidUChương SSH Server
AHS-SSH-008Khóa riêng của host (/etc/ssh/ssh_host_*_key) đọc được bởi nhóm hoặc người kháchighLộ khóa host cho phép giả mạo máy chủstat (chế độ, chủ sở hữu). Không đọc nội dung khóaMột số distro để nhóm ssh_keys đọc (0640, nhóm ssh_keys trên họ RHEL): cho phép theo bảng distroUChương SSH Server

3. Mạng và tường lửa ​

MãKiểm traMứcLý doPhát hiệnDương tính giảQuyềnTham chiếu
AHS-NET-001Cổng đang nghe không nằm trong danh sách dự kiếnmediumDịch vụ lạ hoặc quên tắtMáy gửi danh sách socket nghe (/proc/net/tcp, tcp6, udp, udp6: giao thức, địa chỉ, cổng). Access Hub so với danh sách dự kiến theo máy, vai trò, tag (08)Cổng ngẫu nhiên của ứng dụng (RPC động), cổng tạm khi bảo trì: hỗ trợ dải cổng và ngoại lệ có hạnU (danh sách socket), C (so sánh)Chương dịch vụ, mạng
AHS-NET-002Dịch vụ cơ sở dữ liệu, cache nghe trên mọi địa chỉ (0.0.0.0, ::)highMySQL, PostgreSQL, Redis, MongoDB, Elasticsearch, Memcached mở ra mạng là nguyên nhân lộ dữ liệu phổ biếnCổng mặc định (3306, 5432, 6379, 27017, 9200, 11211) nghe trên địa chỉ không phải loopbackCụm cơ sở dữ liệu cố ý mở trong mạng riêng có tường lửa: ngoại lệ compensating_controlUChương dịch vụ
AHS-NET-003Không có tường lửa máy đang bậtmediumKhông có lớp chặn khi dịch vụ lỡ mởTrạng thái bật của ufw (/etc/ufw/ufw.conf ENABLED=yes), firewalld, nftables (liên kết unit trong /etc/systemd/system/*.wants/, tệp trạng thái). Không liệt kê luật (cần CAP_NET_ADMIN, Q16)Máy dựa vào tường lửa mạng hoặc security group của cloud: ngoại lệ compensating_controlUChương tường lửa
AHS-NET-004net.ipv4.ip_forward = 1 trên máy không phải routerlowMáy có thể bị dùng làm điểm chuyển tiếp/proc/sys/net/ipv4/ip_forwardMáy chạy Docker, Kubernetes, VPN bật forward là đúng: tự not_applicable khi inventory có docker-ce, containerd, kubelet, wireguard-toolsUChương tham số mạng
AHS-NET-005Chấp nhận ICMP redirect (accept_redirects = 1)lowCho phép đổi bảng định tuyến từ xa/proc/sys/net/ipv4/conf/all/accept_redirects, defaultUChương tham số mạng

Ánh xạ cổng sang tiến trình (ss -p) cần đọc /proc/<pid>/fd của tiến trình người khác, việc này cần quyền kiểu ptrace chứ không chỉ quyền đọc tệp. Mặc định không làm; câu hỏi Q17.

4. Tài khoản, mật khẩu, sudo ​

MãKiểm traMứcLý doPhát hiệnDương tính giảQuyềnTham chiếu
AHS-AUTH-001Tài khoản có trường mật khẩu rỗng trong /etc/shadowcriticalĐăng nhập không cần mật khẩuĐọc /etc/shadow, chỉ xét trường 2 có rỗng hay không. Không gửi, không log, không giữ băm; bằng chứng chỉ là tên tài khoản (Q12)Tài khoản bị khóa có ! hoặc * không tínhRChương tài khoản
AHS-AUTH-002Tài khoản UID 0 khác rootcriticalCửa hậu phổ biến/etc/passwdUChương tài khoản
AHS-AUTH-003Tuổi mật khẩu tối đa lớn hơn ngưỡnglowChính sách mật khẩu yếuPASS_MAX_DAYS trong /etc/login.defs, ngưỡng mặc định 365Máy chỉ đăng nhập bằng khóa SSH hoặc SSO: ngoại lệUChương mật khẩu
AHS-AUTH-004Độ dài mật khẩu tối thiểu nhỏ hơn ngưỡnglowMật khẩu ngắn dễ đoánminlen trong /etc/security/pwquality.conf và pwquality.conf.d, ngưỡng mặc định 12Như trên; cấu hình PAM khác chuẩn trả unknownUChương mật khẩu
AHS-AUTH-005Không có khóa tài khoản khi đăng nhập sailowKhông chặn dò mật khẩu cục bộCó pam_faillock hoặc pam_tally2 trong /etc/pam.d/common-auth hoặc system-authNhư AUTH-003UChương PAM
AHS-AUTH-006Quy tắc sudo NOPASSWD: ALLmediumChiếm tài khoản là chiếm root không cần mật khẩuParser sudoers và sudoers.d (#includedir, @includedir), alias. Bằng chứng: chủ thể (người dùng, nhóm), số dòng; không gửi cả dòngTài khoản tự động hóa cần không mật khẩu: ngoại lệ, khuyến nghị giới hạn lệnhRChương sudo
AHS-AUTH-007Tệp sudoers hoặc sudoers.d/* không phải 0440 root, hoặc người khác ghi đượchighSửa được quyền sudostatUChương sudo
AHS-AUTH-008/etc/passwd, /etc/group khác 0644, /etc/shadow, /etc/gshadow cho người khác đọchighLộ băm mật khẩu hoặc sửa được tài khoảnstatDebian, Ubuntu để /etc/shadow 0640 nhóm shadow: hợp lệ theo bảng distroUChương quyền tệp hệ thống

5. Hệ thống tệp ​

Duyệt tệp tốn IO nhất, chạy với IOSchedulingClass=idle, giới hạn SNFR-05. Phạm vi mặc định: /etc, /usr, /bin, /sbin, /lib, /lib64, /boot, /opt, /var trừ /var/tmp, /var/lib/docker, /var/lib/containerd, /var/log/journal. Không vượt điểm gắn, bỏ hệ thống tệp mạng và ảo (nfs, cifs, fuse.*, proc, sysfs, overlay). Không đọc nội dung tệp, chỉ lstat. Thư mục nhà (/home, /root) không duyệt mặc định cho nhóm AHS-FS. Lượt nội dung (đọc nội dung, gồm thư mục nhà) là unit riêng với phạm vi và ngân sách riêng (ADR 0009); từ giai đoạn P5, các kiểm tra AHS-FS dùng lại chỉ mục của lượt nội dung khi có để tránh duyệt hai lần. Quản trị viên thêm loại trừ (tối đa 32 đường dẫn tuyệt đối, kiểm tra hợp lệ ở cả Access Hub và scanner).

MãKiểm traMứcLý doPhát hiệnDương tính giảQuyềnTham chiếu
AHS-FS-001Tệp thường ghi được bởi mọi người trong thư mục hệ thốnghighNgười dùng thường sửa được tệp do root thực thi hoặc đọclstat, chế độ o+w trên tệp thường. Bằng chứng: tổng số và tối đa 50 đường dẫn đầuTệp ứng dụng cố ý chia sẻ trong /opt: loại trừ đường dẫnR (để vào thư mục bị giới hạn)Chương quyền tệp
AHS-FS-002Thư mục ghi được bởi mọi người không có sticky bitmediumNgười dùng xóa, thay tệp của người kháclstat, o+w không có +tRChương quyền tệp
AHS-FS-003Tệp không có chủ sở hữu hoặc nhóm hợp lệlowTàn dư tài khoản đã xóa, UID mới có thể chiếmuid, gid không có trong /etc/passwd, /etc/groupTài khoản từ LDAP, SSSD không có trong tệp cục bộ: unknown khi phát hiện sssd hoặc nslcd trong inventoryRChương quyền tệp
AHS-FS-004/tmp không gắn với nodev, nosuid, noexeclowGiảm khả năng leo thang qua /tmp/proc/self/mountinfoNhiều ứng dụng cần exec trong /tmp; mức low, nhiều tổ chức tắt kiểm tra nàyUChương phân vùng
AHS-FS-005Tệp SUID, SGID không thuộc gói nàomediumBinary đặc quyền lạ là dấu hiệu cửa hậuLiệt kê SUID, SGID trong phạm vi duyệt, so với danh sách tệp của gói (dpkg *.list, rpm header)Phần mềm cài tay ngoài gói: ngoại lệ theo đường dẫn. Cần đo chi phí đọc danh sách tệp của gói (S5), có thể dời sau giai đoạn P5RChương quyền tệp

6. Cập nhật và vòng đời ​

MãKiểm traMứcLý doPhát hiệnDương tính giảQuyềnTham chiếu
AHS-UPD-001Không bật cập nhật bảo mật tự độngmediumBản vá bảo mật bị chậmDebian, Ubuntu: APT::Periodic::Unattended-Upgrade "1" trong /etc/apt/apt.conf.d/ và có gói unattended-upgrades. Họ RHEL: dnf-automatic.timer được bật (liên kết unit) và apply_updates trong /etc/dnf/automatic.confTổ chức vá theo quy trình tập trung (Ansible, Satellite): ngoại lệ compensating_controlUChương cập nhật
AHS-UPD-002Danh sách gói lâu không làm mớilowKhông thấy bản vá mớiDebian, Ubuntu: thời điểm /var/lib/apt/periodic/update-success-stamp hoặc mtime của /var/lib/apt/lists. Ngưỡng 7 ngàyMáy kín dùng mirror nội bộ đồng bộ theo lịchUChương cập nhật
AHS-UPD-003Cần khởi động lại để áp bản vámediumKernel hoặc thư viện đã vá nhưng chưa có hiệu lực/var/run/reboot-required (Debian, Ubuntu); so kernel đang chạy với kernel mới nhất đã cài (mọi distro)UChương cập nhật
AHS-UPD-004Bản phát hành OS đã hết hỗ trợ bảo mậthighKhông còn bản váSo os.id, os.version_id với bảng vòng đời trong secdb (03). Ubuntu có ESM thì xét ngày ESM nếu máy bật ESM (Q15)CChương cập nhật

7. Kernel, nhật ký, đồng bộ giờ, kiểm soát truy cập bắt buộc ​

MãKiểm traMứcLý doPhát hiệnDương tính giảQuyềnTham chiếu
AHS-KRN-001ASLR không đầy đủ (kernel.randomize_va_space khác 2)mediumGiảm hiệu quả chống khai thác bộ nhớ/proc/sys/kernel/randomize_va_spaceUChương tham số kernel
AHS-KRN-002fs.suid_dumpable khác 0lowCore dump của tiến trình SUID có thể lộ dữ liệu/proc/sys/fs/suid_dumpableUChương tham số kernel
AHS-KRN-003kernel.dmesg_restrict = 0lowLộ địa chỉ kernel cho người dùng thường/proc/sys/kernel/dmesg_restrictUChương tham số kernel
AHS-LOG-001Không có auditd hoặc không bậtlowThiếu nhật ký phục vụ điều traGói auditd hoặc audit trong inventory và unit được bậtTổ chức dùng giải pháp EDR khác: ngoại lệUChương nhật ký
AHS-LOG-002Không có đồng bộ giờlowSai giờ làm hỏng nhật ký, chứng chỉUnit chronyd, systemd-timesyncd, ntpd được bậtMáy ảo đồng bộ qua hypervisorUChương đồng bộ giờ
AHS-MAC-001SELinux không ở enforcing (họ RHEL) hoặc AppArmor không bật (Ubuntu, Debian)mediumMất lớp cô lập bắt buộc/sys/fs/selinux/enforce; /sys/module/apparmor/parameters/enabledỨng dụng không tương thích: ngoại lệ có hạnU hoặc R (tùy distro)Chương kiểm soát truy cập bắt buộc

8. TLS trên dịch vụ cục bộ ​

Bộ đọc không có mạng (ADR 0001), nên kiểm tra TLS do bộ gửi accesshub-scan-uploader của gói Scanner thực hiện bằng kiểu kiểm tra biên dịch sẵn, không nhờ Access Hub Agent (Q25). Đích chỉ là địa chỉ loopback và địa chỉ của chính máy (bộ gửi kiểm tra địa chỉ đích thuộc giao diện cục bộ), cổng lấy từ danh sách socket nghe do bộ đọc báo; Access Hub bật kiểm tra cho cổng có TLS khi người dùng chọn.

MãKiểm traMứcLý doPhát hiệnDương tính giảQuyềnTham chiếu
AHS-TLS-001Chứng chỉ hết hạn hoặc còn dưới 14 ngàycritical (hết hạn), high (dưới 14 ngày)Gián đoạn dịch vụ, người dùng quen bỏ qua cảnh báotls_probe của bộ gửi đọc ngày hết hạn chứng chỉChứng chỉ nội bộ tự xoayAChương dịch vụ
AHS-TLS-002Cho phép TLS 1.0 hoặc 1.1mediumGiao thức lỗi thờiKiểu kiểm tra tls_probe ở bộ gửi: bắt tay lần lượt với từng phiên bản, chỉ ghi phiên bản nào thành côngThiết bị cũ cần tương thích: ngoại lệAChương dịch vụ
AHS-TLS-003Bộ mã yếu (RC4, 3DES, NULL, EXPORT)mediumCó thể giải mã hoặc hạ cấptls_probe thử danh sách bộ mã cố định trong mã bộ gửiAChương dịch vụ
AHS-TLS-004Chứng chỉ tự ký hoặc tên máy không khớplowDễ bị giả mạo, người dùng quen bỏ quaKết quả xác minh của tls_probeDịch vụ nội bộ chỉ dùng mạng riêng: thường tắtAChương dịch vụ

tls_probe là kiểu kiểm tra cố định, tham số có lược đồ (đích cục bộ, cổng, SNI), không nhận nội dung tùy ý, không thực thi từ xa (ADR 0003). Kết quả đi trong SecurityReport.checks như mọi kiểm tra khác; việc làm ở SCN-7 (P5), không cần thay đổi ở repo Agent hay Collector.

9. Ánh xạ ngược sang finding ​

Kết quả fail sinh finding loại check với finding_key = SHA-256(company_id | server_id | check_id | subject), subject là đối tượng cụ thể khi kiểm tra có nhiều đối tượng (cổng, tài khoản, đường dẫn), rỗng nếu không. Kết quả pass ở lần quét sau đóng finding (resolved_reason = check_passed). error và unknown không mở, không đóng finding; hiển thị riêng để người dùng biết độ phủ.

10. Thêm kiểm tra mới ​

  1. Viết đặc tả theo các cột ở trên, nêu rõ quyền cần và bằng chứng gửi đi.
  2. Rà soát dữ liệu: bằng chứng có lộ bí mật hay dữ liệu cá nhân không (09 mục 5).
  3. Fixture cho mỗi distro hỗ trợ cộng ca not_applicable và unknown (11).
  4. Cập nhật bảng này và danh mục mã trong cùng một thay đổi.
Trang này có giúp được bạn không?
Sửa trang này

Nội dung đồng bộ từ kho mã access-hub-scanner lúc 10:57, 03/10/2026. Khi tài liệu và mã khác nhau, mã thắng.