自有服务及软件包

自有服务及软件包

自有服务,即不需要用户独立去安装的软件的服务,而是当系统安装好之后就可以直接使用的服务(内置)

一、自有服务概述

要点 说明
定义 系统安装后内置的、开机自动运行的服务(不需要用户独立安装)
本质 自动运行的进程,一旦收到客户端请求就为其提供服务
类比 Windows 系统中的"服务"------后台自动运行的进程
示例 SSH 服务开机自启 → 客户端可随时通过 SSH 远程连接

二、systemctl 管理服务命令

1、显示服务

命令:systemctl

作用:管理服务

语法:systemctl 选项

选项:list-units --type service --all:列出所有服务(包含启动的和没启动的)

list-units --type service:列出所有启动的服务

用法一 :systemctl list-units - type service - all 不加具体服务名

示例代码:systemctl list-units - type service - all

含义:列出所有服务,包括已运行的和没有运行的空格可以翻页,q退出

用法二 :systemctl list-units - type service 不加具体服务名

示例代码:systemctl list-units - type service

含义:列出已运行的服务

空格可以翻页,q退出

2、查看启动和停止服务

命令:systemctl

作用:管理服务

语法:systemctl 选项 服务名

选项: status:检查指定服务的运行状况 start:启动指定服务

stop:停止指定服务

restart:重启指定服务

reload:重新加载指定服务的配置文件(并非所有服务都支持 reload,通常使用 restart)

3、服务持久化

所谓服务持久化,就是服务在开机的时候,是否自动启动。

命令:systemctl

作用:管理服务

语法:systemctl 选项 服务名

选项: enable:指定服务开机自动启动

disable:取消服务开机自动启动

三、常用自有服务(ntp,firewalld,crond)

服务名 含义
ntpd 用于同步计算机的系统时间的服务
firewalld 防火墙服务
crond 计划任务服务

1、ntp 时间同步服务

NTP(Network Time Protocol) --- 同步网络中各个计算机时间的协议。

①ntp 同步服务器原理
要点 说明
标准时间来源 UTC(世界协调时),由原子钟报时
获取途径 原子钟、天文台、卫星、Internet
等级传播 NTP 按服务器等级(Stratum)传播时间,总层数 ≤ 15
②到哪里去找 ntp 服务器

NTP 授时网站:http://www.ntp.org.cn

④时间同步操作

同步服务器时间方式有 2 个:一次性同步手动同步、通过服务自动同步。

手动同步:

用法一:ntpdate 时间服务器IP

示例代码:ntpdate 120.25.115.20

含义:从服务器120.25.115.20同步标准网络时间到服务器120.25.115.20服务器由阿里云提供,可以从http://www.ntp.org.cn获取

注意:①执行时可能报错no servers can be used,可能是服务器不可达,可以使用ping命令长沙

②如果时间同步后还是不对,可能是时区问题,执行ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime同步时区

用法二:启动ntpd服务,并配置为开机启动

示例代码:systemctl enable ntpd

含义:启动ntpd服务,并配置为开机启动,服务启动后,系统会自动同步网络时间

注意:从网络同步时间,要确保自己的服务器可以访问互联网

ntpd 服务配置文件位置 /etc/ntp.conf

2、firewalld 防火墙

①什么是防火墙

防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分

防火墙选择让正常请求通过,从而保证网络安全性。

Windows 防火墙:

②传统 Linux 防火墙

3、firewalld 防火墙的概念

①区域

CentOS6x 中防火墙叫做 iptables

CentOS7.x 中默认使用的防火墙是 firewalld

firewalld 增加了区域的概念,所谓区域是指,firewalld预先准备了几套防火墙策略的集合,类似于策略的模板,用户可以根据需求选择区域。

常见区域及相应策略规则:

区域 默认策略
trusted 允许所有数据包
home 拒绝流入的流量,除非与流出的流量相关,允许 ssh, mdns, ippclient, amba-client, dhcpv6-client 服务通过
internal 等同于 home
work 拒绝流入的流量,除非与流出的流量相关,允许 ssh, ipp-client, dhcpv6-client 服务通过
public 拒绝流入的流量,除非与流出的流量相关,允许 ssh, dhcpv6-client 服务通过
external 拒绝流入的流量,除非与流出的流量相关,允许 ssh 服务通过
dmz 拒绝流入的流量,除非与流出的流量相关,允许 ssh 服务通过
block 拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作
drop 拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作
②运行模式和永久模式

运行模式:此模式下,配置的防火墙策略立即生效,但是不写入配置文件

永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要 reload 重新加载才能生效。

firewall 默认采用运行模式

