【CentOS】Linux日常管理

时间:2023-03-09 17:03:14
【CentOS】Linux日常管理

/////////////////////////目录/////////////////////////////////////////

一、日常监控指标相关

1.监控系统状态命令

2.查看系统进程

3.网络相关

4.系统活动情况报告

二、日常维护安全相关

1.tcp抓包工具

2.Selinux

3.netfilter------iptables

    (1)流程

    (2)五链三表

    (3)iptable规则相关

    (4)规则备份与恢复

    (5)实例

三、Linux系统相关

  1.Linux系统服务管理

  2.Linux系统日志

  3.几个网络相关的命令

  4.用rsync实现远程文件同步与备份

    (1)rsync命令格式

    (2)rsync常用选项

    (3)rsync选项讲解

    (4)rsync应用实例 -ssh方式同步

    (5)rsync应用实例 -daemon方式同步

          ————注意两种方式的脚本书写方法

其他、Linux日常管理拓展链接

//////////////////////////////////////////////////////////////////////

一、日常监控指标相关

1.监控系统状态命令

w,uptime,vmstat,top

相关指标如下:

  r :(runable)表示运行和等待CPU时间片的进程数,如果长期大于服务器CPU的个数,则说明CPU不够用
  b :(The number of processes in uninterruptible sleep)表示等待资源的进程数,比如等待I/O,内存等,这列的值如果长时间大于一,则需要关注一下了
  si :由交换区进入内存的数量
  so :由内存进入交换区的数量
  bi :从块设备读取数据的量(读磁盘)
  bo :从块设备写入数据的量(写磁盘)
  in :interrupt每秒的中断次数,包含时钟中断
  cs : context switch 每秒的上下文切换次数
  wa :表示I/O等待所占用CPU时间百分比

  us:用户态的进程
  sy:内核态的
  PID 进程的ID
  PR 优先级
  NI 优先值,从-20到19,数值越低,优先级越高
  VIRT 虚拟内存大小
  RES (关注这个)真正内存,这一项为进程所占内存大小
  %MEM为使用内存百分比,在top状态下,按“shift +m” 可以按照内存使用大小排序,按数字“1”可以列出各颗CPU的使用状态
  SHR 共享内存
  S 状态state

2.查看系统进程

ps aux

或者是

ps -elf

3.网络相关

netstat -lnp 查看监听端口

      -an 查看网络连接状态

4.系统活动情况报告

sar

  网卡流量 sar -n DEV, sar -n DEV 1 10
  sar -n DEV -f /var/log/sa/sa24
  着重看rxpck/s rxbyt/s ,
    (在/var/log/sa/里面,有sa和sar的,sa的文件可以直接cat查看,而sar24的需要用上述的方法来查看)
  sar -q -f /var/log/sa/sa24
  sar -q 查看历史的负载,前提是开启了/etc/init.d/sysstat服务
  sar -b 查看磁盘读写

二、日常维护安全相关

1.tcp抓包工具

tcpdump :
  tcpdump -nn -i eth0 tpc and host 192.168.0.1 and port 80
  tcpdump -nn -vs0(s0代表把这个包全部抓到) tcp and port not(取反) 22 -c 100(抓100个包后停止) -w(写到那个文件里面) 1.cap
  写到这个文件之后,你可能会去cat一下看它,但是cat之后会出现一堆乱码,证明他不是一个普通的可查看文件,怎么办呢
  使用strings,可以把二进制的东西显示出来:

  strings /tmp/1.cap

抓包后分析的分析工具:
  用wireshark,在Linux下  yum install -y wireshark

  抓包分析http请求:

    tshark -i eth0 (指定网卡)-n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

2.Selinux

  配置文件/etc/selinux/config 三种形式 :

    enforcing, permissive, disabled

  通常情况下,因为无需使用Selinux,因此我们会把它配置成SELINUX=disabled

  关闭Selinux的方法还有:

    setenforce 0(关)/1(开)

  获取当前Selinux的状态:

    getenforce

  如果没有getenforce命令 yum install -y libselinux-utils

3.netfilter------iptables

【CentOS】Linux日常管理

【CentOS】Linux日常管理

参考:http://www.cnblogs.com/bangerlee/archive/2013/02/27/2935422.html 常用iptables配置实例

    http://blog.chinaunix.net/uid-22780578-id-3346350.html?page=2  *iptables详解*

