Ubuntu系统安全检测

常规检查------系统版本信息

$ lsb_release -a
LSB Version:    core-2.0-ia32:core-2.0-noarch:core-3.core...
Distributor ID:    Ubuntu
Description:    Ubuntu 12.10
Release:    12.10
Codename:    quantal

系统安装软件包列表

$ rpm -qa                  #Fedora/Redhat系统适用

$ dpkg -l                  #Ubuntu系统适用

系统进程运行状态

$ top

1 top - 15:34:24 up 23:44, 10 users,  load average: 0.52, 0.56, 0.59
2 Tasks: 245 total,   2 running, 241 sleeping,   1 stopped,   1 zombie
3 %Cpu(s): 14.3 us,  3.4 sy,  0.0 ni, 82.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
4 KiB Mem:   3924136 total,  3220824 used,   703312 free,   296052 buffers
5 KiB Swap:        0 total,        0 used,        0 free,  1488240 cached
6
7   PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
8 14846 good      20   0  733m 158m  43m S  33.8  4.1  71:54.21 firefox
9  1309 root      20   0 98.6m  29m 6616 S  14.6  0.8  39:01.19 Xorg
10 ...

说明:

第1行,与命令w输出的含义相同
第2行,进程总数245
第3行,CPU使用情况,用户态(us)占用率14.3%,内核态占用率3.4(sy)
第4,5行,内存使用情况,物理内存4G,空闲703M,交换分区大小为0
第6,7,8行等,进程列表及实时运行状态

 


系统运行级查看

$ runlevel 

Ubuntu系统服务管理和配置实现特殊,所以Linux通用的服务管理命令chkconfig等不支持,经初步试用发现命令update-rc.d还很初级,可能达不到预期效果。

停止ssh服务

$ sudo update-rc.d ssh disable

启用ssh服务

$ sudo update-rc.d ssh enable

 

帐号安全-----系统用户登陆情况检查

$ w
 15:09:17 up 23:18,  4 users,  load average: 0.77, 0.59, 0.63
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
demo     pts/2    192.168.1.100    15:12   1:16   0.30s  0.09s -bash
gooo     tty7     :0               三15   23:18m 36:49   2.22s gnome-session --session=ubuntu
gooo     pts/0    :0               三15   23:57   9.24s  9.01s /usr/bin/firefox

说明:

系统当前时间:15:09:17
系统已运行时间:23:18
系统平均负载:0.77, 0.59, 0.63 (over the last 1, 5 and 15 minutes)
已登陆用户:4个
demo用户通过网络在图形下的terminal(pts指虚拟终端)登陆,登陆时间15:12,IP地址为192.168.1.100;
gooo用户的第一个登陆在控制台七(即Ctrl+Alt+F5),为当前gnome图形桌面的登陆用户;
gooo用户的第二个登陆在图形下的terminal,正在运行firefox;
注意:如果发现有不明用户登陆系统,可通过命令”pkill -kill -t TTYName”将其踢掉,如踢掉demo用户的命令如下:

$ sudo pkill -kill -t pts/2

 

检查系统中保存帐号列表的文件中是否有异常帐号。

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
...
*test:x:0:1001:cs2c,,,,:/home/test:/bin/bash*

要特别注意类似test(最后一行)的帐号,这个帐号UID被设为0,意味这个用户权限与root完全相同,而且在Ubuntu下可以直接登陆(Ubuntu下默认是不允许root登陆系统的),非常危险。

 

帐号历史活动记录

last命令显示系统最近三次用户登陆情况,如果不指定-n参数,默认显示所有。

$ sudo last -n 3

 

用户名 终端 来源 登录时间 - 关闭时间(持续时间)

gooo     pts/2        192.168.1.100    Thu Aug 15 15:58 - 16:07  (00:08)    
gooo     tty5                          Thu Aug 15 15:12 - 16:09  (00:57)
gooo     pts/7        :0               Thu Aug 15 15:06   still logged in

 

lastb命令显示系统最近三次用户登陆失败的情况,如果不指定-n参数,默认显示所有。ubuntu系统下lastb默认不记录通过远程ssh登陆的失败记录,问题还在查找。

$ sudo lastb -n 3

用户名 终端 来源 登录时间 - 关闭时间(持续时间)
UNKNOWN tty6 Thu Aug 15 16:04 - 16:04 (00:00) 
root tty6 Thu Aug 15 16:04 - 16:04 (00:00) 
aureport是一个更加强大的系统审计信息查询工具,基于audit daemon,auditd根据配置规则记录相关系统活动,如用户口令修改记录、进程运行记录等信息,通过aureport工具可以查询audit日志。

