配置Linux安全日志记录服务器

简介: 在网上越来越多的 hacker 的出现,越来越多的高手出现的情况下。如何才能确保自己可以保存一份完整的 log 呢?稍微有点概念的 hacker 都知道,进入系统后的第一见事情就是去清理 log,而发现入侵的最简单最直接的方法就是去看系统纪录文件。
在网上越来越多的 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
  Initializing Network Interface eth0
  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 ./

    
    #设定 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 地址。

我们这里加入我们 logger 服务器的真实 MAC 地址就可以了。

  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";)

  最后一行需要稍微解释一下∶

  我们这里把 snort 来做 packet logger. 也就是说,并不是把所有的东西都写入到 /var/log/snort/alert 中。而是 log any packets with match the rule without writing an alert.

  udp: 是说,我们这里用 udp 的 protocol. system log 通常都是使用 udp 的。

  192.168.1.1/32: 就是只我们的服务器啦,也就是送 log 的机器。 如果您是从整个一个网路段中收 log 也可以用 192.168.1.0/24.

  any: any source port 任何 port

  ->: 这个是 direction operator 大家都知道的

  192.168.1.123/35 514 就是我们给出的那个空 ip 啦,port 514

  如果没有指定 logto: 的话,log 会分别保存在不同的文件中。 而指定 logto 的话,就会把 log 全部存放到我们指定的文件中,看起来方便多了。

  更安全的保存 log 就可以更安全的保护服务器。 snort 的功能实际上非常的强大, 这里只是一个简单的介绍而已。如果您对这些东西有兴趣。可以去 www.snort.org/docs/ 下面看到非常多的有用的文件。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
9天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
10天前
|
安全 Ubuntu Java
Linux配置使用篇
Linux配置使用篇
|
13天前
|
Linux
linux下搭建tftp服务器教程
在Linux中搭建TFTP服务器,需安装`tftp-server`(如`tftpd-hpa`)。步骤包括:更新软件包列表,安装`tftpd-hpa`,启动并设置开机自启,配置服务器(编辑`/etc/default/tftpd-hpa`),添加选项,然后重启服务。完成后,可用`tftp`命令进行文件传输。例如,从IP`192.168.1.100`下载`file.txt`: ``` tftp 192.168.1.100 &lt;&lt;EOF binary put file.txt quit EOF ```
27 4
|
22天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
109 0
|
10天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
5天前
|
Linux 数据安全/隐私保护
Linux基础与服务器架构综合小实践
【4月更文挑战第9天】Linux基础与服务器架构综合小实践
1063 6
|
17天前
|
Ubuntu Linux 虚拟化
【Linux】ubuntu安装samba服务器
【Linux】ubuntu安装samba服务器
|
17天前
|
Linux
Linux安装bind9搭建自己的域名服务器
Linux安装bind9搭建自己的域名服务器
11 0
|
20天前
|
网络协议 Linux 网络安全
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
17 0
|
16天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
72 1

热门文章

最新文章