4、firewalld 防火墙的配置

①查看,开启和停止 Firewalld 服务

命令:systemctl

作用:管理服务

语法:systemctl 选项 firewalld

选项: status:检查指定服务的运行状况

start:启动指定服务

stop:停止指定服务

restart:重启指定服务

reload:重新加载指定服务的配置文件(并非所有服务都支持 reload,通常使用 restart)

②管理 firewall 配置

命令:firewall-cmd

作用:管理 firewall 具体配置

语法:firewall-cmd 参数选项 1 ...参数选项 n

用法一 :firewall-cmd 选项

示例代码:firewall-cmd - get-default-zone

含义:查看默认使用区域,当前默认使用区域为public

用法二 :firewall-cmd 选项

示例代码:firewall-cmd - get-zones

含义:查看所有可用区域

用法三 :firewall-cmd 选项

示例代码:firewall-cmd - list-all

含义:列出当前使用区域配置

用法四 :firewall-cmd 选项

示例代码:firewall-cmd - list-all-zones

含义:列出所有区域的配置

用法五 :firewall-cmd 选项

示例代码:

firewall-cmd - zone=public - add-port=1024/tcp

含义:在public区域,添加允许tcp协议的1024端口通过的规则

firewall-cmd - zone=public - add-service=ftp

含义:在public区域,添加允许ftp服务通过的规则

用法五 :firewall-cmd 选项

示例代码:

firewall-cmd - zone=public - remove-port=1024/tcp

含义:在public区域,去掉允许tcp协议的1024端口通过的规则

firewall-cmd - zone=public - remove-service=ftp

含义:在public区域,去掉允许ftp服务通过的规则

用法六 :firewall-cmd 选项

示例代码:firewall-cmd - zone=public - add-rich-rule='rule family="ipv4" source address="192.168.0.100"reject'

命令参数解释:

  • --zone=public: 指定操作的 zone 为 public
  • --add-rich-rule: 添加自定义规则(- remove-rich-rule表示删除)
  • rule family="ipv4": 指定 ipv4 规则
  • source address="192.168.0.100": 匹配源 IP192.168.0.100
  • reject: 注明采用拒绝策略
    用法七 :firewall-cmd 选项
    示例代码:firewall-cmd - permanent - zone=public - add-port=1024/tcp
    含义:在public区域,使用permanent参数,永久添加允许1024端口通过的规则
    用法七:firewall-cmd 选项
    示例代码:firewall-cmd - reload
    含义:重新加载配置

更多示例:

  • 针对IP开放指定端口
    firewall-cmd - permanent - add-rich-rule="rule family="ipv4" source address="211.23.142.80" port
    protocol="tcp" port="80" accept"

firewall-cmd - permanent - remove-rich-rule="rule family="ipv4" source address="192.186.5.90"

port protocol="tcp" port="80" accept"

  • 针对IP
    firewall-cmd - permanent - add-rich-rule="rule family="ipv4" source address="192.168.0.233"
    accept"

firewall-cmd - permanent - removeadd-rich-rule="rule family="ipv4" source

address="192.168.0.233" accept"

  • 针对ip段
    firewall-cmd - permanent - add-rich-rule="rule family="ipv4" source address="192.168.0.0/16"
    accept"

firewall-cmd - permanent - remove-rich-rule="rule family="ipv4" source address="192.168.0.0/16"

accept"

firewall-cmd - permanent - add-rich-rule="rule family="ipv4" source address="192.168.1.0/24"

port protocol="tcp" port="9200" accept"

firewall-cmd - add-rich-rule="rule family="ipv4" source address="192.186.7.0/24" drop"

timeout=10

  • 当用户来源IP地址是10.0.0.1主机,则将用户请求的5555端口转发至后端172.16.1.7的22端口
    firewall-cmd - add-rich-rule='rule family=ipv4 source address=10.0.0.1 forward-port port=5555
    protocol=tcp to-port=22 to-addr=172.16.1.7'

