密码的安全

一、开关机安全控制

调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统

将安全级别设为setup,并设置管理员密码

GRUB限制
使用grub2-mkpasswd-pbkdf2生成密钥
修改/etc/grub.d/00_header文件中,添加密码记录

生成新的grub.cfg配置文件

限制更改GRUB引导参数

按e键通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
[]# grub2-mkpasswd-pbkdf2 #根据提示设置GRUB菜单的密码
PBKDF2 hash of your password is grub . pbkd…” #省略部分内容为经过加密生成的密码字符串

[]# cp / boot/grub2/grub.cfg / boot/grub2/grub.cfg. bak
[]#cp /etc/grub.d/00_header /etc/grub.d/ 00_header.bak

[]#vim /etc/grub.d/ 00_header
cat <<EOF
set superusers=“root” #设置用户名为root

password_ pbkdf2 root grub.pbkd2 . . . #设置密码,省略部分内容为经过加密生成的密码字符串
EOF
[]#grub2-mkconfig -o /boot/grub2/grub.cfg #生成新的grub.cfg文件(一定要设文件不然密码不会生效)
重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。
在这里插入图片描述
在这里插入图片描述

一步到位
[]#grub2-setpassword

二、终端登录安全控制

限制root只在安全终端登录
安全终端配置:/etc/securetty

[root@localhost ~]# vi /etc/securetty

#tty5(禁止root用户从终端tty5.tty6登录)
#tty6

ctrl+alt+f1-6:进入终端(虚拟机里操作)

在这里插入图片描述

禁止登录tty5,6终端

在这里插入图片描述

ctrl+alt+F5,6显示无法进入

在这里插入图片描述

ctrl+alt+F3就能登录

在这里插入图片描述

安全终端配置:/etc/securetty

禁止普通用户登录
建立/etc/nologin文件
删除nologin文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin ( 禁止普通用户登录)
[root@localhost ~]# rm -rf /etc/nologin (取消上述登录限制)

lisi无法登录
在这里插入图片描述

删除后lisi又可以登陆了

在这里插入图片描述

三、Linux命令last(显示终端)

3.1、命令简介:

该命令用来列出目前与过去登录系统的用户相关信息。指令英文原义:show listing of last logged in users

执行权限 :有些需要特殊权限

指令所在路径:/usr/bin/last
执行last指令时,它会读取位于/var/log目录下名称为wtmp的文件,并把该给文件的内容记录的登录系统的用户名单全部显示出来。默认是显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。

utmp文件中保存的是当前正在本系统中的用户的信息。

wtmp文件中保存的是登录过本系统的用户的信息。

3.2、命令输出字段介绍:

第一列:用户名

第二列:终端位置。pts/0 (伪终端) 意味着从诸如SSH或telnet的远程连接的用户.tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户

第三列:登录ip或者内核 。如果你看见:0.0 或者什么都没有,这意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中。

第四列:开始时间

第五列:结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机)

第六列:持续时间

3.3、命令语法:

last [-R] [-num] [ -n num ] [-adiowx] [ -f file ] [ -t YYYYMMDDHHMMSS ] [name…] [tty…]

命令参数:

-a:将登录系统的的主机名称或IP地址,显示在最后一列

-d:将IP地址转换成主机名称

-f:指定记录文件,默认是显示/var/log目录下的wtmp文件的记录,但/var/log目录下得btmp能显示的内容更丰富,可以显示远程登录,例如ssh登录 ,包括失败的登录请求。

-i:-i显示特定ip登录的情况。跟踪用 -i显示特定ip登录的情况。跟踪用

-o:Read an old-type wtmp file (written by linux-libc5 applications).

-n:-n <显示行数>或-<显示行数>  设置显示多少行记录

-w:在输出中显示完整的用户名和域名

-R:不显示登入系统的主机名称或IP(省略 hostname 的栏位)

-t:显示YYYYMMDDHHMMSS之前的信息

