linux服务器安全

linux服务器安全  

1 服务器账号口令的安全
1.1 服务器账号安全
服务器系统的账号、应用服务的账号要尽量少,删除一些不必要的账号和应用服务的账号, 
应该禁止所有默认的被操作系统本身启动的并且不必要的账号,当你第一次安装系统时就应该这么做,Linux提供了很多默认账号,而账号越多,系统就越容易受到攻击。
应用服务的账号的尽量限制在本机登入,拒绝远程连接,例如mysqloracle等服务。
1.1.1 root用户安全
Root
在类unix中是最最重要,应该尽可能的保护,下面的规则必须注意: 
除非必要,避免用root登录,如果必须用root,首先用自己的普通账号登录,然后使用/bin/su-成为root rootshell用完必须关掉
1.2 服务器密码安全
1.2.1 一个强固的密码至于要有下列四方面内容的三种: 
大写字母 
小写字母 
数字 
非字母数字的字符,如标点符号
1.2.2 强固的密码还要符合下列的规则 
不使用普通的名字或昵称 
不使用普通的个人信息,如生日日期 
密码里不含有重复的字母或数字 
至少使用八个字符
1.3 服务器账号密码综合安全措施
1.3.1 仔细设置每个内部用户的权限
  为了保护Linux网络系统的资源,在给内部网络用户开设帐号时,要仔细设置每个内部用户的权限,一般应遵循最小权限原则,也就是仅给每个用户授予完成他们特定任务所必须的服务器访问权限。这样做会大大加重系统管理员的管理工作量,但为了整个网络系统的安全还是应该坚持这个原则
1.3.2 密码时效
UNIX系统中防止密码被攻击的别一方法就是要经常地改变密码。很多时候,用户却不改变密码。
一种机制用来强制规律性的更改密码是合乎要求的。这种技术称做密码时效并在很多UNIX系统上有效。 
  在LINUX系统上,密码时效是通过chage命令来管理的。 
  参数意思
   -m 密码可更改的最小天数。如果是零代表任何时候都可以更改密码 
   -M 密码更改的最大天数 
   -W 用户密码到期前,提前收到警告信息的天数。 
   -e 帐号到期的日期。过了这天,此帐号将不可用。 
   -d 上一次更改的日期 
   -i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。 
   -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。 
  举个例子 
   % chage ?m 2 ?M 30 ?W 5 steven 
  此命令要求用户steven两天内不能更改密码,并且密码最长的存活期为30天,并在密码过期前5通知他
1.3.3 记录不成功的登陆企图 
    所有的UNIX系统都能够记录非成功的登陆企图。在LINUX中,登陆的失败是由syslog守护进程记录在/var/log/messages文件里。可以用下列命令来查找相关信息 
   $ grep login /var/log/messages
1.3.4 Ssh安全
在使用ssh连接linux服务器的时候,如果一段时间在终端上没有动作,就会被服务器端踢掉.
/etc/ssh/sshd_config中加入
ClientAliveInterval 
ClientAliveCountMax 
然后,/etc/rc.d/init.d/sshd restart重启服务可以解决此问题.

