Linux系统管理--(2)远程登录服务与日志管理

Linux系统管理

实验所用系统为Redhat-rhel8.2。

Linux的系统管理–Linux中的远程登陆服务

实验环境–配置两台纯净的虚拟机

  • 真机
westos-vmctl reset westosa
westos-vmctl reset westosb
  • westosa–server服务端
hostnamectl set-hostname westosa.westos.org		
nmcli connection show
nmcli connection delete Wired\ connection\ 1
cd /etc/sysconfig/network-scripts/(非图形设定,也可以nm-connection-editor图形设定)
ls()
vim ifcfg-ens3
###
DEVICE=ens3
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.109
NETMASK=255.255.255.0
NAME=ens3
###
nmcli connection reload
nmcli connection up ens3
rm -rf /root/.ssh/ (默认没有这个文件,删掉保存原始状态)
ifconfig
init 3

sshd(默认下载)
systemctl enable --now sshd(默认打开)

#也可图形方式进行设置

  • wesosb–client客户端
    操作同a
    请添加图片描述

  • 真机

ssh -l root 172.25.254.109
ssh -l root 172.25.254.209

一、Openssh的功能

1、sshd服务的用途

Secure Shell		===>ssh		##客户端
Secure Shell daemon	===>sshd	##服务端

2、安装包

openssh-server

3、主配置文件

rpm -qc openssh-server
/etc/ssh/sshd_conf

4、默认端口

netstst -antupe | grep ssh

对外开放的接口 22

5、客户端命令

ssh(ssh sshd)

二、ssh

1、基本用法

ssh [-l 远程主机用户] <ip|hostname>

ssh -l root 172.25.254.109		##通过ssh命令在105主机中 以root身份开启远程shell

当收入yes后
109主机会向当前主机发送身份公钥,并保存此公钥到~/.ssh/known_hosts
109主机持有私钥,当客户主机再次连接时对其进行身份验证

当连接因为认证问题被拒绝时,
vim ~/.ssh/know_hosts
在此文件中删除报错提示相应的行

ssh 常用参数
-l		##指定登陆用户
-i		##指定私钥
-X		##开启图形
###
真机,开启图形
ssh -X -f -l root 172.25.254.109 gedit
###
-f		##后台运行
-o		##指定连接参数
		#ssh -l root@172.25.254.x -o "StrictHostKeyChecking=no"	首次连接不需要输入yes
-t		##指定连接跳板
	ssh -l root 172.25.254.1 -t ssh -l root 172.25.254.109

实验步骤:

  1. 客户端b连接服务端a,/root/.ssh/known_hosts中生成公钥
  2. 服务端a/etc/ssh/ssh_host-ecdsa_key.pub中生成私钥
  3. 公钥与私钥内容相同
  4. 当不同时,ssh失败,即当连接因为认证问题被拒绝
  5. 客户端b重新连接,报错known_hosts:x出错,则删掉对应的行,重新连接。

客户端b连接服务端a

###客户端b
ssh -l root 172.25.254.109(客户端连接服务器)
exit
cd /root/.ssh
ls
cat known_hosts

###服务端a
cd /etc/ssh/
ls
cat ssh_host_ecdsa_key.pub	

请添加图片描述
#客户端b
请添加图片描述
##服务端a,两者内容相同

##如果两个文件内容不同则不能ssh成功,(当连接因为认证问题被拒绝时)解决:

###a(模仿连接出错)
cd /etc/ssh/
ls
rm -rf ssh_host_*	##删掉配置文件
systemctl restart sshd	##重启sshd

###b
ssh -l root 172.25.254.109
报错known_hosts:1出错
vim known_hosts
删掉对应行
ssh -l root 172.25.254.109
成功
exit

请添加图片描述

请添加图片描述
#/root/.ssh/known_hosts中删除第一行

三、sshd key认证

1、认证类型

1)

对称加密:加密和解密是同一串字符
缺点:容易泄露;可暴力破解;容易遗忘

2)

非对称加密加密用公钥,解密用私钥
优点:不会被盗用;攻击者无法通过无密钥方式登陆服务器

