1、系统维护11榆林职业技术学院 杨浩与应用实践1学习目标1.了解Linux系统日志、日志文件的日志记录格式和日志配置文件的文件结构。3.了解日志轮替的概念,掌握查看和设置日志轮替的常用方法。4.了解系统运行级别的概念,掌握设置和查看系统运行级别的方法。5.了解系统引导程序的工作过程,掌握对grub的加密方法、单用户模式下用户密码的破解方法、光盘修复模式下grup密码的破解方法及系统文件的修复方法。6.掌握文件备份与恢复的基本方法。本章学习目标211.1 日志管理311.1.1 日志管理概述1Linux系统日志简介 系统日志记录了用户对系统的操作痕迹和系统运行过程中的错误信息等内容,当系统被攻击或
2、由于误操作等原因而受到损坏时,日志可以帮助管理员查找故障原因。从CentOS6.x起,rsyslogd就取代了原来的syslogd作为日志服务,但rsyslogd可以兼容syslogd。rsyslogd功能更强大、网络传输更安全,同时在配置文件中支持逻辑表达式。日志服务在默认情况下开机自启动,用下面的命令可以查看当前活动进程中是否有rsyslogd服务,进而判定日志服务是否启动:rootlocalhost#ps aux|grep rsyslogd 显示结果为:root 892 0.0 0.2 249084 1268?S1 Apr19 0:00/sbin/rsyslogd I/var/run/s
3、yslogd.pid c 5 说明rsyslogd已经启动。下列命令查看服务是否自启动rootlocalhost#chkconfig-list|grep rsyslog 显示结果为:rsyslog0:off 1:off 2:on 3:on 4:on 5:on 6:off 说明rsyslogd服务在周二、周三、周四、周五开机自启动的,而在其它时间关闭了开机自启动功能的。11.1 日志管理411.1.1 日志管理概述2常见日志文件及功能 Linux系统中日志文件很多,大部分日志文件都保存在/var/log目录下,系统默认的日志文件及其功能如下表所述:日志文件名称功 能/var/log/cron记录
4、与系统定时任务相关的日志/var/log/cups记录有关打印任务的日志/var/log/dmesg记录系统开机自检的相关信息,也可以使用dmesg命令直接查看内核自检信息/var/log/btmp记录有关错误登录的日志。该文件为二进制文件,不能直接通过vi查看,要使用lastb命令查看,举例如下:rootlocalhost#lastb显示如下信息:root tty1 Thu Apr 19 01:34:25 2018btmp begis Thu Apr 19 01:34:25 2018表明有人在2018年4月19日星期四1:34:25秒利用root账号在本地终端1登录错误。/var/log/l
5、astlog记录系统中所有用户最后一次登录系统的时间。该文件也是二进制文件,要使用lastlog命令查看日志文件名称功 能/var/log/mailog记录邮件相关的日志/var/log/message记录系统重要信息的日志,这个文件中记录了Linux系统的绝大部分重要信息,是系统出现故障时,首先要检查的文件/var/log/secure记录系统身份验证和授权方面的相关信息,比如系统登录、su切换用户、sudo授权,添加用户、修改用户密码等都会记录到这个文件。/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,要使用l
6、ast命令查看。/var/run/utmp该文件随用户的登录和注销而不断变化,只记录当前登录用户的信息。该文件也是二进制文件,用w、who、users等命令查看。11.1 日志管理511.1.1 日志管理概述2常见日志文件及功能 除了系统默认的日志之外,采用RPM方式安装的系统服务也会默认把日志记录在/var/log目录中,利用源码包安装的服务日志记录在源码包指定目录中。不过这些日志不是由rsyslogd日志服务来记录与管理,而是由程序本身的日志管理文档来记录。例如,下表列出了一些主要程序的日志文件。日志文件名称功 能/var/log/httpdRPM包安装的apache服务的默认日志目录/v
7、ar/log/mailRPM包安装的邮件服务的额外日志目录/var/log/sambaRPM包安装的samba服务的日志目录/var/log/sssd守护进行安全服务目录11.1 日志管理611.1.2 rsyslogd1rsyslogd日志文件格式 rsyslogd服务器的日志文件中,每一条记录包含一条日志信息,每条记录由四个字段组成,字段之间用“:”分割,这四个字段的含义如下所述:第一个字段:事件发生的时间;第二个字段:发生事件的服务器的主机名;第三个字段:发生事件的服务名或程序;第四个字段:事件的具体信息。例11.1 查看系统身份验证和授权方面的相关日志信息 分析:我们知道,系统身份验证
8、和授权方面的相关日志信息是记录在/var/log/secure日志文件的,所以执行以下命令即可:rootlocalhost#cat/var/log/secure 执行结果:Sep 15 15:46:51 localhost su:pam_unix(su:session):session opened for user yh by root(uid=0)Sep 15 15:47:15 localhost su:pam_unix(su:session):session opened for user root by root(uid=500)11.1 日志管理711.1.2 rsyslogd2日志
9、配置文件 日志配置文件/etc/rsyslog.conf用于配置日志的记录方式。日志配置文件中每一条记录就是一个日志信息,每条记录按“服务名称 连接符号 日志等级 日志记录位置”格式进行记录 例11.2 可用如下命令查看邮件服务相关的日志记录位置?rootlocalhost#cat/etc/rsyslog.conf|grep mail 执行结果:mail.*-/var/log/maillog 其中的“mail”表示邮件服务产生的日志信息,“.”是连接符,表示只要比指定日志等级高的日志都记录,“*”表示任何等级的日志,“-/var/log/mailog”指定了邮件服务产生的日志的记录位置。下面依
10、次对服务名称、连接符、日志等级、日志记录位置进行详细说明:常见的服务名称及功能如右表所示:服务名称功 能auth安全和认证相关消息(不推荐用authpriv替代)authpriv安全和认证相关消息(私有)cron系统定时任务cron和at产生的日志daemon和各个守护进程相关的日志ftpftp守护进程产生的日志kern内核产生的日志(非用户进程产生)loca10-local7为本地使用预留服务lpr打印产生的日志mail邮件发送产生的信息news与新闻服务相关的日志syslog由syslog服务产生的日志信息(虽然服务名已经改为rsyhslogd,但是很多配置都还是沿用syslogd的)us
11、er用户等级类别的日志信息uucpUucp子系统的日志信息。(uucp是早期linux系统进行数据传递的协议,后来也常用在新闻组服务中)*表示任何服务信息11.1 日志管理811.1.2 rsyslogd2日志配置文件 对日志配置文件中连接符号的说明如下表所示:连接符号说明.日志等级表示只要比指定日志等级高的(包含该日志等级)日志都记录。例如:“cron.info”代表cron服务产生的日志,只要日志等级大于等于info,就记录.=日志等级表示只记录与指定日志等级相同的日志,其它等级的日志不记录。.!日志等级表示,除指定等级外的其它所有日志全部记录。对日志配置文件中日志等级的说明如右表所示:日
12、志等级说 明*代表任何日志等级,例如:“authpriv.*”表示与认证相关的服务产生的所有等级的日志都记录下来。debug一般的调试信息。info基本的通知信息。notice普通信息,也包含一些重要信息。warning警告信息,但还是不影响系统或服务的运行。err错误信息,这种等级的信息会影响到系统或服务的运行。crit临界状态信息,比err等级严重。alert警告状态信息,比crit严重,须立即采取措施。emerg疼痛等级,系统已经无法使用none表示最高日志等级,如“.none”就表示不记录日志信息。11.1 日志管理911.1.2 rsyslogd2日志配置文件对日志配置文件中日志记录
13、位置的说明如下表所示:例11.3 可用如下命令查看新闻服务产生的日志的记录情况。rootlocalhost#cat/etc/rsyslog.conf|grep news 执行结果:#Save news errors of level crit and higher in a special file.uucp,news.crit /var/log/spooler日志位置说明本机目录指定日志记录位置为本机日志文件的绝对路径,如:/var/log/secure设备文件将日志记录在系统设备文件,如:/dev/lp0用户名将日志发送给指定的用户,如root用户,指定用户必须在线,否则收不到日志信息远程
14、主机将日志发送给远程主机,相当于部署了一台日志服务器,如:192.168.250.102:512表示不记录日志,将所有的日志信息丢弃*表示把日志发送给任何人11.1 日志管理1011.1.3 日志轮替 如果把日志记录在固定的一个日志文件中,其存储量会随着时间的推移,不断增加,既浪费空间,又不利于查看、利用。Linux有两种办法解决上述问题。第一种办法是,每天都为特定服务的日志创建一个新的日志文件,将每天的日志记录在不同的日志文件中,同时删除过期的日志,即日志切割;第二种办法是,把特定服务的日志记录在同一日志文件中,按一定的周期淘汰(删除)过时日志,这就是日志轮替。1日志文件的命名规则 为了避免
15、新的日志文件覆盖相应的旧日志文件或便于管理,日志文件的命名通常遵循如下规则:日志轮替也有相应的配置文件/etc/logrotate.conf,如果配置文件中配置了dateext参数,那么日志会用日期来作为日志文件名的后缀,这样每天的日志都会有一个独立的日志文件名,如secure服务在2018年4月26日的日志文件名可命名为“secure-20180426”。如果配置文件中没有dateext参数,那么就把序数词作为日志文件的后缀,比如,如果secure服务昨天的日志文件名为secure.1,则明天的日志文件名就是secure.2,后天的日志文件名就是secure.3,以此类推。11.1 日志管理
16、1111.1.3 日志轮替2logrotate.conf日志轮替配置文件logrotate.conf日志轮替配置文件中的参数说明如下表所示:RPM包、yum安装的服务,系统都自动在日志轮替配置文件中进行了相应配置,源码包安装的服务需要手工配置日志轮替配置文件,使其按一定的周期自动进行日志轮替。例11.4 Apache服务器的访问量是非常大的,其日志存储量的增长速度很快,请为Apache服务器设置日志轮替。第一步:进入日志轮替配置文件:rootlocalhost#vi/etc/logrotate.conf 第二步:进行日志轮替设置:要求每天备份,备份时创建新的日志文件,保留30个日志目录(即备份
17、文件达到30个后开始轮替)。/usr/local/apache2/logs/access_log dailycreaterotate 30 注意:上述格式不可变,是规范的logrotate.conf格式,其中“/usr/local/apache2/logs/access_log”是Apache服务的日志文件的绝对路径。参数说明daily日志的轮替周期为每天weekly日志的轮替周期为每周monthly日志的轮替周期为每月rotate Number保留日志文件的个数,若Number的值为“0”表示没有备份compress日志轮替时,是否压缩旧的日志create mode owner group建
18、立新日志,同时指定新日志的权限与所有者和所属组。如:creat 0600 root utmpmail address当日志轮替时,将输出的内容通过邮件发送到指定的邮件地址。如:mail missingok如果日志不存在,则忽略该日志的警告信息notifempty如果日志为空文件,则不进行日志轮替minsize Number日志替换的最小值,如果未达到最小值,即使轮替时间到达也不轮替。size Number只有当日志大于指定大小时才进行日志轮替,而不是按照时间轮替。如:size 1Mdateext使用日期作为日志轮替文件名的后缀。11.1 日志管理1211.1.3 日志轮替3logrotate命
19、令 logrotate命令用于查看日志轮替情况或进行强制日志轮替。命令格式:rootlocalhost#logrotate 选项 日志轮替配置文件 选项说明:-v 显示日志轮替过程-f 强制进行日志轮替,不管日志轮替的条件是否符合设置的条件。例11.5 可用如下命令查看日志轮替情况:rootlocalhost log#logrotate-v/etc/logrotate.conf 例11.6 可用如下命令强制进行日志轮替:rootlocalhost log#logrotate-f/etc/logrotate.conf 默认情况下,Linux把系统运行级别分为6个等级,各运行等级的说明如下表所示:
20、11.2 启动管理11.2.1 系统运行级别运行级别说明0关机1单用户模式,类似于windows系统的安全模式,主要用于系统修复2不完全的命令行模式,不含NFS服务3完全的命令行模式,即标准的字符界面4系统保留5图形界面6系统重启动11.2 启动管理1311.2.1 系统运行级别2查看当前运行级别 runlevel命令用于查看系统当前运行级别。命令格式:rootlocalhost#runlevel 运行上述命令后系统显示:N 3 结果分析:说明系统当前运行级别是3,在这之前的运行级别是N(N表示“none”,表示系统开机就直接进入了3级别)。1改变系统运行级别 init命令用于将当前运行级别切
21、换到指定运行级别。命令格式:rootlocalhost#init 运行级别 如:下面的命令的功能依次为关闭系统、切换为图形界面、重启系统:rootlocalhost#init 0#关机系统(不推荐使用该方法关闭系统,因为这样关机时不保存正在使用的数据)rootlocalhost#init 5#切换到图形界面rootlocalhost#init 6#重启系统11.2 启动管理1411.2.1 系统运行级别11.2.2 启动引导程序grub1grub设备文件名 grub分区的表示方法与Linux中设备文件名的命名规则不同,如设备文件名/dev/sda1代表第一块SCSI硬盘的第一个主分区,设备文件
22、名/dev/sdb5代表第二块SCSI硬盘的第一个逻辑分区,等等。在grub中,把所有类型的硬盘都用“hd”来表示。grub设备文件名统一使用如下表示格式:(hdn,m)表示第n+1个硬盘的第m+1个分区,如:(hd0,0)表示第一块硬盘的第一个分区,(hd1,2)表示第二个硬盘的第三个分区。3改变系统默认运行级别 /etc/inittab配置文件定义了系统开机时的默认运行级别,可以通过编辑该文件,设置系统默认运行级别。rootlocalhost#vi/etc/inittab 运行上述命令后,会进入/etc/inttab文件,文件的最后一行是:id:3:initdefault:其中的“3”表示
23、系统的默认运行级别为3。要想让系统开机后直接进入图形界面,把“3”改为“5”即可,前提是系统必须安装了图形界面。11.2 启动管理1511.2.2 启动引导程序grub3grub加密 使用如下命令可为grub命令加密:rootlocalhost#grub-md5-crypt 下面是grub加密过程:第一步:执行上述命令后,根据提示信息输入密码即可生成密文;第二步:记录生成的密文信息;第三步:进入配置文件grub.conf rootlocalhost#vi/boot/grub/grub.conf 第四步:紧随“timeout”参数行添加新行,输入如下密文信息:“password md5$1$Jd
24、W2q/$hc182rvcv9mTLyezLt5bu”。其中“$1$JdW2q/$hc182rvcv9mTLyezLt5bu”是密码的密文。这样就完成了grub加密操作。加密后,在开机切入到grub的编辑界面时,就不会提示按“e”键进入编辑grub相关信息,而是提示“Press enter to boot the selected OS or p to enter a password to unlock the next set of features”,要求按“p”键,输入正确的密码,才能进行编辑。2 grub配置文件 下表详细说明了grub配置文件包括的主要信息:使用如下命令可以修改gr
25、ub配置文件参数:rootlocalhost#vi/boot/grub/grub.conf参数说明defaultGrub配置文件中列出了系统已安装的所有操作系统,默认值为“0”,表示默认启动第一文件系统,如果该值为“1”,则启动第二个操作系统,以此类推。timeout默认值为“5”,默认的等待时间,若时间到还未做出选择,则执行默认操作,启动default参数指定的文件系统splashimage默认值是“(hd0,0)/grub/splsh.xpm.gz”,指定grub启动时的背景图像文件的保存位置hiddenmenu隐藏菜单11.2 启动管理1611.2.3 系统修复模式2单用户模式破解用户密
26、码 单用户模式常见的错误修复场合有:u 忘记root密码;u 修改了系统的默认运行级别,致使系统反复重启等;u 内核本来不支持分辨率调整,而在/boot/grub/grub.conf文件中设置了vga的值,而使系统不能启动。等等。下面以恢复root密码为例,说明单用户模式的系统修复过程。第一步:重启系统rootlocalhost#reboot 第二步:进入grub的编辑界面时。输入grub密码获得grub编辑权限,按“e”键,进入grub编辑状态。第三步:将光标移到第二项(内核启动选项)继续按“e”键,进入对该项目的编辑界面,显示内容如图11-1所示,1Linux安全性 通常所说的Linux的
27、安全性很好,是指Linux网络安全性很好。但就Linux主机而言,任何密码都可以破解。Linux的安全链如下:BIOS加密保护grub的安全性,grub加密保护Linux用户的安全性。那么只要破解了BIOS的密码,就可以逐层破解grub密码和用户密码。所以,按如下路线就可以破解Linux的系统密码:BIOS密码可以通过拆除主板电池,使BIOS失电来破解,grub密码可以通过光盘修复模式来破解,用户密码可以通过单用户模式来破解。11.2 启动管理1711.2.3 系统修复模式 第四步:按回车键,回到grub编辑界面,按“b”键启动单用户模式。可以看到不需要输入任何密码就可以进入系统提示符下。第五
28、步:修改用户密码。如:rootlocalhost/#passwd root 按提示修改密码即可。任何用户的密码都可以修改。但是,如果grup已经加密且忘记了密码,就没机会启动单用户模式。那么如何破解grup密码呢?第三步:将光标移到第二项(内核启动选项)继续按“e”键,进入对该项目的编辑界面,显示内容如图11-1所示:在末尾键入“1”,“1”表示单用户模式,如图11-2所示:图 11-1 grub编辑界面编辑内核启动项图 11-2 按单用户模式编辑11.2 启动管理1811.2.3 系统修复模式 第五步:进入/boot/grub/grub.conf配置文件,删除grub密码:bash-4.1#
29、vi/boot/grub/grub.conf 删除密码,保存退出,然后硬盘重启即可。3利用光盘修复模式破解grup密码、恢复系统文件 首先,利用光盘修复模式破解grup密码:第一步:“放入光驱”,重启系统进入BIOS,设置启动顺序为光盘启动。通过光盘启动后,挂载硬盘。第二步:在“Welcome to CentOS 6.5”欢迎界面选择第三项(“rescue installed system”)安全模式启动。第三步:按提示操作。注意:到“Setup Networking”时选择“no”,直到出现如图11-3所示界面时,选择“Shell Start shell”,进入“bash-4.1#”,这表示
30、进入系统光盘,其它的所有存储设备需要挂载才能使用。第四步:改变主目录,进入光盘修复模式:bash-4.1#chroot/mnt/sysimage图 11-3 选择进入bash-4.1#提示符界面11.2 启动管理1911.2.3 系统修复模式 第四步:挂载光盘bash-4.1#mount/dev/sr0 /mnt/cdrom 第五步:提取inittab系统文件到当前目录:bash-4.1#cd/rootbash-4.1#rpm2cpio /mnt/cdrom/Packages/initscripts-9.03.40-2.e16.centos.x86_64|cpio idv./etc/initt
31、ab 第六步:把当前目录下的/etc/inittab文件拷贝到相应目录下,完成修复工作:bash-4.1#cp./etc/inittab/etc/inittab 其次,利用光盘修复模式找回系统重要文件。/etc/inittab是系统重要的启动配置文件,如果该文件丢失,系统就无法启动。现在通过光盘修复模式,来找回该文件。第一步:类似破解grub密码操作步骤,进入光盘系统(bash-4.1#)并切换到光盘修复模式:bash-4.1#chroot/mnt/sysimage 第二步:获取/etc/inittab系统文件的RPM包全名:bash-4.1#rpm-qf/etc/inittab#这里只是演示
32、,实际需要通过其它途径获取 第三步:创建光盘挂载点:bash-4.1#mkdir/mnt/cdrom11.3 备份与恢复2011.3.1 备份3备份命令dump 如果是完全备份,我们完全可以写一个备份(如tar、cp命令等)脚本来实现,并交给系统定期执行,但是对于增量备份、差异备份是比较难于用脚本来实现的,我们要用专用的备份命令dump。命令格式:rootlocalhost#dump选项 备份之后的文件名 原文件名或目录名 选项说明:-level 指定0-9十个备份级别。表示0-9十个数字,如“-0”表示完全备份,“-1”表示第一次增量备份,“-2”表示第二次增量备份,等等,如此类推。-f 指
33、定备份之后的文件名。-u 备份成功后,把备份时间记录在/etc/dumpdates文件中。-v 显示备份过程信息。-j 调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式文件。-W 查看被dump命令备份的所有分区的备份等级及备份时间。1系统需要备份的数据 /root、/home、/var/spool/mail、/etc等目录中的数据是需要备份的主要数据,当然其它重要的个人数据也是需要备份的。另外,apache的配置文件、网页主目录、日志文件,以及相关的数据库也需要定期备份,对于更重要的数据要进行异地备份。2备份策略u 完全备份:把所有需要备份的数据全部备份下来。这种策略耗时、
34、耗资源。u 增量备份:就是把至上次备份数据以来,新增的数据或被修改过的数据进行备份,即每次备份的内容是基于上次备份的增量进行备份。增量备份节省时间和资源,但是恢复数据时比较麻烦,需要把每个增量备份恢复一次。u 差异备份:每次都备份基于完全备份的增量。是一种折中的备份策略。11.3 备份与恢复2111.3.2 恢复命令 当原文件受到破坏或由于其它原因需要恢复数据时,可以通过restore命令将数据从备份文件中进行恢复。命令格式:rootlocalhost#restore 模式选项选项 模式选项说明:restore命令常用的模式选项有以下四种,模式之间不能混用,一次最多只能用其中一种:-C 比较备
35、份数据和实际数据的变化。-i 进入交互模式,手工选择需要恢复的文件。-t 查看模式,用于查看备份文件中有哪些数据。-r 还原模式,用于数据还原。选项说明:-f 指定备份文件的文件名 例11.9 比较备份数据与原数据,验证原数据是否发生了变化。以/home/dumptext.txt文件为例:第一步,将/home/dumptext.txt文件备份为/home/dumptext.bak.bz2:rootlocalhost#dump-0uj f/home/dumptext.bak.bz2/home/dumptext.txt 第二步,修改/home/dumptext.txt文件名为/home/dumpt
36、ext-next.txt(故意设置变化):rootlocalhost#mv/home/dumptext.txt/home/dumptext-next.txt 第三步,然后比较备份文件与原实际文件。rootlocalhost#restore C f/home.dumptext.bak.bz2 执行结果:Some files were modified!1 compare errors 说明原文件发生了变化,这时就需要考虑是否恢复。11.3 备份与恢复2211.3.2 恢复命令 例11.10 可用如下命令查看备份文件包/home.dumptext.bak.bz2中的信息:rootlocalhost
37、#restore t f/home.dumptext.bak.bz2 例11.11 数据恢复。第一步,建立一个目录/home/dumptext 将备份文件压缩包的内容解压到此目录(方便操作)。rootlocalhost#mkdir/home/dumptextrootlocalhost#cd/home/dumptext 第二步,恢复完整备份数据,恢复的同时自动解压缩rootlocalhost dumptext#restore r f/home/dumptext.bak.bz2 第三步,如果有增量备份,还需要恢复增量备份数据,有几个增量备份,就需要恢复几次。如:rootlocalhost dumptext#restore r f/home/dumptext.bak1.bz2 注意:如果是对文件的恢复,则只需恢复一次,因为文件不支持增量备份。23