Logs de segurança
Política de atualização
Quando uma nova informação for adicionada, ela será incluída no final do log. Essa mudança será indicada pelo campo vendor, com um incremento na versão (Ex. v3.0 -> v3.1). Podemos adicionar novos campos a qualquer momento, portanto, não espere que a linha termine no último campo (por exemplo, tratar logs com regex utilizando caractere $ no fim da linha).
Informações disponíveis
Os logs de segurança são os logs gerados pelas nossas ferramentas de segurança, que quando bem configuradas, reforçam políticas de acesso, bloqueiam intrusões de sistemas, bots maliciosos e tentativas de abuso na sua aplicação. Cada evento de segurança tem relação a uma requisição que foi simulada, desafiada ou bloqueada. Segue a lista de todas informações disponíveis nesses logs:
Quanto citamos "requisição", nos referimos a requisição que gerou o evento de segurança.
| Identificador | Descrição | Tipo do dado em JSON |
|---|---|---|
| $date | Unix timestamp de quanto o evento foi gerado | Number |
| $vendor | Indicação que o log é da GoCache, junto da versão do log | String |
| $request_id | ID da requisição | String |
| $status | Status code retornado na resposta da requisição | Number |
| $type | Ferramenta que gerou o evento | String |
| $scheme | Esquema HTTP usado na requisição | String |
| $method | Método HTTP da requisição | String |
| $uri | URI da requisição (a partir da /, incluindo-a) |
String |
| $query_sring | Query string da requisição (a partir do ?, sem incluir a interrogação) |
String |
| $protocol | Versão HTTP usada na requisição | String |
| $host | Cabeçalho Host da requisição | String |
| $realhost | Domínio da requisição cadastrado na GoCache | String |
| $rule_id | IDs das regras que geraram o evento | String[] |
| $rule_msg | Mensagens com os motivos para o evento ter sido gerado | String[] |
| $useragent | Cabeçalho User-Agent da requisição | String |
| $referer | Cabeçalho Referer da requisição | String |
| $ip | Endereço IP que originou a requisição | String |
| $action | Ação tomada pela ferramenta de segurança na requisição | String |
| $geoip2_data_city_name | Nome da cidade de onde se originou a requisição | String |
| $geoip2_data_state_name | Nome do estado/província de onde se originou a requisição | String |
| $geoip2_data_country_code | Código do país de onde se originou a requisição no formato ISO 3166 Alfa 2 | String |
| $geoip2_data_continent_code | Código do continente de onde se originou a requisição | String |
| $as | Sistema autônomo do IP que originou a requisição | String |
| $match | Trechos da requisição que o WAF identificou como maliciosos | String[] |
| $location | Indicação de onde estão os trechos identificados como maliciosos pelo WAF | String[] |
Versões do log
Observação
Cada log é enviado em somente uma linha. Esta documentação adiciona quebras de linhas para facilitar a leitura das informações.
V3 (JSON)
Nesta versão, as informações são enviadas em formato JSON. Uma requisição pode gerar mais de um evento de segurança, então o JSON é sempre um array de eventos. Segue o formato do log:
[
{
"date": $date,
"request_id": "$request_id",
"status": $staus,
"type": "$type",
"scheme": "$scheme",
"method": "$method",
"uri": "$uri",
"query_string": "$query_string",
"protocol": "$protocol",
"host": "$host",
"realhost": "$realhost",
"rule_id": [$rule_id],
"rule_msg": [$rule_msg],
"useragent": "$useragent",
"referer": "$referer",
"ip": "$ip",
"action": "$action",
"geoip2_data_city_name": "$geoip2_data_city_name",
"geoip2_data_state_name": "$geoip2_data_state_name",
"geoip2_data_country_code": "$geoip2_data_country_code",
"geoip2_data_continent_code": "$geoip2_data_continent_code",
"as": "$as",
"match": [$match],
"location": [$location],
"vendor": "$vendor"
}
]
V4 (CSV)
Nesta versão, as informações são enviadas em formato de CSV, separadas por vírgulas e aspas. Segue o formato do log:
"$date","$vendor","$request_id","$status","$type","$scheme","$method","$uri",
"$query_string","$protocol","$host","$realhost","$rule_id","$rule_msg","$useragent",
"$referer","$ip","$action","$geoip2_data_city_name","$geoip2_data_state_name",
"$geoip2_data_country_code","$geoip2_data_continent_code","$as","$match","$location"