iptables规则的保存 备份 恢复
规则保存
编辑完iptables的规则使用命令:
service iptables save
把规则保存在iptables的配置文件里面:/etc/sysconfig/iptables
备份规则
想把此刻的规则备份一下,一般情况是拷贝一个iptables的配置文件,也可以对规则进行备份。可以直接查看备份文件。
iptables-save > my.ipt
cat my.ipt
恢复规则
规则修改完发现不能正常通信,想恢复到原来的规则,可以把备份的iptables配置文件进行覆盖,也可以把备份的规则进行恢复。
iptables-restore < my.ipt
设定的防火墙规则只是保存在内存中,并没有保存到配置文件中,也就说当系统重启后以前设定的规则就没有了,所以
设定好规则后要先保存规则,以免重启后规则丢失。
[root@yuzaoqian ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
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规则。
在Centos7中使用firewalld防火墙
[root@yuzaoqian ~]# systemctl stop iptables.service
[root@yuzaoqian ~]# systemctl disable iptables.service
Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.
[root@yuzaoqian ~]# systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
Active: inactive (dead) since Thu 2018-08-30 11:07:58 CST; 21s ago
Main PID: 15897 (code=exited, status=0/SUCCESS)
Aug 28 09:20:13 yuzaoqian systemd[1]: Starting IPv4 firewall with iptables...
Aug 28 09:20:13 yuzaoqian iptables.init[15897]: iptables: Applying firewall rules: [ OK ]
Aug 28 09:20:13 yuzaoqian systemd[1]: Started IPv4 firewall with iptables.
Aug 30 11:07:58 yuzaoqian systemd[1]: Stopping IPv4 firewall with iptables...
Aug 30 11:07:58 yuzaoqian iptables.init[18895]: iptables: Setting chains to policy ACCEPT: filter [ OK ]
Aug 30 11:07:58 yuzaoqian iptables.init[18895]: iptables: Flushing firewall rules: [ OK ]
Aug 30 11:07:58 yuzaoqian iptables.init[18895]: iptables: Unloading modules: [ OK ]
Aug 30 11:07:58 yuzaoqian systemd[1]: Stopped IPv4 firewall with iptables.
Hint: Some lines were ellipsized, use -l to show in full.
[root@yuzaoqian ~]# ystemctl start firewalld.service
(由于没有安装firewalld于是重新安装)
-bash: ystemctl: command not found
[root@yuzaoqian ~]# yum install firewalld
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
epel | 3.2 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/3): epel/x86_64/updateinfo | 937 kB 00:00:00
(2/3): updates/7/x86_64/primary_db | 5.2 MB 00:00:00
(3/3): epel/x86_64/primary | 3.6 MB 00:00:01
Loading mirror speeds from cached hostfile
epel 12662/12662
Resolving Dependencies
--> Running transaction check
---> Package firewalld.noarch 0:0.4.3.2-8.1.el7_3.3 will be updated
---> Package firewalld.noarch 0:0.4.4.4-14.el7 will be an update
--> Processing Dependency: python-firewall = 0.4.4.4-14.el7 for package: firewalld-0.4.4.4-14.el7.noarch
--> Processing Dependency: firewalld-filesystem = 0.4.4.4-14.el7 for package: firewalld-0.4.4.4-14.el7.noarch
--> Running transaction check
---> Package firewalld-filesystem.noarch 0:0.4.3.2-8.1.el7_3.3 will be updated
---> Package firewalld-filesystem.noarch 0:0.4.4.4-14.el7 will be an update
---> Package python-firewall.noarch 0:0.4.3.2-8.1.el7_3.3 will be updated
---> Package python-firewall.noarch 0:0.4.4.4-14.el7 will be an update
--> Processing Conflict: firewalld-0.4.4.4-14.el7.noarch conflicts selinux-policy < 3.13.1-118.el7
--> Restarting Dependency Resolution with new changes.
--> Running transaction check
---> Package selinux-policy.noarch 0:3.13.1-102.el7_3.16 will be updated
--> Processing Dependency: selinux-policy = 3.13.1-102.el7_3.16 for package: selinux-policy-targeted-3.13.1-102.el7_3.16.noarch
--> Processing Dependency: selinux-policy = 3.13.1-102.el7_3.16 for package: selinux-policy-targeted-3.13.1-102.el7_3.16.noarch
---> Package selinux-policy.noarch 0:3.13.1-192.el7_5.6 will be an update
--> Processing Dependency: policycoreutils >= 2.5-18 for package: selinux-policy-3.13.1-192.el7_5.6.noarch
--> Running transaction check
---> Package policycoreutils.x86_64 0:2.5-11.el7_3 will be updated
---> Package policycoreutils.x86_64 0:2.5-22.el7 will be an update
--> Processing Dependency: libsepol >= 2.5-8 for package: policycoreutils-2.5-22.el7.x86_64
--> Processing Dependency: libselinux-utils >= 2.5-12 for package: policycoreutils-2.5-22.el7.x86_64
---> Package selinux-policy-targeted.noarch 0:3.13.1-102.el7_3.16 will be updated
---> Package selinux-policy-targeted.noarch 0:3.13.1-192.el7_5.6 will be an update
--> Running transaction check
---> Package libselinux-utils.x86_64 0:2.5-6.el7 will be updated
---> Package libselinux-utils.x86_64 0:2.5-12.el7 will be an update
--> Processing Dependency: libselinux(x86-64) = 2.5-12.el7 for package: libselinux-utils-2.5-12.el7.x86_64
---> Package libsepol.x86_64 0:2.5-6.el7 will be updated
---> Package libsepol.x86_64 0:2.5-8.1.el7 will be an update
--> Running transaction check
---> Package libselinux.x86_64 0:2.5-6.el7 will be updated
--> Processing Dependency: libselinux(x86-64) = 2.5-6.el7 for package: libselinux-python-2.5-6.el7.x86_64
---> Package libselinux.x86_64 0:2.5-12.el7 will be an update
--> Running transaction check
---> Package libselinux-python.x86_64 0:2.5-6.el7 will be updated
---> Package libselinux-python.x86_64 0:2.5-12.el7 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================================
Package Arch Version Repository Size
==========================================================================================================
Updating:
firewalld noarch 0.4.4.4-14.el7 base 418 k
selinux-policy noarch 3.13.1-192.el7_5.6 updates 453 k
Updating for dependencies:
firewalld-filesystem noarch 0.4.4.4-14.el7 base 49 k
libselinux x86_64 2.5-12.el7 base 162 k
libselinux-python x86_64 2.5-12.el7 base 235 k
libselinux-utils x86_64 2.5-12.el7 base 151 k
libsepol x86_64 2.5-8.1.el7 base 297 k
policycoreutils x86_64 2.5-22.el7 base 867 k
python-firewall noarch 0.4.4.4-14.el7 base 328 k
selinux-policy-targeted noarch 3.13.1-192.el7_5.6 updates 6.6 M
Transaction Summary
==========================================================================================================
Upgrade 2 Packages (+8 Dependent packages)
Total download size: 9.5 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/10): firewalld-filesystem-0.4.4.4-14.el7.noarch.rpm | 49 kB 00:00:00
(2/10): libselinux-2.5-12.el7.x86_64.rpm | 162 kB 00:00:00
(3/10): firewalld-0.4.4.4-14.el7.noarch.rpm | 418 kB 00:00:00
(4/10): libselinux-utils-2.5-12.el7.x86_64.rpm | 151 kB 00:00:00
(5/10): libselinux-python-2.5-12.el7.x86_64.rpm | 235 kB 00:00:00
(6/10): libsepol-2.5-8.1.el7.x86_64.rpm | 297 kB 00:00:00
(7/10): python-firewall-0.4.4.4-14.el7.noarch.rpm | 328 kB 00:00:00
(8/10): policycoreutils-2.5-22.el7.x86_64.rpm | 867 kB 00:00:00
(9/10): selinux-policy-3.13.1-192.el7_5.6.noarch.rpm | 453 kB 00:00:00
(10/10): selinux-policy-targeted-3.13.1-192.el7_5.6.noarch.rpm | 6.6 MB 00:00:01
----------------------------------------------------------------------------------------------------------
Total 4.5 MB/s | 9.5 MB 00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : libsepol-2.5-8.1.el7.x86_64 1/20
Updating : libselinux-2.5-12.el7.x86_64 2/20
Updating : libselinux-utils-2.5-12.el7.x86_64 3/20
Updating : policycoreutils-2.5-22.el7.x86_64 4/20
Updating : selinux-policy-3.13.1-192.el7_5.6.noarch 5/20
Updating : python-firewall-0.4.4.4-14.el7.noarch 6/20
Updating : firewalld-filesystem-0.4.4.4-14.el7.noarch 7/20
Updating : firewalld-0.4.4.4-14.el7.noarch 8/20
Updating : selinux-policy-targeted-3.13.1-192.el7_5.6.noarch 9/20
Updating : libselinux-python-2.5-12.el7.x86_64 10/20
Cleanup : selinux-policy-targeted-3.13.1-102.el7_3.16.noarch 11/20
Cleanup : firewalld-0.4.3.2-8.1.el7_3.3.noarch 12/20
Cleanup : selinux-policy-3.13.1-102.el7_3.16.noarch 13/20
Cleanup : policycoreutils-2.5-11.el7_3.x86_64 14/20
Cleanup : libselinux-utils-2.5-6.el7.x86_64 15/20
Cleanup : libselinux-python-2.5-6.el7.x86_64 16/20
Cleanup : firewalld-filesystem-0.4.3.2-8.1.el7_3.3.noarch 17/20
Cleanup : python-firewall-0.4.3.2-8.1.el7_3.3.noarch 18/20
Cleanup : libselinux-2.5-6.el7.x86_64 19/20
Cleanup : libsepol-2.5-6.el7.x86_64 20/20
Verifying : firewalld-filesystem-0.4.4.4-14.el7.noarch 1/20
Verifying : libselinux-python-2.5-12.el7.x86_64 2/20
Verifying : libselinux-2.5-12.el7.x86_64 3/20
Verifying : libselinux-utils-2.5-12.el7.x86_64 4/20
Verifying : python-firewall-0.4.4.4-14.el7.noarch 5/20
Verifying : firewalld-0.4.4.4-14.el7.noarch 6/20
Verifying : selinux-policy-targeted-3.13.1-192.el7_5.6.noarch 7/20
Verifying : policycoreutils-2.5-22.el7.x86_64 8/20
Verifying : libsepol-2.5-8.1.el7.x86_64 9/20
Verifying : selinux-policy-3.13.1-192.el7_5.6.noarch 10/20
Verifying : python-firewall-0.4.3.2-8.1.el7_3.3.noarch 11/20
Verifying : policycoreutils-2.5-11.el7_3.x86_64 12/20
Verifying : selinux-policy-targeted-3.13.1-102.el7_3.16.noarch 13/20
Verifying : libselinux-utils-2.5-6.el7.x86_64 14/20
Verifying : selinux-policy-3.13.1-102.el7_3.16.noarch 15/20
Verifying : libselinux-2.5-6.el7.x86_64 16/20
Verifying : libselinux-python-2.5-6.el7.x86_64 17/20
Verifying : firewalld-filesystem-0.4.3.2-8.1.el7_3.3.noarch 18/20
Verifying : firewalld-0.4.3.2-8.1.el7_3.3.noarch 19/20
Verifying : libsepol-2.5-6.el7.x86_64 20/20
Updated:
firewalld.noarch 0:0.4.4.4-14.el7 selinux-policy.noarch 0:3.13.1-192.el7_5.6
Dependency Updated:
firewalld-filesystem.noarch 0:0.4.4.4-14.el7 libselinux.x86_64 0:2.5-12.el7
libselinux-python.x86_64 0:2.5-12.el7 libselinux-utils.x86_64 0:2.5-12.el7
libsepol.x86_64 0:2.5-8.1.el7 policycoreutils.x86_64 0:2.5-22.el7
python-firewall.noarch 0:0.4.4.4-14.el7 selinux-policy-targeted.noarch 0:3.13.1-192.el7_5.6
Complete!
[root@yuzaoqian ~]# systemctl start firewalld.service
[root@yuzaoqian ~]# systemctl enable firewalld.service
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@yuzaoqian ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2018-08-30 11:11:43 CST; 37s ago
Docs: man:firewalld(1)
Main PID: 19071 (firewalld)
CGroup: /system.slice/firewalld.service
└─19071 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Aug 30 11:11:43 yuzaoqian systemd[1]: Starting firewalld - dynamic firewall daemon...
Aug 30 11:11:43 yuzaoqian systemd[1]: Started firewalld - dynamic firewall daemon.
Aug 30 11:11:44 yuzaoqian firewalld[19071]: ERROR: Failed to load service file '/usr/lib/firewalld/...mn 0
Hint: Some lines were ellipsized, use -l to show in full.
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.