10.19 iptables规则备份和恢复
保存和备份iptables规则
设定的防火墙规则只保存在内存中,并没有保存到某一个文件中。也就是说,当系统重启后,之前设定的规则就没有了,所以设定好规则后要先保存下好,命令如下:
它会提示防火墙规则保存在/etc/sysconfig/iptables文件内,这个文件就是iptables的配置文件。以后如果遇到备份防火墙规则的任务,只要复制一份这个文件的副本即可。
有时需要清除防火墙的所有规则,使用命令iptables -F 当然可以实现,但最好的办法还是停止 防火墙服务:
10.20 firewalld的9个zone
firewalld是CentOS7系统的防火墙工具。
在操作firewalld之前,我们先关闭iptables服务,然后再开启firewalld服务:
firewalld有两个基础概念,分别是zone和service,每一个zone里面有不同的iptables规则,默认一共有9个zone,而CentOS7默认的zone为public。获取系统所有的zone,命令如下:
查看系统默认的zone:
firewalld的9个zone:
drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
block(限制):任何接收的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝。
pubilc(公共):在公共区域内使用,不能相信网络内的其他计算机不会对你的计算机造成伤害,只能接收经过选取的连接。
external(外部):特别是为路由器启用了伪装功能的外部网。你不能信任来自网络的其他计算机,不能相信它们不会对你的计算机造成危害,只能接收经过选择的连接。
dmz(非军事区):用于你的非军事区内的计算机,此区域内可公开访问,可以有限地进入你的内部网络,仅仅接收经过选择的连接。
work(工作):用于工作区。你可以基本相信网络内的其他计算机不会危害你的计算机。仅仅接收经过选择的连接。
home(家庭):用于家庭网络。你可以基本信任网络内的其他计算机不会危害你的计算机。仅仅接收经过选择的连接。
internal(内部):用于内部网络。你可以基本信任网络内的其他计算机不会危害你的计算机。仅仅接收经过选择的连接。
trusted(信任):可接受所有的网络连接。
10.21 firewalld关于zone的操作
关于zone的命令:
10.22 firewalld关于service的操作
之所以有9个zone,是因为每一个zone里面都使用了不同的service,而service就是针对一个服务(端口)做的iptables规则。
列出当前系统所有的service:
这些service都是由一个个配置文件定义的,配置文件的模板在/usr/lib/firewalld/services/目录下,真正生效的配置在/etc/firewalld/services目录下面(默认为空):
每个zone里面都有不同的service,那如何查看一个zone下面有哪些service呢?
一个zone下面有某个service,意味着这个service是被信任的。比如,当前zone下面有ssh,那么ssh服务端口(22)是放行的。我们给一个zone添加一个service:
对于每个zone来说,都有自己的配置文件,可以查看目录/usr/lib/firewalld/zones/下面对应的文件,这些就是zone的配置文件:
上面的例子可以在一个zone里面增加一个service,但这种方法仅仅在内存中生效,并没有修改配置文件,如果想修改配置文件,需要加一个选项:
一旦更改了某个zone的配置文件,则会在/etc/firewalld/zones/目录下面生成对应zone的配置文件(.xml后缀的文件),其实这个目录下面的配置文件才是真正的配置文件。
10.23 linux任务计划cron
大部分系统管理工作都是通过定期自动执行某个脚本来完成的,Linux的cron就是用来定期执行脚本的。
Linux任务计划功能的操作都是通过crontab命令来完成的,常用的选项有以下几个:
-u:表示指定某个用户,不加-u则为当前用户。
-e:制定计划任务。
-l:列出计划任务。
-r:删除计划任务。
使用crontab -e来编写任务计划,实际上就是使用vim打开了crontab的配置文件,我们写下如下内容:
从左至右依次为:分、时、日、月、周和命令行。上面例子表示在6月5日(这一天必须是星期三)的10点01分执行命令:echo "ok" > /root/cron.log。
命令crontab -e实际上是撕开了/var/spool/cron/username文件(如果用户是root,则打开的是/var/spool/cron/root)。打开这个文件使用了vim编辑器,所以保存时在命令行模式下输入:wq即可。但是不要直接去编辑那个文件,否则会出错,所以一定要使用命令crontab -e来编辑。
查看已经设定的任务计划:
删除任务计划:
10.24 chkconfig工具
chkconfig是CentOS6上的服务管理工具,Linux系统所有的预设服务都可以通过查看/etc/init.d/目录得到:
我们会发现只有几个文件,这是因为CentOS7已经不再延续CentOS6版本的服务管理方案了。但是我们还是可以继续使用chkconfig这个命令。
系统的预设服务都可以通过这样的命令实现:service 服务名 start | stop | restart。这里的服务名就是/etc/init.d/目录下的这些文件了。启动crond除了可以使用命令service crond start外,还可以使用命令/etc/init.d/crond start。
命令chkconfig --list列出所有的服务及其每个级别的开启状态:
更改某级别下的开启状态:
还可以指定多个级别:
把某个服务加入系统服务或者删除:
10.25 systemd管理服务
systemd是CentOS7上的服务管理工具。
列出系统所有的服务:
这些服务对应的启动脚本文件:
一些常用的命令:
10.26 unit介绍
/usr/lib/systemd/system这里的文件,我们可以把它们分为以下大类:
service:系统服务。
target:多个unit组成的组。
device:硬件设备。
automount:自动挂载点。
path:文件或路径。
scope:不是由systemd启动的外部进程。
slice:进程组。
anapshot:systemd快照。
socket:进程间通信的套接字。
swap:swap文件。
timer:定时器。
下面是几个和unit相关的命令:
#systemctl list-units #列出下在运行(active)的unit
#systemctl list-units --all #列出所有的unit(包括失败的、inactive的)
#systemctl list-units --all --state=inactive #列出所有inactive的unit
#systemctl list-units --all --type=service #列出所有状态的service
#systemctl list-units --type=service #列出状态为active的service
#systemctl is-active crond.service #查看某个unit是否active
10.27 target介绍
target类似于CentOS6里面的启动级别,但target支持多个target同时启动。target其实是多个unit的组合,系统启动其实就是启动多个unit,为了管理方便,就使用target来管理这些unit。
查看当前系统的所有target:
查看一个target包含的所有unit:
关于target的命令:
运行级别和target的对比:
service、unit以及target之间的联系:
1、一个service属于一种unit;
2、多个unit一起组成了一个target;
3、一个target里面包含了多个service,你可以查看文件/usr/lib/systemd/system/sshd.service里面[ install ]部分的内容,它就定义了该service属于哪一个target。