zoukankan      html  css  js  c++  java
  • Linux_21 日志系统、ssh服务、系统安装及系统故障排除

    日志系统

    Linux上的日志系统
    	syslog:红帽5使用的日志系统
    	syslog-ng:升级版,配置更加复杂,红帽6以后使用的
    	
    日志系统:syslog()
    	A:
    	B:
    	C:
    syslog服务:
    	syslogd:系统,非内核产生的信息
    	klogd:内核,专门负责记录内核产生的日志信息
    
    信息详细程序:日志级别
    子系统:facility,设施
    动作:
    
    物理终端:启动系统,屏幕上打印的信息是在物理终端上显示的
    虚拟终端:再启动后,给login,让输入账号密码,这变成了虚拟终端
    伪终端:ssh远程登录叫伪终端
    kernel-->物理终端(/dev/console)-->/var/log/dmesg #系统启动之后,在物理终端打印的信息显示的很快,可以在启动之后的/var/log/dmesg中查看,cat /var/log/dmesg  或者通过dmesg命令查看
    
    dmesg | less
    cat /var/log/dmesg
    
    日志需要滚动:当一个文件记录日志信息占用空间过大,查看非常消耗内存的,因此需要切割,当一个日志记录一个周期或达到一定大小以后,将日志命名 messages.1 从新启一个messages
    messages
    /sbin/init
    	/var/log/messages:系统标准错误日志信息;非内核产生引导信息;各子系统产生的信息;
    	/var/log/maillog:邮件系统产生的日志信息;
    	/var/log/secure  # 用户登录相关的详细信息(尝试登录次数、),这个文件权限为600,只有管理员能读写;
    	
    	不接受syslog管理的日志可以放到 /var/log下
    	
    cat /etc/cron.daily/logrotate
    	#!/bin/sh
        /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
        EXITVALUE=$?
        if [ $EXITVALUE != 0 ]; then
            /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
        fi
        exit 0
        
    cat /etc/logrotate.conf 
    ls /etc/logrotate.d
    	bootlog  firewalld  httpd  subscription-manager  syslog  up2date  wpa_supplicant  yum
    
    syslog:
    	syslogd
    	klogd
    	配置文件:/etc/syslog.conf
    配置文件定义格式为 facility.priority    action  
    facility,可以理解为日志的来源或设备目前常用的facility有以下几种:
      	auth		# 认证相关的
      	authpriv	# 权限,授权相关的
    	cron		# 任务计划相关的
    	daemon		# 守护进程相关的
    	kern		# 内核相关的
    	lps			# 打印相关的
    	mail		# 邮件相关的
    	mark		# 标记相关的
    	news		# 新闻相关的
    	security	# 安全相关的,与auth类似
    	syslog		# syslog自己的
    	user		# 用户相关的
    	uucp		# unix to unix cp 相关的
    	loca10到local17	# 用户自定义使用
    	*				# * 表示所有的facility
    
    priority(log level)日志的级别,一般有以下几种级别(从低到高)
    	debug	# 程序或系统的调试信息
    	info	# 一般信息
    	notice	# 不影响正常功能,需要注意的消息
    	warning/warn # 可能影响系统功能,需要提醒用户的重要事件
    	err/error	# 错误信息
    	crit	# 比较严重的
    	alert	# 必须马上处理的
    	emerg/panic	# 会导致系统不可用的
    	*			# 表示所有的日志级别
    	none		# 根*相反,表示啥也没有
    
    action(动作)日志记录的位置
    	系统上的绝对路径	# 普通文件 如:/var/log/xxx
    	|				  管道  通过管道送给其他的命令处理
    	终端				# 终端  如:/dev/console
    	@HOST			  # 远程主机 如:@10.0.0.1
    	用户				# 系统用户 如:root
    	*				  # 登录到胸痛上的所有用户,一般emerg级别的日志是这样定义的
    
    定义格式例子:
    
    mail.info	/bar/log/mail.log	# 表示mail相关的,级别为info及info以上级别的信息记录到/var/log/mail.log文件中
    auth.=info	@10.0.0.1	# 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去,前提是10.0.0.1要能接收其他主机发来的日志信息
    user.!=error			# 表示记录user相关的,不包括error级别的信息
    user.!error				# 与user.error相反
    *.info					# 表示记录所有的日志信息的info级别
    mail.*					# 表示记录mail相关的所有级别的信息
    *.*						# 你懂的
    cron.info;mail.info		  # 多个日志来源可以用";"隔开
    cron,mail.info			  # 与cron.info;mail.info 是一个意思
    mail.*;mail.!=info		  # 表示记录mail相关的所有级别的信息,但是不包括info级别的
    

    日志配置文件操作参考:https://blog.csdn.net/qq_34889607/article/details/78649115

    红帽7的syslog服务是rsyslog:
    	chkconfig --list rsyslog
    	systemctl status rsyslog
    	
    	cat /etc/rsyslog.conf  # rsyslog configuration file
    	如果想更换日志格式,可以编辑rsyslog.conf,编辑之后,systemctl restart rsyslog,但是如果rsyslog这时正在往磁盘上发送信息,重启会导致日志信息丢失;可以systemctl reload rsyslog,让一个服务不用重启,就可以读取该服务的配置文件。发送的是1# 信号(kill -l)
    	启动脚本:红帽5
    		/etc/rc.d/init.d/syslog
    			/etc/sysconfig/rsyslog  #文件内部可以配置SYSLOGD_OPTIONS选项,加-r 重服务,就可以作为日志服务器,接收其他主机发来的信息,并且记录到本主机。
    			如何指定发送到哪台主机:
    				修改/etc/rsyslog.conf
    					比如:
    					mail.*			@172.16.100.1
    
    

    ssh服务

    telnet:远程登录协议,23/TCP
    	C/S
    	S:telnet服务器
    	C:telnet客户端
    
    ssh:Secure Shell,应用层协议,22/tcp
    	通信过程及认证过程是加密的,主机认证
    	用户认证过程加密
    	数据传输过程加密
    
    ssh v1,v2
    	man-in-middle # 安全性低,已经被穿透
    sshv2
    
    认证过程:
    	基于口令认证
    	基于密钥认证
    
    协议:规范
    实现:服务器端、客户端
    
    Linux:openSSH
    
    	C/S
    		服务器端:sshd,配置文件/etc/ssh/sshd_config
    		客户端:ssh,配置文件/etc/ssh/ssh_config
    			ssh-keygen:密钥生成器,为某个用户生成一个密钥对
    			ssh-copy-id:将公钥传输至远程南横服务器,并能保存至用户家目录的某个文件中,
    			scp:跨主机安全复制工具
    			
    			
    在使用ssh登录一台主机的时候,如果是第一次登录,会提示(yes/no)是否接收对方主机的密钥认证,这个密钥存放在本地服务器~/.ssh/known_hosts文件中。在对方服务器的主机上保存在/etc/ssh/ssh_host_ecdsa_key.pub 文件中。
    
    ssh:
    	# 登录远程主机的两种方式
    	ssh USERNAME@HOST
    	ssh -l USERNAME HOST
    	# 在不登陆远程主机的情况下,并在远程主机上执行命令,并将命令的执行结果返回到本地;
    	ssh USERNAME@HOST 'COMMAND1;COMMAND2;....'
    	
    scp:
    	scp SRC DEST
    		-r # 递归拷贝目录文件
    		-a
    	scp USERNAME@HOST:/path/to/somefile /path/to/local # 将远程主机上的文件拷贝到本地
    	scp /path/to/local USERNAME@HOST:/path/to/somefile # 将本地主机上的文件拷贝到远程主机的某个目录中
    
    ssh-keygen
    	-t rsa # -t指定生成密钥
    		~/.ssh/id_rsa
    		~/.ssh/id_rsa.pub
    		
    	-f /path/to/KEY_FILE
    	-P '' :指定加密私钥的密码串
    	加上 -f -P 选项,在生成密钥对时就不用连敲两次回车了
    	
    公钥追加保存到远程主机某用户的家目录下的.ssh/authorized_keys文件或.ssh/authorized_keys2文件中。
    ssh-copy-id
    	-i ~/.ssh/id_rsa.pub
    	
    	ssh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@HOST # 此命令能自动将本地公钥以追加的方式保存至远程主机的.ssh/authorized_keys文件中,如果.ssh/authorized_keys不存在,则自动帮我们创建
    

    给小系统添加ssh服务

    dropbear:嵌入式系统专用的ssh服务器端和客户端工具
    服务器端:dropbear
    	dropbearkey # 密钥生成工具
    客户端:dbclient
    
    dropbear默认使用nsswitch实现名称解析
    	/etc/nsswitch.conf
    	/lib/libnss_files*
    	/usr/lib/libnss3.so
    	/usr/lib/libnss_files*
    	
    	没有nsswitch无法实现名称解析,无法将用户的账号转换成id,用户无法登录。
    
    dropbear会在用户登录检查器默认shell是否是当前系统的安全shell
    	/etc/shells
    当用户登录的时候默认会给用户打开一个伪终端,
    	tty
    		/dev/pts/0
    
    cat /etc/fstab
    	devpts		/dev/pts		devpts	gid=5,mode=620		0 0
    
    #下载dropbear
    lftp 172.16.0.1
    cd /pub/Source/Busybox
    get dropbear.tar.bz2
    bye
    
    tar xf dropbear.tar.bz2
    
    cd dropbear
    # 编译dropbear
    ./configure
    make
    make install
    # 编译完成后,生成dropbear/dropbearconvert/dropbearkey这三个文件,将这三个文件拷贝到小系统对应目录下
    ./bincp.sh
    	dropbear
    	dropbearkey
    	dbclient
    sync
    
    cd /mnt/sysroot
    # 给登录用户添加安全的shell
    vim etc/shells
    	/bin/sh
    	/bin/bash
    	/bin/ash
    	/bin/hush
    # 添加伪文件系统
    vim /etc/fstab	
    	devpts		/dev/pts		devpts	gid=5,mode=620		0 0
    
    mkdir dev/pts
    sync
    
    主机密钥默认位置:
    	/etc/dropbear/
    		RSA:dropbear_rsa_host_key
    			长度可变,只要是8的整数倍,默认为1024
    		DSS:dropbear_dss_host_key
    			长度固定,默认为1024
    mkdir etc/dropbear/
    
    dropbearkey
    	-t rsa|dsa
    	-f 
    dropbearkey -t rsa -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_key -s 2048
    
    dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key
    
    ls etc/dropbear/
    	dropbear_rsa_host_key dropbear_dss_host_key
    
    ls usr/
    	bin sbin local
    mkdir usr/lib
    pwd
    	/mnt/sysroot
    cd
    cp -d /lib/libnss_files* /mnt/sysroot/lib/
    cd -d /usr/lib/libnss3.so /usr/lib/libnss_files.so /mnt/sysroot/usr/lib/
    cp /etc/nsswitch.conf /mnt/sysroot/etc/
    vim etc/nsswitch.conf
        passwd:	files
        shadow:	files
        group:	files
        hosts:	files dns
    
    sync
    
    启动小系统并登录
    ifconfig
    	ifconfig is not found
    export PATH=$PATH:/usr/bin:/sbin:/usr/local/bin:/usr/local/sbin/
    
    ifconfig
    	没有网卡信息
    ifconfig eht0 IP NETMASK
    
    ping GATEWAY # 正常
    ssh USERNAME@IP # 在当前小系统登录远程主机正常
    
    
    

    系统安装及Kickstart

    locale -a # 显示所有语言
    必备命令
    	keyboard us
    	lang Asia/Shanghai
    	timezone
    	rootpw  --iscrpted # 对管理员密码加密
    	authconfig --useshadow
    	bootloader --location
    	clearpart --initlabel --linux
    	driverdisk --source=
    	firewall --disabled
    	firstboot --disabled
    	text|graphical
    	key --skip
    	
    	
    可选命令
    
    
    
    # 检查anaconda-ks.cfg文件语法的命令
    ksvalidator # 需要 安装工具
    	# yum list all | grep kick
    	yum install -y system-config-kickstart 
    ksvalidator /root/anaconda-ks.cfg 
    
    system-config-kickstart & # 可以启动一个图形界面,在图形界面上选择配置
    
    
    mkisofs -R -b isolinux/isolinux.bin -no-emul-boot -boot-info-table -o boot.iso iso/
    

    系统故障排除

    常见的系统故障排除:
    1. 确定问题的故障特征
    2. 重现故障
    3. 使用工具收集进一步信息
    4. 排除不可能的原因
    5. 定位故障:
    	从简单的问题入手
    	一次尝试一种方式
    	
    1. 备份原文件
    2. 尽可能借助于工具
    
    可能会出现的故障:
        1. 管理员密码忘记;# 进入单用户模式,直接修改。
        2. 系统无法正常启动 # 
            a. grub损坏(MBR损坏、grub配置文件丢失)
            b. 系统初始化故障(某文件系统无法正常挂载,驱动不兼容)
            c. 服务无法正常启动
            d. 用户无法登录系统(bash程序故障)
        3. 命令无法运行
        4.编译过程无法继续(开发环境缺少基本组件)
    
    一、MBR损坏:
    1.借助别的主机修复;
    2.使用紧急救援模式;
    	a、/boot.iso
    	b、使用完整的系统安装光盘
    	boot:linux rescue
    	# 进入小型linux系统之后,首先进入grub的命令行模式,安装grub
    	grub
    	root (hd0,0) # / 指的是内核所在分区的设备  设置根分区在磁盘的位置
    	如果不知道内核位置,可以使用find查找
    	find (hd0,0)/
    	# 安装
    	setup (hd0) # 将引导文件写入磁盘,比如把stage1写入hd0即第一个磁盘的1号分区,第一个扇区的位置;其实就是自动安装grub
    
    二、grub(grub.conf)配置文件丢失:# 启动系统,系统就已经直接进入了grub命令提示符
        grub> root (hd0,0)
        grub> kernel /vmlinuz- ro root=/dev/vo10/root rhgb quiet
        grub> initrd /initrd-
        grub> boot
    
        vim grub.conf
            grub.conf
                default=0
                timeout=10
                title RHEL 5.8
                    root (hd0,0)
                    kernel /vmlinuz-2.6.18-308.e15 ro root=/dev/vo10/root
                    initrd /initrd-
    
    	cp /root/grub.conf /boot/grub/
    	
    三、kernel panic:内核恐慌
    四、另外的故障:
    	把默认级别设定为0或6: --> 进入单用户模式,编辑inittab文件
    	/etc/rc.d/rc3.d --> 进入单用户模式,修改目录系统
    	某个服务故障导致启动停止,如sendmail配置文件时间戳检查无法通过 --> 进入交互式模式
    
  • 相关阅读:
    第三方包源码maven 下载
    Redis实现主从复制(转)
    Linq的优缺点
    async & await (转载)
    [转]抽象类与接口的区别及应用
    转载:C#中的泛型
    MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult
    C#中委托
    创建新的虚拟机
    GitHub上整理的一些工具[转载]
  • 原文地址:https://www.cnblogs.com/zhangchaocoming/p/14855587.html
Copyright © 2011-2022 走看看