国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

安全的log日志記錄服務器
2005-12-19   

環境 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/ 下面看到非常多的有用的文件。


熱詞搜索:

上一篇:Linux服務器日志管理詳解(1)
下一篇:保護Windows本地管理員帳戶安全

分享到: 收藏
主站蜘蛛池模板: 杭锦后旗| 冷水江市| 迁安市| 读书| 津南区| 德安县| 瑞金市| 闻喜县| 巢湖市| 明光市| 峨眉山市| 高青县| 广丰县| 乌拉特中旗| 涿州市| 外汇| 新巴尔虎左旗| 龙井市| 道孚县| 长子县| 芜湖县| 利川市| 昭通市| 铜川市| 乌鲁木齐县| 台安县| 米林县| 光泽县| 明溪县| 建德市| 新营市| 日喀则市| 华坪县| 昌乐县| 白银市| 兴山县| 双流县| 绥芬河市| 通山县| 汨罗市| 朝阳市|