2 系统服务的安全
2.1 禁止所有不必要的服务。
ps –ef 命令可以看到当前系统所有已经开启的服务。查看是否有可以的服务进程。
还可以用ntsysv命令来关闭一些不用的服务。
2.2 设置服务器运行级别
一般类unix服务器不建议安装图形界面,这样可以提高服务器的性能,如果有界面的需求,安装x-windows也可以,我们先了解一下linux的运行级别的区别:
#   0 - halt (Do NOT set initdefault to this)
为停机,机器关闭
#   1 - Single user mode
为单用户模式,就像Win9x下的安全模式类似
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
为多用户模式,但是没有NFS支持。
#   3 - Full multiuser mode
为完整的多用户模式,是标准的运行级
#   4 - unused
进入控制台登录的多用户模式在一些特殊情况下可以用它来做一些事情。
#   5 - X11
进到X Window系统了。
#   6 - reboot (Do NOT set initdefault to this)
运行init 6机器就会重启。
2.3 保障系统的最低服务原则
关闭一些服务: 
关闭的方法有很多,通常我是使用/usr/sbin/setup来关闭的,只是用这样的方式来关闭的话,需要重新启动Linux ,比较麻烦一些些,如果您是使用我们这个网页的RedHat6.1系统的话,那就执行/usr/sbin/setup吧!然后选择System services,将所有的服务启动项目开到剩下如下的几个: 
crond 
iptables
keytable 
kudzu 
network 
random 
sendmai
(如果你有开启e-mail服务的话) 
smb
(如果你有开启SAMBA服务的话) 
syslog 
xfs
(如果你有执行X-windows的话) 
其他的服务就是你的要求来开启啰,其实,除非你真的了解该服务是作何用的,否则可以先予以关闭之,但是上面的几个项目则必须要开启的!

3 服务器端口安全
3.1 关闭无用的端口
  任何网络连接都是通过开放的应用端口来实现的。如果我们尽可能少地开放端口,就使网络攻击变成无源之水,从而大大减少了攻击者成功的机会。例如,希望Linux成为的Web服务器,可以取消系统内所有非必要的服务,只开启必要服务。这样做可以尽量减少后门,降低隐患,而且可以合理分配系统资源,提高整机性能
3.2 检查服务器端口开放情况。
Netstat –anp

3.2.1 Port scan简介
port Scan
的方法介绍 port Scan就是一种通过检测对方服务器的开放端口,侦测对方服务器服务的方法。一般可分为主动式和被动式两种。主动式就是通过向对方服务器的特定端口发送数据包,根据应答来判断。以nmap 为代表
被动式,不主动发出数据包,而是在网络上长时侦听,分析网上的transaction,来分析,严格的来被动式不应该被称作是端口扫描。以nwatch为代表
优缺点比较主动式的优点
主动式只要在对方没有把通信阻断的情况下,可以在较短的时间内获得结果


3.2.2 nmap的安装
debian apt-get install nmap
fedora core yum install nmap
others
下载源代码,编译


3.2.3 nmap的使用方法
下面是Nmap支持的四种最基本的扫描方式:
    * TCP connect()
端口扫描(-sT参数)。
    * TCP
同步(SYN)端口扫描(-sS参数)。
    * UDP
端口扫描(-sU参数)。
    * Ping
扫描(-sP参数)
如果要勾画一个网络的整体情况,Ping扫描和TCP SYN扫描最为实用。
    * Ping
扫描通过发送ICMPInternet Control Message ProtocolInternet控制消息协议)回应请求数据包和TCP应答(Acknowledge,简写ACK)数据包,确定主机的状态,非常适合于检测指定网段内正在运行的主机数量。
    * TCP SYN
扫描一下子不太好理解,但如果将它与TCP connect()扫描比较,就很容易看出这种扫描方式的特点。在TCP connect()扫描中,扫描器利用操作系统本身的系统调用打开一个完整的TCP连接也就是说,扫描器打开了两个主机之间的完整握手过程(SYN SYN-ACK,和ACK)。一次完整执行的握手过程表明远程主机端口是打开的。
    * TCP SYN
扫描创建的是半打开的连接,它与TCP connect()扫描的不同之处在于,TCP SYN扫描发送的是复位(RST)标记而不是结束ACK标记(即,SYNSYN-ACK,或RST):如果远程主机正在监听且端口是打开的,远程主机用 SYN-ACK应答,Nmap发送一个RST;如果远程主机的端口是关闭的,它的应答将是RST,此时Nmap转入下一个端口。
-sS
使用SYNACK的方法,使用TCP SYN
-sT
使用TCP的方法, 3次握手全做
-sU
使用UDP的方法
-sP ICMP ECHO Request
送信,有反应的端口进行调查
-sF FIN SCAN
-sX
-sN
全部FLAG OFF的无效的TCP包送信,根据错误代码判断端口情况
-P0
无视ICMP ECHO request的结果,SCAN
-p scan port range
指定SCAN的目端口的范围
   1-100,
