Linux自有服务+防火墙+计划任务
Posted 爱敲代码的三毛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux自有服务+防火墙+计划任务相关的知识,希望对你有一定的参考价值。
文章目录
自有服务概念
服务是一些特定的进程,自有服务就是系统开机后就自动运行的一些进程,一旦客服端发出请求,这些进程就自动为它们服务,windows系统中,把这些自动运行的进程,称为“服务”
比如我们用终端软件 XShell或者SecureCRT连接我们的Linux服务器的时候,我们的服务器为啥会对连接做出响应?是因为SSH服务开机就 自动运行了。
所谓自有服务,可以简单理解为Linux系统开机自动运行的服务(程序)
一、systemctl命令
在CentOS7中 systemctl
命令用来服务管理和开启启项管理
显示系统服务
语法:systemctl [选项]
显示Linux系统中所有服务(包括启动的和没有启动的)
systemctl list-units --type service --al
只列出已经启动的Linux系统服务
systemctl list-units --type service
用管道+grep找到 shhd服务
服务管理
1. 查看状态
查看系统服务转态
语法:systemctl status [服务名称]
2. 停止服务 stop
语法:systemctl stop [系统服务名称]
3. 启动服务 start
语法:systemctl start [系统服务名称]
4. 重启服务 restart
语法:systemctl restart [系统服务名称]
等价于:stop + start
5. reload 热重载技术
语法:system reload [系统服务名称]
并非所有服务都支持热重载技术
有些服务,比如 nginx,更改了配置文件,但是不能重启Nginx服务,只是想立即让我们配置文件的更改生效,就可以使用热重载技术
服务持久化
所谓服务持久化,就是服务在开机的时候,是否自启动
1. 设置服务开机自启
语法:systemctl enable [系统服务名称]
2. 设置开机不自启
语法:systemctl disable [系统服务名称]
3.查看服务是否设置开机自启动
语法:systemctl list-unit-files
二、NTP时间同步服务
概念
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间协议
比如:
某个点上公司网站,由于访问量很多的,后端由100台服务器组成集群。50台负责接收订单,50台负责安排发货,接收订单的服务器需要记录用户下订单的具体时间,把数据传给负责发货的服务器,由于100台服务器时间各不相同,记录的时间经常不一致,甚至会出现下单时间是明天,发货时间是昨天的情况。
NTP时间同步原理
问题:标准时间是哪里来的?
现在的标准时间是由原子钟报时的国际标准时间UTC(Universal Time Coordinated,世界协调时),所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。
在NTP中,定义了时间按照服务器的等级传播,Stratum层的总数限制在15以内
比如windows上的时间同步
从哪可以找合适的NTP服务器呢?
NTP时间同步操作
手工同步
语法:ntpdate NTP服务器的IP地址或者域名
通过date
可以查看当前系统时间
自动同步
语法:
- 启动htpd服务
systemctl start ntpd
- 把ntpd服务追加到系统开机启动项中
systemctl enable ntpd
注意:一定要让 设置 ntpd服务开机自启动
三、防火墙
概念
防火墙:简单来说防火墙就是一堵墙,抵挡一些网络攻击。
防火墙有物理防火墙和软件防火墙两类。
Linux中的防火墙
在CentOS7中,防火墙为 firewalld
firewalld => fire火 wall墙 daemon守护进程
区域
firewalld
增加了区域的概念,所谓区域是指,firewalld
预先准备了几套防火墙策略的模板,用户可以根据需求选择区域。
常见区域以及相应策略规则(哪些端口或服务可以通过防火墙,哪些不能通过)
区域 | 默认策略 |
---|---|
public | 拒绝流入的流量,除非与流出的流量相关,允许ssh,dhcpv6-client服务通过 |
trusted | 允许所有数据包 |
home | 拒绝流入的流量,除非与流出的流量相关,允许ssh,mdns,ippclient,amba-client,dhcpv6-client服务通过 |
internal | 等同于home |
work | 拒绝流入的流量,除非与流出的流量相关,允许ssh,ipp-client,dhcpv6-client服务通过 |
external | 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过 |
dmz | 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过 |
block | 拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作 |
drop | 拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作 |
模式分类
- 运行模式:该模式下,配置的防火墙立即生效,但是不写入配置文件
- 永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要
reload
才能生效
防火墙设置
查看防火墙运行状态
语法:systemctl status firewalld
停止防火墙
语法:systemctl stop firewalld
注意:这个操作一般只在学习环境总操作
一旦停止防火墙,其设置的所有规则会全部失效!
启动防火墙
语法:systemctl start firewalld
防火墙重启与重载操作
重启语法:systemctl restart firewalld
重启 => 先停止防火墙服务,再开启防火墙服务
重载语法:systemctl reload firewalld
如果我们对防火墙的配置文件做了更改(永久模式),需要使用
reload
进行重载让其立即生效
注意:reload
并没有停止正在运行的防火墙服务,只是在服务的基础上变换了防火墙的规则,也就是说 重载操作并没有重启关闭防火墙
设置防火墙开机自启
设置开机启动:
语法:systemctl enable firewalld
设置开机不启动:
语法:systemctl disable firewalld
firewalld 防火墙规则
1. 查看防火墙默认区域
语法:firewall-cmd --get-defult-zone
2. 查看所有支持的区域
语法:firewall -cmd --get-zones
不同的区域就是不同的规则
3. 查看当前区域的规则设置
语法:firewall-cmd --list-all
4. 查看所有区域的规则设置
firewall-cmd --list-all-zones
添加运行通过的服务或端口
1. 通过服务名称添加规则
语法:firewall -cmd --zone=public --add-service=[服务的名称]
2. 通过名称移除防火墙
语法:firewall-cmd --zone=public --remove-service=http
3. 通过服务的端口号添加规则
语法:firewall-cmd --zone=public --add-port=[端口号]
4. 通过服务的端口号移除规则
语法:firewall-cmd --zone=public --remove-port=[端口号/tcp]
永久模式permanent
在Linux的新版防火墙firewalld中,其模式一共分为两大类:运行模式(临时模式)+ 永久模式。
运行模式:不会把规则保存到防火墙的配置文件中,设置完成后立即生效
永久模式:会把规则写入到防火墙的配置文件中,但是其需要reload重载后才会立即生效
根据服务名称添加规则(永久)
firewall-cmd --zone=public --add-service=服务名称 --permanent
需要reload重载后永久配置才会生效
firewall-cmd --reload
根据端口号添加规则(永久)
firewall-cmd --zone=public --add-port=服务占用的端口号 --permanent
需要reload重载后永久配置才会生效
firewall-cmd --reload
四、Linux中的计划任务
Linux中的计划任务可以在Linux操作系统中定时的执行某些任务,比如定时重启服务,定时的往一个文本里写入东西,也可以定时删除一些没有用的临时文件
crontab 命令
语法:crontab [选项]
常用选项:
-l
:显示目前已经设置的计划任务
-e
:使用vim 编辑器编辑计划任务的文件
计划任务编写
crontab -e 进入计划任务编辑文件
打开计划任务编辑文件后,可以在此文件中编写我们自定义的计划任务
注意:计划任务的规则语法格式,以行为单位,一行为一个计划
计划任务格式
分 时 日 月 周 要执行的命令
注意:执行的命令,命令一定要是它的绝对路径,通过which
查看- 取值范围
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7(0 和 ) - 四个符号
*
:表示取值范围中的每一个数字-
:做连续区间的表达式,比如2到6
可以写成2-6
/
:表示每多少个时间执行一次,比如:每10分钟一次,可以写成*/10
,
:表示多个取值,比如想在 3点,7点和19点执行,可以写成1,2,6
计划任务示例
示例1:
每个月的 1号的 00:30删除临时文件目录/tmp
下的临时文件
第一步:定制格式
分 时 日 月 周 /usr/bin/rm -rf /root/tmp/*
第二步:定制时间
30 0 1 * * /usr/bin/rm /usr/bin/rm -rf /root/tmp/*
示例2:
每分钟往根目录下的 tmp.txt文件里写一个 hello
第一步:定制格式
分 时 日 月 周 /usr/bin/echo
第二步:定制时间
* * * * * /usr/bin/echo "hello" >> /tmp.txt
示例3:
每周的星期五的23:30移除防火墙的8080服务
第一步:定制格式
分 时 日 月 周 /usr/bin/firewall-cmd --zone=public ==remove-port=8080/tcp
第二步:定制时间
30 23 * * 5 /usr/bin/firewall-cmd --zone=public ==remove-port=8080/tcp
示例4:
每隔两天的下午14点到17点的第10和第32分钟往tmp.txt文件里写入 Linux
第一步:定制格式
分 时 日 月 周 /usr/bin/echo "Linux" >> /tmp.txt
第二步:定制时间
10,32 14-17 */2 * * /usr/bin/echo "hello" >> /tmp.txt
crontab -e
进入计划任务编辑文件
把这些任务每个占一行写入文件里保存就好
以上是关于Linux自有服务+防火墙+计划任务的主要内容,如果未能解决你的问题,请参考以下文章