安全的log纪录服务器
作者:彭德利 | 来源:互联网 | 2017-11-06 18:54
文章标题:安全的log纪录服务器。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
*环境 RedHat 7.3 在网上越来越多的 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/ 下面看到非常多的有用的文件.
推荐阅读
NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ...
[详细]
蜡笔小新 2024-12-18 18:23:35
本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ...
[详细]
蜡笔小新 2024-12-25 13:17:38
作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ...
[详细]
蜡笔小新 2024-12-25 12:32:36
本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ...
[详细]
蜡笔小新 2024-12-24 14:02:48
近日,众多苹果用户发现iOS、iPadOS和macOS系统频繁弹出无法验证服务器身份的警告。问题根源在于网易邮箱未能及时更新其数字证书,导致原证书过期后无法被信任。 ...
[详细]
蜡笔小新 2024-12-21 14:55:31
本文详细介绍如何利用C# .NET框架开发一个基于UDP协议的点对点聊天程序,包括客户端与服务器之间的连接建立、数据传输等核心功能。 ...
[详细]
蜡笔小新 2024-12-18 11:10:17
在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ...
[详细]
蜡笔小新 2024-12-25 12:05:35
本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ...
[详细]
蜡笔小新 2024-12-25 11:46:55
本文深入探讨了计算机网络的基础概念和关键协议,帮助初学者掌握网络编程的必备知识。从网络结构到分层模型,再到传输层协议和IP地址分类,文章全面覆盖了网络编程的核心内容。 ...
[详细]
蜡笔小新 2024-12-25 10:02:03
本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ...
[详细]
蜡笔小新 2024-12-24 17:11:38
本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ...
[详细]
蜡笔小新 2024-12-20 10:05:02
请看|间隔时间_Postgresql 主从复制 ...
[详细]
蜡笔小新 2024-12-19 03:24:54
本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ...
[详细]
蜡笔小新 2024-12-17 19:02:43
本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ...
[详细]
蜡笔小新 2024-12-17 17:30:12
本文详细介绍了如何通过网络安装Linux操作系统,包括必要的服务配置和常见问题解决方法,旨在帮助IT专业人士提高系统部署效率。 ...
[详细]
蜡笔小新 2024-12-16 16:46:10