//////////////////////////////////////////////////////////////////////

12月16日补充

对于centOS 7 而言,默认使用的是firewall,这个是基于iptables的,但是虽然有iptables的核心,缺没有iptables-service的功能

因此,会出现没有找到诸如/etc/sysconfig/iptables文件,fail to restart iptables.service :Unit not found 等问题

那么,解决办法为 yum install -y iptables-services,问题解决

//////////////////////////////////////////////////////////////////////

(1)流程:

① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

(2)五链三表:

  PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTING

  filter 这个表主要用于过滤包的,是系统预设的表,內建三个链:INPUT,OUTPUT以及FORWARD链的作用是在包刚刚到达防火墙时改变他的目的地址,如果需要的话,OUTPUT链改变本地产生的包的目的地址,POSTROUTING链在包就要离开防火墙之前改变其源地址

  nat 主要作用于修改数据包的TOS(Type Of Service,服务类型),TTL(Time Tolive ,生存周期)值以及为数据包设值MARK标记,以实现Qos(Quality of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。五个链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD

  raw 对报文设置一个标志,决定数据包是否被状态跟踪机制处理,只有两个链:OUTPUT,PREROUTING

基本用法:

  iptables -nvL 查看规则
  iptables -F 清除当前规则
  iptables -Z 计数器清零
  service iptables save 保存规则,保存规则的文件为:/etc/sysconfig/iptables
  service iptables stop(可以停止默认策略) 可以暂停防火墙,但是重启后会读取/etc/sysconfig/iptables从而启动防火墙,另外即使我们停止防火墙,但一旦我们添加任何一条规则,也会开启
  iptables -t 指定表明,默认不加-t则是filter表

(3)iptable规则相关

  设定默认规则  iptables -P(policy) INPUT DROP 默认是ACCEPT,一旦设定为DROP之后,只能用iptable -P ACCEPT才能恢复

  查看规则   iptables -t nat -nvL(默认是-t filter表)
  清除规则   iptables -t nat -F(默认是-t filter表,不可以清空默认策略!!!!!!!)

  service iptables stop ,这个可以把默认策略删除

  增加/删除规则 iptables -A/-D INPUT(对于INPUT来说,source是源,destination是本地) -s(source) 10.72.11.12 -p tcp(指定协议-p tcp/icmp TCP还是UDP报文) --sport 1234 -d(destination) 10.72.137.159 --dport(destination port) 80 -j DROP

  插入规则 -iptables -I -s(指定IP) 1.1.1.1 -j DROP/ACCEPT/REJECT

  查看规则带有ID号  iptables -nvL --line-number 
  根据规则的ID号删除规则  iptables -D INPUT 1

  把计数器置零 iptables -Z

(4)规则备份与恢复
  service iptables save 这样会保存到/etc/sysconfig/iptables
  iptables-save > myipt.rule 可以把防火墙规则高存道指定文件中
  iptables-restore < myipt.rule 这样可以恢复指定的规则
  

(5)实例:
针对filter表,预设策略INPUT链DROP,其它两个链ACCEPT,然后针对192.168.0.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口,脚本如下:
  #!/bin/bash
  ipt="/sbin/iptables"
  $ipt -F; $ipt -P INPUT DROP;
  $ipt -P OUTPUT ACCEPT; $ipt -P FORWARD ACCEPT;
  $ipt -A INPUT -s 192.168.0.0 -p tcp --dport 22 -j ACCEPT;
  $ipt -A INPUT -p tcp --dport 80 -j ACCEPT;
  $ipt -A INPUT -p tcp --dport 21 -j ACCEPT;
  icmp的包常见的应用,本机ping通外网,外网ping不通本机:iptables -I INPUT -p icmp-type 8 -j DROP;

nat表应用:
  路由器就是使用iptables的nat原理实现
  假设你的机器上有两块网卡eth0,eth1,其中eth0的IP为192.168.10.11,eth1的IP为172.16.10.11,eth0连接了internet但是eth1没有连接,现在又另一台机器172.16.10.12和eth1是互通的,那么如何设置也能够让eth1的这台机器能够连接internet呢?
  echo "1"> /proc/sys/net/ipv4/ip_forward
  (这里的/proc/sys/net/ipv4/ip_forward文件,默认是0,意思为禁止数据包的转发,因此如果把它里面的内容置为1,则允许数据包的转发,用于有一张以上的网卡,但是重启服务器之后又会变为0,因此如果想自动执行,可以将该命令写入到脚本/etc/rc.d/rc.local中)

  iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -o eth0 -j MASQUERADE

三、Linux系统任务计划

(1)crontab
  /etc/crontab cron的主配置文件,可以定义PATH
  cron 的格式如下:
  #.-------------------分钟(0-59)
  #|.------------------小时(0-23)
  #||.-----------------日(1-31)
  #|||.----------------月(1-12)
  #||||.---------------周(0-6)(周日=0 or 7)
  #|||||
  #*****user-name command to be executed
  cron 也是一个服务,所以需咬先启动服务才能生效:service crond start;service crond status

任务计划练习题:
1.每天凌晨1点20分清楚/var/log/slow.log这个文件
////
命令行输入crontab -e(edit)
进去之后就是一个vim打开的文档,输入
20 1 * * * echo "" > /var/log/slow.log,然后保存

////

2.每周日3点执行“/bin/sh /usr/local/sbin/backup.sh”
////
0 3 * * 0 /bin/sh /usr/local/sbin/backup.sh
////

3.每月14号4点10分执行 "/bin/sh /usr/local/sbin/backup_month.sh"
////
10 4 14 * * /bin/sh /usr/local/sbin/backup_month.sh
////

4.每隔8小时执行 "ntpdate time.windows.com"
////
0 0,8,16(多个数值要用“,”)或者*/8 * * * ntpdate time.windows.com
////

5.每天的1点,12点,18点执行"/bin/sh /usr/local/sbin/.test.sh"
////
0 1,12,18 * * * /bin/sh /usr/local/sbin/.test.sh
////

6.每天的9点到18点执行"/bin/sh /usr/local/sbin/test.sh"
////
* 9-18,20-23(多个时间段,用,分割) * * * /bin/sh /usr/local/sbin/test.sh
////

http://www.cnblogs.com/juandx/archive/2015/11/24/4992465.html  这个帖子算是一点点拓展

7.每个月的第一个周六
* * 1-7 * 0,6

(2)anacron
  指定一天的某个时间段就会执行的cron
  在系统里面体现在哪里呢?
  /etc/anacrontab
  里面有三种cron,有daily,weekly,monthly

三、Linux系统相关

1.Linux系统服务管理
工具nssysv类似图形届满管理工具,
如果没有该命令使用yum install -y ntsysv 安装
常用服务:crond,iptables,network,sshd,syslog,irqbalance,sendmail,mircrocode_ctl
TAB键选中回车,按空格取消。如果不适用下面的命令的话,要reboot才可以生效
chkconfig --list 查看所有的服务列表
chkconfig --list servicename 查看某个服务的
chkconfig --add/del servicename
chkconfig --level [345] servicename on/off (这个level和启动级别有关!,如果不指定级别,全部开或者是全部关)

2.Linux系统日志
/etc/syslog.conf (http://www.lishiming.net/thread-7260-1-1.html)

如果是/etc/rsyslog.conf 的话那就是远程的

/var/log/messages 核心系统文件(经常要看他)

每周归档一个日志 messages-20130901
/etc/logrotate.conf
messages由syslog这个守护进程产生的,如果停掉这个服务的话,则系统不会产生/var/log/messages

last 输出的是最后登陆的信息(谁、从哪里、什么时间),如果要删除这个信息要怎么删掉呢??
那就要删掉这个文档/var/log/wtmp
/var/log/wtmp 查看用户登录历史

lastb 曾经登陆过的但是没有登录到的信息(针对暴力破解的)
/var/log/btmp 查看无效登录历史

/var/log/maillog
mailq 看看邮件有没有发出去

/var/log/secure 权限相关的

dmesg(很重要,硬件错误什么的)

还有一个东西是和dmesg相似的,但是不同,如下
/var/log/dmesg

3.几个和网络相关的命令

ping -c 10
telnet www.lishiming.net 80 测试端口连通性
traceroute www.baidu.com
dig @8.8.8.8 study.lishiming.net (要安装bind-ultis)
nc -z -w2 www.baidu.com 1-1024 # -w2 表示2s超时,这里可以只写一个端口,也可以写一个范围,使用nc扫描端口时,必须要加-z 否则不显示结果。另外,如果想把不开放的段哦口也显示出来,可以加一个-v(网络扫描器)

ss命令用法(和netstat类似的) http://www.ttlsa.com/linux-command/ss-replace-netstat/

4.用rsync实现远程文件同步与备份

在进入整体之前,先介绍一下rsync的优点

rsync可以把数据从这个服务器同步到另外一个服务器上面去
可以理解成拷贝
最大的优势是可以增量拷贝

而与之类似的scp也是用来拷贝的,拷贝到远程上去,也可以把本地文件拷贝到本地
scp -r(拷贝目录) a/ 192.168.1.12:/tmp/b/ 把a目录下的文件拷贝到b目录下去,默认是拷贝到对方的root
相当于scp -r a/ root@192.168.1.12:/tmp/b/

scp -r 192.168.1.12:/tmp/a/ ./a/ 从远程拷贝到本地

需要装上openssh-clients-5.3p1-94.e16.i686,就是scp

学上面这个是为了能够更好地理解!!!下面开始!!!
//////////////////////////////////////////////////////////////////////
1. rsync 命令格式
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST

rsync /tmp/1.txt /root/aming.txt 拷贝到本地(如果有这个文件,会增量拷贝)
什么时候会覆盖掉呢??如果只有时间不同,他又会怎么样呢?(只改变时间值)

譬如:
rsync /tmp/1.txt username@ip:/tmp/2.txt-----上传
rsync username@ip:/tmp/2.txt /tmp/1.txt-----下载
rsync /tmp/1.txt username@ip::模块名字/tmp/2.txt
rsync username@ip::模块名字/tmp/2.txt /tmp/1.txt

2.rsync常用选项
-a (这个是一定要带的)
  综合模式(包含了-r -v -l -p -t -g -o -D)
  归档模式,表示以归档方式传输文件,并且保持所有属性,等同于-rlptgoD,
  注意!!-a选项后面可以跟一个--no-OPTION
-a --no-l等同于不识别软链接,不等同于L

-r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是兖必须要加-r选项
-v 打印一些信息出来,比如速率,文件数量等
-I 保持软链接
-l 原封不动的吧软链接拷贝下来,原来指向哪里,他就指向哪里
-L (拷贝的就是指向的文件)向对待常规文件一样处理软链接,如果是SRC中有软链接文件,则加上该选项后会“把软连接指向的目标文件拷贝到DST”
-p 保持文件权限
-o 保持文件属主信息
-g 保持文件属组信息
-D 保持设备文件信息
-t 保持文件时间信息
-z 传输过程中压缩,传输完毕后自动解压(他是以什么格式压缩的呢??课后自己研究一下)
-e 指定端口号,格式为-e "ssh -p 2200"

--delete 同步的时候,删除一些DST中SRC没有的文件

-u 加上这个选项后将会把DST中比SRC还新的文件排除掉,不会覆盖 (同步的时候,防覆盖选项,防止把新的东西覆盖了)
最常用的-a -v --delete --exclude

--exclude=PATTERN指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)
(在tar里面也有--exclude filename,但是rsync里面的是要加=)
(如果要过滤多个,就写多个--exclude)
(排除目录,直接--exclude="dirname",不用加/)

--progress在同步过程中可以看到同步的过程状态,比如统计要同步的文件数量,同步的文件传输速度等等
-P 相当于--progress

--bwlimit 限速,单位为kB ,-- bwlimit=100

3.rsync选项讲解
rsync -av dir1/dir2/ #其中dir2/目录可以不存在,记得同步目录时一定要在末尾加上/
-a 会把软连接原原本本地拷贝过去,那有时候我们想拷贝源文件怎么办?这个时候就要用到-L
rsync -avL test1/test2/
-u 选项的作用是,如果目标文件比源文件新,则会忽略掉该文件
touch test2/1.txt;rsync -avu test1/test2/
rsync -av --delete test1/test2/ #这样会把test2/目录比test1/目录多出来的文件删除掉
rsync -a --exclude="2.txt" test1/test2/ #在同步过程中,会忽略掉2.txt这个文件
rsync -a --progress --exclude="*.txt" test1/test2/ # --progress显示同步过程的详细信息,--exclude后面也可以使用通配符号*

4. rsync应用实例 -ssh方式同步

rsync -avL test1/ www@192.168.0.101:/tmp/test2/ 推

指定端口号 -e
rsync -avL -e "ssh -p 2200" 192.168.0.101:/tmp/test2/ /test3/ 拉(但是这个方法需要输入密码,不适合写到脚本里面)
由于需要输入密码所以不适合写到脚本中,但是而已通过创建密钥对,让两台机器产生信任关系从而不用输入密码
如果ssh端口不是22,那么需要写成这样的形式:rsync av "--rsh=ssh -p port" /dir1/ 192.168.0.101:/tmp/dir2/
因此,我们需要秘钥认证,看

////////////////////////生成秘钥////////////////////////////////////
ssh-keygen
我们的公钥私钥文件在 .ssh/id_rsa.pub,cat查看
然后把这个公钥放到对方的机子上面的.ssh/authorized_keys去
按小i添加,保存
然后修改权限600,关闭Selinux,setenforce 0

5.rsync应用实例 - daemon方式
在对方机器上,把它作为一个服务端,只要写一个
配置文件/etc/rsyncd.conf,内容如下:

#port=873 #监听端口默认为873,也可以是别的端口
log file=/var/log/rsync.log #指定日志
pid file=/var/run/rsyncd.pid #指定pid
#address=192.168.0.10 #可以定义绑定的ip
#以上部分为全局配置部分,以下为模板内的配置
[test] #模板名,自定义,这test相当于是路径/root/rsync
path=/root/rsync #指定该模块对应在那个目录下
use chroot=true #是否限定在改目录下,默认为true,但有软连接的时候需要改为false
max connections=4 #指定最大的可连接客户端数
read only=no #是否为只读,如果是yes,客户端就推不到服务器上了
list=true #是否可以列出模块名,通过rsync 192.168.0.110::可以看到
uid=root #以哪个用户的身份来传输
gid=root #以哪个组的身份来
传输
#auth users=test #指定验证用户名,可以不设置,那密码在哪里呢,下面

#secrets file=/etc/rsyncd.passwd #指定密码文件,如果设定验证用户,这一项必须设置
hosts allow=192.168.0.101 #设定可以允许访问的主机,可以是网段
密码文件/etc/rsync.passwd的内容格式为:username:password,然后改权限600

如果写脚本的话
rsync -av --password-file=/etc/pass.txt 3.txt test@192.168.31.112::test/6.txt
chmod 600 /etc/pass.txt

通常情况下不指定密码文件

启动服务的命令是:rsync --daemon
默认去使用/etc/rsyncd.conf这个配置文件
也可以指定配置文件rsync -daemon --config/etc/rsyncd2.conf

可以使用的选项有: rsync --daemon --help

配置文件中几个测试点可以自己尝试一下修改会有哪些不同:

  port,use chroot, log file, secrets file ,host allow ,list

////////////////////////////////////////////////////////////////////////
Linux日常管理拓展
1.tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html
2.iptables应用在一个网段:http://www.aminglinux.com/bbs/thread-177-1-1.html
3.iptables中sant,dant,masquerade http://www.dabu.info/iptables-dnat-and-snat-in-understanding.html
4.iptables实现centos内网访问外网 http://www.aminglinux.com/bbs/thread-3624-1-1.html
5.iptables实现内网ftp对外映射 http://www.aminglinux.com/bbs/thread-1003-1-1.html
6.iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html
7.selinux教程 http://ios.51cto.com/art/201209/355490.htm
8.selinux pdf电子书 http://pan.baidu.com/s/1jGGdExk

1.xinetd服务(默认机器没有安装这个服务,需要yum install xinetd安装)
http://blog.sina.con.cn/s/blog_465bbe6b010000vl.html
2.xargs命令 http://blog.csdn.net/zhangfn2011/article/details/6776925

1.rsync错误二则、排错过程及解决办法: http//www.aminglinux.com/bbs/thread-7812-1-1.html
2.rsync 服务 多个配置文件出错等,快来围观啊(哈?这是什么鬼) http://www.aminglinux.com/bbs/thread-6989-1-1.html
3.rsync 只同步指定类型文件 http://www.aminglinux.com/bbs/thread-6676-1-1.html
4.rsync 如何在远程自动创建某 http://www.aminglinux.com/bbs/thread-1047-1-1.html
5.rsync 根据一个文件列表文档来同步 http://www.aminglinux.com/bbs/thread-1024-1-1.html

http://www.cnblogs.com/Anker/p/3271773.html 孤儿进程和僵尸进程