mirror of
https://github.com/ghndrx/prowler.git
synced 2026-02-11 15:25:10 +00:00
48 lines
2.3 KiB
Bash
48 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Prowler - the handy cloud security tool (copyright 2018) by Toni de la Fuente
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
# use this file except in compliance with the License. You may obtain a copy
|
|
# of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software distributed
|
|
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations under the License.
|
|
CHECK_ID_extra774="7.74"
|
|
CHECK_TITLE_extra774="[extra774] Check if user have unused console login"
|
|
CHECK_SCORED_extra774="NOT_SCORED"
|
|
CHECK_TYPE_extra774="EXTRA"
|
|
CHECK_ASFF_RESOURCE_TYPE_extra774="AwsIamUser"
|
|
CHECK_ALTERNATE_check774="extra774"
|
|
|
|
extra774(){
|
|
MAX_DAYS=-30
|
|
LIST_USERS_WITH_PASSWORD_ENABLED=$(cat $TEMP_REPORT_FILE|awk -F, '{ print $1,$4,$5 }' |grep true | awk '{ print $1 }')
|
|
|
|
for i in $LIST_USERS_WITH_PASSWORD_ENABLED; do
|
|
user=$(cat $TEMP_REPORT_FILE|awk -F, '{ print $1,$5 }' |grep "^$i " |awk '{ print $1 }')
|
|
last_login_date=$(cat $TEMP_REPORT_FILE|awk -F, '{ print $1,$5 }' |grep "^$i " |awk '{ print $2 }')
|
|
|
|
# If the user has never logged into the console, their last login date is 'no_information'. See:
|
|
# https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html#id_credentials_understanding_the_report_format
|
|
if [[ "${last_login_date}" == "no_information" ]]; then
|
|
user_created_date=$(cat $TEMP_REPORT_FILE|awk -F, '{ print $1,$3 }' |grep "^$i " |awk '{ print $2 }')
|
|
days_since_user_created=$(how_many_days_from_today ${user_created_date%T*})
|
|
if [ "$days_since_user_created" -lt "$MAX_DAYS" ];then
|
|
textFail "User $user has never used console login since they were created over ${MAX_DAYS#-} days ago"
|
|
else
|
|
textInfo "User $user has not used console login since they were created"
|
|
fi
|
|
else
|
|
days_not_in_use=$(how_many_days_from_today ${last_login_date%T*})
|
|
if [ "$days_not_in_use" -lt "$MAX_DAYS" ];then
|
|
textFail "User $user has not used console login for more than ${MAX_DAYS#-} days"
|
|
else
|
|
textPass "User $user has used console login in the past ${MAX_DAYS#-} days"
|
|
fi
|
|
fi
|
|
done
|
|
}
|