日志

日志的作用: 1.解决系统方面的问题 2.解决网络服务的问题 3.记录过往事件

/var/log/ //日志文件保存位置 cron //记录周期性任务计划 dmesg //开机核心侦测信息 lastlog //系统所有行好最近一次的登陆信息 maillog //邮件往来 messages //系统错误信息 secure //设计输入系统帐号密码的程序 wtmp //正确登陆系统的账户信息 btmp //错误登陆系统的账户信息

/var/log/httpd/* //不同的网络服务会保存在自己的日志目录中 /var/log/samba/* 日志类型 1.ASCII类型

2.data类型 last //查看wtmp日志文件 lastb //查看btmp日志文件

日志需要的服务 rsyslogd //主要负责记录系统运作时的信息和内核信息写入日志,日志的主服务 logrotate //主要负责日志轮询

rhel5版本之前日志的服务syslogd服务,rhel6之后rsyslogd服务

rsyslog 什么服务 什么等级 记录在哪个文件 配置文件:/etc/rsyslog.conf /etc/rsyslog.d/*

/etc/rsyslog.conf

#### RULES #### 选项 动作 (选项和动作以制表符“Tab”分割)

选项:设施和级别(设施和级别以“.”进行分割)(不同的选项以“;”分割) *.info;mail.none;authpriv.none;cron.none /var/log/messages

设施 authpriv //认证系统,询问用户和口令 cron //周期性计划任务 daemon //守护进程程序 kern //内核的信息 mail //邮件系统 lpr //打印机 news //新闻系统 user //本地用户应用程序的信息 uucp //uucp子系统的信息, local0-7 //本地类型信息

man syslog //查看帮助,里面有级别的说明 级别 0-7 0 emerg //基本要死机 1 alert //这个问题相当严重,比临界点更严重 2 crit //临界点,这个错误已经很严重了 3 err //重大错误信息 4 waining //警告 5 notice //注意:非错误的状态报告,但应特别处理;比info级别更需要注意 6 info //通报信息 7 debug //调试错误

none //带有该级别的类型长生的信息无需送出 .xxx:表示大于该级别的信息 .=xxx:表示等于该级别的信息 .!xxx:表示在该等级之外的等级信息

动作 /filename 日志文件,绝对路径指出文件名,将选项的日志信息保存在该文件。此文件必须事先建立 @host 远程主机;@符号后面可以是IP地址,也可以是域名或主机名 username,username 发送给指定的用户,该用户必须处于登陆状态。

  •   所有用户,用户必须处于登陆状态。
    

例: 1.保存在普通的文件或设备文件中 . /var/log/file.log //记录到普通文件 . /dev/pts/0 //记录到设备文件 2.转发给远程主机 . @192.168.0.1 //使用UDP协议转发到192.168.0.1的514(默认)端口 . @@192.168.1.1:10514 //使用TCP协议转发到192.168.1.1的10514(默认)端口 3.发送给用户(必须在线才能收到) . root //发送给用户root . root,student,redhat //发送给指定的多个用户 . * //发送给所有用户 4.忽略,丢弃 local3.* ~ //忽略所有local3类型的所有级别的日志 5.执行脚本 local3.* ^/tmp/shell.sh //“^”后面跟上可执行的脚本或程序的绝对路径

服务 rhel6 service rsyslog restart //重启服务 rhel7 systemctl restart rsyslog //重启服务

注意:如果日志配置文件进行了修改需要重启服务使其生效


logrotate //日志的轮询

/etc/logrotate.conf //轮询主配置文件 /etc/logrotate.d/*

vim /etc/logrotate.conf

日志文件{ 规则 }

参数和选项 daily 每天轮询 weekly 每周轮询 monthly 每月轮询 rotate 保留几个带时间戳的文件 create 创建新文件(可以规定权限,拥有者,所属组) dateext 旧文件以时间为结尾 size 指定大小

logrotate -vf /etc/logrotate.conf

总结 日志的作用 日志的主配置文件 日志的位置 日志的类型 日志的轮询作用 日志轮询的主配置文件


计划任务 一次性的计划任务 周期性的计划任务

一次性的计划任务 atd //一次性计划任务的服务

命令 at 时间 日期 //创建一次性计划任务 at>指令 //执行什么命令 at><EOT> //ctrl+d来提交该计划任务

at -l //查询一次性计划任务 at -d ID //删除某个一次性计划任务 at -c ID //查询某个计划任务的详细信息

生成计划任务后会生成一个文件 保存在/var/spool/at/目录下,删除里面的文件相当于删除计划任务

一次性计划任务的黑名单 vim /etc/at.deny 注意:一行一个用户名

周期性计划任务 vim /etc/crontab //周期性计划任务的配置文件

SHELL=/bin/bash //命令使用bash命令解释器 PATH=/sbin:/bin:/usr/sbin:/usr/bin //如果没有使用绝对路径命令从这几个目录中去搜索 MAILTO=root //如果周期性计划任务出现问题会发送mail给root

连续的时间使用 “-” 间断的时间使用 “,” */5 如果在分钟段位那么代表每隔5分钟