2、生成非对称加密密钥

不必要求在服务器或者客户端,在哪都可以

1)方法1:交互式生成密钥
  • 客户端b
ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_ras):		##存放密钥加密字符串的文件,可输入或者默认
Enter passphrase (empty for no passphrase):					##密钥密码,可为空(免密认证)
Enter same passphrase again:								##确认密码
Your identification has been saved in /root/.ssh/id_ras.	##私钥
Your public key has been saved in /root/.ssh/id_ras.pub。	##公钥
The key fingerprint is:生成的密钥

请添加图片描述[注意] 如果接下来要做自动生成,需要删除已经生成的密钥文件
rm -rf /root/.ssh/

2)自动生成密钥
  • 客户端b
ssh-keygen -f /root/.ssh/id_ras -P ""						##生成key;-f 保存加密字符的文件,-P设定密码,""表示免密认证
ssh-copy-id -i /root/.ssh/id_ras.pub root@172.25.254.109	##用key对指定root用户加密(此时需要输入109的密码才能设定成功)
cat /root/.ssh/id_ras.pub

请添加图片描述

  • 服务端a
ls -l /root/.ssh/
cat /root/.ssh/authorized_keys			##上锁成功,密码内容和b里的/root/.ssh/id_ras.pub相同

请添加图片描述

当有很多私钥对应一个公钥时,可以用-i指定私钥

  • 客户端b
ssh -i /root/.ssh/id_ras -l root 172.25.254.109			##登陆成功,此时登陆不需要密码,是因为第一步-P "",没有设置密码

3、安全优化(对服务器a)

rpm -qc openssh-server			##查找主配置文件
/etc/ssh/sshd_config			##主配置文件
vim /etc/ssh/sshd_config
vim ~/.vimrc					##写入set nu,永久添加行号
systemctl status sshd			##查看sshd服务状态,保证开启

请添加图片描述

1)关闭原始密码认证
vim /etc/ssh/sshd_config
///
73 PasswordAuthentication yes ##原始密码认证开启 改成no
///
systemctl restart sshd		##重启服务

请添加图片描述
#原始密码认证关闭,即不能输入密码来登录

测试
没有key的用户没有输入密码的途径
有key的用户可以使用私钥连接

请添加图片描述
#有key的客户端b使用私钥可以连接服务端a
请添加图片描述
#没有key的真机被拒绝

[注意] 做完实验要将no改回yes。

2)修改默认端口

将默认端口22改为2021

  • 服务端a
getenforce							##限制端口更改
setenforcr 0 						##关掉限制
systemctl disable --now firewalld	##关闭火墙
vim /etc/ssh/sshd_config
///
17 Port 22	改成2021					(同时删掉注释符)
///
systemctl restsrt sshd				##重启服务

请添加图片描述

  • 服务端b
ssh -l root 172.25.254.109			##连接失败
ssh -l root 172.25.254.109 -p 2021	##指定端口,连接成功

请添加图片描述[注意] 做完实验要将端口改回22。

3)用户白名单
  • 服务端a
vim /etc/ssh/sshd_config
///
50 AllowUsers root ...	##指定多个用户可以登陆
///
systemctl restsrt sshd

请添加图片描述

  • 服务端b
ssh -l root 172.25.254.109		##可以登录
ssh -l westos 172.25.254.109	##不可以登录

请添加图片描述

4)用户黑名单
  • 服务端a
vim /etc/ssh/sshd_config
///
51 DenyUsers westos ...	##指定用户不可以登陆
								##注意:需要注释掉白名单
///
systemctl restsrt sshd			##重启服务

请添加图片描述

  • 客户端b
ssh -l root 172.25.254.109		##可以登录
ssh -l westos 172.25.254.109	##不可以登录

请添加图片描述

Linux的系统管理–Linux中的日志管理

[注意] 还原配置文件或者重启,但是不建议重启

重启
rm -rf /etc/ssh/sshd_config
dnf  reinstall openssh-server -y
vim /etc/ssh/sshd_config
systemctl restart sshd

