日常运维(3)

内容摘要:

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

 

一、netfilter——iptables规则备份和恢复

  • 命令service iptables save  会将规则直接保存到/etc/sysconfig/iptables 中并在系统启动时直接加载生效。
  • 命令iptables-save > /指定地址  将规则输出从定向到指定地址备份。
  • 命令iptables-restore < /规则备份文件  将备份的规则文件加载到规则中去(重启后失效)。

二、firewalld的9个zone

firewalld中每一个zone代表着一个规则集。

  • 命令firewall-cmd --get-zones,可以查看firewalld的9个zone。
  • 命令firewall-cmd --get-default-zone,可以查看系统设置的zone(默认为public)。
  • 启动firewalld步骤如下:
  1. 禁止启动iptables:systemctl disable iptables
  2. 关闭iptables:systemctl stop iptables
  3. 开机启动firewlld:systemctl enable firewalld
  4. 启用firewlld:systemctl start firewalld
  • firewalld的9个zone
  1. drop(丢弃):任何接收的网络数据包到被丢弃,没有任何回复。仅能发送出的网络连接。
  2. block(限制):任何接收的网络连接都被  IPV4  的  icmp-host-prohibited信息和  IPV6  的  icmp-adm-prohibited信息所拒绝。
  3. public(公共):在公共区域使用,不能相信网络内的其他计算机不会对你的计算机造成危害,只能接收经过选取的连接。
  4. external(外部):特别是为路由器启用了伪装功能的外部网。你不能信任来自网络的其他计算机,不能相信它们不会对你的计算机造成伤害,只能接收过选择的连接。
  5. dmz(非军事区):用于你的非军事区内的计算器,此区域内可公共访问,可以有限制地进入你的内部网络,仅仅接收经过选择的连接。
  6. work(工作):用于工作区。你可以基本信任网络内的其他计算机不会危害你的计算机。仅仅接收经过选择的连接。
  7. home(家庭):用于家庭网络。你可以基本信任网络内的其他计算机不会危害你的计算机。仅仅接收经过选择的连接。
  8. internal(内部):用于内部网络。你可以基本上信任网络内的其他计算机不会威胁你的计算机。仅仅接收经过选择的连接
  9. 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    该命令为临时增加,重启后失效。
  • 将指定的service服务添加到指定的zone下并保存进配置文件:firewall-cmd --zone=public --add-service=ftp --permanent
  1. 使用--permanent命令配置的服务不会立即生效,需要重启firewalld或者重新加载firewalld服务: firewalld-cmd --reload             
  2. 在目录  /etc/firewalld/zones/   下保存有相关zone的配置文件,默认为空,只有当执行上面的这条命令才会出现。
  3. 在目录 /usr/lib/firewalld/zones/  和  /usr/lib/firewalld/services/ 下分别放有zones和services的配置模板。
  • 需求:假如服务器配置了一个FTP服务,但端口并非默认的21,而是1121,并且需要在work zone 下面放行ftp。

操作步骤如下:

             1.复制ftp配置模板到/etc/firewalld/services/目录下:cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/

             2.修改ftp配置文件将端口改为1121: vi /etc/firewalld/services/ftp.xml

             3.复制work配置模板到/etc/firewalld/zones/目录下:cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/

             4.修改work配置文件在里面增加一行FTP相关的配置:vim /etc/firewalld/zones/work.xml

                如图:

日常运维(3)_第1张图片

            5.重新加载服务:firewall-cmd --reload

            6.配置完成并重新加载后,可以同 firewall--cmd --zone=work --list-service  验证是否添加成功。

五、linux任务计划cron

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

在目录/etc/crontab, 保存有任务的配置文件,如图:

日常运维(3)_第2张图片

  • 设定任务计划:crontab -e    

              1.分范围0-59,时范围0-23,日范围0-31,月范围1-12,周范围0-6

              2.可用格式1-5表示一个范围1到5

              3.可用格式1,2,3表示1或者2或者3

              4.可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时。

  • 每2个月的1-10号的星期2或星期5的凌晨三点,执行该脚本,并将正确结果重定向追加到123.log,错误重定向也追加到该文件中去。如图所示:  

              

  • 列出计划列表:crontab -l
  • 删除计划列表:crontab -r (会删除全部计划,慎用)
  • 备份计划列表:在目录/var/spool/cron/root 下保存有root用户的任务计划列表,备份该目录即可备份root用户的计划列表。
  • 启动任务计划服务:systemctl start crond
  • 查看计划是否启动:systemctl status crond   (显示绿色为开启状态,否则为未开启)

六、chkcongfig服务管理工具(CentOS6)

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

  • 列出所有服务及其每个级别的开启状态: 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/ 目录下才能添加)

日常运维(3)_第3张图片

  • 删除一个服务: chkconfig --del 123

七、systemd服务管理(CentOS 7)

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

  • 列出所有的服务:systemctl list-units-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

八、systemd——unit介绍

  • 在  /usr/lib/systemd/system  下保存有所有的unit,unit的类型如下:
  1. service:系统服务
  2. target:多个unit组成的组
  3. device:硬件设备
  4. mount:文件系统挂载点
  5. automount:自动挂载点
  6. path:文件或路径
  7. scope:不是由systemd启动的外部进程
  8. slice:进程组
  9. snapshot:systemd的快照
  10. socket:进程间通信的套接字
  11. swap:swap文件
  12. 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 --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。

  • 列出所有的target:systemctl list-unit-files --type=target  
  • 查看指定target下有哪些unit:systemctl list-dependencies multi-user.target   (显示multi-user.targetxia 下有哪些unit)
  • 查看系统默认的target:systemctl get-default
  • 设置更改默认的target:systemcetl set-default multi-user.target  (设置默认target时会自动生成一个软链接,如图)

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

日常运维(3)_第4张图片

扩展:

  • firewalld默认的9个zone说明

区域

说明

drop(丢弃)

任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。

block(限制)

任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。

public(公共)

在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。

external(外部)

特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。

dmz(非军事区)

用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。

work(工作)

用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。

home(家庭)

用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。

internal(内部)

用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。

trusted(信任)

可接受所有的网络连接。

  • 给指定zone来添加服务
  1. 可增加 --permanent选项并重新加载防火墙,使之成为永久性设置。
  2. firewall-cmd --reload重载防火墙不中断已建立连接
  3. firewall-cmd --complete-reload不仅仅中断您已经移除的服务,还会中断所有已经建立的连接。
  • 当使用者执行crontab命令时,系统会按如下步骤操作
  1. 先查找/etc/corn.allow文件,在该文件中存在的用户可以使用crontab,不在该文件中的用户不能使用crontab(即使用没有写在/etc/cron.deny中)
  2. 如果没有/etc/cron.allow就寻找/etc/cron.deny文件,在该文件中存在的用户不能使用crontab,在该文件中不存的用户就可以用crontab
  3. 如果两个文件都不存在,则只有root可以使用crontab。
  4. 多数linux版本默认的文件是/etc/cron.deny,而且该文件为空
  • chkconfig工具
  1. Centos6及以前版本系统中运行级
  2. 等级0表示:表示关机
  3. 等级1表示:单用户模式
  4. 等级2表示:多用户模式,少nfs服务
  5. 等级3表示:多用户模式,不带图形
  6. 等级4表示:是一种保留的级别
  7. 等级5表示:带图形界面的多用户模式
  8. 等级6表示:重新启动
  9. 在centos6中的 /etc/inittab 中定义开机的默认运行级别
  10. 在centos7中,已经没有用运行级的概念了,只是为了向上兼容。
  • systemd 的目标是:
  1. 尽可能启动更少的进程
  2. 尽可能将更多进程并行启动
  • 扩展链接:
  1. iptables相关:https://www.zsythink.net/archives/tag/iptables/page/2/
  2. Anacron相关:https://www.jianshu.com/p/3009a9b7d024?from=timeline
  3. xinetd守护进程:http://blog.sina.com.cn/s/blog_465bbe6b010000vi.html
  4. systemd自定义启动脚本:http://www.jb51.net/article/100457.htm

你可能感兴趣的:(笔记)