4月18日任务
10.19 iptables规则备份和恢复
10.20 firewalld的9个zone
10.21 firewalld关于zone的操作
10.22 firewalld关于service的操作
10.23 linux任务计划cron
10.24 chkconfig工具
10.25 systemd管理服务
10.26 unit介绍
10.27 target介绍

firewall-cmd --add-port=80/tcp

firewall-cmd --permanent --add-port=80/tcp; firewall-cmd --reload

firewall-cmd --permanent --add-service=http; firewall-cmd --reload

 

firewall-cmd 如何添加自定义规则

Centos7 Firewalld 自定义富规则  https://blog.51cto.com/jevic/1785162

服务:

执行iptables flush怎么恢复 iptables恢复规则_配置文件

 

 

1、iptables备份和恢复
设定的防火墙规则只保存在内存中,并没有保存到某个文件中。也就是说,当系统重启后以前设定的规则就没有了,所以设定好规则后要先保存一下
service iptables save                    会把规则保存到/etc/sysconfig/iptables里

iptables-save > my.ipt             把iptables规则备份到my.ipt文件中
iptables-restore < my.ipt         恢复刚才备份的规则

第一步,先清除nat表的所有规则,并查看  

iptables -t nat -F

iptables -t nat -nvL

执行iptables flush怎么恢复 iptables恢复规则_网络_02

第二步,给nat表写入两条规则,并查看

iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.86.3

iptables -t nat -A PREROUTING -d 192.168.86.3 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

执行iptables flush怎么恢复 iptables恢复规则_配置文件_03

第三步、用 service iptables save  保存规则,存到配置文件中,重启也生效,并查看配置文件  /etc/sysconfig/iptables 是否已经保存

执行iptables flush怎么恢复 iptables恢复规则_xml_04

第四部、使用iptables-save > my.ipt 备份配置文件

第五步,清除nat表规则,并查看

执行iptables flush怎么恢复 iptables恢复规则_配置文件_05

第六步、恢复备份文件,iptables-restore < my.ipt,查看,已经恢复

执行iptables flush怎么恢复 iptables恢复规则_操作系统_06

 

2、firewalld的9个zone

使用 firewalled      firewalled     ->    Centos7及后续版本使用

之前打开了iptables,需要禁掉,打开firewalld防火墙   

 systemctl disable iptables
 systemctl stop iptables
 systemctl enable firewalld
 systemctl start firewalld

执行iptables flush怎么恢复 iptables恢复规则_操作系统_07

firewalld默认有9个zone (zone是firewalld的单位),默认zone为public

drop  数据包不能进来,但是可以出去,最安全的

block 和drop相比,比较宽松一些,主要针对icmp

执行iptables flush怎么恢复 iptables恢复规则_操作系统_08

 查看所有zone命令         firewall-cmd --get-zones

查看默认zone    firewall-cmd --get-default-zone

执行iptables flush怎么恢复 iptables恢复规则_操作系统_09

3、firewalld关于zone的操作

每个zone就是一套规则集,在/usr/lib/iptables/zone,保存着zone的配置文件对于一接受到的请求具体使用哪个zone, firewalld是通过三种方法来判断的:
1) source,也就是源地址 
2) interface,接收请求的网卡
3) firewalld.conf中配置的默认zone 这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个。

针对网卡zones的一些常用命令

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

执行iptables flush怎么恢复 iptables恢复规则_配置文件_10

执行iptables flush怎么恢复 iptables恢复规则_操作系统_11

firewall-cmd --zone=dmz --add-interface=lo   给指定网卡设置zone为dmz

firewall-cmd --get-zone-of-interface=lo   查看lo网卡的zone

firewall-cmd --get-default-zone  查看默认zone

执行iptables flush怎么恢复 iptables恢复规则_python_12

4、firewalld关于service的操作

之所以有9种zone,是因为每一个zone里面都使用了不同的service,而service就是针对一个服务(端口)做的iptables规则。zone就是一个规则集合

http操作的是80端口
https操作的是443端口
ssh操作的是22端口

