我正在尝试从snort查看IPS警报,警报正通过barnyard2插入到数据库中。 https://github.com/firnsy/barnyard2
当我使用SELECT ip_src from iphdr ;
从postgresql获取此内容时;
ip_src
------------
2886730039
2886730039
1815870597
1815870597
3325194354
3325194354
假设这些是某种索引号是否安全?它显然不是标准的IPv4形式。
创建表格后,还创建了一个索引。
CREATE TABLE iphdr ( sid INT4 NOT NULL,
cid INT8 NOT NULL,
ip_src INT8 NOT NULL,
ip_dst INT8 NOT NULL,
ip_ver INT2,
ip_hlen INT2,
ip_tos INT2,
ip_len INT4,
ip_id INT4,
ip_flags INT2,
ip_off INT4,
ip_ttl INT2,
ip_proto INT2 NOT NULL,
ip_csum INT4,
PRIMARY KEY (sid,cid));
CREATE INDEX ip_src_idx ON iphdr (ip_src);
CREATE INDEX ip_dst_idx ON iphdr (ip_dst);
如何查询此表并从此索引中获取实际IP地址?
答案 0 :(得分:4)
一个明显的解决方案是使用正确的数据类型,即the Postgres inet
datatype
CREATE TABLE iphdr ( sid INT4 NOT NULL,
cid INT8 NOT NULL,
ip_src inet NOT NULL,
ip_dst inet NOT NULL,
允许您按字面插入网络地址:
insert into iphdr (ip_src, ip_dst) values ('192.168.0.1','192.168.0.2')
如果您使用此数据类型,则有several specialized functions可帮助您使用它们,例如在where子句中。
如果您无法控制传入数据,这些数据类型仍然可以帮助您以可识别的格式显示值:
SELECT '0.0.0.0'::inet + ip_src as ipsrc,'0.0.0.0'::inet + ip_dst as ipdst,