Disable LDAP Server (slapd)
이 페이지는 아직 영어로 제공되지 않습니다. 번역 작업 중입니다.
현재 번역 프로젝트에 대한 질문이나 피드백이 있으신 경우
언제든지 연락주시기 바랍니다.Description
The Lightweight Directory Access Protocol (LDAP) is a service that
provides a method for looking up information from a central database.
Rationale
If the system will not need to act as an LDAP server, it is recommended
that the software be disabled to reduce the potential attack surface.
Shell script
The following script can be run on the host to remediate the issue.
#!/bin/bash
# Remediation is applicable only in certain platforms
if dpkg-query --show --showformat='${db:Status-Status}' 'linux-base' 2>/dev/null | grep -q '^installed$'; then
SYSTEMCTL_EXEC='/usr/bin/systemctl'
if [[ $("$SYSTEMCTL_EXEC" is-system-running) != "offline" ]]; then
"$SYSTEMCTL_EXEC" stop 'slapd.service'
fi
"$SYSTEMCTL_EXEC" disable 'slapd.service'
"$SYSTEMCTL_EXEC" mask 'slapd.service'
# Disable socket activation if we have a unit file for it
if "$SYSTEMCTL_EXEC" -q list-unit-files slapd.socket; then
if [[ $("$SYSTEMCTL_EXEC" is-system-running) != "offline" ]]; then
"$SYSTEMCTL_EXEC" stop 'slapd.socket'
fi
"$SYSTEMCTL_EXEC" mask 'slapd.socket'
fi
# The service may not be running because it has been started and failed,
# so let's reset the state so OVAL checks pass.
# Service should be 'inactive', not 'failed' after reboot though.
"$SYSTEMCTL_EXEC" reset-failed 'slapd.service' || true
else
>&2 echo 'Remediation is not applicable, nothing was done'
fi
Ansible playbook
The following playbook can be run with Ansible to remediate the issue.
- name: Gather the package facts
package_facts:
manager: auto
tags:
- disable_strategy
- low_complexity
- low_disruption
- medium_severity
- no_reboot_needed
- service_slapd_disabled
- name: Disable LDAP Server (slapd) - Collect systemd Services Present in the System
ansible.builtin.command: systemctl -q list-unit-files --type service
register: service_exists
changed_when: false
failed_when: service_exists.rc not in [0, 1]
check_mode: false
when: '"linux-base" in ansible_facts.packages'
tags:
- disable_strategy
- low_complexity
- low_disruption
- medium_severity
- no_reboot_needed
- service_slapd_disabled
- name: Disable LDAP Server (slapd) - Ensure slapd.service is Masked
ansible.builtin.systemd:
name: slapd.service
state: stopped
enabled: false
masked: true
when:
- '"linux-base" in ansible_facts.packages'
- service_exists.stdout_lines is search("slapd.service", multiline=True)
tags:
- disable_strategy
- low_complexity
- low_disruption
- medium_severity
- no_reboot_needed
- service_slapd_disabled
- name: Unit Socket Exists - slapd.socket
ansible.builtin.command: systemctl -q list-unit-files slapd.socket
register: socket_file_exists
changed_when: false
failed_when: socket_file_exists.rc not in [0, 1]
check_mode: false
when: '"linux-base" in ansible_facts.packages'
tags:
- disable_strategy
- low_complexity
- low_disruption
- medium_severity
- no_reboot_needed
- service_slapd_disabled
- name: Disable LDAP Server (slapd) - Disable Socket slapd
ansible.builtin.systemd:
name: slapd.socket
enabled: false
state: stopped
masked: true
when:
- '"linux-base" in ansible_facts.packages'
- socket_file_exists.stdout_lines is search("slapd.socket", multiline=True)
tags:
- disable_strategy
- low_complexity
- low_disruption
- medium_severity
- no_reboot_needed
- service_slapd_disabled