晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/proc/thread-self/root/opt/cpguard/3rdparty/lynis/include/
Upload File :
Current File : //proc/thread-self/root/opt/cpguard/3rdparty/lynis/include/tests_kerberos
#!/bin/sh

InsertSection "${SECTION_KERBEROS}"

#
#########################################################################
#

    # Test        : KRB-1000
    # Description : Check that Kerberos principals have passwords that expire
    Register --test-no KRB-1000 --weight L --network NO --description "Check for Kerberos KDC tools"
    if [ -n "${KADMINLOCALBINARY}" ] && [ -n "${KDB5UTILBINARY}" ]
    then
        PREQS_MET="YES"
        # Make sure krb5 debugging doesn't mess up the output
        unset KRB5_TRACE
        PRINCS="$(${KADMINLOCALBINARY} listprincs 2>/dev/null | ${TRBINARY:-tr} '\n' ' ')"
        if [ -z "${PRINCS}" ]
        then
            PREQS_MET="NO"
        fi
    else
        PREQS_MET="NO"
    fi
    if [ "${PREQS_MET}" = "YES" ]; then
        Display --indent 2 --text "- Check for Kerberos KDC and principals" --result "${STATUS_FOUND}" --color GREEN
    else
        Display --indent 2 --text "- Check for Kerberos KDC and principals" --result "${STATUS_NOT_FOUND}" --color WHITE
    fi

    # Test        : KRB-1010
    # Description : Check that Kerberos principals have passwords that expire
    Register --test-no KRB-1010 --preqs-met ${PREQS_MET} --weight L --network NO --description "Check that Kerberos principals have passwords that expire"
    if [ ${SKIPTEST} -eq 0 ]; then
        FOUND=0
        for I in ${PRINCS}
        do
            FIND="$(${KADMINLOCALBINARY} getprinc "${I}" | ${GREPBINARY} '^Password expiration date:')"
            if [ "${FIND}" = "Password expiration date: [never]" ]
            then
                LogText "Result: Kerberos principal ${I} has a password/key that never expires"
                FOUND=1
            fi
        done
        if [ ${FOUND} -eq 1 ]; then
            Display --indent 4 --text "- Principals without expiring password" --result "${STATUS_WARNING}" --color RED
            ReportSuggestion "${TEST_NO}" "Make sure all your Kerberos principals have expiring passwords"
        else
            Display --indent 4 --text "- Principals without expiring password" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#

    # Test        : KRB-1020
    # Description : Check last password change for Kerberos principals
    Register --test-no KRB-1020 --preqs-met ${PREQS_MET} --weight L --network NO --description "Check last password change for Kerberos principals"
    if [ ${SKIPTEST} -eq 0 ]; then
        FOUND=0
        for I in ${PRINCS}
        do
            FIND="$(${KADMINLOCALBINARY} getprinc "${I}" | ${SEDBINARY} -n '/^Last password change:\s\+/s/^Last password change:\s\+//p')"
            if [ "${FIND}" = "[never]" ]
            then
                LogText "Result: Kerberos principal ${I} has a password/key that has never been changed"
                FOUND=1
            else
                J="$(date -d "${FIND}" +%s)"
                if [ ${J} -lt $((NOW - 60 * 60 * 24 * 365)) ]
                then
                    LogText "Result: Kerberos principal ${I} has had a password/key change over a year ago"
                    FOUND=1
                fi
            fi
        done
        if [ ${FOUND} -eq 1 ]; then
            Display --indent 4 --text "- Principals with late password change" --result "${STATUS_WARNING}" --color RED
            ReportSuggestion "${TEST_NO}" "Enforce frequent password/key change for your Kerberos principals"
        else
            Display --indent 4 --text "- Principals with late password change" --result "${STATUS_OK}" --color GREEN
        fi
    fi