firewall-cmd - add-rich-rule='rule family="ipv4" source address="192.168.122.0" accept'

  • 允许192.168.122.0/24主机所有连接。
    firewall-cmd - add-rich-rule='rule service name=ftp limit value=2/m accept'
  • 每分钟允许2个新连接访问ftp服务。
    firewall-cmd - add-rich-rule='rule service name=ftp log limit value="1/m" audit accept'
  • 同意新的 IP v4 和 IP v6 连接 FT P ,并使用审核每分钟登录一次。
    firewall-cmd - add-rich-rule='rule family="ipv4" source address="192.168.122.0/24" service
    name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'
  • 允许来自192.168.122.0/24地址的新 IPv4连接连接TFTP服务,并且每分钟记录一次。
    firewall-cmd - permanent - add-rich-rule='rule protocol value=icmp drop'
  • 丢弃所有icmp包
    firewall-cmd - add-rich-rule='rule family=ipv4 source address=192.168.122.0/24 reject'
    timeout=10
  • 当使用source和destination指定地址时,必须有family参数指定ipv4或ipv6。如果指定超时,规则将在指定的秒数内被激活,并在之后被自动移除。
    firewall-cmd - add-rich-rule='rule family=ipv6 source address="2001:db8: /64" servicename="dns" audit limit value="1/h" reject' - timeout=300
  • 拒绝所有来自2001:db8: /64子网的主机访问dns服务,并且每小时只审核记录1次日志。
    firewall-cmd - permanent - add-rich-rule='rule family=ipv4 sourceaddress=192.168.122.0/24service name=ftp accept'
  • 允许192.168.122.0/24网段中的主机访问ftp服务
    firewall-cmd - add-rich-rule='rule family="ipv6" source address="1:2:3:4:6: " forward-port to-addr="1: 2:3:4:7" to-port="4012" protocol="tcp" port="4011"'

5、iptables

iptables 是用来设置、维护和检查 Linux 内核的 IP 分组过滤规则的。作为 Linux 下的一款防火墙,它的功能十分强大,它有 3 个表,每个表内有规则链。

(1)filter 是默认的表,包含了内建的链 INPUT(处理进入的分组)、FORWARD(处理通过的分组)和 OUTPUT(处理本地生成的分组)。

(2)nat 表被查询时表示遇到了产生新的连接的分组,由 3 个内建的链构成:PREROUTING(修改到来的分组)、OUTPUT(修改路由之前本地的分组)、POSTROUTING(修改准备出去的分组)。

(3)mangle 表用来对指定的分组进行修改。它有 2 个内建规则:PREROUTING(修改路由之前进入的分组)和

OUTPUT(修改路由之前本地的分组)。

常用的 iptables 命令和选项:

  • iptables -A chain rule :向指定的链中添加一条规则。
  • iptables -D chain rule :从指定的链中删除一条规则。
  • iptables -L :列出当前的防火墙规则。
  • iptables -F :清除所有防火墙规则。
  • iptables-save :将当前的防火墙规则保存到文件。
  • iptables-restore :从文件中恢复防火墙规则。
①查看 Iptables 规则

查看当前的 iptables 策略,使用 iptables -L命令,默认查看的是 filter 表的内容。

②设置 Chain 策略

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP

这几条命令的意思是:

  • 为 INPUT 表设置默认 POLICY 为 DROP,即全部包都丢弃
  • 为 FORWARD 表设置默认 POLICY 为 DROP为 OUTPUT 表设置默认 POLICY 为 DROP
  • 为 OUTPUT 表设置默认 POLICY 为 DROP
    这样任何流入、传出或转发的包都将直接被丢弃,实现了防火墙效果。
    需要注意的是,这样会关闭所有网络功能,需要重新添加规则才能访问网络。一般不推荐这样设置,而是根据需要针对特定端口/来源设置规则。
③清空已有规则

可以用以下规则来清空已有的规则:iptables -F

④端口转发规则

在 /etc/sysctl.conf 文件中开启数据转发功能(net.ipv4.ip_forward=1)

sysctl -w net.ipv4.ip_forward=1 #临时生效

使用 2 条命令:

iptables -t nat -A PREROUTING -d kaliip -p tcp - dport kali端口 -j DNAT - to-destination 目标主机ip:端口

iptables -t nat -A POSTROUTING -d 目标主机ip -p tcp - dport 目标主机端口 -j SNAT - to kaliip

例如:在本地通过访问 kali 的 8080 端口实现去访问其他服务器的 80 端口

iptables -t nat -A PREROUTING -d 192.168.2.10 -p tcp - dport 8080 -j DNAT - to-destination

192.168.2.11:80

iptables -t nat -A POSTROUTING -d 192.168.2.11 -p tcp - dport 80 -j SNAT - to 192.18.2.10

这两个 iptables 命令可以实现端口映射:

第一个命令:

-t nat: 指定 nat 表

  • -A PREROUTING: 在 PREROUTING 链添加规则 用于处理输入流量
  • -d 192.168.2.10: 目标地址为 192.168.2.10
  • -p tcp --dport 8080: 协议为 tcp,目标端口为 8080
  • -j DNAT --to-destination 192.168.2.11:80: 将流量 DNAT 到 192.168.2.11 端口 80
    第二个命令:
  • -t nat: 指定 nat 表
  • -A POSTROUTING: 在 POSTROUTING 链添加规则 用于处理输出流量
  • -d 192.168.2.11: 目标地址为 192.168.2.11
  • -p tcp --dport 80: 协议为 tcp,目标端口为 80
  • -j SNAT --to 192.168.2.10: 将流量 SNAT 到源地址 192.168.2.10
    功能:
    将从外部访问 192.168.2.10 的 8080 端口的流量,DNAT 到内部服务器 192.168.2.11 的 80 端口。
    然后将响应包的源地址 SNAT 为 192.168.2.10,这样只能通过这个 IP 访问内部服务器了。
    查看规则
  1. 查看 NAT 表规则,能看到 DNAT/SNAT 等地址转换规则:iptables -t nat -L
  2. 查看具体链 (如 PREROUTING) 中的规则:iptables -t nat -L PREROUTING
    删除规则:iptables -t nat -F
⑤iptables 的常用操作

封锁指定 IP

如果发现有可疑 IP 可疑临时阻断

例如阻断入站 IP

sudo iptables -A INPUT -s 42.233.20.77 -j DROP

阻断出站 IP

sudo iptables -A OUTPUT -d 42.233.20.77 -j DROP

解封指定 IP

允许 IP 入站:

sudo iptables -A INPUT -s 42.233.20.77 -j ACCEPT

允许 IP 出站:

sudo iptables -A OUTPUT -d 42.233.20.77 -j ACCEPT

禁止外部 IP 访问 8080 端口

需要以下两条命令:

  1. 接收来自 127.0.0.1 的连接:
    iptables -A INPUT -s 127.0.0.1 -p tcp - dport 8080 -j ACCEPT
  2. 拒绝其他 IP 的连接:
    iptables -A INPUT -p tcp - dport 8080 -j REJECT
    具体命令参数解释:
  • -A INPUT: 添加规则到 INPUT 表
  • -s 127.0.0.1: 匹配源 IP 为 127.0.0.1
  • -p tcp --dport 8080: 匹配 TCP 协议的 8080 端口
  • -j ACCEPT: 接收的规则动作
  • -j REJECT: 拒绝规则动作
    允许外部 IP 访问 8080 端口
  1. 删除接受规则:
    iptables -D INPUT -s 127.0.0.1 -p tcp - dport 8080 -j ACCEPT
  2. 删除拒绝规则:
    iptables -D INPUT -p tcp - dport 8080 -j REJECT

6、计划任务 crontab

①计划任务的作用

操作系统不可能 24 小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨 2 点去重新启动Apache),此时不可能真有人每天夜里 2 点去执行命令,这就可以交给计划任务程序去执行操作了。

②查看计划任务

语法:crontab 选项

常用选项:

  • -l:list,列出指定用户的计划任务列表
  • -e:edit,编辑指定用户的计划任务列表,简单来说,计划任务就是一个文件
  • -u:user,指定的用户名,如果不指定,则表示当前用户
  • -r:remove,删除指定用户的计划任务列表
    拓展:
    crontab -e 和 vim /etc/crontab 是两种添加或编辑计划任务的方法:
    crontab -e:
  • 这个命令会打开当前用户的 crontab 文件进行编辑,文件位置是 /var/spool/cron/用户名
  • 添加的任务只对当前用户生效
  • 一般用户可以使用这个命令添加自己的定时任务
    vim /etc/crontab:
  • 这个命令会直接编辑系统级的全局 crontab 文件 /etc/crontab
  • 在这个文件中添加的任务是对所有用户都生效
  • 只有 root 用户才有权限直接编辑这个文件
    两者的主要区别在于:
  • crontab -e 添加用户个人任务
  • vim /etc/crontab 添加系统范围内对所有用户生效的任务
    在使用上:
  • 普通用户添加个人任务使用 crontab -e
  • 作为管理员添加系统范围任务需要用 root 用户通过 vim /etc/crontab
    所以总的来说:
    crontab -e 用来管理个人任务
    vim /etc/crontab 用来管理系统全局任务
③编辑计划任务

进入计划任务编辑文件:crontab -e

打开计划任务编辑文件后,可以在此文件中编写我们自定义的计划任务:

计划任务的规则语法格式,以行为单位,一行则为一个计划:

分 时 日 月 周 需要执行的命令

例如:0 0 * * * reboot,代表每天 0 时 0 分执行 reboot 指令。

取值范围(常识):

分:0~59

时:0~23

日:1~31

月:1~12

周:0~7,0 和 7 表示星期天

四个符号:

*:表示取值范围中的每一个数字

-:做连续区间表达式的,要想表示1~7,则可以写成:1-7