-x:显示系统关闭、用户登录和退出的历史

3.4、使用示例:

查看last命令的帮助信息
[root@kgc home]#man last

[root@kgc home]# last -h
last: invalid option – ‘h’
Usage: last [-num | -n num] [-f file] [-t YYYYMMDDHHMMSS] [-R] [-adioxFw] [username…] [tty…]

显示最后登录系统的N条记录
[root@kgc home]# last -10
zhangsan pts/6 192.168.10.2 Fri Aug 6 03:37 still logged in
zhangsan pts/5 192.168.10.2 Fri Aug 6 03:36 - 03:37 (00:00)
root pts/3 192.168.10.2 Fri Aug 6 02:49 still logged in
root pts/2 192.168.10.2 Fri Aug 6 01:33 - 08:12 (06:39)
root pts/6 192.168.10.2 Fri Aug 6 00:26 - 01:33 (01:07)
root pts/5 192.168.10.2 Fri Aug 6 00:26 - 00:26 (00:00)
root pts/4 192.168.10.2 Fri Aug 6 00:09 still logged in
root pts/6 192.168.10.2 Thu Aug 5 16:09 - 16:54 (00:44)
root pts/5 192.168.10.2 Thu Aug 5 16:06 - 16:54 (00:47)
root pts/6 192.168.10.2 Thu Aug 5 16:05 - 16:05 (00:00)

wtmp begins Fri Jul 23 00:37:48 2021

[root@kgc home]# last -n 10
zhangsan pts/6 192.168.10.2 Fri Aug 6 03:37 still logged in
zhangsan pts/5 192.168.10.2 Fri Aug 6 03:36 - 03:37 (00:00)
root pts/3 192.168.10.2 Fri Aug 6 02:49 still logged in
root pts/2 192.168.10.2 Fri Aug 6 01:33 - 08:12 (06:39)
root pts/6 192.168.10.2 Fri Aug 6 00:26 - 01:33 (01:07)
root pts/5 192.168.10.2 Fri Aug 6 00:26 - 00:26 (00:00)
root pts/4 192.168.10.2 Fri Aug 6 00:09 still logged in
root pts/6 192.168.10.2 Thu Aug 5 16:09 - 16:54 (00:44)
root pts/5 192.168.10.2 Thu Aug 5 16:06 - 16:54 (00:47)
root pts/6 192.168.10.2 Thu Aug 5 16:05 - 16:05 (00:00)

wtmp begins Fri Jul 23 00:37:48 2021

将登录系统的主机名或IP地址显示在最后一行
[root@kgc home]# last -10 -a
zhangsan pts/6 Fri Aug 6 03:37 still logged in 192.168.10.2
zhangsan pts/5 Fri Aug 6 03:36 - 03:37 (00:00) 192.168.10.2
root pts/3 Fri Aug 6 02:49 still logged in 192.168.10.2
root pts/2 Fri Aug 6 01:33 - 08:12 (06:39) 192.168.10.2
root pts/6 Fri Aug 6 00:26 - 01:33 (01:07) 192.168.10.2
root pts/5 Fri Aug 6 00:26 - 00:26 (00:00) 192.168.10.2
root pts/4 Fri Aug 6 00:09 still logged in 192.168.10.2
root pts/6 Thu Aug 5 16:09 - 16:54 (00:44) 192.168.10.2
root pts/5 Thu Aug 5 16:06 - 16:54 (00:47) 192.168.10.2
root pts/6 Thu Aug 5 16:05 - 16:05 (00:00) 192.168.10.2

wtmp begins Fri Jul 23 00:37:48 2021

