Linux常用命令之三

目录

 

LVM逻辑卷管理器

RAID独立冗余磁盘阵列

linux的安全防护:firewalld和TCP Wrappers 服务

iptables 与 firewalld区别

linux10-使用 ssh 服务管理远程主机


LVM逻辑卷管理器

LVM 初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。

LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的低层架构和布局,就可以实现对硬盘分区的动态调整。

物理卷处于 LVM 中的最底层,可以将其理解为物理硬盘、硬盘分区或者 RAID 磁盘阵列,这都可以。卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。这就是 LVM 的核心理念。

功能   物理卷管理   卷组管理   逻辑卷管理
扫描      pvscan      vgscan     lvscan
建立    pvcreate     vgcreate    lvcreate
显示    pvdisplay    vgdisplay  lvdisplay 
删除     pvremove    vgremove  lvremove
扩展                 vgextend   lvextend
缩小                 vgreduce   lvreduce

部署逻辑卷
第一步:让新添加的两块硬盘设备支持 LVM 技术
[root@linuxprobe ~]# pvcreate /dev/sdb /dev/sdc 

第二步:把两块硬盘设备加入到 storage 卷组中,然后查看卷组的状态
[root@linuxprobe ~]# vgcreate storage /dev/sdb /dev/sdc
[root@linuxprobe ~]# vgdisplay 

第一种是以容量为单位,所使用的参数为-L
第二种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为 4MB。例如,使用-l 37 可以生成一个大小为 37×4MB=148MB 的逻辑卷。

  第三步 切割出一个约为 150MB 的逻辑卷设备
lvcreate -n vo -l 37 storage
lvdisplay

   第四步 把生成好的逻辑卷进行格式化,然后挂载使用。
mkfs.ext4 /dev/storage/vo 
mount /dev/storage/vo /linuxprobe 
   第五步 查看挂载状态,并写入到配置文件,使其永久生效
[root@linuxprobe ~]# df -h 


7.2.2  扩容逻辑卷
第一步:逻辑卷 vo 扩展至 290MB。
root@linuxprobe ~]# lvextend -L 290M /dev/storage/vo
第二步:检查硬盘完整性,并重置硬盘容量。
root@linuxprobe ~]# e2fsck -f /dev/storage/vo
第三步:重新挂载硬盘设备并查看挂载状态
[root@linuxprobe ~]# mount -a [root@linuxprobe ~]# df -h

7.2.3  缩小逻辑卷
首先把
[root@linuxprobe ~]# umount /linuxprobe
第二步:检查文件系统的完整性
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo 
第三步:把逻辑卷 vo 的容量减小到 120MB。
resize2fs /dev/storage/vo 120M 
第四步:重新挂载文件系统并查看系统状态。
df -h

7.2.4 逻辑卷快照
 LVM 还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间点功能
两个特点:
快照卷的容量必须等同于逻辑卷的容量;
快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。

首先查看卷组的情况 
[root@linuxprobe ~]# vgdisplay
可以看到卷组已使用多少容量
空闲容量还有多少

第一步使用-s 参数生成一个快照卷,使用-L 参数指定切割的大小。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作。
[root@linuxprobe ~]#  lvcreate -L 120M -s -n SNAP /dev/storage/vo

使用lvdisplay可以看到逻辑卷 SNAP的情况

第二步:在逻辑卷所挂载的目录中创建一个 100MB 的垃圾文件,然后再查看快照卷的状态。可以发现存储空间占的用量上升了
dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M

第三步:为了校验 SNAP 快照卷的效果,需要对逻辑卷进行快照还原操作。
首先卸载挂载目录
使用快照卷还原
[root@linuxprobe ~]# lvconvert --merge /dev/storage/SNAP


删除逻辑卷
第一步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。
[root@linuxprobe ~]# umount /linuxprobe 
[root@linuxprobe ~]# vim /etc/fstab 
第二步:删除逻辑卷设备,需要输入 y 来确认操作
[root@linuxprobe ~]# lvremove /dev/storage/vo 

第三步:删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。
[root@linuxprobe ~]# vgremove storage
第四步:删除物理卷设备。
[root@linuxprobe ~]# pvremove /dev/sdb /dev/sdc

RAID独立冗余磁盘阵列

