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可以查看当前系统时间

自动同步

语法:

  1. 启动htpd服务
    systemctl start ntpd
  2. 把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 和 )
  • 四个符号
    1. *:表示取值范围中的每一个数字
    2. -:做连续区间的表达式,比如2到6 可以写成 2-6
    3. /:表示每多少个时间执行一次,比如:每10分钟一次,可以写成 */10
    4. ,:表示多个取值,比如想在 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 进入计划任务编辑文件
把这些任务每个占一行写入文件里保存就好

CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

以上是关于Linux自有服务+防火墙+计划任务的主要内容,如果未能解决你的问题,请参考以下文章

linux服务安装与使用part2

Linux计划任务(转载)

在asp.net mvc 3中的后台作业/计划任务中发送电子邮件

Linux-计划任务

Linux计划任务,CronTab用法详解

Linux中滴计划任务