不显示登入系统的主机名称或IP地址
[root@kgc home]# last -10 -R
zhangsan pts/6 Fri Aug 6 03:37 still logged in
zhangsan pts/5 Fri Aug 6 03:36 - 03:37 (00:00)
root pts/3 Fri Aug 6 02:49 still logged in
root pts/2 Fri Aug 6 01:33 - 08:12 (06:39)
root pts/6 Fri Aug 6 00:26 - 01:33 (01:07)
root pts/5 Fri Aug 6 00:26 - 00:26 (00:00)
root pts/4 Fri Aug 6 00:09 still logged in
root pts/6 Thu Aug 5 16:09 - 16:54 (00:44)
root pts/5 Thu Aug 5 16:06 - 16:54 (00:47)
root pts/6 Thu Aug 5 16:05 - 16:05 (00:00)

wtmp begins Fri Jul 23 00:37:48 2021

指定/var/log/btmp文件,查看登录系统的用户相关信息
[root@kgc home]# last -n 10 -f /var/log/btmp
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:58 gone - no logout
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:58 - 03:58 (00:00)
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:58 - 03:58 (00:00)
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:35 - 03:58 (00:22)
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:35 - 03:35 (00:00)
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:35 - 03:35 (00:00)
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:34 - 03:35 (00:00)
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:34 - 03:34 (00:00)
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:34 - 03:34 (00:00)
zhang1 ssh:notty 192.168.10.2 Thu Aug 5 03:33 - 03:34 (00:00)

btmp begins Thu Aug 5 03:23:22 2021

将IP地址转换成主机名称
[root@kgc home]# last -10 -d
zhangsan pts/6 192.168.10.2 Fri Aug 6 03:37 still logged in
zhangsan pts/5 192.168.10.2 Fri Aug 6 03:36 - 03:37 (00:00)
root pts/3 192.168.10.2 Fri Aug 6 02:49 still logged in
root pts/2 192.168.10.2 Fri Aug 6 01:33 - 08:12 (06:39)
root pts/6 192.168.10.2 Fri Aug 6 00:26 - 01:33 (01:07)
root pts/5 192.168.10.2 Fri Aug 6 00:26 - 00:26 (00:00)
root pts/4 192.168.10.2 Fri Aug 6 00:09 still logged in
root pts/6 192.168.10.2 Thu Aug 5 16:09 - 16:54 (00:44)
root pts/5 192.168.10.2 Thu Aug 5 16:06 - 16:54 (00:47)
root pts/6 192.168.10.2 Thu Aug 5 16:05 - 16:05 (00:00)

wtmp begins Fri Jul 23 00:37:48 2021

显示YYYYMMDDHHMMSS(20150110093000)之前的信息
[root@kgc home]# last -10 -t 20210801103448
root pts/2 192.168.10.2 Mon Jul 26 14:15 gone - no logout
root pts/2 192.168.100.3 Fri Jul 23 06:18 - 08:44 (02:25)
root pts/2 192.168.100.3 Fri Jul 23 06:10 - 06:18 (00:07)
root pts/2 192.168.100.3 Fri Jul 23 05:24 - 05:37 (00:13)
root pts/1 :0 Fri Jul 23 04:29 still logged in
root pts/0 :0 Fri Jul 23 04:16 still logged in
root :0 :0 Fri Jul 23 04:16 still logged in
root pts/0 192.168.100.3 Fri Jul 23 01:14 - 01:20 (00:05)
reboot system boot 3.10.0-957.el7.x Fri Jul 23 01:14 - 10:36 (14+09:21)
root pts/0 192.168.100.3 Fri Jul 23 01:10 - down (00:03)

wtmp begins Fri Jul 23 00:37:48 2021

在这里插入图片描述

四、系统弱口令检测

John the Ripper,简称为JR
—款密码分析工具,支持字典式的暴力破解
通过对shadow文件的口令分析,可以检测密码强度

官方网站: http://www.openwall.comljohnl

安装JR工具
安装方法 make clean系统类型
主程序文件为john
检测弱口令账号
获得Linux/Unix服务器的shadow文件

执行john程序,将shadow文件作为参数

密码文件的暴力破解
准备好密码字典文件,默认为password.lst

执行john程序,结合–wordlist=字典文件

弱口令检测---->John the Ripper
JohntheRipper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。

