一、iptables规则备份和恢复
二、firewalld的9个zone
三、firewalld关于zone的操作
四、firewalld关于service的操作
五、linux任务计划cron
六、chkconfig工具
七、systemd管理服务
八、unit介绍
九、target介绍
一、iptables规则备份和恢复
1.1 设定的防火墙规则只是保存在内存中,并没有保存到配置文件中,也就说当系统重启后以前设定的规则就没有了,所以
设定好规则后要先保存规则,以免重启后规则丢失。
1.2 保存和备份iptables规则
1.2.1 保存规则
#service iptables save 会把刚写入的规则保存到默认文件/etc/sysconfig/iptables中
1.2.2 备份规则:iptables-save
格式:#iptables-save > filename.ipt
1.2.3 恢复到刚才备份的规则:iptables-restore
格式:#iptables-restore < filename.ipt
二、firewalld的9个zone
2.1 在Centos7中使用firewalld防火墙
2.1.1 关闭iptables,开启firewalld
2.2 firewalld的9个zones
firewalld默认的9个zone说明:
drop(丢弃) 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
block(限制) 任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的icmp6-adm-prohibited 信息所拒绝。
public(公共) 在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
external(外部) 特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
dmz(非军事区) 用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
work(工作) 用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
home(家庭) 用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。
internal(内部) 用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。
trusted(信任) 可接受所有的网络连接。
2.2.1 安装时,firewalld 里的默认zone被设定为公共区域。
查看所有zone命令:firewall-cmd --get-zones
查看默认zone:firewall-cmd --get-default-zone
三、firewalld关于zone的操作
3.1 firewalld有两个基础的概念,分别是zone和service,每一个zone里面有不同的iptables规则。
3.1.1 设定系统默认的zone
# firewall-cmd --set-default-zone=work //设定默认zone为work
# firewall-cmd --get-default-zone //验证设定成功
3.1.2 查看指定网卡的zone
# firewall-cmd --get-zone-of-interface=ens33 //查看指定网卡zone
3.1.3 给指定网卡设置zone
# firewall-cmd --zone=public --add-interface=ens33
# firewall-cmd --get-zone-of-interface=ens33
3.1.4 给指定网卡变更zone
# firewall-cmd --zone=public --change-interface=ens33
# firewall-cmd --get-zone-of-interface=ens33
3.1.5 删除指定网卡的zone
# firewall-cmd --zone=public --remove-interface=ens33
# firewall-cmd --get-zone-of-interface=ens33
//删除ens33接口所在的zone,ens33接口变为默认zone
3.2 查看活动zone的列表
# firewall-cmd --get-active-zones
3.3 查看某区域下绑定的接口
# firewall-cmd --zone=work --list-interface
3.4 查看指定区域的所有设置
# firewall-cmd --zone=work --list-all
3.5 查看指定区域开放的端口
# firewall-cmd --zone=dmz --add-port=8080/tcp //将8080端口加入dmz区域
# firewall-cmd --zone=dmz --list-ports //验证
四、firewalld关于service的操作
4.1 一项服务可以是本地和目的地端口的列表,如果服务被允许的话,也可以是一系列自动加载的防火墙辅助模块。预先定
义的服务的使用,让客户更容易被允许或者被禁止进入服务。与对开放端口或者值域,或者端口截然不同,使用预先定
义服务,或者客户限定服务,或许能够让管理更容易。
4.2 关于service的操作
4.2.1 # firewall-cmd --get-services //列出系统里所有的service
//或者# ls -l /usr/lib/firewalld/services/ | awk '{print $9}' | sed -r 's#(.*)\.xml$#\1#'
4.2.2 # firewall-cmd --list-services //查看默认zone下的service
4.2.3 # firewall-cmd --zone=work --list-services //查看指定zone下的service
4.2.4 给指定zone来添加(删除)服务
//可增加 permanent选项并重新加载防火墙,使之成为永久性设置。
//firewall-cmd --reload ///重载防火墙不中断已建立连接
//firewall-cmd --complete-reload //不仅仅中断您已经移除的服务,还会中断所有已经建立的连接。
①# firewall-cmd --zone=public --add-service=ftp (只是加在了内存中)或# firewall-cmd --zone=public --add-service=ftp --permanent (加在配置文件中,永久生效) //增加ftp服务
# firewall-cmd --zone=public --list-services //验证
②//或在/etc/firewalld/zones/public.xml文件中增加如下行
#firewall-cmd --reload ///重载防火墙
4.2.5 从指定zone移除服务
①# firewall-cmd --zone=public --remove-service=ftp
②//或从/etc/firewalld/zones/public.xml文件中移除如下行
//
将添加后的服务保存到配置文件(会在/etc/firewalld/zones目录生成一个配置文件)
4.2.6 /etc/firewalld/zones目录下的配置文件说明
# ls /etc/firewalld/zones/
public.xml public.xml.old //以.old结尾的文件类似模板,当你第一次使用permanent的时候他会重新写一份配置文件,之后添加服务都会添加到xml这个配置文件里。
4.2.7 zones模板路径:/usr/lib/firewalld/zones(9种,这些文件不能编辑)
# ls /usr/lib/firewalld/zones/
block.xml drop.xml home.xml public.xml work.xml
dmz.xml external.xml internal.xml trusted.xml
注:# ls /etc/firewalld/zones/ //默认区的文件
public.xml public.xml.old
//如需加入工作区文件,需将/usr/lib/firewalld/zones中文件复制到/etc/firewalld/zones/
#cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ // /etc/firewalld/zones/work.xml可编辑
扩展练习:
需求:ftp服务自定义端口改为1121,在work zone下面放行ftp
#cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
在文件中把端口改为1121
增加一行:
#firewall-cmd --reload ///重载防火墙
总结:zone是一个规则集合,每个zone下面有不同的service,而每个sevice下面可以设定不同的服务(如ftp、http),
service也是可以自定义的。(多数是端口)
五、linux任务计划cron
5.1 对于需要周期性执行的任务可以使用crontab命令,该命令所使用的服务是crond。因此在使用之前一定要先启动crond服
务。
5.2 查看crond服务状态
# systemctl status crond.service
//如果没有启动,则通过systemctl start crond.service 命令启动
当使用者执行crontab命令时,系统会按如下步骤操作
5.3 crontab建立例行性任务的方式
5.31.针对用户的例行性任务,用crontab -e命令来管理任务
5.3.2 针对系统的例行性任务,可以通过/etc/crontab文件来管理任务
针对用户的例行性任务
语法: crontab [-u username] [-e][-l][-r][-u]
选项说明
-u:只用root才有权限使用这个参数,用于帮助其他用户建立或删除crontab
-e:进入配置文件
-l:查看crontab的工作内容
-r:移除crontab的工作内容,如果要删除某一项的内容,只能使用crontab -e进入配置文件手动删除
crontab的模式是:分 时 日 月 周 命令
分范围0-59,
时范围0-23,
日范围1-31,
月范围1-12,
周1-7
"-"表示一个时间段范围,可用格式1-5,表示一个范围1到5
","表示分割时段的意思,可用格式1,2,3,表示1或者2或者3
"*"表示任何时间都能够接受,任何时间都可以执行该命令可用格式。"/n"代表每隔n个时间单位。*/2表示被2整除的数字,
比如小时,那就是每隔2小时
5.4 操作
5.4.1 查看计划任务列表: crontab -l
5.4.2 添加计划任务: crontab -e
//使用方式类似vim
//格式: 分 时 日 月 周 用户 命令
//命令最好使用绝对路径
例:
0 3 * * * /bin/bash /usr/local/sbin/123.sh >/tmp/123.log 2>/tmp/123.log
0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
0 3 1-10 */2 * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
5.4.3 删除计划任务: crontab -r
5.5 针对系统的例行性任务,直接编辑/etc/crontab。基本上这个服务的最低侦测限制是分钟。cron会每分钟读取一次/etc/crontab与/var/spool/cron里的资料内容。
# cat /etc/crontab
//PATH表示输入执行文件的搜索路径
//MAILTO表示/etc/crontab中命令发生错误时或执行结果有STDOUT/STDERR时,发送一封邮件给用户
5.5.1 /etc/crontab文件中的命令支持两种执行命令的方式
①直接执行命令
# crontab -e
//用法和vim差不多
②目录规则
//以建立一个每隔5分钟执行一次的命令为例
//建立/root/five目录
# mkdir /root/five
# vim /etc/crontab
//增加*/5 * * * *root runparts /root/file
注:格式中为何没有年份?
因为用星期就可以确定日期的唯一性,比如说今年的6月18号和明年的6月18号的星期肯定是不同的,这样就可以确定某一天的唯一性。
任务计划不执行的原因分析:
不执行的原因很有可能是你写的脚本里面,没有使用绝对路径导致不执行。如果你使用的命令不在PATH里面,就无法找到该命令。所以要么将命令写一个绝对路径,要么将命令的路径加入到PATH变量里面去。
建议:
命令都用绝对路径的形式
写脚本的时候,添加日志记录功能。
六、chkconfig工具
6.1 Centos6及以前版本系统中运行级别
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:多用户模式,少nfs服务
等级3表示:多用户模式,不带图形
等级4表示:是一种保留的级别
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
在centos6中的 /etc/inittab 中定义开机的默认运行级别
在centos7中,已经没有用运行级的概念了,只是为了向上兼容。系统服务的脚本存放在 /etc/init.d/ 下面
6.2 chkconfig命令主要用来查询或设置系统服务的运行级别,但是并不会立即启动或停止一个服务。chkconfig主要用在
Centos6及以前的系统中,Centos7中使用的比较少,已经在向systemd过渡。
用法:chkconfig [--list][--type类型] [名称]
chkconfig --add 名称
chkconfig --del 名称
chkconfig --override 名称
chkconfig [--level级别] [--type类型] 名称 on|off|resetpriorities
6.3 命令使用
6.3.1 显示系统服务列表
# chkconfig --list
6.3.2 关闭指定服务的自动启动
# chkconfig mysql off
# chkconfig --list mysql
6.3.3 指定服务在某一运行级的关闭与开启
# chkconfig mysql off --level 2 //要2级别关闭
# chkconfig --list mysql
//开启
# chkconfig mysql on --level 2
# chkconfig --list mysql
6.4 0和1和6级别不能设置成开启
0级别在关机状态是不可能开启的
1级别是单用户模式,服务是不可能开启的
6级别在重启的时候,是不可能开启的——>重启相当于先关闭在启动(重启的那一刻是先关闭才对)。
一个脚本加入到服务列表中
首先该启动脚本要放入到 /etc/init.d 这个目录下——>只有在这个目录下,才可以添加到服务列表中去。
其次脚本格式有如下要求
1.是一个shell脚本
2.固定格式:
//启动和关闭顺序自己定义即可,这里是 64 36
# chkconfig: 2345 64 36
# description: A very fast and reliable SQL database engine.
最后用chkconfig add将相应的脚本加入到服务列表
# chkconfig --list
# chkconfig --add mysql
# chkconfig --list //验证
删除服务列表中的服务
# chkconfig --del mysql
# chkconfig --list
七、systemd管理服务
7.1 Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速
度。
systemd 的目标是:
尽可能启动更少的进程
尽可能将更多进程并行启动
7.2 查看systemd信息
7.2.1 # systemctl list-dependencies //显示单元依赖关系
7.2.2 # systemctl list-sockets //显示sockets信息和哪些是活动的
7.2.3 # systemctl list-jobs //查看活动的system任务
7.2.4 # systemctl list-unit-files //查看单元文件及状态
7.2.5 # systemctl list-units //显示单元是否载入及状态
7.2.6 # systemctl get-default //显示默认的目标
7.3 管理服务
7.3.1 # systemctl list-units --all --type=service //列出所有的服务
7.3.2 # systemctl status firewalld.service //查看服务状态
7.3.3 # systemctl stop firewalld.service //停止服务
7.3.4 # systemctl start firewalld.service //启动服务
7.3.5 # systemctl restart firewalld.service //重启服务
7.3.6 # systemctl reload firewalld.service //重载服务的配置文件
7.3.7 # systemctl disable firewalld.service //将服务取消开机自动启动
7.3.8 # systemctl enable firewalld.service //将服务设置为开机自动启动
7.3.9 # systemctl is-enabled //检查是否开机启动
7.3.10 # systemctl show firewalld.service //显示服务或单元详细信息
7.4 改变系统状态
systemctl reboot //重启
systemctl poweroff //关机
systemctl emergency //进入紧急模式
systemctl default //恢复默认目标
7.5 查看日志消息
# journalctl //显示收集的所有日志消息
7.6 查看网络服务的消息
# journalctl -u network.service
7.7 动态跟踪消息(类似于tail -f /var/log/message)
# journalctl -f
7.8 仅仅显示内核消息
# journalctl -k
八、unit介绍
系统初始化需要做的事情非常多。需要启动后台服务,比如启动 SSHD 服务;需要做配置工作,比如挂载文件系统。这
个过程中的每一步都被 systemd 抽象为一个配置单元,即 unit。可以认为一个服务是一个配置单元;一个挂载点是一个
配置单元;一个交换分区的配置是一个配置单元;等等。
8.1 systemd 将配置单元归纳为以下一些不同的类型:
service 系统服务
target 多个unit组成的组
device 硬件设备
mount 文件系统挂载点
automount 自动挂载点
path 文件或路径
scope 不是由systemd启动的外部进程
slice 进程组
snapshot systemd快照
socket 进程间通信套接字
swap swap文件
timer 定时器
8.2 systemd中与unit相关的命令
8.2.1 # systemctl list-units //列出正在运行的unit
8.2.2 //若要列出所有的units,则需要加 --all
列出所有,包括失败的或者inactive的
# systemctl list-units --all
8.2.3 列出inactive的unit
# systemctl list-units --all --state=inactive
8.2.4 列出状态为active的service
# systemctl list-units --type=service
//其中failed是一个特例,也会列出来
8.2.5 查看某个服务是否为active
# systemctl is-active firewalld.service
九、target介绍
在Centos7之前的版本,使用运行级别代表特定的操作模式。运行级别被定义为七个级别,用数字0到6表示,每个级别可
以启动特定的一些服务。Centos7使用target替换运行级别。
9.1 一个service属于一种类型的unit
多个unit组成了一个target
一个target里面包含了多个service
9.2 列出系统中所有的target
# systemctl list-unit-files --type=target
9.3 查看指定target下面有哪些unit
# systemctl list-dependencies multi-user.target
9.4 查看所有的target
# systemctl list-units --type=target --all
9.5 查看系统默认的target
# systemctl get-default
9.6 设置默认的target
# systemctl set-default multi-user.target
9.7 查看服务属于哪个target
#cat /usr/lib/systemd/system/sshd.service 看[install]部分
十、扩展
扩展链接:
Anacron
https://www.jianshu.com/p/3009a9b7d024?from=timeline
xinetd守护进程
http://blog.sina.com.cn/s/blog_465bbe6b010000vi.html
systemd自定义启动脚本
http://www.jb51.net/article/100457.htm
参考:
http://www.jinbuguo.com/systemd/systemd.html
http://mtoou.info/hingsystemd/
http://fedoraproject.org/wiki/Systemd/zhcn
https://www.ibm.com/developerworks/cn/linux/1407_liuming_init3/index.html
https://www.freedesktop.org/wiki/Software/systemd