Lucene search
+L

Configure a Proper Value for LoginGraceTime

🗓️ 25 Sep 2025 00:00:00Reported by Copyright (C) 2025 Greenbone AGType 
openvas
 openvas
🔗 plugins.openvas.org👁 3 Views

Set LoginGraceTime to sixty seconds or less; default is one hundred twenty seconds.

Code
# SPDX-FileCopyrightText: 2025 Greenbone AG
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only

# ------------------------------------------------------------------
# METADATA
# ------------------------------------------------------------------

if(description)
{
  script_oid("1.3.6.1.4.1.25623.1.0.130490");
  script_version("2025-11-21T05:40:28+0000");
  script_tag(name:"last_modification", value:"2025-11-21 05:40:28 +0000 (Fri, 21 Nov 2025)");
  script_tag(name:"creation_date", value:"2025-09-25 13:12:42 +0000 (Thu, 25 Sep 2025)");
  script_tag(name:"cvss_base", value:"0.0");
  script_tag(name:"cvss_base_vector", value:"AV:L/AC:H/Au:S/C:N/I:N/A:N");
  script_tag(name:"qod", value:"97");

  script_name("Configure a Proper Value for LoginGraceTime");

  script_category(ACT_GATHER_INFO);
  script_copyright("Copyright (C) 2025 Greenbone AG");
  script_family("Policy");
  script_dependencies("compliance_tests.nasl", "compliance_os_check.nasl");

  script_mandatory_keys("Compliance/Launch", "policy/ssh/login/eulerosvirtual");

  script_xref(name:"Policy", value:"EulerOS Virtual: EulerOS Virtual Linux Security Configuration (v1.0.0): 3. Running and Services: 3.3 SSH: 3.3.16 Configure a Proper Value for LoginGraceTime (Recommendation)");

  script_tag(name:"summary", value:"LoginGraceTime is used to limit the login time of a user. If a
user does not complete the login within the time specified by LoginGraceTime, the connection is
automatically disconnected. You are advised to set this field to a value less than or equal to 60,
in seconds.

If this field is set to a large value, attackers can use a large number of unfinished login
connections to consume server resources. As a result, administrators fail to log in to the system.
If the value is not explicitly configured in the configuration file, the system uses the default
value 120, in seconds.");

  exit(0);
}

include("ssh_func.inc");
include("host_details.inc");
include("policy_reporting_module.inc");

title = "Configure a Proper Value for LoginGraceTime";

solution = "Open the /etc/ssh/sshd_config file, set the LoginGraceTime field to the time limit (in
seconds), and restart the sshd service.

# vim /etc/ssh/sshd_config
LoginGraceTime 60
# systemctl restart sshd";

check_type = "SSH_Cmd";

action = 'Run the command in the terminal:
# val=$(awk "/^LoginGraceTime/ {print \\$2}" /etc/ssh/sshd_config); if [ -z "$val" ]; then echo 120; else echo "$val"; fi';

expected_value = 'The output should be less than or equal to "60"';

# ------------------------------------------------------------------
# CONNECTION CHECK
# ------------------------------------------------------------------

if(!get_kb_item("login/SSH/success") || !sock = ssh_login_or_reuse_connection()){

  report_ssh_error(title: title,
                   solution: solution,
                   action: action,
                   expected_value: expected_value,
                   check_type: check_type);
  exit(0);
}

# ------------------------------------------------------------------
# CHECK : LoginGraceTime less than or equal 60
# ------------------------------------------------------------------

step_cmd = 'val=$(awk "/^LoginGraceTime/ {print \\$2}" /etc/ssh/sshd_config); if [ -z "$val" ]; then echo 120; else echo "$val"; fi';
actual_value = ssh_cmd(socket:sock, cmd:step_cmd, return_errors:TRUE, return_linux_errors_only:TRUE);

if(eregmatch(string: actual_value, pattern:"(No such file or directory|Permission denied|Command not found|Segmentation fault|service not found|is not running|syntax error near unexpected token|syntax error: unexpected end of file)", icase: TRUE)){
  compliant = "incomplete";
  comment = "Something went wrong during the audit check. Please try again.";
}else if(int(actual_value) <= int(60)){
  compliant = "yes";
  comment = "Check passed";
}else{
  compliant = "no";
  comment = "Check failed";
}

# ------------------------------------------------------------------
# REPORT
# ------------------------------------------------------------------

target = get_kb_item("policy/ssh/login/os-release");
comment = "Target: " + target + "\n" + comment;

report_audit(action: action,
             actual_value: actual_value,
             expected_value: expected_value,
             is_compliant: compliant,
             solution: solution,
             check_type: check_type,
             title: title,
             comment: comment);

exit(0);

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

21 Nov 2025 00:00Current
6.9Medium risk
Vulners AI Score6.9
3