#
#################################################################################
#

    # Test        : KRB-1030
    # Description : Check that Kerberos principals have a policy associated to them
    Register --test-no KRB5-1030 --preqs-met ${PREQS_MET} --weight L --network NO --description "Check that Kerberos principals have a policy associated to them"
    if [ ${SKIPTEST} -eq 0 ]; then
        FOUND=0
        for I in ${PRINCS}
        do
            FIND="$(${KADMINLOCALBINARY} getprinc "${I}" | ${GREPBINARY} '^Policy:')"
            if [ "${FIND}" = "Policy: [none]" ]
            then
                LogText "Result: Kerberos principal ${I} does not have a policy associated to it"
                FOUND=1
            fi
        done
        if [ ${FOUND} -eq 1 ]; then
            Display --indent 4 --text "- Principals without associated policy" --result "${STATUS_WARNING}" --color RED
            ReportSuggestion "${TEST_NO}" "Make sure all your Kerberos principals have a policy associated to them"
        else
            Display --indent 4 --text "- Principals without associated policy" --result "${STATUS_OK}" --color GREEN
        fi
    fi

#
#################################################################################
#

    # Test        : KRB-1040
    # Description : Check various attributes for Kerberos principals
    Register --test-no KRB5-1040 --preqs-met ${PREQS_MET} --weight L --network NO --description "Check various attributes for Kerberos principals"
    if [ ${SKIPTEST} -eq 0 ]; then
        FOUND=0
        for I in ${PRINCS}
        do
            J="$(${KADMINLOCALBINARY} getprinc "${I}" | ${SEDBINARY} -n 's/^Attributes:\s\+\(.\+\)$/\1/p')"
            if ContainsString "^K/M@" "${I}" || \
                ContainsString "^kadmin/admin@" "${I}" || \
                ContainsString "^kadmin/changepw@" "${I}" || \
                ContainsString "^krbtgt/" "${I}"
            then
                if ! ContainsString "\bLOCKDOWN_KEYS\b" "${J}"
                then
                    LogText "Result: Sensitive Kerberos principal ${I} does not have the lockdown_keys attribute"
                    FOUND=1
                fi
            elif ContainsString "/admin@" "${I}"
            then
                if ! ContainsString "\bDISALLOW_TGT_BASED\b" "${J}"
                then
                    LogText "Result: Kerberos admin principal ${I} does not have the disallow_tgt_based attribute"
                    FOUND=1
                fi
            elif ContainsString "^[^/$]+@" "${I}"
            then
                if ! ContainsString "\bREQUIRES_PRE_AUTH\b.+\bDISALLOW_SVR\b" "${J}"
                then
                    LogText "Result: Regular Kerberos user principal ${I} does not have the requires_pre_auth and/or the disallow_svr attribute"
                    FOUND=1
                fi
            fi
        done
        if [ ${FOUND} -eq 1 ]; then
            Display --indent 4 --text "- Checking principals for various attributes" --result "${STATUS_WARNING}" --color RED
            ReportSuggestion "${TEST_NO}" "Harden your Kerberos principals with appropriate attributes"
        else
            Display --indent 4 --text "- Checking principals for various attributes" --result "${STATUS_OK}" --color GREEN
        fi
    fi

#
#################################################################################
#

    # Test        : KRB-1050
    # Description : Check for weak crypto
    Register --test-no KRB-1050 --preqs-met ${PREQS_MET} --weight L --network NO --description "Check for weak crypto"
    if [ ${SKIPTEST} -eq 0 ]; then
        FIND=$(${KDB5UTILBINARY} tabdump keyinfo | ${AWKBINARY} '$4 ~ /(des|arcfour|cbc|sha1)/{print$1,$4}')
        if [ -n "${FIND}" ]; then
            while read I J
            do
                LogText "Result: Kerberos principal ${I} has a key with weak cryptographic algorithm ${J}"
            done << EOF
${FIND}
EOF
            Display --indent 4 --text "- Principals with weak crypto" --result "${STATUS_WARNING}" --color RED
            ReportSuggestion "${TEST_NO}" "Remove weak (des|arcfour|cbc|sha1) cryptographic keys from principals"
        else
            Display --indent 4 --text "- Principals with weak crypto" --result "${STATUS_OK}" --color GREEN
        fi
    fi

#
#################################################################################
#

unset PRINCS
unset I
unset J

#EOF