实验环境:
两台纯净的虚拟机
systemctl disable --now firewalld

请添加图片描述

一、journald程序

服务名称:systemd-journald.service(默认开启)

systemctl status systemd-journald.service	##查看状态

默认日志存放路径:/run/log/机器码/system.journal

hostnamectl			##查看机器码

1、实验1 journalctl命令的用法

journalctl	#分析日志(n,N向上/下匹配)
	-n 3					##日志的最新3条
	--since “11:00:00“		##显示11点之后的日志
	--until “11:05:00"		##显示11:05之前的日志(注意引号的中英文区分)
	-o			##设定日志的显示方式
		#short		经典模式显示日志
		#verbose	显示日志的全部字节
		#export		适合传出和备份的二进制格式(不常用)
		#json		js格式显示输出(不常用)	

	-p			##显示制定级别的日志
		#0 emerg	系统的严重问题日志
		#1 alert	系统中立即要更改的信息
		#2 crit		严重级别会导致系统软件不能正常工作
		#3 err		程序报错
		#4 warning	程序警告
		#5 notice	重要信息的普通日志
		#6 info		普通信息
		#7 debug	程序排错信息
	-F	PRIORITY	##查看可控日志级别
	-u	sshd		##查看指定服务
	--disk-usage		##查看日志大小
设定日志回滚,将最先生成,最早存放的日志删除(期限,大小)
	--vacuum-size=1G	##设定日志存放大小
	--vacuum-time=1w	##设定日志在系统中最长存放时间
	-f					##监控日志
	_日志里的信息			##查看该信息的日志
例:journalctl _PID=32350
journalctl _PID=10924 _SYSTEMD_UNIT=sshd.servie

请添加图片描述#根据条件显示日志
请添加图片描述

#查看可控日志级别
请添加图片描述
#查看指定服务
请添加图片描述
#查看日志大小与设置回滚(注意大小写)
请添加图片描述
#监控日志,默认后十行

[注意] 关机后/run/log/机器码/system.journal会被清理,重启后日志从当前开始

2、实验2 用journald服务永久存放日志

  • 系统默认保存日志:/run/log/journal中,关机后被清理

想要永久保存日志,则需要将其放在硬盘里

mkdir /var/log/journal
chgrp systemd-journal /var/log/journal	##程序只能识别属于他的组的文件
chmod 2775 /var/log/journal
systemctl restart systemd-journald.service

服务重启后,日志将存放在:/var/log/journal

  • 测试方法:
    查看日志
    重启系统
    再次查看日志
    可以看到重启以前的日志被清理(看id,日志开始时间)
    但是完成以上操作,日志会被保存

步骤:

###与虚拟机连接的真机
mkdir /var/log/journal	##建立永久保存日志的目录
ls -ld /var/log/journal		##查看目录的权限
chgrp systemd-journal /var/log/journal		##改变目录的所有组
chmod 2775 /var/log/journal	##改变目录的权限
systemctl restart systemd-journald.service	##重启服务
ls -l /run/log		##查看原日志文件
ls -ld /var/log/journal		##查看新日志文件的权限
ls /var/log/journal	##查看日志文件
cd /var/log/journal/机器码/
ls
ls -i system.journal	##查看日志的节点号
date		##查看日志的时间
reboot		##重启
ping 172.25.254.109	##用来查看虚拟机是否开启
ssh -l root 172.25.254.109	##连接
journalctl	##查看日志开始时间是否改变

请添加图片描述
请添加图片描述
请添加图片描述
#日志开始时间并未因为重启而改变,即永久保存日志

二、rsyslog程序

日志采集工具:采集日志到指定位置

  • 服务名称:rsyslog.service
日志存放:
/var/log/			##所有
/var/log/messages	##系统服务日志,常规信息,服务报错
/var/log/secure		##系统认证信息日志
/var/log/maillog	##系统邮件日志信息
/var/log/cron		##系统定时任务信息
/var/log/boot.log	##系统启动日志信息
var/log/firewalld	##火墙日志
  • 配置文件:/etc/rsyslog.conf