为什么要使用RAID?
  因为cpu处理性能保持着高速增长,但是硬盘设备的性能提升却不是很大。因此成为当代计算机整体的瓶颈。
  由于硬盘设备需要持续,频繁,大量的io操作,相较于其他设备,其损坏的几率也增加,导致重要数据丢失的几率也随之增加。
什么是RAID?
   RAID技术通过把多个磁盘设备组成一个容量更大,安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备,从而起到了非常好的数据冗余备份效果。

RAID是以成本换数据价值

RAID 0 把多块物理硬盘设备至少两块通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中

缺点:这种方式可以使设备读写性能会提升数倍,但不具备数据备份和错误修复能力

RAID 1 它是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。
 缺点:虽然很安全,但硬盘设备的利用率下降

RAID5 技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。 RAID 5 磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命
缺陷;就是 RAID 5 技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据

RAID 10 技术需要至少 4 块硬盘来组建,其中先分别两两制作成 RAID 1 磁盘阵列,以保证数据的安全性;然后再对两个 RAID 1 磁盘阵列实施 RAID 0 技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏 50%的硬盘设备而不丢失数据。


部署磁盘阵列
mdadm [模式] <RAID设备名称> [选项] [成员设备名称]”
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-V 显示过程
-f 模拟设备损坏
-r 移出设备
-Q查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列
-a yes 参数代表自动创建设备文件;-n 4 参数代表使用 4 块硬盘来部署这个RAID 磁盘阵列
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde 
 

损坏磁盘阵列及修复
应该使用 mdadm 命令将其移除,然后查看 RAID 磁盘阵列的状态,可以发现状态已经改变
mdadm /dev/md0 -f /dev/sdb

替换
mdadm /dev/md0 -a /dev/sdb


磁盘阵列+备份盘

参数-n 3 代表创建这个RAID 5 磁盘阵列所需的硬盘数,参数-l 5 代表 RAID 的级别,而参数-x 1 则代表有一块备份盘
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/ sdd /dev/sde 

linux的安全防护:firewalld和TCP Wrappers 服务

firewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合。

firewalld中常用的区域名称及规则

trusted  允许所有的数据包
home   拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh,mdns,ipp-client,amba-client与dhcpv6-client服务相关,则允许流量。

internal  等同于home区域

work   拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh,ipp-client与dhcpv6-client服务相关,则允许流量

public  拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh,dhcpv6-client服务相关,则允许流量

external  拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量

dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量

block 拒绝流入的流量,除非与流出的流量相关

drop   ,拒绝流入的流量,除非与流出的流量相关


firewalld-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界面)版本。它的参数一般都是以“长格式”来提供的,大家不要一听到长格式就头大,因为 RHEL 7 系统支持部分命令的参数补齐

--get-default-zone 查询默认的区域名称
--set-default-zone=<区域名称> 设置默认的区域,使其永久生效
--get-zones 显示可用的区域
--get-services 显示预先定义的服务
--get-active-zones 显示当前正在使用的区域与网卡名称
--add-source= 将源自此ip或子网的流量导向指定区域
--remove-source= 不再将源自此IP或子网的流量导向某个指定区域 
--add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称> 将某个网卡与区域进行关联
--list-all  显示当前区域的网卡配置参数,资源,端口以及服务等信息
--list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=<服务名>  设置默认区域允许该服务的流量
--add-port=<端口号/协议>  设置默认区域允许该端口的流量
--remove-service=<服务名>  设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议>   设置默认区域不再允许该端口的流量
--reload  让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic-on  开启应急状况模式
--panic-off   关闭应急状况模式


使用 firewalld 配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。需要使用永久(Permanent)模式了,方法就是在用 firewall-cmd 命令正常设置防火墙策略时添加--permanent 参数,这样配置的防火墙策略就可以永久生效了 
如果想让配置的策略立即生效,需要手动执行 firewall-cmd --reload 命令


启动/关闭 firewalld 防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用):
[root@linuxprobe ~]# firewall-cmd --panic-on success 

[root@linuxprobe ~]# firewall-cmd --panic-off success 

把 firewalld 服务的当前默认区域设置为 public:
[root@linuxprobe ~]# firewall-cmd --set-default-zone=public success 
[root@linuxprobe ~]# firewall-cmd --get-default-zone  public 

把 firewalld 服务中请求 HTTPS 协议的流量设置为永久允许,并立即生效:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https success 

把 firewalld 服务中请求 HTTP 协议的流量设置为永久拒绝,并立即生效:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --remove-service=http success 