firewall-cmd --get-services  查看系统中所有的servies
firewall-cmd --get-default-zone   查看系统当前默认zone
firewall-cmd --list-services  //查看当前zone下有哪些service
firewall-cmd --zone=(zone名) --list-service        //把指定的zone下的service列出来
firewall-cmd --zone=public --add-service=http //把http增加到public zone下面,只是暂时写入内存中

执行iptables flush怎么恢复 iptables恢复规则_python_13

firewall-cmd --zone=public --add-service=ftp --permanent     //更改配置文件,之后会在/etc/firewalld/zones/目录下面生成配置文件,目录下存放的是系统firewalld服务所用到的配置文件,把service永久的加入到指定zone下,需要使用--permanent 永久保存到配置文件,才能在配置文件中找到,每次更改后,都会把旧文件做备份:public.xml.old,.old为后缀名

执行iptables flush怎么恢复 iptables恢复规则_python_14

 ls /usr/lib/firewalld/zones/     //zone的配置文件模板(共9个)

ls /usr/lib/firewalld/services/       服务

执行iptables flush怎么恢复 iptables恢复规则_操作系统_15

 firewall-cmd --znotallow=public --remove-service=ftp   移除ftp

执行iptables flush怎么恢复 iptables恢复规则_配置文件_16

需求:ftp服务自定义端口1121,需要在work zone下面放行ftp,把ftp添加到work zone下即可

第一步:ftp.xml模板复制到/etc/firewalld/services/目录下

cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/

第二步、编辑刚刚复制过来ftp.xml文件

vi /etc/firewalld/services/ftp.xml     //把21改为1121

执行iptables flush怎么恢复 iptables恢复规则_操作系统_17

第三步、work.xml 模板复制到/etc/firewalld/zones/目录下
cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/

第四步、编辑刚刚复制过来work.xml文件

vi /etc/firewalld/zones/work.xml         //增加一行<service name="ftp"/>

执行iptables flush怎么恢复 iptables恢复规则_网络_18

第五步、重新加载服务

firewall-cmd --reload        重新加载服务

 firewall-cmd --zone=work --list-services        把指定的work zone下的service列出来,此时ftp已经添加

执行iptables flush怎么恢复 iptables恢复规则_网络_19

5、linux任务计划cron

cat /etc/crontab,查看到的数字从左到右依次为:分、时、日、月、周和命令行

 

格式:分 时 日 月 周 (0-6,0或7代表周日) user(用户,如果在root用户下定义计划,默认为root) command (要执行的命令)
 

执行iptables flush怎么恢复 iptables恢复规则_操作系统_20

用 crontab -e 编写任务计划

实际上 crontab -e 是打开了/var/spool/cron/用户名

注意:不要编辑里面的文件,直接crontab -e编辑(一般备份任务计划时用到直接cp这个目录即可)

执行iptables flush怎么恢复 iptables恢复规则_网络_21


 

每天凌晨3点执行命令:0 3 * * *  command (要执行的命令)

执行iptables flush怎么恢复 iptables恢复规则_python_22

也可以使用范围

0 3 1-10 */2 2,5   每两个月(*/2 被2整除)的1号到10号,周二到周五,每天3点执行命令

执行iptables flush怎么恢复 iptables恢复规则_网络_23

 分范围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  编写完成后启动服务

systemctl start crond.service   停止服务

systemctl status crond.service  使用此命令查看开启状态,绿色代表已经启动,未启动没有颜色

执行iptables flush怎么恢复 iptables恢复规则_网络_24

当命令不执行时,命令有可能并没有在cat /etc/crontab中的PATH里面,需要写绝对路径(最好写绝对路径),或者把命令的路径加入到变量中

每次写完计划任务时,要追加一个日志,正确和错误的输出日志,方便查询

crontab -l  查询计划

crontab文件位置:/var/spool/cron/root    会有对应的用户文件,以用户的名字命名的文件,需要备份的话直接cp这个目录即可

执行iptables flush怎么恢复 iptables恢复规则_操作系统_25

crontab -r   删除任务

执行iptables flush怎么恢复 iptables恢复规则_操作系统_26

 crontab -u root -l       //crontab -u  指定用户