#解压工具包
cd /opt
tar.zxf john-1.8.0.tar.gz

在这里插入图片描述

#安装软件编译工具
yum install -y gcc gcc-c++ make

在这里插入图片描述

#切换到src子目录
cd /opt/john-1.8.0/src

#进行编译安装
make clean linux-x86-64
在这里插入图片描述

#准备待破解的密码文件
cp /etc/shadow /opt/shadow.txt #执行暴力破解
cd /opt/john-1.8.0/ run

./ john /opt/ shadow.txt

等,时间会很长

在这里插入图片描述

#查看己破解出的账户列表
./ john --show /opt/shadow .txt
在这里插入图片描述

#使用密码字典文件

大于号john. pot #清空己破解出的账户列表,以便重新分形析
./john --wordlist=./password.1st /opt/shadow.txt #使用指定的字典文件进行破解

网络端口扫描2-1

NMAP
—款强大的网络扫描、安全检测工具

官方网站: http://nmap.org
CentOS 7.7光盘中安装包 nmap-6.40-7.el7.x86_64.rpm

五、网络端口扫描2-2

NMAP的扫描
nmap [扫描类型] [选项] <扫描目标…>

首先要重新启动下httpd不然后面可能出现不了open,指定80端口进行扫描

在这里插入图片描述

常用的扫描类型
-ss、-sT、-sF、-sU、-sP、-P0

示例1
分别查看本机开放的TCP端口、UDP端口

示例2
检测192.168.4.0/24网段有哪些主机提供FTP服务

示例3
检测192.168.4.0/24网段有哪些存活主机

网络端口扫描扩展:

控制位

SYN建立链接

ACK确认
FIN结束断开
PSH传送 0数据缓存 上层应用协议

RST重置
URG"紧急
rpm -qa | grep nmap查看nmap

yum install -y nmap
nmap命令常用的选项和描类型

-p:指定扫描的端口
-n:禁用反向DNS解析(以加快扫描速度)
-sS:TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。

-sT: TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。

在这里插入图片描述

-sF;TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
在这里插入图片描述

    --sP:ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。

在这里插入图片描述

    -P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。

六、扩展
通过pam模块来防止暴力破解ssh
[ root@benet ~]#vim /etc/pam.d/ sshd

在第一行下面添加一
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200

在这里插入图片描述

deny=3:密码登录三次

unlock_time=600 :普通用户锁定600秒

even_deny_root :拒绝用户登录

root_unlock_time=1200:root账号锁定1200秒

说明:尝试登陆失败超过3次,普通用户600秒解锁,root用户1200秒解锁
手动解除锁定:
查看某一用户错误登陆次数:pam_tally2 --user
查看root用户的错误登陆次数:pam_tally2 --user root
清空全部用户错误登陆次数:pam_tally2 --user --reset
清空root用户的错误登陆次数,pam_tally2 --user root --reset

用ssh访问root用户,连输错3次密码后拒绝访问并且锁定账号

在这里插入图片描述

输入正确的密码无法登录

在这里插入图片描述

输错五次

在这里插入图片描述

清空输错次数

在这里插入图片描述

再次查看输错次数变为0了

在这里插入图片描述

七、系统调优概述和查看 CPU 负载相关工具

​ 7.1系统调优思路

性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对 OS 各子系统达到一种平衡的定义。具体步骤如下:
1.系统的运行状况: CPU -> MEM -> DISK-> NETWORK -> application
2.分析是否有瓶颈(依据当前应用需求)
3.调优(采取一定措施使变得优异)
这些子系统之间关系是相互彼此依赖的,任何一个高负载都会导致其他子系统出现问题.比如: 大量的网页调入请求导致内存队列的拥塞;
网卡的大吞吐量可能导致更多的 CPU 开销;
大量的 CPU 开销又会尝试更多的内存使用请求;
大量来自内存的磁盘写请求可能导致更多的 CPU 以及 IO 问题;
所以要对一个系统进行优化,查找瓶颈来自哪个方面是关键,虽然看似是某一个子系统出现问题,其实有可能是别的子系统导致的。调优就像医生看病,因此需要你对服务器所有地方都了解清楚。