实验1、自定义日志采集路径

日志类型.日志类型级别	日志存放路径
*.*					/var/log/westos		##把系统中所有级别的日志存放到westos中
*.*;authpriv.none   /var/log/westos		##把系统中除了authpriv的日志的所有级别都存放在westos中
日志类型
auth		#用户认证
authpriv	#服务认证
cron		#时间任务
kern		#内核类型
mail		#邮件
news		#系统更新信息
user		#用户

日志级别
debug		#程序排错信息
info		#程序常规运行信息
notice		#重要信息的普通日志
waring		#程序警告
err			#程序报错
crit		#严重级别会导致系统软件不能正常工作
alert		#系统中立即要更改的信息
emerg		#系统的严重问题日志
none		#不采集

实验步骤:

1.虚拟机a–修改配置文件将所有日志的所有级别都采集到/var/log/westos中
2. 重启服务,清空日志
3. 虚拟机b–ssh链接虚拟机a
4. 虚拟机a–在/var/log/westos生成了新的日志

###a(所有日志的所有级别都采集到/var/log/westos中)
vim /etc/rsyslog.conf 
///
 47 *.*                        /var/log/westos
///
systemctl restart rsyslog.service
> /var/log/westos
cat /var/log/westos

###b
ssh -l root 172.25.254.109

###a
cat /var/log/westos

请添加图片描述

#虚拟机a中修改配置文件,重启服务,清空日志;在b链接a之后,生成新日志
请添加图片描述
#配置文件内容

请添加图片描述
#虚拟机b链接a

实验2 、日志远程同步remote machinevim

设定
b发送日志;a接收日志

UDP协议和TCP协议都是传输层协议。

TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

稳定,但是内网主机不需要。

UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。

速度快,效率高。

@		#表示使用UDP传输日志
@@		#表示使用TCP传输日志
例:
@172.25.254.109	#把本机日志用UDP传输方式发送到172.25.254.109主机

实验步骤:

  1. 在虚拟机b中修改配置文件,将所有日志的所有级别都用UDP传输方式采集到虚拟a中,重启服务
  2. 在虚拟机a中修改配置文件,使udp传输可用
  3. 测试,清空a和b的日志,在a中监控日志,在b中发送消息
###b发送
vim /etc/rsyslog.conf
///
 47 *.* 	@172.25.254.109			##所有日志的所有级别都用UDP传输方式采集到172.25.254.109
///
systemctl restart rsyslog.service


###a接收
vim /etc/rsyslog.conf
删掉19,20的注释(注意:删掉UDP的注释,看仔细)
///
 19 module(load="imudp")			##打开日志接收模块
 20 input(type="imudp" port="514")	##指定模块使用接口
///
systemctl restart rsyslog.service
netstat -antlupe | grep rsyslog		##查询端口(关闭防火墙的原因:保证UDP的514端口畅通)



测试
在a和b里
> /var/log/messages					##清空日志

###a
tail -f /var/log/messages

###b
logger hhh 							#生成日志

请添加图片描述
#虚拟机b中,修改配置文件,生成日志
请添加图片描述
#虚拟机b的配置文件

请添加图片描述

#虚拟机a,修改配置文件,重启服务,监控日志
请添加图片描述
#虚拟机a的配置文件

实验3、更改日志采集格式

[注意] 接收方作改变(在哪看日志就在哪里改)

  • 定义日志采集格式
$template WESTOS,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
##指定采集日志的格式,名称叫WESTOS,注意","

WESTOS 				格式名称(必须大写)
%timegenerated%		日志生成时间
%FROMHOST-IP%		日志来源主机的IP
%syslogtag% 		日志生成服务
%msg%				日志内容
\n					换行符
  • 设定日志采集格式应用
47 *.info;mail.none;authpriv.none;cron.none                /var/log/messages;WESTOS
##应用该格式采集日志到/var/log/messages中(设定使用该格式,不做设定则使用默认格式)

 34 module(load="builtin:omfile" Template="WESTOS")