$ man aureport

 

 

网络安全----服务端口开放检查

$ sudo netstat -anpt

1  Active Internet connections (servers and established)
2  Proto Recv-Q Send-Q Local Address         Foreign Address       State       PID/Program name
3  tcp        0      0 0.0.0.0:22            0.0.0.0:*             LISTEN      825/sshd        
4  tcp        0      0 127.0.0.1:631         0.0.0.0:*             LISTEN      12489/cupsd     
5  tcp        1      0 192.168.1.106:45268   91.189.92.11:443      CLOSE_WAIT  
6  tcp        0      0 192.168.1.106:22      192.168.1.109:42066   ESTABLISHED 24652/sshd: 
7  tcp        0      0 192.168.1.106:55095   192.168.1.108:22      ESTABLISHED 25221/ssh       
8  tcp        0      0 192.168.1.106:32872   122.193.23.59:80      TIME_WAIT   -               
9  tcp        0      0 192.168.1.106:46298   184.25.111.231:80     TIME_WAIT   -               
10 udp        0      0 0.0.0.0:17500         0.0.0.0:*                         2579/drop
11 tcp6       0      0 ::1:631               :::*                  LISTEN      12489/cupsd 

说明:

命令说明(A):

“-a” 显示所有;
“-n” IP地址和端口号以数字方式显示,默认为别名方式;
“-p” 显示PID和进程名;
“-t” 显示TCP协议;
“-u” 显示UDP协议。
第3行,sshd服务(进程ID为825)开启了tcp协议的22号端口,不限制接入IP地址;
第4行,cupsd服务开启了tcp协议的631端口,限制仅允许本地访问;
第5行,本机正在访问91.189.92.11的443端口;
第6行,远程主机192.168.1.109已经通过ssh服务远程登陆本机(192.168.1.106);
第7行,本机已经通过ssh服务远程登陆远程主机192.168.1.109;
第8,9行,本机正在访问122.193.23.59和184.25.111.231两个网站;
第10行,未知服务(drop进程,PID2579)开启了udp协议的17500端口,不限制接入IP地址;
第11行,cupsd服务开启了tcp6协议(IPv6协议)的631端口,限制仅允许本地访问;

 

 

下面是网络链路安全检查-----默认网关检查

$ route -n

网络设备节点情况

$ ifconfig -a

实时网络连接状态和流量情况

$ sudo iptstate -C

ARP解析列表缓存显示。如果192.168.1.1是网关IP,而后面的MAC地址与实际不符,那应该是被ARP欺骗了!

$ arp -a

?  (192.168.1.1) at 00:23:9e:xx:xx:xx [ether] on eth0

防火墙规则情况

$ sudo iptables --list

 

 

数据安全

如果有人入侵了你的系统,修改了系统启动脚本,还替换了一些关键程序来掩盖他的行踪,这该然后办?关键是你还不确定入侵是否发生过。 DEB包校验完整性校验

Ubuntu系统默认不支持系统已安装包的完整性校验(个人结论),网上查到debsums这个包支持。

$ sudo apt-get install debsums
$ debsums sysv-rc #校验包sysv-rc
$ debsums #校验系统中所有包

 

 

 

系统日志安全

通过分析日志记录是查找系统安全隐患的重要手段,Linux系统下日志默认集中保存在目录/var/log下,下面主要列举几个主要的日志文件。

用户帐号认证日志,内容包括帐号登陆记录、权限转换(su/sudo)、修改口令等操作。

$ sudo vim /var/log/secure   

$ sudo vim /var/log/auth.log        #Ubuntu系统适用

系统启动日志(即显示一行行OK的那个画面的内容)

$ sudo vim /var/log/boot.log

内核启动初始化日志

$ sudo vim /var/log/dmesg

系统服务和核心组件日志(如networkmanager/gnome-session等)

$ sudo vim /var/log/messages

$ sudo vim /var/log/syslog          #Ubuntu系统适用

Xorg图形系统日志

$ sudo vim /var/log/Xorg.0.log

在线软件包操作日志,内容包括install/remove/update等记录。

$ sudo vim /var/log/yum.log          #Fedora/Redhat系统适用

$ sudo vim /var/log/apt.log          #Ubuntu系统适用

 

posted @ 2017-12-27 15:34  小生观察室  阅读(296)  评论(0编辑  收藏  举报