10.19 iptables规则备份和恢复
我们在设置防火墙规则的时候,规则只是保存在内存中,并没有保存到某一个文件中。系统重启之后,之前设定的规则就没有了,所以设定好之后要先保存一下,使用命令:
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ 确定 ]
会看到提示,防火墙规则保存在/etc/sysconfig/iptables文件内,这个文件就是iptables的配置文件。所以如要备份防火墙规则,复制一份这个文件的复本即可。有时候我们需要清楚防火墙规则,使用iptables -F,但是最好的方法是停止防火墙服务:
[root@localhost ~]# service iptables stop
Redirecting to /bin/systemctl stop iptables.service
[root@localhost ~]# service iptables stop
Redirecting to /bin/systemctl stop iptables.service
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
这样防火墙就停止了,并且规则也清除了。但是一旦重新设置规则,防火墙服务回自动重启。那么我们来为防火情重新设置规则,并备份规则:
[root@localhost ~]# sh /usr/local/sbin/iptables.sh //通过脚本设置规则
[root@localhost ~]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
6 428 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- * * 192.168.204.0/24 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 4 packets, 528 bytes)
pkts bytes target prot opt in out source destination
[root@zlinux ~]# iptables-save > myipt.rule //备份规则,重定向到myipt.rule
[root@zlinux ~]# cat myipt.rule //打开备份文件
# Generated by iptables-save v1.4.21 on Fri Jan 26 16:19:22 2018
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [40:4728]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.204.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
COMMIT
# Completed on Fri Jan 26 16:19:22 2018
如果需要恢复这些规则,使用以下命令:
[root@localhost ~]# iptables-restore < myipt.rule
10.20 firewalld的9个zone
firewalld默认有9个zone(zone是firewalld的单位)
默认zone为public
drop(丢弃):任何接受的网络数据包都被丢弃,没有任何恢复,仅能有发送出去的网络连接(数据包不能进来,但是可以出去)
block(限制):任何接受的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝。(和drop相比,比较宽松一些,主要是为了针对icmp)
piblic(公共):在公共区域内使用,不能相信网络内其他计算机不会对你造成危害,只能接受经过选取的连接。
external(外部):特别是为路由器启用了伪装功能的外部网,你不能信任来自网络的其他计算,不能相信他们不会对你造成伤害,只能接受经过选择的连接。
dmz(非军事区):用于你的非军事区内的电脑,此区域可公开访问,可以有限的进入你的内部网络,仅仅接受经过选择的连接。
work(工作):用于工作区,你可以基本信任网络内的其他电脑不会对你造成危害,仅仅接收经过选择的连接。
home(家庭):用于内部网络,你可以基本上信任网络内其他电脑不会对你造成危害,仅仅接收经过选择的连接。
internal(内部):用于内部网络,你可以基本上信任网络内其他电脑不会对你造成危害,仅仅接收经过选择的连接。
trusted(信任):可接受所有的网络连接。
[root@localhost ~]# firewall-cmd --get-zones (查看所有zone的命令,一共有9个zone)
work drop internal external trusted home dmz public block
[root@localhost ~]# firewall-cmd --get-default-zone (查看默认的zone的命令)
public
10.21 firewalld关于zone的操作
每个zone就是一套规则集,但是有那么多zone,不知道怎样用、在哪里用也不行,在/usr/lib/iptables/zone,保存着zone的配置文件
对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
1、source,也就是源地址
2、interface,接收请求的网卡
3、firewalld.conf中配置的默认zone
这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个。
[root@localhost ~]# firewall-cmd --get-active-zones (查看素有网卡所拥有的zone)
public
interfaces: ens33 ens37
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33 (查看指定网卡的zone)
public
[root@localhost ~]# firewall-cmd --zone=public --add-interface=lo (给指定网卡设置zone)
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=lo
public
[root@localhost ~]# firewall-cmd --zone=dmz --change-interface=lo (给指定网卡更改zone)
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=lo
dmz
[root@localhost ~]# firewall-cmd --zone=dmz --remove-interface=lo (指定网卡删除zone,会恢复到默认网卡zone)
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=lo
no zone
没有办法删除网卡的默认zone,如果要更改,可以使用以下命令更改默认zone:
[root@localhost ~]# firewall-cmd --set-default-zone=work
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
work
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens37
work
10.22 firewalld关于service的操作
1. firewall-cmd --get-services 查看系统所有的services
2. firewall-cmd --list-service 查看当前默认的zone下有哪些service
3. firewall-cmd --zone= --list-service 查看指定zone的service
4.firewall-cmd --zone=zonename --add-service= 服务名 将一个服务添加到一个zone里面
5. --permanent 将更改写入配置文件,不加这个参数只保存在内存中,没有写配置文件 /etc/firewalld/zones/public.xml
10.23 linux任务计划cron
crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
命令选项:
-e:=edit 编辑用户的计时器设置
-l:=list 列出用户的计时器设置
-r:=remove 删除用户的计时器设置
-u:=user 指定设定计时器的用户
10.24 chkconfig工具
chkconfig命令检查、设置系统的各种服务
选项:
--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据;
--del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据;
--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。
等级代号列表:
· 等级0表示:表示关机
· 等级1表示:单用户模式
· 等级2表示:无网络连接的多用户命令行模式
· 等级3表示:有网络连接的多用户命令行模式
· 等级4表示:不可用
· 等级5表示:带图形界面的多用户模式
· 等级6表示:重新启动
命令chkconfig –list列出所有的服务及其每个级别的开启状态。
10.25 systemd管理服务
在centos7使用 Systemd 来管理服务,system:系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其他进程,根据管理,字母d是守护进程(daemon)的缩写,systemd这个名字的含义就是它要守护整个系统。
常用命令:
Systemctl enable crond.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.service//查看某个服务是否开机启动
10.26 unit介绍
unit表示不同类型的sytemd对象,通过配置文件进行标识和配置,文件中主要包含了系统服务,监听socket、保存的系统快照以及其他与init相关的信息
配置文件:
/usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/initd.d
/run/system/system:系统执行过程中所产生的服务脚本,比上面的目录优先运行
/etc/system/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行,在三者之中,此目录优先级最高
unit相关命令
10.27 target介绍
http://note.youdao.com/groupshare/?token=9C1195E40F024155AD27C5EB997D1960&gid=28142651
扩展
提供一个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