7.2查看 CPU 负载相关工具

1、使用 uptime 命令查看系统 cpu 负载
[root@benet17 ~]# uptime
12:38:33 up 50days , 3 users, load average: 0.06, 0.60, 0.48 其内容如下:
12:38:33 当前时间
up 50days 系统运行时间 ,说明此服务器连续运行 50 天了
3 user 当前登录用户数
load average: 0.06, 0.60,
0.48 系统负载,即任务队列的平均长度。三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。
例:找出前当系统中,CPU 负载过高的服务器?
服务器 1: load average: 0.15, 0.08, 0.01 1 核
服务器 2: load average: 4.15, 6.08, 6.01 1 核
服务器 3: load average: 10.15, 10.08, 10.01 4 核
答案:服务器 2 负载过高。
经验:单核心,1 分钟的系统平均负载不要超过 3,就可以,4 核心不要超过 12,这是个经验值。所以如果服务器的 CPU 为 1 核心,则 load average 中的数字 >=3 负载过高,如果服务器的 CPU 为 4 核心,则 load average 中的数字 >=12 负载过高。

任务队列的平均长度是:是系统等待运行队列的长度与当前所有 CPU 中正在运行的工作的和。

7.3使用 mpstat 查看 CPU 运行情况

[root@benet17 ~]# rpm -qf which mpstat #查看安装 mpstat 命令的安装包。

sysstat-9.0.4-18.el6.x86_64 #此软件包,包括很多查看系统状态的软件包。

[root@benet17 ~]# mpstat -P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值

注:每列参数说明
usr:用户空间 CPU 使用占比。
nice:低优先级进程使用 CPU 占比。nice 值大于 0。
sys:内核空间 CPU 使用占比。
iowait:CPU 等待 IO 占比。
irq:CPU 处理硬中断占比。
soft:CPU 处理软中断占比。
idle:CPU 空闲时间占比。
guest 与 steal 与虚拟机有关,暂不涉及。

[root@benet17 ~]# mpstat -P ALL #查看所有 CPU 运行状态

[root@benet17 ~]# mpstat -P ALL 1 100 #一秒钟刷新一次 连续刷新 100 次

八、查看 Memory 运行状态相关工具

8.1查看 Memory 运行状态相关工具

free 命令查看内存使用情况
[root@benet17 ~]# free -m
total used free shared buff/cache available
Mem: 1992 692 817 17 482 1100
Swap: 1023 0 1023
注:在 centos7 系统中 available 这一列是真正可用内存。 available 包括了 buff/cache 中一些可以被释放的内存。当物理内存不够用的时候,内核会把非活跃的数据清空。

通过/proc 目录,查看非活跃的内存:

[root@benet17 ~]# cat /proc/meminfo
MemTotal: 3861512 kB
MemFree: 2097060 kB
MemAvailable: 2561660 kB
Buffers: 2084 kB
Cached: 654920 kB
SwapCached: 0 kB
Active: 1199076 kB
Inactive: 317728 kB
Active(anon): 861052 kB 活跃内存,指进程一直读写的内存空间
Inactive(anon): 13576 kB 非活跃内存
Active(file): 338024 kB

注:当内存不够用时,kernel 总是把不活跃的内存交换到 swap 空间。如果 inactive 内存多时,加
swap 空间可以解决问题,而 active 多,则考虑加内存。

8.2实战:找出系统中使用内存最多的进程?
方法 1:运行 top,然后按下大写的 M 可以按内存使用率来排序显示(已讲过)
方法 2:按照实际使用内存,从大到小排序显示所有进程列表
[root@benet17 ~]# ps -aux --sort -rss | more 内存降序排序(去掉减号就是升序) 或:
[root@benet17 ~]# ps -aux --sort -rss > a.log

