harbian-audit/README-CN.md

15 KiB
Raw Blame History

harbian-audit审计与加固

简介

此项目是一个Debian GNU/Linux及CentOS 8发行版加固的审计工具。主要的测试环境是基于Debian GNU/Linux 9/10及CentOS 8其它版本未充分测试。此项目主要是针对的Debian GNU/Linux服务器版本对桌面版本及SELinux相关的项没有实现。 此项目的框架基于OVH-debian-cis根据Debian GNU/Linux 9的一些特性进行了优化并根据安全部署合规STIGSTIG Red_Hat_Enterprise_Linux_7_V2R5STIG Ubuntu V1R2及CIScisecurity.org进行了安全检查项的添加同时也根据HardenedLinux社区就具体生产环境添加了一些安全检查项的审计功能的实现。此项目不仅具有安全项的审计功能同时也有自动修改的功能。

审计功能的使用示例:

$ sudo bash bin/hardening.sh --audit-all
[...]
hardening                 [INFO] Treating /home/test/harbian-audit/bin/hardening/13.15_check_duplicate_gid.sh
13.15_check_duplicate_gid [INFO] Working on 13.15_check_duplicate_gid
13.15_check_duplicate_gid [INFO] Checking Configuration
13.15_check_duplicate_gid [INFO] Performing audit
13.15_check_duplicate_gid [ OK ] No duplicate GIDs
13.15_check_duplicate_gid [ OK ] Check Passed

[...]
################### SUMMARY ###################
      Total Available Checks : 278
         Total Runned Checks : 278
         Total Passed Checks : [ 239/278 ]
         Total Failed Checks : [  39/278 ]
   Enabled Checks Percentage : 100.00 %
       Conformity Percentage : 85.97 %

快速上手使用介绍

下载及初始化

$ git clone https://github.com/hardenedlinux/harbian-audit.git && cd harbian-audit
$ sudo cp etc/default.cfg /etc/default/cis-hardening
$ sudo sed -i "s#CIS_ROOT_DIR=.*#CIS_ROOT_DIR='$(pwd)'#" /etc/default/cis-hardening
$ sudo bin/hardening.sh --init

对所有的安全检查项进行审计

$ sudo bin/hardening.sh --audit-all
hardening                 [INFO] Treating /home/test/harbian-audit/bin/hardening/1.1_install_updates.sh
1.1_install_updates       [INFO] Working on 1.1_install_updates
1.1_install_updates       [INFO] Checking Configuration
1.1_install_updates       [INFO] Performing audit
1.1_install_updates       [INFO] Checking if apt needs an update
1.1_install_updates       [INFO] Fetching upgrades ...
1.1_install_updates       [ OK ] No upgrades available
1.1_install_updates       [ OK ] Check Passed
[...]
################### SUMMARY ###################
      Total Available Checks : 278
         Total Runned Checks : 278
         Total Passed Checks : [ 239/278 ]
         Total Failed Checks : [  39/278 ]
   Enabled Checks Percentage : 100.00 %
       Conformity Percentage : 85.97 %

设置加固级别并进行自动修复

$ sudo bin/hardening.sh --set-hardening-level 5  
$ sudo bin/hardening.sh --apply  
hardening                 [INFO] Treating /home/test/harbian-audit/bin/hardening/1.1_install_updates.sh
1.1_install_updates       [INFO] Working on 1.1_install_updates
1.1_install_updates       [INFO] Checking Configuration
1.1_install_updates       [INFO] Performing audit
1.1_install_updates       [INFO] Checking if apt needs an update
1.1_install_updates       [INFO] Fetching upgrades ...
1.1_install_updates       [ OK ] No upgrades available
1.1_install_updates       [INFO] Applying Hardening
1.1_install_updates       [ OK ] No Upgrades to apply
1.1_install_updates       [ OK ] Check Passed
[...]

用法简介

需要预装的软件

如果是使用的最小安装方式安装的Debian GNU/Linux系统在使用此项目之前需要安装如下的软件

sudo apt-get install -y bc net-tools pciutils 

