扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在网上越来越多的 hacker 的出现, 越来越多的高手出现的情况下.如何才能确保自己可以保存一份完整的 log 呢?稍微有点概念的 hacker 都知道,进入系统后的第一见事情就是去清理 log, 而发现入侵的最简单最直接的方法就是去看系统纪录文件.现在我们来说说如何设定一个安全的 log 服务器.
想想看,如果入侵者无法连结您的 log 服务器,又如何能改您的 log 呢?现在我们来学习如何设定一个无 ip 的 log 服务器.
现在,来介绍一下如何用 Snort 来做三件事情:
· Stealth sniffer
· stealth NIDS porbe
· stealth logger
这一切都是用在一台没有 ip 的服务器上面的. NIDS 是 Network Intrusion Dectection Server 的简称,也就是说入侵检测服务器.
为什么要 stealth 呢?
在 internet 中运行任何一种服务,都是有一定的危险的.不管是 http 也好, ftp 也好, telnet 也好,总之都会有机会被 hack 入侵. stealth logger 的独特性可以让我们在接收资料的同时,不发送任何的资料.这样外界的电脑(被 hack 入侵的电脑)就根本无法去更改 loger server 所收到的信息.也就是说保证了我们信息的完整性,以及原始性. 为了确保 log 服务器的安全,最好不要将 log 服务器连接在网路中.也就是说,当您需要检查 logger 服务器上得东西的时侯,您需要到电脑前,打开屏幕.而不是远端 login 进来.但是,如果说您一定要连接网路的话的话,那么请用两个的介面来做.也就是说两片网卡.并且注意,第一, IP forwarding 一定要关闭.第二就是,用来做 stealth logger 的介面是没有 ip 的一张网卡,这张网卡必须不能跟另外一个有 ip 的网卡在同一网路下面.
设定
首先当然是确定您的网卡安装无误,并且可以被 kernel 抓到.然后把网卡所需要的 module 写到 /etc/modules.conf 文件中.
现在我们来设定一个没有 ip 的网卡介面.
编辑文件 /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
BOOTPROTO=
BROADCAST=
NETWORK=
NETMASK=
IPADDR=
存档后,用 ifconfig 来 active 我们的 eth0 介面.
初试 stealth
这里我们用到了 snort 这个程式.如果您的电脑中没有这个程式,可以到 www.snort.org下载.
现在我们运行
snort -dvi eth0
这里 -d 的选项告诉 snort 对资料进行 decode (解码)
-v 告诉 snort 将结果显示在屏幕上面
-i 则是指定所需要的 interface
可以用 -C 选项告诉 snort 只显示 ASCII 部份. 忽略 hexadecimal 资料.
$snort -dviC eth0
Log directory= /var/log/snort
kernel filter, protocol ALL, TURBO mode
(63 frames), raw packet socket
--== Initializing Snort ==--
Decoding Ethernet on interface eth0
--== Initialization Complate ==--
-*> Snort! <*-
Version 1.8.4 (Build 99)
By Martin Roesch (roesch@sourcefire.com,
www.snort.org)
NIDS(入侵侦测) 入侵检测本身是一件很复杂的事情. snort 本身也提供了强大的入侵检测的功能. 这里我只做一个简单的介绍,好让大家有一个概念.如果真正实体去做一个 NIDS 的话.需要些更复杂的动作.例如设定更完善的 rules, 定时更新 snort.conf 中所定义的 rules (当新的攻击方式出现以后,要及时更新)
首先,我们需要更改一下 /etc/snort/snort.conf 具体需要参照您自己的机器来设定.
设定 log 存放的地方config logdir: /var/log/snort |
var HOME_NET 192.168.1.0/24 var EXTERNAL_NET any var SMTP $HOME_NET var HTTP_SERVERS $HOME_NET var SQL_SERVERS $HOME_NET var DNS_SERVERS 192.168.1.250/32 var RULE_PATH ./ |
preprocessor frag2 preprocessor stream4: detect_scans preprocessor stream4_reassemblt preprocessor portscan: $HOME_NET 4 3 portscan.log |
output database: log, mysql, user=root dbname-snort host=localhost #rules alert tcp $HOME_NET 7161 -> $EXTERNAL_NET any (msg: "MISC Cisco Catalyst Remote Access"; flags: SA; reference:arachnids, 129; reference:cve, CVE-1999-0430; classtype:bad-unknow; sid:513; rev:1;) |
include $RULE_PATH/bad-traffic.rules include $RULE_PATH/exploit.rules include $RULE_PATH/scan.rules include $RULE_PATH/ftp.rules |
snort -c /etc/snort/snort.conf -D -i eth0 |
alerts 会放在 /var/log/snort/alert 中 port-scanning 会放在 /var/log/snort/portscan.log |
chkconfig 把 snortd 打开就可以了: 加入 snortd chkconfig --add snortd 打开 snortd chkconfig snortd on 或者 chkconfig --level 3 snortd on |
cat /etc/inittab | grep id id:5:initdefault: |
vim /etc/syslog.conf 加入 *.info @192.168.1.123 如果您的系统是用 syslog-ng 的话 vim /etc/syslog-ng/syslog-ng.conf destination d_loghost { udp(ip(192.168.123) port (514)); }; filter f_info { level(info); }; log {filter(f_info); destination(d_loghost);}; |
arp -s 192.168.1.123 00:D0:B7:DB:BF:95 在 Logger 服务器设定 snort /etc/snort/snort.conf var EXTERNAL_NET any #等于 snort -d config dump_payload #等于 snort -C config dump_chars_only #设定 log 存放的 path config logdir: /var/log/snort # frag2 所做的动作就是把 fragmented 给我们 re-assembly preprocessor frag2 log udp 192.168.1.1/32 any -> 192.168.1.123/32 514 (logto: "logged-packets";) |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
去集群 更超群——大容量网络演进之路
2019 IBM 中国论坛
H3C 2019 Navigate 领航者峰会
助推数据中心网络现代化转型 打造灵活可靠基础架构平台