日常运维【3】

  •  
  • iptables规则备份和恢复
  • firewalld的9个zone
  • firewalld关于zone的操作
  • firewalld关于service的操作
  • linux任务计划cron
  • chkconfig工具
  • systemd管理服务
  • unit介绍
  • target介绍

一、iptables规则备份和恢复【netfilter】

  • 命令service iptables save  会将规则直接保存到/etc/sysconfig/iptables 中并在系统启动时直接加载生效。
  • 命令iptables-save > /指定地址  将规则输出从定向到指定地址备份。
  • iptables-save > /tmp/ipt.txt
  • 命令iptables-restore < /规则备份文件  将备份的规则文件加载到规则中去(重启后失效)。
  • iptables-restore < /tmp/ipt.txt
  • 备份的规则,只有恢复的时候会用到,若是服务器一重启,就想要加载一些规则,那最好将规则放
  • 到/etc/sysconfig/iptables文件中去

二、firewalld的9个zone

  • 启动firewalld步骤如下:
  1. 禁止启动iptables:systemctl disable iptables
  2. 关闭iptables:systemctl stop iptables
  3. 开机启动firewlld:systemctl enable firewalld
  4. 启用firewlld:systemctl start firewalld
  • 命令firewall-cmd --get-zones,可以查看firewalld的9个zone。
  • 命令firewall-cmd --get-default-zone,可以查看系统设置的zone(默认为public)。
  • firewalld默认有9个zone,zone是firewalld的一个单位,默认使用public zone——>每个zone就好比一个规则集
  • 规则集就是zone里面自带一些规则,比如:这个zone放行了80端口,放行了22端口,关闭了某某端口,这就是一个规则集
概念:fiewalld默认由9个zone,默认zone为public
    drop (丢弃) 任何接受的网络数据包都被丢弃,没有任何回复,仅能发送出去的网络链接
    block(限制) 任何接受的网络链接都被ipv4和ipv6的信息拒绝
    public(公共) 在公共区域内使用,不能相信网络内的其他计算机不会对你的计算机造成威胁,所以只能接受经过选取的链接。
    extrenal(外部)为路由器启用了伪装功能的外部网,不能信任来自任何网络的其他计算机,不能相信他们不会对你的计算机造成畏寒,所以只能接受经过选择的链接
    dmz(非军事区)此区域为公开访问,可以有限的进入内部网络,仅接受经过选择的链接
    work(工作)用于工作期,仅接受经过选择的链接
    home(家庭)用于家庭网络,仅接受经过选择的链接
    internal(内部)用户内部网络,仅接受经过选择的链接
    trusted(信任)可以接受所有的网络链接

三、firewalld关于zone的操作

  • 设定默认的zone为work:firewall-cmd --set-default-zone=work
  • 查看指定网卡所在的zone:firewall-cmd --get-zone-of-interface=ens33
  • 给指定网卡设置zone:firewall-cmd --zone=dmz --add-interface=ens33
  • 针对网卡更改zone:firewall-cmd --zone=dmz --change-interface=ens33
  • 针对网卡删除zone:firewall-cmd --zone=dmz --remove-interface=ens33
  • 查看系统所有网卡所在的zone:firewall-cmd --get-active-zones

四、 firewalld关于service的操作 

sevice就是针对一个服务(端口)做的iptables的规则,每个zone都使用了不同service,类似于白名单。

  • 查看当前系统所有的service:firewall-cmd --get-service
  • 查看当前zone下的service:firewall-cmd --list-service
  • 查看指定zone的service:firewall-cmd --zone=public --list-service
  • 将http服务加到指定的zone下:firewall-cmd --zone=public --add-service=http    该命令为临时增加,重启后失效。
  • 将ftp服务加到指定的zone下:firewall-cmd --zone=public --add-service=ftp    该命令为临时增加,重启后失效。
  • 将指定的service服务添加到指定的zone下并保存进配置文件:firewall-cmd --zone=public --add-service=ftp --permanent
  1. 使用--permanent命令配置的服务不会立即生效,需要重启firewalld或者重新加载firewalld服务: firewall-cmd --reload             
  2. 在目录  /etc/firewalld/zones/   下保存有相关zone的配置文件,默认为空,只有当执行上面的这条命令才会出现。
  3. 在目录 /usr/lib/firewalld/zones/  和  /usr/lib/firewalld/services/ 下分别放有zones和services的配置模板。
     

 