九、查看 I/O 运行状态相关工具

9.1查看文件系统块大小

对于 ext4 文件系统,查看文件系统块大小
[root@benet17 ~]# tune2fs -l /dev/sda1 | grep size
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Block size: 1024 # 为 1 个字节 。 一个扇区 512 字节。

对于 xfs 文件系统,查看文件系统块大小
[root@benet17 ~]# xfs_growfs -l /dev/sda1 |grep bsize

data = bsize=4096 blocks=51200, imaxpct=25

9.2 实战-找出系统中对磁盘读写最多的进程
实战场景1:对于这个服务器,8块磁盘中,哪个硬盘最繁忙?哪个分区最繁忙?

1、通过iostat命令查看IO是否存在瓶颈安装iostat:
[root@benet17 ~]# rpm -ivh /mnt/Packages/sysstat-10.1.5-12.el7.x86_64.rpm 常用参数:
-d 仅显示磁盘统计信息。
-k 以K为单位显示每秒的磁盘请求数,默认单位块。
-p device | ALL 用于显示块设备及系统分区的统计信息。

[root@benet17 ~]# iostat -d -k -p /dev/sda
Linux 2.6.32-220.el6.x86_64 (benet17.cn) 03/20/2017 x86_64 (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 6.64 167.01 18.53 301418 33437
sda1 0.33 1.28 0.00 2317 9
sda2 6.03 164.53 18.52 296949 33428
sda3 0.18 0.80 0.00 1452 0

注:
每列含意:
kB_read/s 每秒从磁盘读入的数据量,单位为K.
kB_wrtn/s 每秒向磁盘写入的数据量,单位为K.
kB_read 读入的数据总量,单位为K.
kB_wrtn 写入的数据总量,单位为K.

2、测试,给磁盘写入一些内容, 写入时尽可能不读磁盘?
[root@benet17 ~]# dd if=/dev/zero of=a.txt bs=10M count=1000 ; sync 读入的数据用/dev/zero,/dev/zero不会读磁盘的。
sync #把内存中的数据快速写到磁盘上。 只做dd不执行sync,不容易看不出写入效果这一招学到手:1

[root@benet17 ~]# iostat -p sda -dk
Linux 2.6.32-220.el6.x86_64 (benet17.cn) 03/03/2017 x86_64 (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 6.07 128.02 463.04 298190 1078577
sda1 0.25 0.99 0.00 2317 9
sda2 5.60 126.10 463.04 293721 1078568

实战场景2:公司的服务器很卡,查看CPU使用率不高,内存也够用,但就是卡,尤其是打开新程序或文件时,更卡。此时是哪出问题了?

这时系统的瓶颈在哪里? 在磁盘IO上。使用iotop命令,查看哪个进程使用磁盘读写最多。

安装:
[root@benet17 ~]# rpm -ivh /mnt/Packages/iotop-0.6-2.el7.noarch.rpm iotop的参数:
-o, -only 只显示在读写硬盘的程序
-d SEC, -delay=SEC 设定显示时间间隔。 刷新时间
iotop 常用快捷键:
<- / ->:左右箭头:改变排序方式,默认是按 IO 排序。
r:改变排序顺序。
o:只显示有 IO 输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出,按 q 或 ctrl+C

例1:找出使用磁盘最多的进程
[root@benet17 ~]# iotop -o -d 1 #显示正在使用磁盘的进程在另一个终端对磁盘进行大量读操作,执行:
[root@benet17 ~]# find /

查看结果:
并且找出使用系统:cpu,内存,磁盘最多进程。

十、查看 Network 运行状态相关工具

10.1实战: 找出系统中使用网络最多的进程

实战1:使用nload监控总体带宽使用情况

1、安装nload
[root@benet17 ~]# yum install epel-release -y
[root@benet17 ~]# yum install nload -y

2、开始监控
[root@benet17 ~]# nload #开始监控

然后另一个终端上运行ab,开始测试:
[root@benet17 ~]# rpm -ivh
/mnt/Packages/httpd-tools-2.4.6-67.el7.centos.x86_64.rpm
[root@benet17 ~]# ab -n 1000 -c 2 http://www.baidu.com/index.html #产生一些测试数据
查看结果:

实战2: 使用nethogs找出使用带宽最多的进程
实战情景:突然今天12:00左右,运维人员接到IDC机房电话,说你的网站流量对外输出很多,这样应该怎么办?

1、上传到nethogs到linux上:
nethogs-0.8.5-1.el7.x86_64.rpm 程序包下载: http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nethogs-0.8.5-1.el7.x86_64
.rpm
或:
[root@benet17 ~]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nethogs-0.8.5-1.el7.x86_64.rpm
[root@benet17 ~]# rpm -ivh nethogs-0.8.5-1.el7.x86_64.rpm
[root@benet17 ~]# nethogs

2、在另一个终端生成一些数据:
[root@benet17 ~]# wget
http://issuecdn.baidupcs.com/issue/netdisk/yunguanjia/BaiduNetdisk_5.5.3.exe 查看结果,找出wget是使用流量最多的进程。

十一、 查看系统整体运行状态

11.1使用 vmstat 查看内存及系统整体运行状态
vmstat :命令是最常见的Linux/Unix 监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的 CPU 使用率,MEM 内存使用,VMSwap 虚拟内存交换情况,IO 读写情况。
使用 vmstat 可以看到整个机器的 CPU,内存,IO 的使用情况,而不是单单看到各个进程的 CPU 使用率和内存使用率。 比 top 命令节省资源。
注:当机器运行比较慢时,建议大家使用 vmstat 查看运行状态,不需要使用 top,因 top 使用资源比较多

例:
[root@benet17 ~]# vmstat

输入vmstat命令详情看参数

每一列参数作用:
r 运行状态的进程个数 。展示了正在执行和等待 cpu 资源的任务个数。当这个值超过了 cpu 个数, 就会出现 cpu 瓶颈。
b 不可中断睡眠 正在进行 i/o 等待--阻塞状态的进程个数 进程读取外设上的数据,等待时

free 剩余内存,单位是 KB
buffers #内存从磁盘读出的内容
cached #内存需要写入磁盘的内容

si swapin swap 换入到内存
so swapout 内存换出到 swap 换出的越多,内存越不够用

bi blockin 从硬盘往内存读。 单位是块。 把磁盘中的数据读入内存
bo blockout 从内存拿出到硬盘 (周期性的有值) 写到硬盘
#判断是读多还是写多,是否有 i/o 瓶颈

in 系统的中断次数,cpu 调度的次数多
cs 每秒的上下文切换速度
CPU 上下文切换--程序在运行的时候,CPU 对每个程序切换的过程。
更多内存参以一下表格: vmstat 每个字段含义说明

11.2使用 sar 命令记录系统一段时间的运行状态

安装 sar 命令
[root@benet17 ~]# yum -y install sysstat
sysstat 工具包可以把检查到的信息保存下来,存在/var/log/sa 目录下。 sar 默认显示每10分钟统计一次状态信息(从装 sysstat 包开始)
sar 命令行的常用格式: sar [options] [-A] [-o file] t [n]
在命令行中,n 和 t 两个参数组合起来定义采样间隔和次数,t 为采样间隔,是必须有的参数,n 为采样次数,是可选的,默认值是 1,-o file 表示将命令结果以二进制格式存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar 命令的选项很多,下面只列出常用选项:
下面只列出常用选项:
-A:所有报告的总和。
-v:进程、I 节点、文件和锁表状态。

-n:网络接口的情况。 #常用参数:
-u:CPU 利用率 #常用参数:
-d:硬盘使用报告。
-o 文件名:打印到屏幕并将采样结果以二进制形式存入当前目录下的文件中。
-f 文件名:查看之前保存的二进制文件。

-r:没有使用的内存页面和硬盘块。
-g:串口 I/O 的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。
-d:显示磁盘。
-d 1 100 #必须得指定次数。
-c:每秒创建进程的个数。
-i 1 10 #指定时间间隔。
-P:查看 cpu。
-r:查看内存。
-w:每秒上下文切换次数。
-o /cpu.sar #保存并显示。
-f cpu.sar #读取。

例 1:每 2 秒采样一次,连续采样 5 次,观察 CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件 cpu.sar 中
[root@benet17 ~]# sar -u 2 5 -o cpu.sar #屏幕显示以一下内容,同时内容也会写到当前目录的./cpu.sar 中
[root@benet17 ~]# sar -u 2 5 -o cpu.sar
Linux 3.10.0-693.2.2.el7.x86_64 (benet17.cn) 2018 年 10 月 15 日 x86_64 (4 CPU) 22 时 29 分 59 秒 CPU %user %nice %system %iowait %steal %idle
22 时 30 分 01 秒 all 1.52 0.13 2.40 0.63 0.00 95.33

22 时 30 分 03 秒 all 0.00 0.00 0.50 1.13 0.00 98.37
22 时 30 分 05 秒 all 0.00 0.00 0.25 0.00 0.00 99.75
22 时 30 分 07 秒 all 0.12 0.00 0.12 0.00 0.00 99.75
22 时 30 分 09 秒 all 0.13 0.00 0.25 0.00 0.00 99.62
平均时间: all 0.35 0.03 0.70 0.35 0.00 98.57
在显示内容包括:
%usr:CPU 处在用户模式下的时间百分比。
%sys:CPU 处在系统模式下的时间百分比。
%wio:CPU 等待输入输出完成时间的百分比。
%idle:CPU 空闲时间百分比。
在所有的显示中,我们应主要注意%wio 和%idle,%wio 的值过高,表示硬盘存在 I/O 瓶颈,%idle 值高,表示 CPU 较空闲,如果%idle 值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。%idle 值如果持续低于 10,那么系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

实例 2:查看二进制文件 cpu.sar 中的内容
[root@benet17 ~]# sar -u -f cpu.sar
注:sar 命令即可以实时采样,又可以对以往的采样结果进行查询。

总结:
账号基本安全措施
系统账号清理、密码安全控制、命令历史清理、自动注销用户切换与提权
su、sudo
开关机安全控制
BIOS引导设置、禁止Ctrl +Alt+Del快捷键、GRUB菜单设置密码终端控制
all 0.00 0.00 0.50 1.13 0.00 98.37
22 时 30 分 05 秒 all 0.00 0.00 0.25 0.00 0.00 99.75
22 时 30 分 07 秒 all 0.12 0.00 0.12 0.00 0.00 99.75
22 时 30 分 09 秒 all 0.13 0.00 0.25 0.00 0.00 99.62
平均时间: all 0.35 0.03 0.70 0.35 0.00 98.57
在显示内容包括:
%usr:CPU 处在用户模式下的时间百分比。
%sys:CPU 处在系统模式下的时间百分比。
%wio:CPU 等待输入输出完成时间的百分比。
%idle:CPU 空闲时间百分比。
在所有的显示中,我们应主要注意%wio 和%idle,%wio 的值过高,表示硬盘存在 I/O 瓶颈,%idle 值高,表示 CPU 较空闲,如果%idle 值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。%idle 值如果持续低于 10,那么系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

实例 2:查看二进制文件 cpu.sar 中的内容
[root@benet17 ~]# sar -u -f cpu.sar
注:sar 命令即可以实时采样,又可以对以往的采样结果进行查询。

总结:
账号基本安全措施
系统账号清理、密码安全控制、命令历史清理、自动注销用户切换与提权
su、sudo
开关机安全控制
BIOS引导设置、禁止Ctrl +Alt+Del快捷键、GRUB菜单设置密码终端控制
John the Ripper工具namp命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值