执行iptables flush怎么恢复 iptables恢复规则_配置文件_27

-----------------------------------------------------------------------------------------

cron (crond) 是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。

service crond start //启动服务 
service crond stop //关闭服务 
service crond restart //重启服务
service crond reload //重新载人配置 
service crond status //查看服务状态

-----------------------------------------------------------------------------------------

6、chkconfig工具

Linux系统服务管理-chkconfig

 chkconfig --list   查看服务

执行iptables flush怎么恢复 iptables恢复规则_python_28

CentOS6用到的服务管理都是SysV,而7换成了systemd;

执行iptables flush怎么恢复 iptables恢复规则_xml_29

查看Linux所有的预设服务:ls /etc/init.d/

执行iptables flush怎么恢复 iptables恢复规则_xml_30

chkconfig network off    关闭network

执行iptables flush怎么恢复 iptables恢复规则_网络_31

chkconfig network on   on打开network

执行iptables flush怎么恢复 iptables恢复规则_配置文件_32

回顾这里7个系统启动级别的知识,现在CnetOS7已经不再严格区分,但6之前包括6是有规定的:

执行iptables flush怎么恢复 iptables恢复规则_网络_33

chkconfig --level 3 network off   更改某个级别下的状态,把3级别关闭  (0,1,6级别不要开启)

chkconfig --level 35 network off   关闭多个级别

执行iptables flush怎么恢复 iptables恢复规则_网络_34

 chkconfig --add 123   把123加入到服务列表中,需要先把脚本或文件放到/etc/init.d/目录下,只有在这个目录下才能添加到服务列表,

执行iptables flush怎么恢复 iptables恢复规则_网络_35

这两部分必须存在,才能被识别

执行iptables flush怎么恢复 iptables恢复规则_配置文件_36

chkconfig --del 123   从服务中删除

执行iptables flush怎么恢复 iptables恢复规则_xml_37

7、systemd管理服务

systemctl list-units --all --type=service     列出所有的服务和其他的信息

执行iptables flush怎么恢复 iptables恢复规则_操作系统_38

几个常用的服务相关的命令  

systemctl enable crond.service //让服务开机启动  

systemctl disable crond //不让开机启动  

systemctl status crond //查看状态  

systemctl stop crond //停止服务  

systemctl start crond //启动服务  

systemctl restart crond //重启服务  

systemctl is-enabled crond //检查服务是否开机启动

 

8、unit介绍

ls /usr/lib/systemd/system //系统所有unit,分为以下类型

service 系统服务  

target 多个unit组成的组  

device 硬件设备  

mount 文件系统挂载点  

automount 自动挂载点  

path 文件或路径  

scope 不是由systemd启动的外部进程

slice 进程组  

snapshot systemd快照  

socket 进程间通信套接字  

swap  swap文件  

timer 定时器

执行iptables flush怎么恢复 iptables恢复规则_python_39

unit相关的命令  

systemctl list-units //列出正在运行的unit  

systemctl list-units --all //列出所有,包括失败的或者inactive的  

systemctl list-units --all --state=inactive //列出inactive的unit  

systemctl list-units --type=service    //列出状态为active的service ,不加--all,将会列出 active的service

systemctl is-active crond.service     //查看某个服务是否为active

9、target介绍

系统为了方便管理用target来管理unit

systemctl list-unit-files --type=target    查看当前系统的所有target

执行iptables flush怎么恢复 iptables恢复规则_python_40

systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit

执行iptables flush怎么恢复 iptables恢复规则_配置文件_41

systemctl get-default //查看系统默认的target

执行iptables flush怎么恢复 iptables恢复规则_python_42

systemctl set-default multi-user.target        设置一个默认的target

执行iptables flush怎么恢复 iptables恢复规则_xml_43

一个service属于一种类型的unit  

多个unit组成了一个target  

一个target里面包含了多个service

cat /usr/lib/systemd/system/sshd.service     //查看sshd.service属于哪个target,看[install]部分

执行iptables flush怎么恢复 iptables恢复规则_python_44