一、Rsync备份与同步
Rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具。Rsync通过“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。每次只传送两个文件的不同部分(即支持增量备份),而不是每次都整份传送。
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客机的rsync同步操作的服务器称为备份源。
1、rsync工具的特点
能更新整个目录树和文件系统;
有选择性的保持符号链链、硬链接、文件属性、权限、设备以及时间等;
传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用;
能用rsh、ssh 或直接端口做为传输端口;
支持匿名rsync 同步文件,是理想的镜像工具;
格式:rsync 【选项】 源文件 目标文件
常用选项:
-a:--archive 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于-rlptgoD
-r:-recursive 对子目录以递归模式处理
-v:显示同步过程的详细信息
-z:--compress 表示压缩传输
--delete:删除那些目标位置有而原始位置没有的文件
-H :表示硬连接文件
-l:--links 表示拷贝链接文件
-p :--perms 表示保持文件原有权限
-t:--times 表示保持文件原有时间
-g :--group 表示保持文件原有属用户组
-o :--owner 表示保持文件原有属主
-D :--devices 表示块设备文件信息
-A :保留ACL属性信息
-P :显示传输进度
-u :--update 仅仅进行更新,跳过所有已经存在于目标位置,并且文件时间晚于要备份的文件。
--port= :指定其他的rsync服务端口
--password-file= :指定密码文件获取用户密码,只能在rsync运行使用
2、基于SSH远程备份
1>.SSH本地下行同步到客户机(必须安装openssh-clients)
使用SSH协议的好处是能够基于更安全的远程连接,增强备份的保密性。
实验:将/var/www/html目录下文件下行同步到客户机192.168.0.200中/web下,也可以是本地,保持文件权限和属性、软/硬链接、ACL属性、删除/web目录中多余的文件,并在传输过程中进行压缩。
1
2
3
4
|
useradd
rsync
password
rsync
mkdir
/backup
rsync
-arzvH --delete
rsync
@192.168.0.200:
/var/www/html//web/
|
2>.SSH上行同步到服务器
实验:将客户机/opt/web目录下文件上传同步到192.168.0.202服务器/var/www/html下
rsync -rzvl /opt/web --delete rsync@192.168.0.202:/var/www/html
对于设置任务计划的同步的话,为了解决交互式密码登陆,需要配置密钥对,实现无密码登陆。
在客户机上创建密钥对
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
ssh
-keygen -t rsa
#一直回车
ssh
-copy-
id
rsync
@192.168.0.200
#将公钥分发给服务器
sshr
sync
@192.168.0.200
#现在就可以无密码登陆了,成功实现免交互自动登录
vi
/root/rsync_web
.sh
#写一个脚本,创建任务计划
#!/bin/bash
CMD=
"/usr/bin/rsync"
RSYNC_USER=
"rsync"
ARGS=
"-az --delete"
SRC=
"192.168.0.200:/var/www/html"
DST=
"/web"
mkdir
-p $DST
$CMD $ARGS $RSYNC_USER@SRC $DST
保存退出!
chmod
700
/root/rsync_web
.sh
crontab
-e
00 23 * * *
/root/rsync_web
.sh
|
3、基于Rsync进程备份同步
rsync不仅仅用作远程同步的发起端(客户端),也可以作为守护进程运行,为其他客户机提供备份源,配置rsync备份源需要建立配置文件 rsync.conf,创建备份账户,然后将rsync程序以”--daemon”选项运行。
1>.创建主配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
vi
/etc/rsyncd
.conf
uid=nobody
#指定当该模块传输文件时守护进程用户,默认是nobody
gid=nobody
#指定当该模块传输文件时守护进程组,默认是nobody
port=873
#后台程序使用端口,默认是873
use chroot=
yes
max connections=4
#最大连接数
log
file
=
/var/log/rsyncd
.log
#存放日志位置
pid
file
=
/var/run/rsyncd
.pid
#存放进程位置
hosts allow=192.168.0.200,192.168.0.201
#允许主机,或者是网段
hosts deny=0.0.0.0
/0
#禁止主机,没有这行,默认没有
[web]
path=
/var/www/html
comment=rsyncto web www.
test
.com
read
only=
yes
#只允许下载,no是允许下载和上传,上传建议使用SSH
dont compress=*.gz *.bz2 *.tgz *.zip *.
tar
*.z
auth
users
=
rsync
#认证的用户名,没有这两行表示是匿名,此用户与系统用户无关
secrets
file
=
/etc/rsync
.pass
#密码和用户名对比表,密码文件自己创建
|
注意:该文件的权限一定要是600,否则客户端将不能连接服务器。
2>.创建认证用户、密码和启动
1
2
3
4
5
6
|
vi
/etc/rsync
.pass
rsync
:123.com
rsync
--daemon
#启动rsync服务
killall -9
rsync
#关闭rsync服务
echo
“
rsync
--daemon” >>
/etc/rc
.
local
#设置开机启动
iptables -A INPUT -p tcp --dport 873 -j ACCEPT
#设置防火墙
|
3>.将rsync服务交给xinetd服务管理,只有rsync请求,rsync才启用,其他时间关闭状态
1
2
3
4
5
6
7
8
9
10
11
|
vi
/etc/xinetd
.d
/rsync
service
rsync
{
disable =
yes
#修改为yes
socket_type = stream
wait = no
user = root
server =
/usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
|
4>.客户机下行同步
1
|
rsync
-avz rysnc@192.168.0.200::
/var/www/html//web
#下行格式是这样,再加一个冒号
|
实现无交互验证,我们可以使用RSYNC_PASSWORD变量来存放密码,执行rsync时,会自动获取密码
1
2
|
echo
"export RSYNC_PASSWORD="
123.com
""
>>
/etc/profile
rsync
-avz --delete rysnc:
//rsync
@192.168.0.200
/var/www/html//web
#这个命令格式和上面是一样效果
|
写一个脚本,创建任务计划,同上,略...
二、管理系统服务
1、chkconfig命令使用
chkconfig --list httpd #查看httpd服务启动状态
chkconfig --level 级别列表 服务名 on|off
chkconfig --level 35 httpd on #设置httpd在3、5运行级别开机自动启动
/etc/init.d -> /etc/rc.d/init.d #服务脚本位置,链接到rc.d下
2、ntsysv系统服务管理工具
当设置单个服务启动时,使用chkconfig更有效率,设置多个服务启动时,使用ntsysv工具比较适合
启动和停止服务脚本:service httpd start|stop|restart|reload|status或/etc/init.d/httpd start
三、日志管理
操作系统的日志主要具有审计与监测的功能,通过对日志信息的分析,可以检查错误发生的原因,监测追踪入侵者及受到攻击时留下的痕迹,甚至还能实时的进行系统状态的监控。有效利用日志信息并对其进行分析与实时的监控管理,对于系统的安全性具有极为重要的作用;日志文件所处的位置都在/var/log目录下。
1、rsyslog主配置
1
2
3
4
5
6
7
8
9
10
11
12
13
|
grep
-
v
"^#"
/etc/rsyslog
.conf |
grep
-
v
"^$"
#筛选掉注释和空行
$ModLoad imuxsock
# provides support for local system logging (e.g. via logger command)
$ModLoad imklog
# provides kernel logging support (previously done by rklogd)
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig
/etc/rsyslog
.d/*.conf
*.info;mail.none;authpriv.none;
cron
.none
/var/log/messages
#内核及应用程序公共消息日志
authpriv.*
/var/log/secure
#系统安全日志
mail.*
/var/log/maillog
#电子邮件系统的功能
cron
.*
/var/log/cron
#计划任务相关的日志
*.emerg *
#syslog对日志所设置的级别
uucp,news.crit
/var/log/spooler
#syslog对news和uucp的日志所设置的级别,crit表示危急,但事故还没有发生,将要发生。news 是新闻组服务器的;uucp全称是UNIX-TO-UNIX COPY PROTOCOL的信息
local7.*
/var/log/boot
.log
#开机系统日志
|
2、日志级别,由高到低
emerg:系统已经不可用,级别为紧急
alert:警报,需要立即处理和解决
crit:既将发生,得需要预防。事件就要发生
warnig:警告。
error:错误信息,普通的错误信息
notice:提醒信息,很重要的信息
info:通知信息,属于一般信息
debug:这是调试类信息
3、日志管理两种方法
方法1:比较常用,适合几台主机,不同服务器的日志信息都存放在各自系统内,系统管理员对各服务器进行分散管理。
方法2:适合多台主机,则是使用日志主机系统,即集中进行日志的存储和管理;这是一个从其他主机收集日志,并将它们存放在同一个地方的系统,很容易使来自多个主机的日志条目关联起来,对其进行统一管理、分析,甚至配合自动化工具进行实时的监控,有效提高管理的效率。
1>.liunx系统日志集中存储,将A主机的系统日志存储到B主机(日志主机)上
A主机:IP:192.168.0.1/24
B主机:IP:192.168.0.2/24
B主机配置:(日志主机)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
vi
/etc/sysconfig/rsyslog
#修改如下
SYSLOGD_OPTIONS=
"-r -c 2"
vi
/etc/rsyslog
.conf
#去掉注释13、14、17、18
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
service rsyslog restart
#重启rsyslog
netstat
-tupln |
grep
rsyslog
#已经启动,监听是TCP/UDP协议514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1408
/rsyslogd
tcp 0 0 :::514 :::* LISTEN 1408
/rsyslogd
udp 0 0 0.0.0.0:514 0.0.0.0:* 1408
/rsyslogd
udp 0 0 :::514 :::* 1408
/rsyslogd
|
A主机配置:(客户端主机)
1
2
3
4
5
6
7
8
9
10
11
|
vi
/etc/rsyslog
.conf
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig
/etc/rsyslog
.d/*.conf
*.info;mail.none;authpriv.none;
cron
.none @192.168.0.2
authpriv.* @192.168.0.2
mail.*
/var/log/maillog
cron
.*
/var/log/cron
*.emerg *
uucp,news.crit
/var/log/spooler
local7.*
/var/log/boot
.log
service rsyslog restart
#重启rsyslog
|
我们是把公共消息日志和安全日志发送到日志主机上,在日志主机上tail -30 /var/log/message看到客户端主机名,说明运行正常。
4、对于这样庞大的日志信息,大多数是没用的,怎么样去分析和检测我们要的信息呢?
利用Logwatch 进行日志监控:logwatch是一款专门监测Linux log文件(日志文件)的软件。可以再加上mail对分析的文件不定时发送到邮箱。
在日志主机安装logwatch并修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
|
yum
install
-y logwatch
cp
-rf
/usr/share/logwatch/default
.conf
/logwatch
.conf
/etc/logwatch/conf/logwatch
.conf
vi
/etc/logwatch/conf/logwatch
.conf
LogDir =
/var/log
#日志文件
TmpDir =
/var/cache/logwatch
#缓存文件
Detail = High
#日志详细程度为高
MailTo = user@
test
.com
#收件人邮箱地址,多个邮箱有逗号隔开
MailFrom = root@
test
.com
#发件人邮箱地址,默认每天执行一次向邮箱发送邮件,可以从/etc/cron.daily里看到
Print = No
#可选项, Yes 会被打印到系统标准输出, 并且不会以邮件的形式发送到 MailTo 设定的邮箱里 , No 选项则会发到邮箱中
Range = yesterday
#处理什么时候的日志,可选项All,Yesterday,Today,即所有,昨天的,今天的
Detail = Low
# 日志详细度,可选项 Low,Med,High ,或是 0-10数字
Service = All
#监控所有服务all
Service =
"-httpd"
#不监控的服务前面加“-”,可以添加多条
|
Logwatch命令常用的选项有:
--detail <level>: 报告的详细程序,可用的值为:High, Med, Low or 0-10;
--logfile <name>: 日志文件文件名,如:messages、auth.log等;
--service <name>: 服务名,各个服务有对应的解析脚本,这些脚本位与以下目录中(/usr/share/logwatch/scripts/services/或/etc/log.d/scripts/services);
--print: 打印标准输出;
--mailto <addr>: 收件人地址;
--archives: 使用压缩的文件或轮转的文件,如:messages.1、messages.1.gz;
--save <filename>: 保存到文件 <filename>.
--range <range>: 日期范围:Yesterday、Today、All;
--debug <level>: 试调级别: High、Med、Low ;
--splithosts: 为每个主机创建一份报告;
--multiemail: 将报告发送给多个邮件地址;
手动执行logwatch的命令生成日志报告
1
|
perl
/usr/share/logwatch/scripts/logwatch
.pl
|
写一个脚本让系统定时给指定邮箱发送邮箱
1
2
3
4
|
vi
/usr/local/sbin/logwatch
.sh
#!/bin/bash
perl
/usr/share/logwatch/scripts/logwatch
.pl
chmod
u+x
/usr/local/sbin/logwatch
.pl
|
创建一个cron计划任务
1
2
|
crontab
–e
30 08 * * *
/usr/local/sbin/logwatch
.sh
#每台早上八点三十发一次邮件
|
四、NTP(网络时间协议)
NTP(Network Time Protocol)是用来使计算机时间同步化的一种协议,它可以使计算机系统与NTP服务器或时钟源(如石英钟,GPS等等)进行同步化的一种协议,它可以提供高精准度的时间校正。ntp服务器默认监听UTP 123端口。
1、搭建时间同步服务器(NTP)(IP:192.168.0.1),并让它与外部时间服务器同步,内部的其他服务器以这台NTP作为标准时间,有两种配置:
1>.允许所有IP进行时间同步(默认)
restrict default kod nomodify notrap nopeer noquery restrict default modify notrap
2>.只允许网段IP进行时间同步
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
2、NTP安装与配置
1
2
3
|
yum
install
-y ntp
service ntpd start
#不需要配置,启动即可
iptables -I INPUT -p udp --dport 123 -j ACCEPT
#ntp使用upd协议123端口,设置允许规则
|
3、客户端同步NTP服务器
1
|
ntpdate 192.168.0.1
|
设置自动同步
1
2
|
crontab
-e
00 21 * * *
/usr/sbin/ntpdate
192.168.0.1;
/sbin/hwclock
-w
#设置每天晚上9点同步,hwclock -w 将系统时间写入系统硬件
|
客户端刚开始同步会报错:ntpdate[1731]: step time server 192.168.0.202 offset -28797.853105 sec
这是因为NTP本身时间没有和Internet时间同步,这个过程需要5分钟以上,使用watch ntpq -p命令查看显示如下信息说明已经同步
ntp主配置文件
1
2
3
4
5
6
7
8
9
10
11
|
grep
-
v
"^#"
/etc/ntp
.conf |
grep
-
v
"^$"
driftfile
/var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
#限制其他计算机查询、修改本机上的NTP服务,其中default表示所有IP
restrict -6 default kod nomodify notrap nopeer noquery
#应用于IPV6地址的主机
restrict 127.0.0.1
#开放本机内部接口,用于反馈;以便于在本地对NTP服务进行监控及配置
restrict -6 ::1
#开放这个网段,不能修改;即允许192.168.1.0/24网段的NTP客户端都可以用本机的NTP服务器进行网络校时,但不允许它们修改本机的NTP服务配置
server 0.centos.pool.ntp.org
#指定真实上层NTP服务器
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
includefile
/etc/ntp/crypto/pw
keys
/etc/ntp/keys
|