把原本访问本机 888 端口的流量转发到 22 端口,要且求当前和长期均有效:
流量转发命令格式为firewall-cmd --permanment --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口>:toaddr=<目标IP地址>

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-forward-port= port=888:proto=tcp:toport=22:toaddr=192.168.10.10 
success
 
[root@linuxprobe ~]# firewall-cmd --reload 

在客户端使用 ssh 命令尝试访问 192.168.10.10 主机的 888 端口:
是可以的,相当于把访问本机的888流量转入22端口,照样使用ssh服务

firewalld 中的富规则它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有正对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。

eg:我们可以在 firewalld 服务中配置一条富规则,使其拒绝192.168.10.0/24 网段的所有用户访问本机的 ssh 服务(22 端口)
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule=" rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" 
success 

服务的访问控制列表

Linux 系统中其实有两个层面的防火墙,第一种是前面讲到的基于 TCP/IP 协议的流量过滤工具,而 TCP Wrappers 服务则是能允许或禁止 Linux 系统提供服务的防火墙,从而在更高层面保护了 Linux 系统的安全运行。

TCP Wrappers 服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量。

控制列表文件修改后会立即生效,系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;如果没有匹配,则去进一步匹配拒绝控制列表文件(/etc/hosts.deny),若找到匹配项则拒绝该流量。如果这两个文件全都没有匹配到,则默认放行流量。


在配置 TCP Wrappers 服务时需要遵循两个原则:
1.编写拒绝策略规则时,填写的是服务名称,而非协议名称
2.建议先编写拒绝策略规则,再编写允许策略规则,以便直观地看到相应的效果。

单一主机  192.168.1.1
指定网段  192.168.1.
指定网段   192.168.1.0/255.255.255.0
指定DNS后缀  .linuxprobe.com
指定主机名称   www.linuxprobe.com
指定所有客户端  ALL


编写拒绝策略规则文件 禁止访问本机 sshd 服务的所有流量
[root@linuxprobe ~]# vim /etc/hosts.deny 
sshd:*
[root@linuxprobe ~]# ssh 192.168.10.10 
ssh_exchange_identification: read: Connection reset by peer

允许策略规则文件中添加一条规则
[root@linuxprobe ~]# vim /etc/hosts.allow 

iptables 与 firewalld区别

*公网与企业内网之间充当保护屏障的防火墙虽然有软件或硬件之分
*防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。
*在 RHEL 7 系统中,firewalld 防火墙取代了 iptables 防火墙。
*其实,iptables 与 firewalld 都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。
区别:iptables服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理
firewalld 服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理

*当前在Linux 系统中其实存在多个防火墙管理工具。只需要配置妥当其中的一个就足够了

iptables
策略与规则链
  防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)
  如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略
  iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类
在进行路由选择前处理数据包(PREROUTING)
处理流入的数据包(INPUT)
 
处理流出的数据包(OUTPUT)

处理转发的数据包(FORWARD)
在进行路由选择后处理数据包(POSTROUTING)

因为从内网向外网发送的流量一般都是可控且良性的,我们使用最多的就是INPUT规则链,该规则链可以增大黑客人员入侵内网的难度。

在处理完根据策略的流量后,iptables可以采取的动作
ACCEPT(允许流量通过)、REJECT(拒绝流量通过)、LOG(记录日志信息)、 DROP(拒绝流量通过)。
REJECT 和 DROP 的不同点:就 DROP 来说,它是直接将流量丢弃而且不响应;REJECT 则会在拒绝流量后再回复一条“您的信息已经收到,但是被扔掉了”信息,从而让流量发送方清晰地看到数据被拒绝的响应信息。

Linux 系统中的防火墙策略修改成 DROP 拒绝动作后,流量发送方会看到响应超时的提醒。但是流量发送方无法判断流量是被拒绝,还是接收方主机当前不在线。

iptables 中基本的命令参数
iptables 命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配。
防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误。

-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外
-d 匹配目标地址
-i网卡名称 匹配从这块网卡流入的数据
-o网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP,UDP,ICMP
--dport num 匹配目标端口号
--sport num 匹配来源端口号

查看已有的防火墙规则链
iptables -L
清空已有的防火墙规则链
iptables -F

把INPUT规则链的默认策略设置为拒绝
iptables -P INPUT DROP
规则链的默认拒绝动作只能是 DROP,而不能是 REJECT

