配置Linux安全日志记录服务器
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 ./ |
#设定 preprocessors
| preprocessor frag2 preprocessor stream4: detect_scans preprocessor stream4_reassemblt preprocessor portscan:?$HOME_NET 4 3 portscan.log |
#设定 output
| 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;) |
#设定 patch , 这些都是些附加的 rules 的文件
include ?$RULE_PATH/bad-traffic.rules include ?$RULE_PATH/exploit.rules include ?$RULE_PATH/scan.rules include ?$RULE_PATH/ftp.rules
#这些 rule 其实还有很多。您可以自己去写,也可以找人家写好的下载拿来用。
现在让我们把 snort 跑起来∶
snort -c /etc/snort/snort.conf -D -i eth0
现在 snort NIDS 的模式跑起来了。 在 default 的情况下∶
alerts 会放在 /var/log/snort/alert 中
port-scanning 会放在 /var/log/snort/portscan.log
当您真正跑 NIDS 的时侯,需要把 snort 以 daemon 的模式来跑。 如果您安装的是 rpm 的东西,那么 rpm 文件中已经包含了一个 snortd 的文件,并且会帮您安装在 /etc/rc.d/init.d/ 下面。 当您设定好 snort 的 configure 文件以后,只要用 chkconfig 把 snortd 打开就可以了:
加入 snortd
chkconfig ——add snortd
打开 snortd
chkconfig snortd on
或者
chkconfig ——level 3 snortd on
这里的 level 请自行更改到您所跑的 runlevel
您可以用 cat /etc/inittab | grep id 来看自己在哪个runlevel 上面。
cat /etc/inittab | grep id
id:5:initdefault:
这里就是说跑在 run level 5 上面。
设定服务器 我们需要对服务器做一些设定,让服务器把 log 送到我们的 logger 服务器去。 首先,我们需要设定 /etc/syslog.conf 把 log 送到一个有效的,但是不存在的 ip 下面。例如我们的网路是 192.168.1.0/24 其中并没有 192.168.1.123 这台机器,也就是说这个 ip 实际上是空的。我们就把 log 指向这里。您可以指向任意一个空的有效 ip.
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);};
我们还需要加入 static ARP entry 才可以。 如果您的网路只是接了记个 Hub 而已, 那么 ARP 地址一样可以好象 ip 一样,设定成虚构的。 如果您有连结 switch, 您需要加入 log 服务器的真实 MAC 地址。