.. _built_in_checks: Built-In Service Checks ======================= Standard Checks *************** DNS --- This service type will query the team's DNS server for a record matching the service's url. The check uses the following command:: dig +nocmd +short +noidentif +nocomments +nostats +time=5 SFTPS ----- This is a multi-protocol check that will use FTP or SFTP depending on the port number. This check **requires** credentials. FTP --- This service type will check, in the following order: - FTPS - FTP If FTPS fails, it will fallback to FTP. This check **requires** credentials. HTTP ---- Checks that an HTTP server is up. If "http_string" is provided, this check will fail if the given string does not exist in the server's response. This check will send HTTP basic auth headers if credentials are given, but they are not required. HTTP Form --------- .. versionadded:: 2.0 Checks that an HTTP(S) server is up, and that a user is able to submit a form and receive the correct response. This is useful to test form-based authentication. If ```http_string``` is provided, this check will return a partial score (configurable with ```partial_score```, otherwise ```max_score``` / 2) if the server provides the form but the given string does not exist in the server's response after form POST. If the string is not provided, the check will succeed on a non-error HTTP code. ```username_field``` and ```password_field``` can be used to specify the HTML name attribute of the input fields. These will fallback to "username" and "password", respectively. Other pre-populated fields such as CSRF tokens will be detected and used automatically. This check **requires** credentials. SSH --- .. versionchanged:: 2.0 This service type checks that an SSH server is up and that the supplied credentials are allowed to log in. Upon connecting, the check will attempt to run the command specified in the Django setting ``SSH_COMMAND`` or the `command` service configuration value if it is specified. If the commad starts with `sudo`, this check will handle that. In either case, the check will succeed if the command returns a non-error code. This check **requires** credentials. Port Check ---------- Simply checks that a port is open and listening. Other Checks ------------ - SMTP - SFTP - Remote Desktop Protocol - POP3 - LDAP - IMAP Mass Checks *********** JSON ---- .. versionadded:: 2.2 This service check reaches out to an external scanning service for a list of scores, rather than doing the scoring itself. The standard field `url` field in the service check object is not used, instead using a required configuration parameter `master_url`. This is done to prevent leaking the location of the scanner to teams. The JSON returned by the scanner is expected to follow the following standard: .. code-block:: JSON { "teams":{ "1": { "status": "up", "msg": "" }, "2": { "status": "errored", "msg": "Why the check errored" }, "3": { "status": "Message returned by the down service, or reason to be down.", "msg": "" } } } A full example for all 40 teams can be found `here `__.