0418日常运维(三)iptables规则备份和恢复、firewalld的9个zone、任务计划、chkconfig工具、systemd管理服务、unit、target...

 

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介绍

扩展
firewalld自定义iptables规则  https://blog.51cto.com/jevic/1785162
提供一个iptables系列文章的博客  https://www.zsythink.net/archives/tag/iptables/page/2/
anacron https://www.jianshu.com/p/3009a9b7d024?from=timeline
systemd自定义启动脚本  http://www.jb51.net/article/100457.htm

 

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

服务:

da81bc34d7c47914d66baa3b1d19980944a.jpg

 

 

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

d197b5120be3165a2740ae4e6b74ae7cb55.jpg

第二步,给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
0870cc1987b4eba147b36b3c0f326a1d699.jpg

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

5f6710fb5aeb482583fd2b66f8ad4eb29ff.jpg

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

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

b5b06ee31829beb9c70006fdaed2d612306.jpg

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

58fd0c16340af29ff7dae8dd6adfdf247e1.jpg

 

2、firewalld的9个zone

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

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

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

71217bee9f99f3e77985bcf2a0f200c6618.jpg

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

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

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

ebec92b30ec5d1b97260d4d1c3655a35edc.jpg

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

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

c8d2f7a598c9fe12d4f87c43b22fafd4573.jpg

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

895c6cdd8a9d9930cd17857211c4fb5fd7e.jpge8e4ea7fa4d816c47c4ea5eb330f568c3a4.jpg

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

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

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

5924683b0ea5597bb0a760ef2a06858b897.jpg

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下面,只是暂时写入内存中

f78e2e9a3b389255e7ff4d4c43876452379.jpg

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

71b2351392705d50b841fd792f95f7b954b.jpg

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

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

00a5ec4b9a4840bee676330e55161d88d5b.jpg  firewall-cmd --zone=public --remove-service=ftp   移除ftp

b5f8f649af3ebf7cdc1ab1de428e9b29c7c.jpg

需求: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

3105e33cb423fdb8af97c4720419c9ad07b.jpg

第三步、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"/>


1872427905165871a0796c3d98dbbec9e66.jpg

第五步、重新加载服务

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

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

ee8c652432df0da63de43c032cd8f2cd2e2.jpg

5、linux任务计划cron

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

 

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

341d9a759cef102011647b38a51e50df5d4.jpg

用 crontab -e 编写任务计划

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

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

6990e88827d7f1b934749e1cafaaa39844d.jpg
 

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

0448de4033700132dc7ec6d8ba250b8577f.jpg

也可以使用范围

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

0f64a878cb43c55628695703eddffe3e288.jpg

 分范围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  使用此命令查看开启状态,绿色代表已经启动,未启动没有颜色

7f38aa864956ef59e86f70bf04371a97d1a.jpg

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

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

crontab -l  查询计划

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

21070b4341ea4d3588d9c3f612a2758ccba.jpg

crontab -r   删除任务

868b9594e49b885a94a37f29bbb5207181f.jpg

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

8c256cbd5b140e7075ba4ed7eb9a0ad903e.jpg

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

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

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

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

6、chkconfig工具

Linux系统服务管理-chkconfig

 chkconfig --list   查看服务

019bf8429ae6f880011215ef926cc3404d1.jpg

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

daf57ee432d2be5d4de0da314d90a24077b.jpg

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

8540868c73dfd23985969c5c7357913d81c.jpg

chkconfig network off    关闭network

cbba673bb77d917f6e9ed423b1f47219433.jpg

chkconfig network on   on打开network

76c59283845a43d24c6c433dd9c214752fb.jpg

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

54f0af2b74cc22baf2b8b82c9dc78eedab2.jpg

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

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

231e333bad0cf2ab9110f386fc3b97a8d5e.jpg

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

6dc486b54df37cfc3178f8217eba1c12787.jpg

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

c756d937c2127def56baded50f025746967.jpg

chkconfig --del 123   从服务中删除

8c85c932dbd07069c6694615dbe6bf7200c.jpg

7、systemd管理服务

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

e9df6e6c547569fac52de696d7f91826bf0.jpg

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

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 定时器

37332fff4609c0db2d90a8cec23b3905a4e.jpg

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

de216229d75482a421b17590d9f0c1be231.jpg

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

bbab1e502fcda7f3322527ed6f95fb309a3.jpg

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

95b108d21ebe88b1bcec34a71ad04b4f1e6.jpg

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

7a995010e4df369dc5e018c0d617c520f2e.jpg

一个service属于一种类型的unit  

多个unit组成了一个target  

一个target里面包含了多个service

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

26c6fdec72c0b1126b0f76f9455be7f36a2.jpg

 

转载于:https://my.oschina.net/u/4093217/blog/3038309

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值