Esempi di utilizzo delle query al database di Server Dr.Web

Di seguito sono riportati esempi di query SQL al database PostgreSQL. Le query ad altri database possono contenere alcune differenze dovute alle particolarità del database stesso e del suo utilizzo.

Le funzionalità del linguaggio SQL non consentono di tenere in considerazione nelle query la gerarchia di gruppi e postazioni.

Per fare una query direttamente al database

1.Aprire il Pannello di controllo del Server Dr.Web.

2.Passare alla sezione Amministrazione → Console SQL.

3.Inserire la query SQL richiesta. Di seguito sono riportati esempi di query.

4.Premere il pulsante Esegui.

Esempi di query SQL

1.Trova le postazioni su cui è installata la versione server di SO Windows e su cui i database dei virus sono più vecchi del 2019.07.04-00:00:00 UTC (12.0).

SELECT
 stations.name Station,
 groups_list.name OS,
 station_products.crev Bases
FROM
 stations
INNER JOIN groups_list ON groups_list.platform =(
  CAST(stations.lastos AS INTEGER) & ~15728640
 )
AND (
   (
    CAST(stations.lastos AS INTEGER) & 2130706560
   ) = 33554560
 )
INNER JOIN station_products ON station_products.id = stations.id
AND station_products.product = '10-drwbases'
AND station_products.crev < 12020190704000000;

2.Trova le postazioni che hanno nella sezione Rete antivirus → Statistiche → Stato record con la gravità Alta o Massima.

SELECT
 stations.name Station
FROM
 stations
WHERE
 id IN (
  SELECT
    DISTINCT id
  FROM
     station_status
  WHERE
     severity >= 1342177280
 );

3.Ottieni la corrispondenza tra stati e il numero delle postazioni che hanno questi stati.

SELECT
 code Code,
COUNT(code) Num
FROM
 (
  SELECT
    DISTINCT id,
     code
  FROM
     station_status
 ) AS t
GROUP BY
 Code
ORDER BY
 Code;

4.Ottieni le 10 minacce più popolari che sono state rilevate dal 2019.06.01 al 2019.07.01 sulle postazioni appartenenti al gruppo con l'identificatore '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5' o a qualsiasi gruppo nidificato.

SELECT
 cat_virus.str Threat,
COUNT(cat_virus.str) Num
FROM
 station_infection
INNER JOIN cat_virus ON cat_virus.id = station_infection.virus
WHERE
 station_infection.infectiontime BETWEEN 20190601000000000
AND 20190701000000000
AND station_infection.id IN (
  SELECT
     sid
  FROM
     station_groups
  WHERE
     gid = '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5'
    OR gid IN (
      SELECT
         child
      FROM
         group_children
      WHERE
         id = '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5'
     )
 )
GROUP BY
 cat_virus.str
ORDER BY
 Num DESC
LIMIT
10;

5.Ottieni le 10 postazioni più frequentemente infettate.

SELECT
 Station,
 Grp,
 Num
FROM
 (
  SELECT
     stations.id,
     groups_list.id,
     stations.name Station,
     groups_list.name Grp,
    COUNT(stations.id) Num
  FROM
     station_infection
    INNER JOIN stations ON station_infection.id = stations.id
    INNER JOIN groups_list ON groups_list.id = stations.gid
  GROUP BY
     stations.id,
     groups_list.id,
     stations.name,
     groups_list.name
  ORDER BY
     Num DESC
  LIMIT
    10
 ) AS t;

6.Rimuovi l'appartenenza di tutte le postazioni dai gruppi personalizzati che non sono primari per queste postazioni.

DELETE FROM
 station_groups;
INSERT INTO station_groups(sid, gid)
SELECT
 stations.id,
 groups_list.id
FROM
 stations
INNER JOIN groups_list ON stations.gid = groups_list.id
AND groups_list.type NOT IN(1, 4);

7.Trova gli oggetti della rete antivirus su cui il dominio specificato è presente nella white list del componente SpIDer Gate, nelle impostazioni individuali.

SELECT
 stations.name Station
FROM
 station_cfg
INNER JOIN stations ON stations.id = station_cfg.id
WHERE
 station_cfg.component = 38
AND station_cfg.name = 'WhiteVirUrlList'
AND station_cfg.value = 'domain.tld';
SELECT
 groups_list.name Grp
FROM
 group_cfg
INNER JOIN groups_list ON groups_list.id = group_cfg.id
WHERE
 group_cfg.component = 38
AND group_cfg.name = 'WhiteVirUrlList'
AND group_cfg.value = 'domain.tld';
SELECT
 policy_list.name Policy
FROM
 policy_cfg
INNER JOIN policy_list ON policy_list.id = policy_cfg.id
WHERE
 policy_cfg.component = 38
AND policy_cfg.name = 'WhiteVirUrlList'
AND policy_cfg.value = 'domain.tld';

8.Ottieni dalla verifica gli eventi di accesso non riuscito degli amministratori al Pannello di controllo con i rispettivi codici di errore di autenticazione.

SELECT
 admin_activity.login Login,
 admin_activity.address Address,
 activity_data.value ErrorCode,
 admin_activity.createtime EventTimestamp
FROM
 admin_activity
INNER JOIN activity_data ON admin_activity.record = activity_data.record
WHERE
 admin_activity.oper = 10100
AND admin_activity.status != 1
AND activity_data.item = 'Error';

9.Trova le postazioni con SO Windows su cui non sono installate le correzioni di sicurezza necessarie.

SELECT
 stations.name Station
FROM
 stations
WHERE
 id NOT IN (
  SELECT
     station_env_kb.id
  FROM
     station_env_kb
    INNER JOIN stations ON stations.id = station_env_kb.id
  WHERE
     (
      CAST(stations.lastos AS INTEGER) & 2130706432
     )= 33554432
    AND station_env_kb.name IN (
      SELECT
         id
      FROM
         env_strings
      WHERE
         str IN(
          'KB4012212', 'KB4012213', 'KB4012214',
          'KB4012215', 'KB4012216', 'KB4012217',
          'KB4012598'
         )
     )
 );