This document describes Server Security Check Public API.
API endpoint and token for using the API.
| Region | Endpoint |
|---|---|
| Every Region | https://kr1-server-security-check.api.nhncloudservice.com |
Server Security Check uses the NHN cloud token to obtain API authentication/authorization. Please check User Access Key Token to confirm the information required to use the authentication token.
You need the following information to use API:
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| x-nhn-authorization | Header | String | O | Token |
| Name | Type | Format | Description |
|---|---|---|---|
| header | Body | Object | |
| header.isSuccessful | Body | Boolean | true: Normal false: error |
| header.resultCode | Body | Integer | 0: Normal Other: error |
| header.resultMessage | Body | String | "SUCCESS": Normal Other: error cause message |
[Caution] Fields not specified in the guide may appear in API responses. These fields are used internally by NHN Cloud and are subject to change without prior notice, so they are not used.
Summarize the inspection summary for the desired period you want. (The maximum view period is one month.)
GET "/ssc/v1.0/appKey/{appKey}/inspection_result/summary"
x-nhn-authorization: {token-id}
This API does not request a response body.
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| appKey | URL Path | String | O | Service Appkey |
| regionCode | Query | String | O | Region Info (KR1, KR2, ...) |
| language | Query | String | X | KO, EN, JA (default : KO) |
| from | Query | DateTime | O | Search start time(YYYY-MM-DDTHH:mm:ss±hh:mm) ex: 2025-06-17T00:00:00%2B09:00 |
| to | Query | DateTime | O | Search end time(YYYY-MM-DDTHH:mm:ss±hh:mm) ex: 2025-06-17T23:59:59%2B09:00 |
| page | Query | Integer | X | Page number to view (default: 1) |
| limit | Query | Integer | X | Page size to view (default: 10, max: 1000) |
| kind | Query | ENUM | X | Inspection type (OS, WAS) Currently, only OS is supported |
| bss | Query | ENUM | X | Inspection standard ("M": Main information and communication facilities, "F": Electronic financial infrastructure) |
| Name | Type | Format | Description |
|---|---|---|---|
| usageStasNo | Body | String | Inspection result sn |
| instanceName | Body | String | Inspection instance name |
| os | Body | ENUM | Inspection instance os (Window, Linux) |
| systemVersion | Body | String | Inspection instance os version |
| bss | Body | ENUM | Inspection standard ("M": Main information and communication facilities, "F": Electronic financial infrastructure) |
| scriptVersion | Body | String | Inspection script version |
| executionTime | Body | DateTime | Inspection execution time |
| checkCount | Body | Integer | No. of inspections |
| weakCount | Body | Integer | No. of vulnerabilities |
| level3WeakCount | Body | Integer | vulnerability level high |
| level2WeakCount | Body | Integer | vulnerability level medium |
| level1WeakCount | Body | Integer | vulnerability level low |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS",
"success": true
},
"results": [
{
"usageStasNo": 1,
"instanceName": "test-ubuntu-1",
"os": "Linux",
"kind": "OS",
"systemVersion": "ubuntu Server 22.04 LTS",
"bss": "M",
"scriptVersion": "G-1",
"executionTime": "2025-07-17T11:42:20+09:00",
"checkCount": 65,
"weakCount": 15,
"level3WeakCount": 5,
"level2WeakCount": 5,
"level1WeakCount": 5
},
{
"usageStasNo": 2,
"instanceName": "test-ubuntu-2",
"os": "Linux",
"kind": "OS",
"systemVersion": "ubuntu Server 22.04 LTS",
"bss": "M",
"scriptVersion": "G-1",
"executionTime": "2025-07-16T15:11:23+09:00",
"checkCount": 65,
"weakCount": 15,
"level3WeakCount": 5,
"level2WeakCount": 5,
"level1WeakCount": 5
}
],
"page": {
"itemPerPage": 20,
"page": 1,
"totalCount": 2
}
}
After viewing the inspection result summary, you can search for a specific inspection result in detail using the inspection result number.
GET "/ssc/v1.0/appKey/{appKey}/inspection_result/details/{usageStasNo}"
x-nhn-authorization: {token-id}
This API does not request a response body.
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| appKey | URL | String | O | Service Appkey |
| usageStasNo | URL | Integer | O | Inspection result number |
| language | Query | String | X | KO, EN, JA (default : KO) |
| Name | Type | Format | Description |
|---|---|---|---|
| categoryName | Body | String | Inspection classification |
| resultId | Body | String | Anaysis result id |
| weakLevel | Body | ENUM | Vulnerability level ("H", "M", "L") |
| weakLevelName | Body | String | Vulnerability enum name |
| resultCode | Body | String | Inspection cycle setting |
| itemName | Body | String | Item name |
| manageMethod | Body | String | Countermeasure |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS",
"success": true
},
"results": [
{
"categoryName": "1. Account management",
"resultId": "U-01",
"weakLevel": "H",
"resultCode": "X",
"weakLevelName": "High",
"itemName": "Limit the remote access of the root account",
"manageMethod": "1. Remove or comment out pts/0 ~ pts/x settings in the \"/etc/securetty\" file.<br>2. Modify \"/etc/pam.d/login\" file or insert a new file<br>auth required /lib/security/pam_securitty.so"
},
{
"categoryName": "1. Account management",
"resultId": "U-02",
"weakLevel": "H",
"resultCode": "X",
"weakLevelName": "High",
"itemName": "Password complexity setting",
"manageMethod": "[Linux - RHEL5]<br>1. Check password complexity setting file<br>Edit # /etc/pam.d/system-auth, /etc/login.defs contents to conform to internal policies<br>2. Set /etc/pam.d/system-auth file<br>※ Set the password policy on the next line:<br>- Example of password policy settings<br>password requisite /lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1<br>3. Inspect /etc/login.defs file<br>pass_warn_age = 7(Password Expiration Warning)<br>pass_max_days = 60 (set maximum password period)<br>pass_min_day = 1 (set minimum password period)<br><br>[Linux - RHEL7]<br>1. Check password complexity setting file<br>Edit # /etc/pam.d/system-auth, /etc/login.defs contents to conform to internal policies<br>2. Set /etc/pam.d/system-auth file<br>※ Set the password policy on the next line:<br>- Example of password policy settings<br>password requisite /lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1<br>or<br>password requisite /lib/security/$ISA/pam_pwquality.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1<br>3. Inspect /etc/login.defs file<br>pass_warn_age = 7(Password Expiration Warning)<br>pass_max_days = 60 (set maximum password period)<br>pass_min_day = 1 (set minimum password period)<br><br>[Linux - Ubuntu]<br>1. Check password complexity setting file<br>Edit /etc/pam.d/common-auth to conform to internal policies<br>2. Set /etc/pam.d/common-auth file<br>※ Set the password policy on the next line:<br>- Example of password policy settings<br>password requisite /lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1"
},
{
"categoryName": "1. Account management",
"resultId": "U-03",
"weakLevel": "H",
"resultCode": "X",
"weakLevelName": "High",
"itemName": "Account lockout threshold setting",
"manageMethod": "1. Open \"/etc/pam.d/system-auth\" file by using vi editor<br>2. Modify it or insert a new file as below:<br>Add the following on /etc/pam.d/system-auth file. <br>auth required /lib/security/pam_tally2.so deny=5 unlock_time=120 no_magic_root<br>account required /lib/security/pam_tally2.so no_magic_root reset"
},
{
"categoryName": "1. Account management",
"resultId": "U-04",
"weakLevel": "H",
"resultCode": "O",
"weakLevelName": "High",
"itemName": "Password file protection",
"manageMethod": "1. Check for /shadow file existence<br>(usually located in the /etc directory)<br># ls /etc<br>2. Make sure the second field in the /etc/passwd file displays \"x\"<br># cat /etc/passwd<br>root:x:0:0:root:/root:/bin/bash"
},
{
"categoryName": "2. File and directory management",
"resultId": "U-05",
"weakLevel": "H",
"resultCode": "O",
"weakLevelName": "High",
"itemName": "root home, path directory permission and path setting",
"manageMethod": "1. Open root account's setting file (~/.profile and /etc/profile) by using vi editor<br># vi /etc/profile<br>2. Modify as below:<br>(Before) PATH=.:$PATH:$HOME/bin<br>(After) PATH=$PATH:$HOME/bin:."
}
]
}