/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:* 10

,:表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6

特别补充:在 Linux 系统中,有些命令不能直接在计划任务中使用,使用后,其也不会生效。如 useradd 命令。如果想让其生效必须使用完整路径。

那么如何查询一个命令的真实路径在哪个位置?

答:使用 whereis 命令名称

④扩展

Crontab 权限问题

crontab 是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 。

黑名单配置文件位于: /etc/cron.deny 里面写用户名,一行只能写一个

白名单还有一个配置文件:/etc/cron.allow (本身不存在,自己创建)

注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务

查看计划任务文件保存路径

计划任务文件具体保存在哪里呢?

/var/spool/cron/用户名文件中 ,如果使用 root 用户编辑计划任务,则用户文件名为 root

查看计划任务日志信息

在实际应用中,我们如何查看定时任务运行情况?

通过计划任务日志,日志文件位于 /var/log/cron

四、Linux 软件包

1、软件包概述

Linux 下也有很多可以安装的软件,而这些软件的安装包可细分为两种,分别是源码包和二进制包。

①源码包 vs 二进制包
对比维度 源码包 二进制包
本质 程序员编写的源代码程序 源码包编译成功后的产物
安装前 需要编译 无需编译,直接安装
安装难度 高(编译耗时长、易出错) 低
优势 可自定义模块 安装/升级/查询/卸载简单
②两大主流二进制包管理系统
包管理器 发行版系列 安装命令
RPM Red Hat 系(Fedora, CentOS, SuSE) rpm -ivh
DPKG Debian 系(Debian, Ubuntu, Kali) dpkg -i
作用:rpm 的作用类似于豌豆荚,华为应用市场,App Store,主要作用是对 linux 服务器上的软件包进行对应管理操作,管理分为:查询、卸载、安装/更新
对比项 redhat (centos)系列 debian(kali,ubuntu) 系列
安装包格式 rpm deb
安装包命令 rpm -ivh 安装包.rpm dpkg -i 安装包.deb
包管理工具 yum apt-get
是否支持 tar 包 是 是

2、如何获取 rpm 包

要想装软件,和 windows 下一样,先得找到安装包:xxx.rpm

软件包的获得方式:

a. 去官网去下载;

b. 不介意老版本的话,可以从光盘(或者镜像文件)中读取;

3、查询某个软件安装情况

语法:rpm -qa | grep 软件名称

选项:-q:查询,query -a:全部,all

用法一 :rpm -q firefox

说明:查询 firefox 浏览器的安装情况

用法二 :rpm -qa | grep firefox

说明:查询 firefox 浏览器的安装情况

4、卸载某个软件

卸载某个软件

语法:rpm -e 软件的名称(建议写完整的名称,通过 -qa 查询)

案例:卸载火狐浏览器

rpm -qa |grep firefox 首先查询 firefox 软件的完整名称

查询结果:firefox-45.7.0-2.el6.centos.x86_64

rpm -e firefox-45.7.0-2.el6.centos.x86_64

5、安装某个软件

命令:rpm

作用:管理 rpm 软件包

语法:rpm -ivh 软件包完整路径名称

选项:

-i:install,安装

-v:显示进度条

-h:表示以 "#" 形式显示进度条

6、更新某个软件

语法:# rpm -Uvh 完整的安装包路径

选项:

-U:upgrade,升级

-v:表示显示进度条

-h:表示以#形式显示进度条

7、rpm 扩展

①依赖关系

一个软件必须先有其他软件才能运行,例如之前 xmind 启动过程中提示的缺少 DLL,称之为依赖

②查看文件所属的包名

语法:# rpm -qf 需要查询的文件路径

选项:-f:查询文件所属包

示例代码:查询/etc/ntp.conf 属于哪个软件包?

相关推荐
夜听莺儿鸣9 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP10 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
向成科技11 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
Fcy64811 小时前
Linux下 进程间关系与守护进程
linux·运维·服务器·守护进程
码农小韩12 小时前
Linux驱动理论(二)——Linux字符设备驱动
linux·嵌入式软件开发·linux操作系统·linux应用开发·linux驱动理论
well061212 小时前
Linux粘滞位与Makefile机制深度解析
linux·运维·服务器
再写一行代码就下班12 小时前
linux sh脚本在windows修改导致无法使用解决方式
java·linux·centos
额额额对了12 小时前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm
子木HAPPY阳VIP13 小时前
Ubuntu 关闭防火墙操作步骤
linux·运维·ubuntu
王振超wzc13 小时前
嵌入式开发环境搭建--WM软件安装,Ubuntu操作系统安装
linux·运维·ubuntu