缓存目录/var/spool/cron/ 拥有和创建者同名的文件 root有权利给任何人创建周期性计划任务

crontab -e //编辑周期性计划任务 -l //查看 -u username //使用其他用户操作(root) -r //清除所有的周期性计划任务

crontab -u student -e //为student用户编辑周期性计划任务

/etc/cron.deny //周期性计划任务的黑名单

练习: 每周一到周五早晨9点和下午13点,统计一下当前系统里有多少用户登陆着并将结果追加到/tmp/wc.txt 每隔两小时查看当前进程有几个,结果追加到/tmp/ps.txt


内核 内核的模块化

uname -a //查看当前所有的内核版本

内核模块 /lib/modules/2.6.32-431.el6.x86_64/kernel/ //模块的存放位置 模块文件一般是以“.ko”结尾

/lib/modules/2.6.32-431.el6.x86_64/modules.dep //记录了模块之间的依赖关系

depmod //更新模块依赖关系的命令

查看 lsmod //查看当前所加载的所有模块 modinfo //查看某个模块的详细信息

加载 insmod 模块的位置 //加载一个模块(无法解决依赖关系)

rmmod 模块名称 //卸载一个模块 -f //强制卸载,不管该模块是否正在被使用

modprobe //可以加载模块,自动解决依赖关系 -r //卸载模块,但和yum一样会把相应的依赖关系全部卸载,慎用!!! -f //强制加载 -c //查看

内核参数 管理系统功能的开关

cat /proc/sys/net/ipv4/icmp_echo_ignore_all //该内核参数管理忽略所有的ping包

vim /etc/sysctl.conf //永久生效某个内核参数写在该配置文件中

sysctl -p //让内核参数立即生效

挂载

mount //查看挂载信息挂载 df -h //查看挂载信息 1.标准格式 mount -t 文件系统类型 挂载源 挂载点 -o //带选项的挂载 ro //只读 rw //读写 remount //重新挂载 loop //本地

2.非标准格式 mount 挂载源 挂载点

注意:挂载点最好为空目录 如果挂载点是非空目录,挂载完成后;目录原来的数据会消失(暂时不可用);当卸载时目录的原始数据才会恢复。 卸载时不要在卸载目录中

umount 挂载点 //卸载该挂载点

mount的应用 1.挂载大文件,变相的可以控制目录所使用的空间(磁盘配额) 1)创建大文件 2)格式化大文件 mkfs.ext4 文件名 //格式化某个文件 3)挂载

2.挂载镜像文件

3.挂载远程目录 mount IP地址:/content 挂载点

4.多级目录快速访问 mount --bind 旧的目录 新的目录 vim /etc/fstab //想永久生效挂载在该配置文件中写入信息

6个字段 1.挂载源 2.挂载点 3.文件系统类型 4.选项(如果是空选项使用“defaults”) 5.是否需要备份(0代表否 1代表是) 6.是否需要检测(0代表否 非0代表是并且有优先级,数字越小优先级越高)

mount -a //修改完成后使用此命令立即生效或者重启计算机


开机启动流程 1.硬件启动 MBR:主引导记录 bootloader引导程序:win ntblr ;rhel6 grub ;rhel7 grub2 DTP:分区表 55AA:校验

2.软件启动

runlevel 0 //是让init关闭所有的进程并终止系统(关机) runlevel 1 //用来将系统转到单用户模式,用于对系统的紧急救援,单用户模式只有管理员(root)能进 runlevel 2 //允许使用多用户模式(不完整),不支持文件的共享等功能,一般很少用 runlevel 3 //真正的多用户模式(完整),是多数服务器的默认模式 runlevel 4 //一般不被系统使用,用户可以自己设计及自的系统状态并将其应用(自定义) runlevel 5 //图形化界面,使用X windows终端 runlevel 6 //是让init关闭所有的进程并重启系统(重启)

rhel6 使用单用户模式更改root密码 grub---->"e"进行编辑----->选中kernel这项再按“e”来进行编辑----->在最后输入“ 1”(空格和1) ----“Enter”(回车)-----按“b”来进入单用户模式------输入“passwd”来修改密码-----exit