##定义日志采集格式

实验步骤:

  1. 在虚拟机a中修改配置文件,将接收方的标志从主机名改成对应的IP
  2. 测试,清空a和b的日志,在a中监控日志,在b中发送消息
###a接收
vim /etc/rsyslog.conf(如果需要其他内容,可以man 5 rsyslog.conf)
///
 28 $template WESTOS,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
 33 module(load="builtin:omfile" Template="WESTOS")
 46 *.info;mail.none;authpriv.none;cron.none                /var/log/messages;WESTOS
///
systemctl restart rsyslog.service


测试
在a和b里
> /var/log/messages  		   ##清空日志

###a
tail -f /var/log/messages

###b
logger hhh 						#生成日志

请添加图片描述
#虚拟机a,修改配置文件,重启服务,监控日志,日志发送方显示为ip
请添加图片描述
#修改配置文件
请添加图片描述

#在b中发送

三、timedatectl

timedatectl (status)						##查看时间信息
timedatectl set-time "2020-02-13 10:00:00"	##设定系统时间(关闭时间同步服务systemctl stop chronyd.service,默认是开启的)
timedatectl list-timezones					##显示系统的所有时区
timedatectl set-timezone "Asia/Shanghai"	##设定系统时区
timedatectl set-local-rtc 0|1				##设定系统时间计算方式;0表示使用utc时间计算方式,1表示使用rtc时间计算方式(推荐使用utc)
timedatectl显示信息
               Local time: Wed 2021-07-21 10:12:53 CST		##当地时间
           Universal time: Wed 2021-07-21 02:12:53 UTC		##世界时间(伦敦时间,硬件时间+时区)
                 RTC time: Wed 2021-07-21 02:12:54			##硬件时间(本地时间)
                Time zone: Asia/Shanghai (CST, +0800)		##所在时区
System clock synchronized: no								##系统时钟同步
              NTP service: active							##NTP服务
          RTC in local TZ: no								##所采用的时间是rtc(yes)还是utc(no)

请添加图片描述
#设定系统时间(关闭时间同步服务systemctl stop chronyd.service,默认是开启的)
请添加图片描述

#设定系统时区
请添加图片描述
#设定系统时间计算方式;0表示使用utc时间计算方式,1表示使用rtc时间计算方式(推荐使用utc),所采用的时间是rtc(yes)还是utc(no)

四、时间同步服务

服务名称:chronyd.service
配置文件:/etc/chrony.conf

vim /etc/chrony.conf
23 allow 172.25.254.0/24	##允许172.25.254.0网段主机同步时间  
26 local stratum 10		##开启时间同步服务器功能并设定级别为10

实验步骤:

  1. 在虚拟机a,关闭火墙,修改配置文件,将本机作为时间同步源
  2. 在虚拟机b中,修改配置文件,指定a为要同步的对象
  3. 测试
###a服务端
systemctl stop firewalld		##关闭火墙
vim /etc/chrony.conf
///
23 allow 0.0.0.0/0				##删掉注释符,修改为0.0.0.0/0,指定让谁同步
26 local stratum 10				##删掉注释符,把本机作为时间源,服务开启
///
systemctl restart chronyd.service


###b客户端
vim /etc/chrony.conf
///
3 pool 172.25.254.109 iburst	##指定要同步的对象
///
systemctl restart chronyd.service


测试(不会同步时区,时区不同会导致时间不同)
在a和b
watch -n 1 date
###b 
chronyc sources -v	

请添加图片描述
#虚拟机a中,关闭火墙,修改配置文件
请添加图片描述
#虚拟机a的配置文件
请添加图片描述

#虚拟机b中,修改配置文件,时间同步
[注意] 如果一直显示为? 表示网络没有设置正确,需要设置配置文件中的网络

请添加图片描述
#虚拟机b的配置文件,设置与虚拟机a的时间同步

请添加图片描述
#虚拟机a的时间经过上一个实验设置为2020年
请添加图片描述
#虚拟机b的时间被a同步为2020年

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值