向INPUT链中添加允许ICMP流量进入的策略规则
iptables -I INPUT -p icmp -j ACCEPT

删除INPUT规则链中刚刚加入的那条策略,并把默认规则设置允许
iptable -D INPUT 1
iptables -P INPUT ACCEPT

将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j REJECT

防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务


向INPUT规则链中添加拒绝所有人访问本机12345端口的策略规则
[root@linuxprobe ~]# iptables -I INPUT -p tcp --dport 12345 -j REJECT 
[root@linuxprobe ~]# iptables -I INPUT -p udp --dport 12345 -j REJECT

向INPUT 规则链中添加拒绝192.168.10.5主机访问本机80端口的策略
iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT

向INPUT规则链中添加拒绝所有主机访问本机1000~1024端口的策略
 iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT 
iptables -A INPUT -p udp --dport 1000:1024 -j REJECT 

使用 iptables 命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令:
root@linuxprobe ~]# service iptables save 

linux10-使用 ssh 服务管理远程主机

配置网络服务;
远程控制服务; 
不间断会话服务。
9.1  配置网络服务
9.1.1  配置网络参数
在RHEL7系统中可以使用nmtui命令来配置网络,可以开启一个图形化界面。
在 RHEL 5、RHEL 6 系统及其他大多数早期的 Linux 系统中,网卡的名称一直都是 eth0、 eth1、eth2、……,但在 RHEL 7 中则变成了类似于 eno16777736 

9.1.2  创建网络会话
RHEL 和 CentOS 系统默认使用 NetworkManager 来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。
可以使用 nmcli 命令来管理 Network Manager 服务。nmcli 是一款基于命令行的网络配置工具,功能丰富,参数众多。它可以轻松地查看网络信息或网络状态:

nmcli connection show 


RHEL7 系统支持网络会话功能,允许用户在多个配置文件中快速切换(非常类似于 firewalld 防火墙服务中的区域技术)。如果我们在公司网络中使用笔记本电脑时需要手动指定网络的 IP 地址,而回到家中则是使用 DHCP 自动分配 IP 地址。

使用 nmcli 命令并按照“connection add con-name type ifname”的格式来创建网络会话。假设将公司网络中的网络会话称之为 company,将家庭网络中的网络会话称之为 house,现在依次创建各自的网络会话。

con-name 参数指定公司所使用的网络会话名称 company,然后依次用 ifname 参数指定本机的网卡名称
autoconnect no 参数设置该网络会话默认不被自动激活,以及用 ip4 及 gw4 参数手动指定网络的 IP 地址

[root@linuxprobe ~]# nmcli connection add con-name company ifname eno16777736 autoconnect no type ethernet ip4 192.168.10.10/24 gw4 192.168.10.1

启用 house网络会话
[root@linuxprobe ~]# nmcli connection up house  

9.1.3 绑定两块网卡
生产环境必须提供 7×24 小时的网络传输服务。借助于网卡绑定技术,不仅可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。假设我们对两块网卡实施了绑定技术,这样在正常工作中它们会共同传输数据,使得网络传输的速度变得更快;而且即使有一块网卡突然出现了故障,另外一块网卡便会立即自动顶替上去,保证数据传输不会中断

书上有配置两块网卡的步骤和过程
1.添加网卡设备,确保网卡模式相同,否则两块网卡无法互相传送数据
2.使用vi文本编辑器来配置网卡设备的绑定参数
这些原本的网卡设备不再有自己的IP地址,都需要被配置为从属网卡
还需要将绑定后的设备命名为bond0并把IP地址等信息填写进去,当使用时,实际上由两块网卡设备在共同提供服务。
3.让linux内核支持网卡绑定驱动。
网卡绑定驱动有三种模式 model0,model1,mode6
  mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
  mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
  mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。

  使用 Vim 文本编辑器创建一个用于网卡绑定的驱动文件,使得绑定后的 bond0 网卡设备能够支持绑定技术(bonding);同时定义网卡以 mode6 模式进行绑定,且出现故障时自动切换的时间为 100 毫秒。
[root@linuxprobe ~]# vim /etc/modprobe.d/bond.conf alias bond0 bonding 
options bond0 miimon=100 mode=6 
4.重启网络服务后网卡绑定操作即可成功。

猜你喜欢

转载自blog.csdn.net/qq_35240226/article/details/82973604