如果系统是Redhat/CentOS在使用此项目前需要安装如下的软件包

sudo yum install -y bc net-tools pciutils NetworkManager epel-release 

需要预先进行的配置

在使用此项目前,必须给所有要用到的用户设置了密码。如果没有设置密码的话,将在进行自动化加固后不能够登录到系统。例如(用户root和test:

$ sudo -s 
# passwd 
# passwd test 

项目本身的配置

审计及修复的脚本代码位于bin/hardening目录中每个脚本文件对应位于/etc/conf.d/[script_name].cfg的一个配置文件。每个脚本都能够单独设置为enabled或disabled例如 disable_system_accounts:

# Configuration for script of same name
status=disabled
# Put here your exceptions concerning admin accounts shells separated by spaces
EXCEPTIONS=""

status参数可能的3个值

  • disabled (do nothing): 此脚本在执行时不会被运行
  • audit (RO): 此脚本只会进行审计的检测
  • enabled (RW): 此脚本不仅进行审计的检测,也能进行自动修改。

要生成每个脚本对应的配置文件并设置审计的级别,使用如下命令:

  1. 当第一次执行本项目时通过参数audit-all来生成etc/conf.d/[script_name].cfg
# bash bin/hardening.sh --audit-all
  1. 使用参数set-hardening-level来设置对应级别的脚本的[script_name].cfg配置文件为enabled状态
# bash bin/hardening.sh --set-hardening-level <level>

通用配置文件为etc/hardening.cfg,这个文件可以对日志文件的级别、备份目录进行控制,备份目录是当自动修复时对原配置文件进行备份的目录。

审计及修复的操作 (进行加固后,必须进行“修复后”章节中的操作)

要进行审计及修复,运行bin/hardening.sh,此命令有两个主要的执行模式:

  • --audit: 对所有配置为enabled对应的脚本进行审计
  • --apply: 对所有配置为enabled对应的脚本进行审计及修复 另外, --audit-all 参数能够强制执行所有审计脚本包括配置为disabled的脚本此操作不会对系统有任何的影响(不会修复) --audit-all-enable-passed参数可以用作快速启动配置的快捷方式将在审计模式执行所有的脚本。如果脚本对应的审计通过此脚本对应的配置文件将自动配置为enabled。如果你已经自定义了你的配置文件别使用此参数进行执行。

使用如下命令进行加固/修复系统:

# bash bin/hardening.sh --apply 

修复后必须进行的操作 (非常重要)

当set-hardening-level配置为5最高等级且使用--apply运行了后需要进行如下的操作

  1. 当9.5项被修复后(Restrict Access to the su Command), 如果必须使用su的场景例如如果使用ssh远程登录当以普通用户登录后需要使用su命令时可以使用如下命令进行解除限制
# sed -i '/^[^#].*pam_wheel.so.*/s/^/# &/' /etc/pam.d/su 

暂时注释掉包含pam_wheel.so的行当使用完su命令后请去掉此行的注释。

  1. 当7.4.4项被修复后7.4.4_hosts_deny.sh, 系统将拒绝所有的连接例如ssh连接所以需要设置/etc/hosts.allow文件中允许访问此主机的列表例如
# echo "ALL: 192.168.1. 192.168.5." >> /etc/hosts.allow

此示例配置表示仅允许192.168.1.[1-255] 192.168.5.[1-255]两个网段能够访问此系统。 具体配置请根据实际场景进行配置。

  1. 为普通用户设置能力,例如(用户名为test):
# sed -i "/^root/a\test    ALL=(ALL:ALL) ALL" /etc/sudoers 
  1. 设置基本的iptables防火墙规则 根据实现场景进行防火墙规则的配置可参考HardenedLinux社区归纳的基于Debian GNU/Linux的防火墙规则的基本规则 etc.iptables.rules.v4.sh

基于iptables的部署:

$ INTERFACENAME="your network interfacename(Example eth0)"
$ sudo bash docs/configurations/etc.iptables.rules.v4.sh $INTERFACENAME
$ sudo -s
# iptables-save > /etc/iptables/rules.v4 
# ip6tables-save > /etc/iptables/rules.v6 

基于nft的部署 按照以下命令修改nftables.conf(你的对外网口的名称例如eth0):

$ sed -i 's/^define int_if = ens33/define int_if = eth0/g' etc.nftables.conf 
$ sudo nft -f ./etc.nftables.conf 
  1. 当所有安全基线项都修复完成后,使用--final方法将完成以下的最终的工作 1.使用passwd命令去重新设置常规用户及root用户的密码以满足pam_cracklib模块配置的密码强度和健壮性。 2. 重新初始化aide工具的数据库。
$ sudo bin/hardening.sh --final

特别注意

必须在第一次修复应用后进行修复的项

8.1.32 因为此项一旦设置,审计规则将不能够再进行添加。

必须在所有项都修复应用后进行修复的项

8.4.1 8.4.2 这都是与aide检测文件完整性相关的项最好是在所有项都修复好后再进行修复以修复好的系统中的文件进行完整性的数据库的初始化。

一些检查项需要依赖多次修复,且操作系统需要多次重启

需要进行两次修复的项

8.1.1.2
8.1.1.3
8.1.12
4.5

玩(如何添加检查项)

获取源码

$ git clone https://github.com/hardenedlinux/harbian-audit.git

添加一个自定义脚本

$ cp src/skel bin/hardening/99.99_custom_script.sh
$ chmod +x bin/hardening/99.99_custom_script.sh
$ cp src/skel.cfg etc/conf.d/99.99_custom_script.cfg

将对应的配置文件配置为enabled并进行审计及加固的测试

$ sed -i "s/status=.+/status=enabled/" etc/conf.d/99.99_custom_script.cfg
$ bash bin/hardening.sh --audit --only 99.99
$ bash bin/hardening.sh --apply --only 99.99

项目相关文档列表

Harbian-audit benchmark for Debian GNU/Linux 9

This document is a description of the additions to the sections not included in the CIS reference documentation. Includes STIG reference documentation and additional checks recommended by the HardenedLinux community.

CIS Debian GNU/Linux 8 Benchmark v1.0.0
CIS Debian GNU/Linux 9 Benchmark v1.0.0
harbian audit Debian Linux 9 Benchmark

手动修复的操作文档列表

How to config grub2 password protection
How to persistent iptables rules with debian 9
How to deploy audisp-remote for auditd log

应用场景示例文档列表

Nodejs + redis + mysql demo
deploy-hyperledger-cello-on-debian-9
nginx-mutual-ssl-proxy-http
nginx-mutual-ssl-proxy-tcp-udp

harbian-audit合规制定的镜像

AMI(Amazon Machine Image) Public

The HardenedLinux community has created public AMI images for three different regions.

Destination region: US East(Ohio)
AMI ID: ami-091d37e9d358aaa84
AMI Name: harbian-audit complianced for Debian GNU/Linux 9

Destination region: EU(Frankfurt)
AMI ID: ami-073725a8c2cf45418
AMI Name: harbian-audit complianced for Debian GNU/Linux 9

Destination region: Asia Pacific(Tokyo)
AMI ID: ami-06c0adb6ee5e7d417
AMI Name: harbian-audit complianced for Debian GNU/Linux 9

相关文档

how to creating and making an AMI public
how to use harbian-audit complianced for GNU/Linux Debian 9

QEMU Image

相关文档

How to creating and making a QEMU image of harbian-audit complianced Debian GNU/Linux 9
How to use QEMU image of harbian-audit complicanced Debian GNU/Linux 9

harbian-audit License

GPL 3.0

OVH Disclaimer

This project is a set of tools. They are meant to help the system administrator built a secure environment. While we use it at OVH to harden our PCI-DSS compliant infrastructure, we can not guarantee that it will work for you. It will not magically secure any random host.

Additionally, quoting the License:

THIS SOFTWARE IS PROVIDED BY OVH SAS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OVH SAS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

OVH License

3-Clause BSD

参考列表