Пример #1
0
def get_audits():
    """Get Apache hardening config audits.

    :returns:  dictionary of audits
    """
    if subprocess.call(['which', 'apache2'], stdout=subprocess.PIPE) != 0:
        log(
            "Apache server does not appear to be installed on this node - "
            "skipping apache hardening",
            level=INFO)
        return []

    context = ApacheConfContext()
    settings = utils.get_settings('apache')
    audits = [
        FilePermissionAudit(paths=os.path.join(
            settings['common']['apache_dir'], 'apache2.conf'),
                            user='******',
                            group='root',
                            mode=0o0640),
        TemplatedFile(os.path.join(settings['common']['apache_dir'],
                                   'mods-available/alias.conf'),
                      context,
                      TEMPLATES_DIR,
                      mode=0o0640,
                      user='******',
                      service_actions=[{
                          'service': 'apache2',
                          'actions': ['restart']
                      }]),
        TemplatedFile(os.path.join(settings['common']['apache_dir'],
                                   'conf-enabled/99-hardening.conf'),
                      context,
                      TEMPLATES_DIR,
                      mode=0o0640,
                      user='******',
                      service_actions=[{
                          'service': 'apache2',
                          'actions': ['restart']
                      }]),
        DirectoryPermissionAudit(settings['common']['apache_dir'],
                                 user='******',
                                 group='root',
                                 mode=0o0750),
        DisabledModuleAudit(settings['hardening']['modules_to_disable']),
        NoReadWriteForOther(settings['common']['apache_dir']),
        DeletedFile(['/var/www/html/index.html'])
    ]

    return audits
Пример #2
0
def get_audits():
    """Get OS hardening profile audits.

    :returns:  dictionary of audits
    """
    audits = []

    settings = utils.get_settings('os')
    # If core dumps are not enabled, then don't allow core dumps to be
    # created as they may contain sensitive information.
    if not settings['security']['kernel_enable_core_dump']:
        audits.append(TemplatedFile('/etc/profile.d/pinerolo_profile.sh',
                                    ProfileContext(),
                                    template_dir=TEMPLATES_DIR,
                                    mode=0o0755, user='******', group='root'))
    if settings['security']['ssh_tmout']:
        audits.append(TemplatedFile('/etc/profile.d/99-hardening.sh',
                                    ProfileContext(),
                                    template_dir=TEMPLATES_DIR,
                                    mode=0o0644, user='******', group='root'))
    return audits
Пример #3
0
def get_audits():
    """Get OS hardening login.defs audits.

    :returns:  dictionary of audits
    """
    audits = [
        TemplatedFile('/etc/login.defs',
                      LoginContext(),
                      template_dir=TEMPLATES_DIR,
                      user='******',
                      group='root',
                      mode=0o0444)
    ]
    return audits
Пример #4
0
def get_audits():
    """Get OS hardening Secure TTY audits.

    :returns:  dictionary of audits
    """
    audits = []
    audits.append(
        TemplatedFile('/etc/securetty',
                      SecureTTYContext(),
                      template_dir=TEMPLATES_DIR,
                      mode=0o0400,
                      user='******',
                      group='root'))
    return audits
Пример #5
0
def get_audits():
    """Get MySQL hardening config audits.

    :returns:  dictionary of audits
    """
    if subprocess.call(['which', 'mysql'], stdout=subprocess.PIPE) != 0:
        log(
            "MySQL does not appear to be installed on this node - "
            "skipping mysql hardening",
            level=WARNING)
        return []

    settings = utils.get_settings('mysql')
    hardening_settings = settings['hardening']
    my_cnf = hardening_settings['mysql-conf']

    audits = [
        FilePermissionAudit(paths=[my_cnf],
                            user='******',
                            group='root',
                            mode=0o0600),
        TemplatedFile(hardening_settings['hardening-conf'],
                      MySQLConfContext(),
                      TEMPLATES_DIR,
                      mode=0o0750,
                      user='******',
                      group='root',
                      service_actions=[{
                          'service': 'mysql',
                          'actions': ['restart']
                      }]),

        # MySQL and Percona charms do not allow configuration of the
        # data directory, so use the default.
        DirectoryPermissionAudit('/var/lib/mysql',
                                 user='******',
                                 group='mysql',
                                 recursive=False,
                                 mode=0o755),
        DirectoryPermissionAudit('/etc/mysql',
                                 user='******',
                                 group='root',
                                 recursive=False,
                                 mode=0o700),
    ]

    return audits
Пример #6
0
def get_audits():
    """Get OS hardening security limits audits.

    :returns:  dictionary of audits
    """
    audits = []
    settings = utils.get_settings('os')

    # Ensure that the /etc/security/limits.d directory is only writable
    # by the root user, but others can execute and read.
    audits.append(DirectoryPermissionAudit('/etc/security/limits.d',
                                           user='******', group='root',
                                           mode=0o755))

    # If core dumps are not enabled, then don't allow core dumps to be
    # created as they may contain sensitive information.
    if not settings['security']['kernel_enable_core_dump']:
        audits.append(TemplatedFile('/etc/security/limits.d/10.hardcore.conf',
                                    SecurityLimitsContext(),
                                    template_dir=TEMPLATES_DIR,
                                    user='******', group='root', mode=0o0440))
    return audits