需求:假如服务器配置了一个FTP服务,但端口并非默认的21,而是1121,并且需要在work zone 下面放行ftp。

实现:


[root@gaodehua33~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services 复制ftp配置模板到/etc/firewalld/services/目录下
[root@gaodehua33 ~]# vi /etc/firewalld/services/ftp.xml
将内容中的21端口改为1121端口


 
[root@gaodehua33 ~]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ 复制work配置模板到/etc/firewalld/zones/目录下
[root@gaodehua33 ~]# vi /etc/firewalld/zones/work.xml
增加一行,内容为 <service name="ftp"/>


 
[root@gaodehua33 ~]# firewall-cmd --reload        //重新加载
success
[root@gaodehua33 ~]# firewall-cmd --zone=work --list-services 验证是否添加成功
dhcpv6-client ftp ipp-client ssh
[root@gaodehua33~]#  成功!

五、linux任务计划cron

  • crontab -u、-e、-l、-r
  • 格式:分 时 日 月 周 user command
  • 文件/var/spool/cron/username
  • 分范围0-59,时范围0-23,日范围1-31,月范围1-12,周1-7
  • 可用格式1-5表示一个范围1到5
  • 可用格式1,2,3表示1或者2或者3
  • 可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时
  • 要保证服务是启动状态
  • systemctl start crond.service

大部分的系统工作都是通过定期自动执行某个脚本来完成的,linux的任务计划功能的操作都是通过crontab命令完成的。在使用任务计划时,都要设定追加正确和错误的日志,这样才能有据可查

  • 在linux系统中,系统计划是必不可少的,比如备份数据,重启服务等
  • 操作过程,可能是一个脚本,有可能是一个单独的命令,在特定的时间去执行它,所以任务计划是不可缺少的
  • 在windows中都是使用的个人电脑,所以任务计划很少见,几乎用不到

linux中计划的配置文件

  • cat /etc/crontab //查看任务计划的配置文件
  • 文件中会定义几个变量
  1. SHELL=/bin/bash
  2. PATH环境变量,它命令的路径
  3. MAILTO发邮件给谁

crontab命令

  • 设定任务计划:crontab -e 
  • 列出计划列表:crontab -l
  • 删除计划列表:crontab -r (会删除全部计划,慎用)
  • 备份计划列表:在目录/var/spool/cron/root 下保存有root用户的任务计划列表,备份该目录即可备份root用户的计划列表。
  • 启动任务计划服务:systemctl start crond
  • 查看计划是否启动:systemctl status crond   (显示绿色为开启状态,否则为未开启)
  1. 分范围0-59,时范围0-23,日范围0-31,月范围1-12,周范围0-
  2. 可用格式1-5表示一个范围1到5
  3. 可用格式1,2,3表示1或者2或者3
  4. 可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时。
  • 每2个月的1-10号的星期2或星期5的凌晨三点,执行该脚本,并将正确结果重定向追加到123.log,错误重定向也追加到该文件中去。如图所示:  
  • 为什么没有年份?
  • 用星期确定你的唯一性,比如说今年的6月18号和明年的6月18号的星期肯定是不同的,这样就可以确定某一天的唯一性

六,chkconfig工具【服务管理工具 CentOS6】

CentOS6上的服务管理工具为chkconfig,Linux系统所有的预设服务到可以通过查看  /etc/init.d/  目录得到。

  • crond、iptables、firewalld、nginx、httpd、mysql等等,都属于服务。
  • chkconfig工具,在centos6和之前的版本中,控制服务的启动;但在centos7中很少使用了,但为了兼容之前的版本,依然可以使用
  • 但在未来的趋势中, 有可能就会被遗弃了,现在就是过度的作用。
     
  • 列出所有服务及其每个级别的开启状态: chkconfig --list
  • 变更某个服务的状态: chkconfig network off或on(off关闭,on开启)
  • 指定服务的某一个级别的状态:chkconfig --level 3 network off  (同时设定多个级别时可以 --level 123  即表示1和2和3同时设定
  • 增加一个新的脚步或服务: chkconfig --add 123    (其中123服务必须在/etc/init.d/ 目录下才能添加)
  • 删除一个服务: chkconfig --del 123

七、systemd服务管理【CentOS 7】

systemd工具

  • systemd是centos7管理的一个服务机制,在centos6或之前的版本中可以使用chkconfig工具去管理系统的服务,在centos7中,也可以使用,但会提示使用 systemctl list-unit-files ,用它来查看所有的服务。

/usr/lib/systemd/system  目录下保存有服务对应的启动脚本文件,在创建启动服务时,生成一个对应的服务文件并软链接到该目录下的一个对应服务文件上去。

  • 列出所有的服务:systemctl list-unit-files
  • 列出指定的服务:systemctl list-units --all --type=service   (不添加--all,则不显示未激活状态的服务)
  • 指定服务开启启动:systemctl enable crond.service  (.service可以被省略)
  • 不让服务开机启动:systemctl disable crond.service
  • 查看服务状态:systemctl status crond.service
  • 启动某个服务:systemctl start crond.service
  • 关闭某个服务:systemctl stop crond.service
  • 重启某个服务:systemctl restart crond.service
  • 查看服务是否开机启动:systemctl is-enabled crond

八,unit介绍 【systemd】

在  /usr/lib/systemd/system  下保存有所有的unit,unit的类型如下:

  • service:系统服务
  • target:多个unit组成的组
  • device:硬件设备
  • mount:文件系统挂载点
  • automount:自动挂载点
  • path:文件或路径
  • scope:不是由systemd启动的外部进程
  • slice:进程组
  • snapshot:systemd的快照
  • socket:进程间通信的套接字
  • swap:swap文件
  • timer:定时器
  • 一个service属于一种类型的unit,多个unit一起组成了一个target,一个target里面包含了很多个service,在目录/usr/lib/systemd/system/sshd.service里面[install]部分的内容,就定义该service是属于哪一个target。
  • unit相关的命令:
  1. 列出正在运行的unit:systemctl list-units
  2. 列出所有的unit包括失败的和inactive(未激活的):systemctl list-units --all
  3. 列出指定状态的服务:systemctl list-units --all --state=inactive    (也可以设定状态为active的unit
  4. 列出指定类型的服务:systemctl list-units --type=service 不加--all时只显示active状态的服务
  5. 查看某个服务的启动状态:systemctl is-active crond.service

九、 target介绍

  • 多个unit一起组成了一个target,一个target里面包含了很多个service。系统为了方便管理用target来管理unit。
  1. 列出所有的target:systemctl list-unit-files --type=target  
  2. 查看指定target下有哪些unit:systemctl list-dependencies multi-user.target   (显示multi-user.targetxia 下有哪些unit)
  3. 查看系统默认的target:systemctl get-default
  4. 设置更改默认的target:systemctl set-default multi-user.target  。

[root@hf gaodehua33]# systemctl set-default multi-user.target(设置默认target时会自动生成一个软链接)

Removed symlink /etc/systemd/system/default.target.

Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

[root@hf gaodehua33]# ls /etc/systemd/system/default.target

/etc/systemd/system/default.target        {软链接}

  • 查看某个service可以显示属于哪个target:cat /usr/lib/systemd/system/sshd.service  (查看install部分)如图:

猜你喜欢

转载自blog.csdn.net/weixin_42604768/article/details/84886086