vim /boot/grub/grub.conf default=0 //默认的grub菜单 timeout=30 //默认时间30后自动进入系统 splashimage=(hd0,0)/grub/splash.xpm.gz //grub菜单的背景图片 hiddenmenu //默认不显示grub菜单 password --md5 $1$UwQm4/$8h/VGdOXDLf3NuvoOAOS40 //在说明信息上方的password,对grub菜单进行加密 title windows 7 //说明信息 password --md5 $1$ogRm4/$5dQmC.gvXAzmvKhiGsgwl/ //在说明信息下方的password,进入系统时需要密码 root (hd0,0) //将boot成为根(/) kernel /vmlinuz-2.6.32-431.el6.x86_64 //加载kernel,驱动,硬盘分区,语言格式编码等 initrd /initramfs-2.6.32-431.el6.x86_64.img //启用虚拟文件系统

grub-md5-crypt //用于生成加密密码的命令

rhel6

chkconfig 服务名 on/off //设定服务是否开机启动 chkconfig --list //查看服务是否开机启动的状态 chkconfig --level 35 sshd off //在启动等级3和5的时候不启动sshd


rhel7 1.stage1和stage2文件名称有所变化 stage1变成/boot/grub2/i386-pc/boot.img stage2变成/boot/grub2/i386-pc/core.img

2.grub2版本的grub.cfg配置文件中的分区命名方式有所改变 (hd0,0)改成'hd0,msdos1'

3.改变了引导菜单外观主配置文件的位置 /etc/default/grub

4.可以通过命令 grub2-mkconfig -o /boot/grub2/grub.cfg 来重新生成配置文件或更新配置文件

  1. init变成systemd

6./etc/inittab 变成的说明文件

启动级别 systemctl get-default //查看默认的启动级别 systemctl set-default 启动级别的名字 //设置启动级别 例:systemctl set-default multi-user.target //设置启动级别为3等级

启动等级相应的配置文件/lib/systemd/system/<target name>.target

vim /usr/lib/systemd/system/multi-user.target //查看3级别的配置文件 AllowIsolate=yes //该级别是否可以被临时切换,修改完成后重启生效

启动服务 该服务是否开机启动,分到了各个服务中 systemctl status sshd //查看sshd服务的状态 sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled) //代表是否开机启动disabled代表关闭enable代表开启 Active: active (running) since Wed 2016-12-07 21:24:35 EST; 5h 3min ago //当前服务的运行状态

设置开机启动的服务 systemctl enable 服务名 //设置开机启动 systemctl disabled 服务名 //设置开机不启动

systemctl isolate rescue.target //临时切换到救援模式,rescue.target救援模式的名称

rhel7修改密码 第一种方式 1.找到linux16开始的那一行,从后面开始删除,删除到第一个root,在最后追加rd.break,然后按Ctrl-x重启即可进入单人模式 2.mount -o remount,rw /sysroot 3.chroot /sysroot 4.passwd 5.touch /.autorelabel 6.exit 7.exit

第二种方式 1.找到linux16开始的那一行,在这一行中找到ro 并将ro更改为 “rw init=/sysroot/bin/sh",然后按Ctrl-x重启即可进入单人模式 2.chroot /sysroot 3.passwd 4.touch /.autorelabel 5.Ctrl+Alt+del

rhel7给grub2菜单进行加密

vim /etc/grub.d/40_custom set superusers='root' password root 123 配置完成后 grub2-mkconfig -o /boot/grub2/grub.cfg //更新一下主配置文件 以上就是明文加密,用户名可以是任意的(可以是系统没有的用户)

密文加密 grub2-mkpasswd-pbkdf2 //生成加密密码,注意取加密密码是取is后面的 vim /etc/grub.d/40_custom set superusers='root' password_pbkdf2 root grub.pbkdf2.sha512.10000.0862D41B5F0BBF76090C2BDB710 配置完成后 grub2-mkconfig -o /boot/grub2/grub.cfg //更新一下主配置文件


selinux

selinux属于一种权限

/etc/selinux/config

getenforce //查看selinux的状态

setenforce 1或0 //设置selinux的状态

selinux限制两个方面 1.布尔值 2.安全上下文

1.布尔值 getsebool -a //查看当前所有限制方面的布尔值 setsebool -P 布尔值名 on或off //调整布尔值 例:setsebool -P samba_share_nfs on //调整布尔值

2.安全上下文 主体(进程)和目标的安全上下文必须一致才能够顺利访问

查看安全上下文 ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

system_u:object_r:admin_home_t //安全上下文 身份标示 : 角色: 类型

ps -efZ | grep httpd //查看主题安全上下文 unconfined_u:system_r:httpd_t:s0 apache 1951 1944 0 10:35 ? 00:00:00 /usr/sbin/httpd

修改安全上下文 1.chcon -t 安全上下文的类型 文件 例:chcon -t httpd_t /var/www/html/index.html

2.restorecon 文件或目录 //同步安全上下文 -R //递归修改 -v //显示过程

selinux日志分析工具 yum install -y setroubleshoot-server //如果没有下面的命令,安全此软件包

sealert -a /var/log/audit/audit.log //使用selinux日志分析工具来分析日志,会把解决方案分析出来