iptables规则的保存 备份 恢复
规则保存
编辑完iptables的规则使用命令:
service iptables save
把规则保存在iptables的配置文件里面:/etc/sysconfig/iptables
备份规则
想把此刻的规则备份一下,一般情况是拷贝一个iptables的配置文件,也可以对规则进行备份。可以直接查看备份文件。
iptables-save > my.ipt
cat my.ipt
恢复规则
规则修改完发现不能正常通信,想恢复到原来的规则,可以把备份的iptables配置文件进行覆盖,也可以把备份的规则进行恢复。
iptables-restore < my.ipt
firewalld介绍
由于centos 7版本以后默认使用firewalld。官方文档如下:
firewalld简介
firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念
firewalld有图形界面和工具界面,由于我在服务器上使用,图形界面请参照官方文档,本文以字符界面做介绍
firewalld的字符界面管理工具是 firewall-cmd
firewalld默认配置文件有两个:/usr/lib/firewalld/ (系统配置,尽量不要修改)和 /etc/firewalld/ (用户配置地址)
zone概念
硬件防火墙默认一般有三个区,firewalld引入这一概念系统默认存在以下区域(根据文档自己理解,如果有误请指正):
drop(丢弃):默认丢弃所有包
block(限制):拒绝所有外部连接,允许内部发起的连接
public(公共):指定外部连接可以进入
external(外部):这个不太明白,功能上和上面相同,允许指定的外部连接
dmz(非军事):和硬件防火墙一样,受限制的公共连接可以进入
work(工作):工作区,概念和workgoup一样,也是指定的外部连接允许
home(家庭):类似家庭组
internal(内部):使用内部网络,信任所有连接。
trusted(信任):可接受所有的网络连接。
安装firewalld:
# yum install firewalld firewall-config
# systemctl enable firewalld
# systemctl start firewalld
运行、停止、禁用firewalld
启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd --state
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld
重载:# firewall-cmd --reload
zone 增删查改设
查看全部的zone
# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
查看默认的zone
# firewall-cmd --get-default-zone
public
修改默认的zone
# firewall-cmd --set-default-zone=work
success
指定网卡查询zone
# firewall-cmd --get-zone-of-interface=ens33
work
# firewall-cmd --get-zone-of-interface=ens37
no zone
给指定网卡设置zone
# firewall-cmd --zone=public --add-interface=ens37
success
给指定网卡修改zone
# firewall-cmd --zone=dmz --change-interface=lo
success
给指定网卡删除zone
# firewall-cmd --zone=dmz --remove-interface=lo
success
# firewall-cmd --get-zone-of-interface=lo
no zone
查看所有网卡所在的zone
# firewall-cmd --get-active-zones
dmz
interfaces: ens37
work
interfaces: ens33
service 增删查改设
查看所有的service,(其实都是一些服务的名字)
# firewall-cmd --get-services
查看当前zone的service
# firewall-cmd --list-services
ssh dhcpv6-client
查看指定zone下的service
# firewall-cmd --zone=public --list-service
ssh dhcpv6-client
把http服务添加指定zone里面
# firewall-cmd --zone=public --add-service=http
success
# firewall-cmd --zone=public --list-service
ssh dhcpv6-client http
把http服务添加指定zone里面,并写入配置文件
# firewall-cmd --zone=public --add-service=http --permanent
success
# cat /etc/firewalld/zones/public.xml
<service name="http"/>
删掉指定zone的http服务
# firewall-cmd --zone=public --remove-service=http
success
firewalld 文件
/etc/firewalld/zones/ 是zone类型开头.xml格式文件。还有前面文件.old结尾的文件的备份。例如:
public.xml public.xml.old。分别保存了现在的文件,和修改之前的备份,用于恢复。
/etc/firewalld/services/ 是service类型的文件。
/usr/lib/firewalld/ 里面的 zones 和 services 目录里,分别保存了模板文件。用于手动添加firewalld规则。
crontab命令
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
在Linux系统中,Linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
crontab命令的语法为:
crontab [选项]
选项:
e:编辑一个新的计划任务
l:显示计划任务
r:删除计划任务
特殊符号含义:
*星号 :任何时刻都接受的意思,例如0 3 * * * 不管什么日期月份周只要到3点就执行工作
,逗号 :分隔的意思,例如0 3,6 * * * 3点和6点都执行工作
-减号 :代表时间范围,例如0 1-3 * * * 123点都执行工作
/n斜线:n为数字,表示每隔几个单位,例如 */5 * * * *每隔5分钟执行工作一次
chkconfig命令检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
语法:
chkconfig(选项)
选项:
--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据;
--del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据;
--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。
查看service的列表信息
chkconfig --list
systemd
系统服务管理systemd Control the systemd system and service manager #控制systemd系统和服务管理
先前的使用SysV初始化或Upstart的红帽企业版Linux版本中,使用位于/etc/rc.d/init.d/目录中的bash初始化脚本进行管理。
在RHEL 7/CentOS 7中,这些启动脚本被服务单元取代了。为了向后兼容,旧的service命令在CentOS 7中仍然可用,它会重定向所有命令到新的systemctl工具。
systemd的特性有:
- 支持并行化任务
- 同时采用socket式与D-Bus总线式激活服务;
- 按需启动守护进程(daemon);
- 利用Linux的cgroups监视进程;
- 支持快照和系统恢复;
- 维护挂载点和自动挂载点;
- 各服务间基于依赖关系进行精密控制
Systemd可以管理所有系统资源,不同的资源统称为 Unit(单位),Unit可以归为以下几大类:
service:系统服务
target:多个unit组成的组
device:硬件设备
mount:文件系统挂载点
automount:自动挂载点
path:文件或路径
scope:不是由systemd启动的外部进程
slice:进程组
snapshot:systemd快照
socket:进程间的通信的套接字
swap:swap文件
timer:定时器
unit命令:
#systeamctl list-units // 列出正在运行的unit
#systeamctl list-units --all //列出所有的unit
#systeamctl list-units --all --state=inactive //列出所有inactive的unit
#systeamctl list-units --all --type=service//列出所有状态的service
#systeamctl list-units --type=service//列出状态为active的service
#systeamctl is-active crond.service//查看某个unit是否为active
target类似于centos6中的启动级别,但target支持多个同时启动,target其实是多个unit的组合,系统启动说白了就是启动多个unit,为了管理方便,就使用target来管理这些unit
service、unit、target之间的联系
一个service属于一种unit
多个unit组成了target
一个target里面包含了多个service,你可以查看文件/usr/lib/systemd/system/ssh.service里面的isntall部分的内容,它定义了该service属于那种target.