或者使用25,100的方式
-O
侦测OS的种类
-oN
文件名通常格式文件输出
-oX
文件名通过DTD,使用XML格式输出结果
-oG
文件名,grep容易的格式输出
-sV
服务的程序名和版本SCAN
3.2.4 实例:
nmap -v target.com
这样对target.com上所有的保留TCP端口做了一次扫描,-v表示用详细模式。
nmap -sS -O target.com/24
这将开始一次SYN的半开扫描,针对的目标是target.example.com所在的C类子网,它还试图确定在其上运行的是什么系统。这需要root权限,因为用到了半开扫描以及系统侦测。
3.2.5 结果实例:
debianlinux:/etc/init.d# nmap 192.168.1.1
Starting nmap 3.81 ( 
http://www.insecure.org/nmap/ ) at 2005-08-30 00:01 JST
Interesting ports on 192.168.1.1
(The 1658 ports scanned but not shown below are in state: closed)
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
80/tcp   open     http
1720/tcp filtered H.323/Q.931
3128/tcp open     squid-http
5
nwatch的安装 nwatch 需要的包
Perl 5.005_03
以上
Net::Pcap
Ndiff 0.05 bata2
以上
libpcap
debian: apt-get install nwatch
6.nwatch
的使用方法
-d
网络设备名,默认为eth0
-h host/network[:port][t,u]
t,u
可以指定TCPUDP 默认为TCP
-o
输出文件名
-fi
时间(秒)把数据写盘时间,默认为300
-si
数据Break时间(秒),默认为86400(一天)
LINK
nmap
http://www.insecure.org/nmap/
数据写盘时间,默认为300-si 数据Break时间(秒),默认为86400(一天)LINKnmaphttp://www.insecure.org/nmap/


4 Iptables的配置
4.1 IPTABLES基础
  Iptables语法:
  Iptables [-t TABLE] ACTION [PATTERN] [-j TARGET]
  TABLE:
  有filter,nat,mangle;若无指定,预设为filter table.
  ACTION(Chains执行的动作):
  ACTION 说明
  -L Chain 显示Chain中的所有规则
  -A Chain Chain新增一条规则
  -D Chain 删除Chain中的一条规则
  -I Chain Chain中插入一条规则
  -R Chain 替换Chain中的某一条规则
  -P Chain Chain设定的预设的Policy
  -F Chain 清除Chain中的所有规则
  -N Chain 自订一个Chain
  -X 清除所有的自订Chain
  CHAINS:
  Iptables 有五条默认的Chains(规则链),如下表:
  Chains 发生的时机
  PREROUTING 数据包进入本机后,进入Route Table
  INPUT 数据包通过Route Table后,目地为本机
  OUTPUT 由本机发出,进入Route Table
  FORWARD 通过Route Table后,目地不是本机时
  POSTROUTING 通过Route Table后,送到网卡前
  PATTERN(设定条件部份):
  参数内容说明
  -p Protocol 通讯协议,如tcp,udp,icmp,all……
  -s Address 指定的Source AddressAddress
  -d Address 指定的Destination AddressAddress
  -I Interface 指定数据包进入的网卡
  -o Interface 指定数据包输出的网卡
  -m Match 指定高级选项,如mac,state,multiport……
  TARGET(常用的动作)
  TARGET 说明
  ACCEPT 让这个数据包通过
  DROP 丢弃数据包
  RETURN 不作对比直接返回
  QUEUE 传给User-Space的应用软件处理这个数据包
  SNAT nat专用:转译来源地址
  DNAT nat专用:转译目地地址
  MASQUERADE nat专用:转译来源地址成为NICMAC
  REDIRECT nat专用:转送到本机的某个PORT
4.2 公司服务器iptables配置实例
#! /bin/sh
#
# firewall starting firewall
#
# chkconfig: 2345 98 01
# description: setting firewall
##########################################################################
#
设定参数
##########################################################################
INNER_NET={network}/24   # LAN
局域网自由设定
FWALL_IP={localAddr}    #
防火墙的IP 你的机器的真实IP
INNER_PORT={interface}    #
局域网端IP
#OUTER_PORT={interface}     # Wan
IP
IPTABLES="/sbin/iptables"   # iptables
命令
MODPROBE="/sbin/modprobe"   # modprobe
命令
##########################################################################
#
模块的加载和设定为内核工作
##########################################################################
$MODPROBE ip_tables
$MODPROBE iptable_filter
$MODPROBE ip_conntrack
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ip_conntrack_ftp
$MODPROBE ipt_state
$MODPROBE ipt_MASQUERADE
$MODPROBE ipt_LOG
$MODPROBE ipt_REJECT
$MODPROBE ipt_limit
echo "3 4 1 7" > /proc/sys/kernel/printk
#
允许IP masquerade(变换)
echo 1 > /proc/sys/net/ipv4/ip_forward
#
忽视pingbroadcast
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#
检查源IP
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f; done
#
记录不可能的(虚假)IP
for f in /proc/sys/net/ipv4/conf/*/log_martians; do echo "1" > $f; done
#
忽视ICMP redirect message
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 1 > $f; done
##########################################################################
#
初始化规则
##########################################################################
$IPTABLES -P INPUT DROP   #
清空INPUT原始定义
$IPTABLES -P OUTPUT DROP #
清空OUPUT原始定义
$IPTABLES -P FORWARD DROP #
清空FORWARD原始定义
$IPTABLES -F    # flash chain
$IPTABLES -F -t nat
$IPTABLES -X    #
删除用户定义的Chain
##########################################################################
#
用户定义的chain
##########################################################################
#
#
记录并丢弃非法的包
#
$IPTABLES -N DROPPACKET   # DROPPACKT chain
的生成
$IPTABLES -A DROPPACKET -j LOG --log-prefix "INVALID_PACKET: " \
--log-level=6 -m limit --limit 1/s --limit-burst 10
$IPTABLES -A DROPPACKET -j DROP
#
#
检查SYNFlood攻击的chain
#
$IPTABLES -N SYNFLOOD   # SYNFLOOD chain
的生成
#
没有超过限定值的话返回
$IPTABLES -A SYNFLOOD -m limit --limit 10/s --limit-burst 20 -j RETURN
#
超过限定值,就视为SYNFLOOD攻击,记录并丢弃
$IPTABLES -A SYNFLOOD -m limit --limit 1/s --limit-burst 10 -j LOG \
--log-level=1 --log-prefix "SYNFLOOD: "
$IPTABLES -A SYNFLOOD -j DROP
#
#
记录非法的Flag TCP,并丢弃
#
$IPTABLES -N DROPFLAGS   # DROPFLAGS chain
的生成
$IPTABLES -A DROPFLAGS -j LOG --log-prefix "INVALID_FLAGS: " \
--log-level=6 -m limit --limit 1/s --limit-burst 10
$IPTABLES -A DROPFLAGS -j DROP
#
#
检查TCP Flag的非法组合
#
$IPTABLES -N CHKFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ACK,FIN FIN -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ACK,PSH PSH -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ACK,URG URG -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags FIN,RST FIN,RST -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags SYN,RST SYN,RST -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL ALL -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL NONE -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL FIN,PSH,URG -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROPFLAGS
#
#
拒绝 Microsoft 网络相关的FORWARD
#
$IPTABLES -N CHKMSNET
$IPTABLES -A CHKMSNET -p tcp --dport 42 -j DROP   # wins dup
$IPTABLES -A CHKMSNET -p tcp --dport 135 -j DROP # MS-RPC
$IPTABLES -A CHKMSNET -p udp --dport 135 -j DROP # MS-RPC
$IPTABLES -A CHKMSNET -p udp --dport 137:138 -j DROP # MS browse
$IPTABLES -A CHKMSNET -p udp --dport 137:138 -j DROP # MS browse
$IPTABLES -A CHKMSNET -p tcp --dport 139 -j DROP # SMB
$IPTABLES -A CHKMSNET -p tcp --dport 445 -j DROP # DHSMB

##########################################################################
# INPUT Chain
##########################################################################
# Localhost
的话,全部许可
$IPTABLES -A INPUT -i lo -j ACCEPT
#
检查包的正确性
$IPTABLES -A INPUT -m state --state INVALID -j DROPPACKET
#
检查包是否是SYN攻击
$IPTABLES -A INPUT -p tcp --syn -j SYNFLOOD
# TCP FLAG
的检查
$IPTABLES -A INPUT -p tcp -j CHKFLAGS
#
许可LAN内的连接
$IPTABLES -A INPUT -i $INNER_PORT -s $INNER_NET -j ACCEPT
#
许可已经建立的连接
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
检查是否是IP伪装
#$IPTABLES -A INPUT -i $OUTER_PORT -s $INNER_NET -j DROP
#
#
许可的服务(对外部公开的服务,在下面记述)
#
$IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT # ssh
$IPTABLES -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT # HTTP
$IPTABLES -A INPUT -p tcp --dport 9090 -m state --state NEW -j ACCEPT # JManage
$IPTABLES -A INPUT -p tcp --dport 81 -m state --state NEW -j ACCEPT # HTTP
#$IPTABLES -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT # HTTPS
#$IPTABLES -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT # DOMAIN(DNS)
{DNS}
#
拒绝AUTH请求
$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
# icmp (IN)
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -s $INNER_NET -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-reply -s $INNER_NET -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
#
除了上面以外所有的包,都记录下来,并通过Default Policy丢弃
$IPTABLES -A INPUT -j LOG --log-prefix "UNDEFIND_INPUT: " \
--log-level=6 -m limit --limit 1/s --limit-burst 10

##########################################################################
# OUTPUT Chain
##########################################################################
#
许可由localhost出来的包
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# TCP FLAG
的检查
$IPTABLES -A OUTPUT -p tcp -j CHKFLAGS
#
许可从服务器到Lan的连接
$IPTABLES -A OUTPUT -o $INNER_PORT -s $FWALL_IP -j ACCEPT
#
检查Microsoft网络
$IPTABLES -A OUTPUT -j CHKMSNET
#
许可已经连接的包
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
许可由服务器到互联网的新加连接
$IPTABLES -A OUTPUT -m state --state NEW -j ACCEPT
# icmp(OUT)
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type parameter-problem -j ACCEPT
#
除了上面以外所有的包,都记录下来,并通过Default Policy丢弃
$IPTABLES -A OUTPUT -j LOG --log-prefix "UNDEFIND_ICMP: " --log-level=6 \
-m limit --limit 1/s --limit-burst 10

##########################################################################
# IP
变换
##########################################################################
#
检查Microsoft网络
$IPTABLES -A FORWARD -j CHKMSNET
#
许可Lan内机器的IP变换
#$IPTABLES -t nat -A POSTROUTING -o $OUTER_PORT -s $INNER_NET -j MASQUERADE
#
从外部到Lan的连接,许可已经连接的FROWARD
#$IPTABLES -A FORWARD -i $OUTER_PORT -o $INNER_PORT -d $INNER_NET -m state \
# --state ESTABLISHED,RELATED -j ACCEPT
#
许可LAN到外部的连接
#$IPTABLES -A FORWARD -i $INNER_PORT -o $OUTER_PORT -s $INNER_NET -m state \
# --state NEW,ESTABLISHED,RELATED -j ACCEPT
exit 0


5 常用的服务器安全诊断工具
5.1 防范Rootkit病毒
rootkit
是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统
5.2 部署chkrootkit    入侵监测系统
安装:
wget 
ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz 
tar zxvf chkrootkit.tar.gz
 
cd chkrootkit-*
make sense (
编译,注意不是./configure)
cd ..
cp -r chkrootkit-* /usr/local/chkrootkit (
将编译好的目录复制到...)
rm -rf chkrootkit (
删除遗留源代码)
测试:
cd /usr/local/chkrootkit
./chkriitkit | grep INFECTED(
没有显示INFECTED 一切正常)
运行监测:
/usr/local/chkrootkit目录下./chkrootkit
让监测自动化
cd ~
vi chkrootkit (
建立chkrootkit在里面输入如下内容)

#!/bin/bash 
PATH=/usr/bin:/bin
TMPLOG=`mktemp`
# Run the chkrootkit
/usr/local/chkrootkit/chkrootkit > $TMPLOG
# Output the log
cat $TMPLOG | logger -t chkrootkit
# bindshe of SMTPSllHow to do some wrongs
if [ ! -z "$(grep 465 $TMPLOG)" ] && \
[ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i '/465/d' $TMPLOG
fi
# If the rootkit have been found,mail root
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root
rm -f $TMPLOG
chmod 700 chkrootkit
mv chkrootkit /etc/cron.daily/
  ( 将脚本移动到每天自动运行的目录中)
为了防止被入侵后chkrootkit命令被黑客更改将命令备份
cd ~
mkdir /root/commands
cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed uname` /root/commands/
/usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED (
测试用备份命令运行)
为了安全,将命令打包压缩之后下载到本地,再将服务器端删除
cd ~
tar cvf commands.tar commands
gzip commands.tar
commands.tar.gz 下载到本机后
rm-rf commands
若服务器端被更改,将本机commands.tar.gz上传到服务器解压
/usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED
chkrootkit
的参数

Usage: ./chkrootkit [options] [testname ...]
Options:
         -h                show this help and exit
         -V                show version information and exit
         -l                show available tests
         -d                debug
         -q                quiet mode
         -x                expert mode
         -r dir            use dir as the root directory
         -p dir1:dir2:dirN path for the external commands used by chkrootkit
         -n                skip NFS mounted dirs
5.3 Iptraf的使用
5.3.1 软件下载 
iptraf
的最新版本是2.7.0,可以从下面的地址下载wget ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.1.tar.gz
5.3.2 安装环境需要 
--- gcc 2.7.2.3 or later 
 --- GNU C (glibc) development library 2.1 or later 
 --- ncurses development libraries 4.2 or later 
  可以在linux下执行: 
  # rpm -qa | grep gcc 
  # rpm -qa | grep glibc 
  # rpm -qa | grep ncurses 
  如果没有,则请安装 
5.3.3 安装 
将下载得到的iptraf-2.7.0.tar.gz上传到你所要安装的机器上,我的是防火墙的 /home/yang/ 目录 
  # cd /home/yang 
  # tar zxf iptraf-2.7.0.tar.gz 
  # cd iptraf-2.7.0 
  # ./Setup 
  至此,安装完毕 
  安装程序会将执行程序安装到 /usr/local/bin 目录下,并创 /var/local/iptraf 目录放置iptraf的配置文     件,同时创建 /var/log/iptraf 目录放置iptraf产生的日志文件 
5.3.4 运行iptraf 
确认环境变量的PATH变量包含路径 /usr/local/bin 
  # iptraf 
  运行iptraf后会产生一个字符界面的菜单,点击 x 可以退出 iptraf 
  
  各菜单说明如下: 
  
  菜单Configure... 
  在这里可以对 iptraf 进行配置,所有的修改都将保存在文件:/var/local/iptraf/iptraf.cfg  
  --- Reverse DNS Lookups 选项,对IP地址反查 DNS名,默认是关闭的 
  --- TCP/UDP Service Names 选项,使用服务器代替端口号,例如用www 代替80,默认是关闭的 
  --- Force promiscuous 混杂模式,此时网卡将接受所有到达的数据,不管是不是发给自己的。 
  --- Color 终端显示彩色,当然用telnet ,ssh连接除外,也就是用不支持颜色的终端连接肯定还是没有     颜色。 
  --- Logging 同时产生日志文件,在/var/log/iptraf 目录下 
  --- Activity mode 可以选择统计单位是kbit/sec 还是 kbyte/sec 
  --- Source MAC addrs in traffic monitor 选择后,会显示数据包的源MAC地址 
  
  菜单Filters... 
  在这里可以设置过滤规则,这是最有用的选项了,当你从远端连入监控机时,自己的机器与监控机会产生源源不断的tcp数据包,有时很令人讨厌,此时你就可以将自己的ip地址排除在外。 
  它包括六个选项,分别是:TcpUdpOther IPARPRARPNon-ip。我们以TCP为例说明,其他选项的配置都很相似。 
  
  --- Defining a New Filter 
  选择Defining a New Filter后,会出来一对话框,要求填入对所建的当前规则的描述名,然后回车确定,Ctrlx取消 
  再接着出现的对话框里,Host name/IP address:First里面填源地址,Second里填目标地址,Wildcard mask 的两个框里面分别是源地址和目标地址所对应的掩码,注意,这里的地址即可以是单个地址,也可以是一个网段,如果是单个IP,则相应的子网掩码要填成255.255.255.255,如果是一个网段,则填写相应的子网掩码:例如,想表示192.168.0.0,有256IP地址的网段,则填写192.168.0.0,子网是:255.255.255.0,其他类推,All则用0.0.0.0,子网也是0.0.0.0表示。 
  Port:栏要求填入要过滤的端口号,0表示任意端口号 
  Include/Exclude栏要求填入I或者EI表示包括,E表示排除 
  填写完毕,回车确认,Ctrl+x取消 
  
  --- Applying a Filter 
  我们在上一步定义的一个或多个过滤规则会存储为一个过滤列表,在没有应用之前并不起作用,我们可以在这里选择我们应用那些过滤规则。所有应用的规则会一直起作用,即使重新启动iptraf。我们可以执行Detaching a Filter来取消执行当前所有应用的规则。 
  
  --- Editing a Defined Filter 编辑一个已经存在的规则 
  
  --- Deleting a Defined Filter 删除一个已经定义的规则 
  
  --- Detaching a Filter 取消执行当前所有应用的规则 
  
  菜单IP Traffic Monitor 
  IP数据包流量实时监控窗口,注意这里会监控所有的来往数据包,包括自己的,所以,如果你使用远程终端连接上来的话,你和监控机将会源源不断的产生数据流,因此建议在Filters...菜单中将自己的IP过滤掉,是它不产生影响。在这里可以实时的看到每一个连接的流量状态,它有两个窗口,上面的是TCP的连接状态,下面的窗口可以看到UDPICMPOSPFIGRPIGPIGMPGREARPRARP的数据包。可以点击s键选择排序,可以按照包的数量排序,也可按照字节的大小排序,如果因为它是实时变化的而导致看不太清楚的话,可以在Configure菜单中把Logging功能打开,它就会在/var/log/iptraf 目录中记录日志,以方便你在日后查看,当Logging功能打开后,当你开始监控IP Traffic时,程序会提示你输入Log文件的文件名,默认的是ip_traffic-1.log 
  
  在一个比较繁忙的网络里,显示的结果可能很乱,以至于你很难找到自己感兴趣的数据,这时可以使用Filters菜单,来过滤显示的数据。 
  
  菜单General Interface Statistics 
  这里显示每个网络设备出去和进入的数据流量统计信息,包括总计、IP包、非IP包、Bad IP包、还有每秒的流速,单位是kbit/sec或者是kbyte/sec ,这由Configure菜单的Activity选项决定。 
  如果设置了Filter选项,这里也受到影响 
  
  菜单Detailed Interface Statistics 
  这里包括了每个网络设备的详细的统计信息,很简单,不再赘述。 
  
  ■Statistical Breakdowns 
  这里提供更详细的统计信息,可以按包的大小分类,分别统计;也可以按Tcp/Udp的服务来分类统计。

 

 

猜你喜欢

转载自tiger-hu.iteye.com/blog/1889499