自有服务及软件包

自有服务及软件包

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

一、自有服务概述

要点 说明
定义 系统安装后内置的、开机自动运行的服务(不需要用户独立安装)
本质 自动运行的进程,一旦收到客户端请求就为其提供服务
类比 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 -evim /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 属于哪个软件包?

相关推荐
风哥2号3 小时前
数据库教程FGMT03‑生产环境Linux+Oracle19c+ASM安装配置与项目实战
linux·数据库
一木 之林3 小时前
七、一-AI 工程实践、插件化调试与软件交付
java·linux·c++
zhengqweasd3 小时前
Linux网络(一):服务器数据包从网卡到应用程序,完整收包流程详解
linux·服务器·网络
脚踏实地,坚持不懈!4 小时前
Linux 6.18.7 内存分配与回收 —— 代码梳理
linux·运维·网络
byte轻骑兵4 小时前
【BlueZ 】hci 模块:用户态 HCI 层的核心封装与消息处理
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
Android系统攻城狮5 小时前
Linux Gstreamer深度解析之gst_audio_format_build_integer调用流程与实战(十二)
linux·运维·服务器·音视频·车载音视频·gstreamer进阶
吴声子夜歌5 小时前
Shell脚本——流程控制:for循环
linux·运维·shell
事圆则缓6 小时前
Ubuntu 安装与配置 Samba 服务器
linux·服务器·ubuntu
GeW6 小时前
每天2小时,21天闭环计划-RHCE通关时间表全公开
linux