ToB企服应用市场:ToB评测及商务社交产业平台

标题: Linux 安全实战秘籍(二) [打印本页]

作者: 大连密封材料    时间: 2024-8-28 08:13
标题: Linux 安全实战秘籍(二)
原文:zh.annas-archive.org/md5/9B7E99EE96EAD6CC77971D4699E9954A
  译者:飞龙
  协议:CC BY-NC-SA 4.0
  第五章:远程身份验证

在本章中,我们将讨论以下主题:

使用 SSH 举行远程服务器/主机访问

SSH,或安全外壳,是一种协议,用于安全地登录到远程系统,是访问远程 Linux 系统的最常用方法。
准备工作

要了解如何使用 SSH,我们需要两个 Ubuntu 系统。一个将用作服务器,另一个将用作客户端。
操纵步骤…

要使用 SSH,我们可以使用名为OpenSSH的免费软件。安装软件后,可以在 Linux 系统上使用ssh命令。我们将详细了解如何使用这个工具:

  1. sudo apt-get install openssh-server
复制代码


  1. sudo apt-get install openssh-client
复制代码


  1. sudo service ssh start
复制代码


  1. ssh remote_ip_address
复制代码
这里,remote_ip_address指的是服务器系统的 IP 地址。该命令还假定客户端机器上的用户名与服务器机器上的用户名相同:

如果我们想使用不同的用户登录,命令将如下所示:
  1. ssh username@remote_ip_address
复制代码


  1. sudo cp /etc/ssh/sshd_config{,.bak}
复制代码

  1. ssh -p port_number remote_ip_address
复制代码


正如我们所看到的,当我们在不指定端口号的情况下运行命令时,连接会被拒绝。接下来,当我们提到精确的端口号时,连接将建立。
工作原理…

SSH 用于将客户端程序连接到 SSH 服务器。在一个系统上,我们安装openssh-server软件包使其成为 SSH 服务器,在另一个系统上,我们安装openssh-client软件包以将其用作客户端。
现在,保持服务器系统上的 SSH 服务运行,我们尝试通过客户端连接到它。
我们使用 SSH 的设置文件来更改设置,比如连接的默认端口。
禁用或启用 SSH root 登录

Linux 系统默认具有一个启用的 root 帐户。如果未经授权的用户得到 SSH root 访问权限,这不是一个好主意,因为这将使攻击者完全访问系统。
我们可以根据需要禁用或启用 SSH 的 root 登录,以防止攻击者获取对系统的访问权限。
准备工作

我们需要两个 Linux 系统,一个用作服务器,一个用作客户端。在服务器系统上,安装openssh-server软件包,如前面的示例所示。
操纵步骤…

首先,我们将看到如何禁用 SSH root 登录,然后我们还将看到如何再次启用它:
  1. sudo nano /etc/ssh/sshd_config
复制代码
  1. PermitRootLogin yes
复制代码
  1. PermitRootLogin no
复制代码


  1. PermitRootLogin yes
复制代码


它是如何工作的…

当我们尝试使用 SSH 连接到远程系统时,远程系统会查抄其在/etc/ssh/sshd_config中的设置文件,并根据该文件中提到的详细信息决定是否允许或拒绝连接。
当我们相应地更改PermitRootLogin的值时,工作也会发生变化。
还有更多…

假设我们在系统上有许多用户帐户,并且我们需要以这样的方式编辑/etc/ssh/sshd_config文件,即仅允许少数指定用户举行远程访问。
  1. sudo nano /etc/ssh/sshd_config
复制代码
添加以下行:
  1. AllowUsers tajinder user1
复制代码
现在重新启动ssh服务:
  1. sudo service ssh restart
复制代码
现在,当我们尝试使用user1登录时,登录是乐成的。但是,当我们尝试使用未添加到/etc/ssh/sshd_config文件中的user2登录时,登录失败,并且我们收到“权限被拒绝”的错误,如下所示:

通过基于密钥的登录限定远程访问 SSH

即使使用用户帐户的密码掩护了 SSH 登录,我们也可以通过在 SSH 中使用基于密钥的身份验证来使其更加安全。
准备工作

要了解基于密钥的身份验证的工作原理,我们将需要两个 Linux 系统(在我们的示例中,都是 Ubuntu 系统)。其中一个应该安装了 OpenSSH 服务器软件包。
如何操纵…

要使用基于密钥的身份验证,我们需要创建一对密钥——私钥和公钥。
  1. ssh-keygen-t rsa
复制代码



  1. ssh-copy-id 192.168.1.101
复制代码


我们可以看到现在不需要提示输入用户帐户的密码。因为我们已经为 SSH 密钥设置了密码,以是它已经被要求。否则,我们将被要求输入密码而不需要输入密码。
工作原理…

当我们创建 SSH 密钥对并将公钥移动到远程系统时,它可以作为连接到远程系统的身份验证方法。如果远程系统中存在的公钥与本地系统生成的公钥匹配,并且本地系统具有私钥以完成密钥对,就可以登录。否则,如果任何密钥文件丢失,将不允许登录。
远程复制文件

使用 SSH 远程管理系统非常方便。然而,许多人大概不知道 SSH 也可以帮助远程上传和下载文件。
准备工作

尝试文件传输工具,我们只需要两个可以相互 ping 通的 Linux 系统。在一个系统上,应安装 OpenSSH 软件包并运行 SSH 服务器。
如何做…

Linux 有一系列工具,可以帮助在网络盘算机之间传输数据。我们将在本节中看到其中一些工作原理:
  1. scp myfile.txt tajinder@sshserver.com:~Desktop/
复制代码

  1. scp -r mydata/ tajinder@sshserver.com:~Desktop/
复制代码




  1. scp –r tajinder@sshserver.com:/home/tajinder/Desktop/newfile.txt
复制代码


  1. sftp tajinder@sshserver.com
复制代码


  1. get sample.txt /home/tajinder/Desktop
复制代码

工作原理…

要通过 SSH 远程复制文件,我们使用scp工具。这有助于从客户系统复制单个文件或完备目次到服务器系统上的指定位置。要复制带有全部内容的目次,我们使用命令的-r选项。
我们使用相同的工具从远程 SSH 服务器复制文件到客户机。但是,为此我们需要知道服务器上文件的确切位置。
与scp一样,我们有sftp工具,它用于从服务器到客户端复制文件。SFTP安全文件传输协议)比 FTP 更好,并确保数据安全传输。
最后,我们使用 GNOME 文件欣赏器以图形方式连接并在服务器和客户端之间传输文件。
使用 Ubuntu 设置 Kerberos 服务器

Kerberos 是一种身份验证协议,用于通过使用机密密钥加密和受信任的第三方在不受信任的网络上举行安满身份验证。
准备停当

要设置和运行 Kerberos,我们需要三个 Linux 系统(在我们的示例中,我们使用了 Ubuntu)。它们应该可以或许相互通讯,而且它们的系统时钟也应该准确。
我们已经为每个系统分配了主机名,如此地方述:

这样做之后,编辑每个系统的/etc/hosts文件并添加以下细节:

您的系统的 IP 地址和主机名大概不同。只需确保在举行这些更改后,它们仍然可以相互 ping 通。
如何操纵…

现在,让我们看看如何完成 Kerberos 服务器和其他系统的设置,以供我们的示例使用。
  1. sudo apt-get install krb5-admin-server krb5-kdc
复制代码



  1. sudo krb5_realm
复制代码

  1. mykerberos.com = MYKERBEROS.COM
  2. .mykerberos.com = MYKERBEROS.COM
复制代码


通过输入以下命令来运行工具:
  1. sudo kadmin.local
复制代码
这将启动kadmin.local提示,如下所示:

  1. list princs
复制代码
  1. kinit
复制代码

完成上一个命令后,我们转移到第三个系统,即我们正在使用的 SSH 服务器。我们需要在该系统上安装 SSH 服务器和krb5-config软件包。为此,我们运行以下命令:


  1. sudo service ssh restart
复制代码
  1. GSSAPIAuthentication yes
  2. GSSAPIDelegateCredentials yes
复制代码
  1. kinit
  2. tajinder
复制代码
我们应该在不被要求输入密码的情况下得到认证。
工作原理…

首先,在第一个系统上安装所需的软件包以创建 Kerberos 服务器。安装完成后,为服务器设置创建一个领域。为了完成设置,我们执行/etc/krb5.conf文件中提到的更改。
然后,我们向 Kerberos 数据库添加一个原则,以添加要使用的用户帐户。
完成后,我们转移到下一个系统,并安装 Kerberos 用户软件包以创建客户端系统。然后,我们从 Kerberos 服务器系统获取用户帐户的票证,以在客户端上使用。
接下来,我们继续到第三个系统,在那里我们安装Openssh-server软件包以创建 SSH 服务器。然后,我们编辑 SSH 的设置文件以启用身份验证。
现在我们回到 Kerberos 服务器系统,并为 SSH 服务器添加一个原则。我们为 SSH 服务器创建一个密钥,然后使用scp命令将该密钥文件从 Kerberos 服务器传输到 SSH 服务器。
现在,如果我们尝试从客户端系统登录到 SSH 服务器系统,我们会在不需要输入密码的情况下登录,因为我们之宿世成的密钥被用于身份验证。
第六章:网络安全

在本章中,我们将讨论以下内容:

管理 TCP/IP 网络

当盘算机连接在一起形成网络并相互交换信息和资源时,管理这些网络信息对于系统管理员来说是一项重要的任务。
准备停当

在开始对 TCP/IP 设置举行任何更改之前,请确保使用以下命令创建网络管理器设置文件的备份:

同样,以相同的方式创建/etc/network/interfaces文件的备份。
如何操纵…

在本节中,我们将看看如何使用命令行手动设置网络设置:
我们可以看到我们系统的当前 IP 地址是192.168.1.101
上述命令将列出系统上全部可用以太网装备的一行形貌。
该工具还提供有关硬件的其他功能的详细信息。
将managed=false改为managed=true并保存文件。
完成后,保存文件,然后重新启动盘算机以解除网络管理器。
通过这样做,我们已经向单个以太网卡添加了两个 IP 地址。我们可以这样做来创建网络卡的多个实例。
  1. service network-manager restart
  2. /etc/init.d/networking restart
复制代码
要举行更改,请在任何编辑器中编辑/etc/resolv.conf文件,并添加以下行:

通过遵循上述步骤,我们将可以或许乐成设置 IP 详细信息。
它是如何工作的…

系统上的 TCP/IP 设置可以是自动管理或手动管理。根据/etc/NetworkManager/NetworkManager.conf文件中的内容,系统将了解设置是自动管理还是手动管理。
对于手动设置,我们编辑/etc/network/interfaces文件,并输入先前的 IP 详细信息。完成后,我们重新启动网络服务或完全重新启动系统以使更改生效。
使用 Iptables 设置防火墙

掩护 Linux 系统所需的一个基本步骤是设置一个精良的防火墙。大多数 Linux 发行版都预装了不同的防火墙工具。Iptables是 Linux 发行版中的一个默认防火墙。在较旧版本的 Linux 内核中,Ipchains 是默认防火墙。
准备停当

由于 Iptables 随 Linux 发行版一起提供,因此无需安装额外的工具来使用它。但是,建议使用 Iptables 时不要使用 root 帐户。相反,使用具有超等用户访问权限的平凡帐户来有效地运行命令。
如何做…

我们可以使用 Iptables 定义不同的规则。这些规则在查抄传入和传出的流量数据包时由内核跟随:
  1. iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
复制代码
在这里,-A选项将规则附加到现有表中。INPUT表示此规则将附加到 Iptables 的输入链。-m conntrack --ctstate ESTABLISHED,RELATED命令的下几个参数确保规则仅适用于当前在线的连接。然后,-j ACCEPT告诉 Iptables 接受并允许与前面指定的条件匹配的数据包。
我们使用端口22,因为它是 SSH 的默认端口。如果您已更改服务器上 SSH 的端口,请使用前面命令中的得当端口。
我们添加以下规则以允许环回访问:
  1. iptables -I INPUT 1 -i lo -j ACCEPT
复制代码
为此,我们将通过运行此命令修改INPUT链:
  1. iptables –A INPUT –j DROP
复制代码

前面屏幕截图中的代码显示,已将抛弃全部数据包的规则添加到INPUT链的列表底部。这确保每当数据包进入时,Iptables 规则按指定次序举行查抄。如果没有规则与数据包匹配,它将被抛弃,从而默认克制数据包被接受。
因此,为了保存我们创建的规则,然后在服务器重新启动时自动加载它们,我们可以使用iptables-persistent软件包。
  1. apt-get install iptables-persistent
复制代码

工作原理…

在前面的示例中,我们使用 Linux 中的 Iptables 来设置系统上的防火墙。
首先,我们欣赏iptables命令的基本选项,然后看看如安在iptables中添加不同的规则。我们添加规则以允许本地主机访问和传出的活动连接。然后,我们添加一条规则以允许 SSH 连接。
接下来,我们添加一条规则,拒绝不符合前面规则的每个其他传入数据包。
最后,我们使用iptables-persistent软件包来保存iptables的规则,即使在系统重新启动后也是如此。
克制伪造的地址

IP 欺骗是攻击者用来向盘算机服务器发送恶意数据包的一种常见技能。这是创建具有伪造 IP 地址的 IP 数据包的过程。它重要用于拒绝服务DoS)等攻击。
准备工作

如果我们渴望克制伪造的 IP 地址,我们需要有一个 IP 地址或域名列表,从中这些伪造的连接一直试图连接。
如何操纵…

我们将尝试通过它来创建iptables的基本规则集,通过它我们将限定全部传入数据包,除了对我们的使用须要的数据包:
  1. iptables -A INPUT -i lo -j ACCEPT
复制代码

这对系统正常运行是须要的。
  1. iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
复制代码
这将接受全部出站流量,包罗我们尝试连接到的远程服务器的相应(例如我们访问的任何网站):

  1. iptables –N blocked_ip
复制代码
这是我们将添加要克制的伪造 IP 地址的表。
  1. iptables -I INPUT 2 -j blocked_ip
复制代码
请注意,我们使用数字2来确保此规则将成为 Iptables 中从顶部开始的第二个规则。
  1. iptables -A blocked_ip -s 192.168.1.115 -j DROP
复制代码
我们在这里使用192.168.1.115 IP 地址作为示例。您可以用要克制的 IP 地址替换它。如果您有多个要克制的 IP 地址,请逐个将它们添加到iptables中。
  1. iptables –L
复制代码
在以下截图中显示的详细信息中,您将注意到我们正在尝试克制的 IP 地址。您可以根据需要指定单个 IP 地址或范围。

  1. nano /etc/host.conf
复制代码
现在,按照以下示例在文件中添加或编辑以下行:
  1. orderbind,hosts
  2. nospoof on
复制代码

在前面的示例中,nospoof on选项执行主机名查找返回的 IP 地址与 IP 地址查找返回的主机名举行比力。如果比力失败,此选项将生成欺骗警告。
完成后,保存并关闭文件。这也有助于掩护系统免受 IP 欺骗。
它是如何工作的…

为了克制伪造的 IP 地址或任何其他 IP 地址,我们再次使用 Iptables,因为它是默认的防火墙,除非我们不想使用 Linux 可用的任何其他工具。
我们再次创建规则,以允许本地主机访问系统,并保持出站活动连接保持活动状态。然后,我们在 Iptables 中创建一个表,用于维护我们想要克制的伪造 IP 地址的列表。我们将此表添加到 Iptables 的输入链中。然后,我们可以在需要时将任何 IP 地址添加到表中,并且它将自动被克制。
我们还使用/etc/host.conf文件来掩护系统免受 IP 欺骗。
克制传入流量

Linux 系统管理员最重要的任务之一是控制对网络服务的访问。有时,最幸亏服务器上克制全部传入流量,只允许所需的服务连接。
准备工作

由于我们在这里也将使用 Iptables,因此不需要额外的软件包来执行这些步骤。我们只需要一个具有超等用户访问权限的用户帐户。但最好不要使用root帐户。
如何做…

我们将设置 Iptables 拒绝除了已从系统内部发起的流量之外的全部流量(例如获取 Web 流量的 Web 欣赏器或已经启动以更新软件包或其他软件的下载):
  1. iptables -A INPUT -i lo -j ACCEPT
复制代码

  1. iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
复制代码

  1. iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
复制代码
  1. iptables -A INPUT -p icmp -m icmp --icmp-type 3/4 -j ACCEPT
复制代码
  1. iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
复制代码
  1. iptables -L
复制代码

  1. iptables -N allowed_ip
复制代码
然后将此表添加到 Iptables 的 INPUT 链中:
  1. iptables -A INPUT -j allowed_ip
复制代码
  1. iptables -A allowed_ip -p tcp --dport 22 -j ACCEPT
复制代码
  1. iptable -L
复制代码

  1. iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable
复制代码
通过这样做,每当有人尝试连接到服务器时,将向他们发送一个主机不可达的 ICMP 数据包,然后将终止连接尝试。
  1. iptables -L
复制代码

它是如何工作的…

为了在服务器上克制全部传入流量并只允许出站连接,我们再次使用 Iptables,因为它是 Linux 的默认防火墙。
为了允许服务器内部的正常运行,我们允许访问本地主机。
接下来,为了保持出站连接活动,我们添加一个规则以接受时间超过目标不可达Echo ICMP数据包。
添加了这些规则后,我们可以决定是否渴望允许特定服务(如 SSH)的任何传入流量,或者特定客户端地址的流量。为此,我们创建一个表格,以添加我们渴望允许的客户端的 IP 地址列表。我们添加了一个规则,以允许根据我们的要求访问 SSH 服务或任何其他服务。
最后,我们添加了一个规则,拒绝全部未添加规则的流量。
设置和使用 TCP Wrapper

通过限定访问来掩护服务器是一项关键步伐,在设置服务器时绝不能忽视。使用 TCP Wrappers,我们可以只允许我们设置并支持 TCP Wrappers 的网络访问我们服务器的服务。
准备工作

为了演示这些步骤,我们使用两个位于同一网络上并且可以乐成 ping 通对方的系统。一个系统将用作服务器,另一个将用作客户端。
如何做?

Linux 提供了多种工具来控制对网络服务的访问。TCP Wrappers 是其中之一,并添加了额外的掩护层。在这里,我们将看看如何设置 TCP Wrappers 以定义不同主机的访问权限。
  1. which sshd
复制代码

在这里,我们以 SSH 程序为例。
  1. ldd /usr/sbin/sshd
复制代码

如果前面的命令输出了libwrap.so内容,这意味着该程序受 TCP Wrappers 支持。

我们可以看到一旦更改了客户端的 IP 地址,现在允许 SSH 访问,这意味着特定网络上的全部客户端都可以访问 SSH,除了被拒绝的 IP 地址。
在前面的屏幕截图中,spawn关键字定义了每当客户端发出连接哀求时,它将回显由%h选项指定的详细信息,并将其保存在conn.log日志文件中。
该文件包罗了客户端尝试连接的时间以及来自哪个 IP 地址。使用spawn命令的不同参数可以捕获更多的细节。
它是如何工作的…

我们使用 TCP Wrapper 来限定 TCP Wrapper 软件包支持的程序的访问。
我们首先使用ldd工具查抄我们想要限定的程序是否受 TCP Wrapper 支持。
然后,根据我们的需求,在/etc/hosts.allow或/etc/hosts.deny文件中添加一条规则。
我们添加一条规则,根据我们的需求限定来自特定客户端或整个网络的程序。
使用 TCP Wrapper 中的 spawn 选项,我们甚至可以为客户端或我们限定的程序所做的连接尝试维护日志。
第七章:安全工具

在本章中,我们将讨论:

Linux sXID

在 Linux 中,通常文件具有读、写和执行权限。除了这些权限,它还可以具有特殊权限,如设置全部者用户 IDSUID)和在执行时设置组 IDSGID)。由于这些权限,用户可以从他们的帐户登录,仍然以现实文件全部者的权限运行特定的文件/程序(也可以是 root)。
sXid 是用于定期监督 SUID/SGID 的工具。使用这个工具,我们可以跟踪文件和文件夹中 SUID/SGID 的更改。
准备停当

要使用这个工具,我们需要在 Linux 系统上安装sxid软件包。我们可以使用apt-get命令来安装软件包,或者我们可以下载软件包并手动设置和安装它。
如何操纵…

要开始监督 SUID/SGID 文件和文件夹,我们首先安装软件包,然后根据我们的要求设置工具:
  1. apt-get install sxid
复制代码

  1. nano /etc/sxid.conf
复制代码
如果您渴望在运行sxid时将更改的输出发送到您的电子邮件地址,请将EMAIL的值更改为任何其他电子邮件 ID。
但是,如果我们渴望从搜索中排除任何目次,我们可以在EXCLUDE选项下指定它:

假设我们有一个要搜索的目次/usr/local/share,并且在排除列表中已经提到了/usr/local目次,那么它仍然会被搜索。这对于排除一个主目次并且只指定一个目次变得有用。
  1. sxid -c /etc/sxid.conf -k
复制代码

在这里,-c选项有助于定义config文件的路径,如果命令没有自动选择。-k选项运行该工具。
它是如何工作的…

首先安装sXid软件包,然后通过编辑文件/etc/sxid.conf根据我们的要求举行设置。
一旦设置完成,我们就手动运行sXid举行抽查。
如果需要的话,我们甚至可以在crontab中添加一个条目,以便在定义的时间隔断内自动运行sXid。
PortSentry

作为系统管理员,一个重要的关注点是掩护系统免受网络入侵。
这就是PortSentry的作用。它有能力检测主机系统上的扫描,并以我们选择的方式对这些扫描做出反应。
准备停当

为了演示 PortSentry 的实施和使用,我们需要在同一网络上有两个系统,它们可以相互 ping 通。
别的,我们需要在一个系统上安装Nmap软件包,该软件包将用作客户端,另一个系统上,我们将安装和设置PortSentry软件包。
要安装Nmap软件包,请使用以下命令:
  1. apt-get install nmap
复制代码

如何操纵?

  1. apt-get install portsentry
复制代码

  1. grep portsentry /var/log/syslog
复制代码

我们可以在日志中看到与portsentry相干的消息。
我们还可以使用Nmap的任何其他命令在第一个运行portsentry的系统上执行 TCP 或 UDP 扫描。要了解更多关于Nmap命令的信息,请参阅第一章,Linux 安全问题
在上述效果中,我们可以看到即使在第一个系统上运行portsentry时,Nmap也可以或许乐成扫描。
我们甚至可以尝试从客户端 ping 服务器系统,看看在安装portsentry后它是否正常工作。
在您选择的编辑器中打开后,查找以下行并将值更改为1:

向下滚动,然后找到并取消解释以下行:

接下来,取消解释以下行:

完成后,保存并关闭文件。
在上面显示的行中,我们需要阐明portsentry应该使用 TCP 还是 ATCP 协议。
在这里,192.168.1.104是我们试图克制的客户机的 IP 地址。
我们可以看到现在Nmap无法扫描 IP 地址。
工作原理…

我们使用两个系统。第一个系统充当portsentry服务器,而另一个充当客户端。
在第一个系统上,我们安装portsentry软件包,在第二个系统上,我们安装Nmap,用于演示工作。
现在我们从客户机对服务器执行Nmap扫描。我们可以看到它工作正常。
之后,我们根据要求设置portsentry,编辑各种文件。
编辑完成后,重新启动portsentry服务,然后再次尝试从客户端对服务器执行Nmap扫描。我们看到现在扫描无法正常工作。
使用 Squid 代理

Squid 是一个具有各种设置和用途的 Web 代理应用程序。Squid 具有大量的访问控制,并支持不同的协议,如 HTTP、HTTPS、FTP、SSL 等。
在本节中,我们将看到如何将 Squid 用作 HTTP 代理。
准备停当

要在网络上的特定系统上安装和使用 Squid,请确保该特定系统具有足够的物理内存,因为 Squid 还可以作为缓存代理服务器工作,因此需要空间来维护缓存。
我们在示例中使用的是 Ubuntu 系统,Squid 可在 Ubuntu 存储库中得到,因此我们需要确保我们的系统是最新的。为此,我们运行以下命令:
  1. apt-get update
复制代码
之后,运行以下命令:
  1. apt-get upgrade
复制代码
如何操纵…

要在我们的系统上安装和设置 Squid,我们必须采取以下步骤:
要查抄这一点,我们只需要在网络上的任何系统上设置欣赏器,使用代理系统的 IP 地址作为代理,如下面的截图所示:

一旦文件在编辑器中打开,搜索读作:
TAG: visible_hostname:在这个种别下,添加一行——visible_hostname ourProxyServer:

在这里,ourProxyServer是我们给代理服务器起的名字。你可以选择任何你喜欢的名字。
在这里,我们添加了我们的规则acl localnetwork src 192.168.1.0/24,如下图所示:

在上述规则中,acl用于定义一个新规则,localnetwork是我们给规则起的名字。src定义了将要传输到代理服务器的流量的来源。我们使用子网位数定义网络 IP 地址,如前面所示。
根据我们的需求,我们可以添加恣意多的规则。
  1. service squid3 restart
复制代码
上面的错误屏幕告诉我们 Squid 代理工作正常。
现在我们可以尝试访问任何其他网站,它应该根据我们在 Squid 的设置文件中添加的规则打开。
它是如何工作的…

我们首先安装 Squid 软件包。软件包安装完成后,我们编辑其设置文件/etc/squid3/squid.conf,并添加主机名、管理员的电子邮件 ID 以及 Squid 将监听的端口。
然后我们创建规则,允许同一网络中全部系统的流量。一旦保存了全部设置,我们重新启动 Squid 服务,我们的代理服务器现在正在工作。
OpenSSL 服务器

SSL 是一种用于在互联网上传输敏感信息的协议。这大概包罗帐户密码、信用卡详细信息等信息。SSL 最常用于与 HTTP 协议一起举行的网络欣赏。
OpenSSL库提供了**安全套接字层(SSL)传输层安全性(TLS)**协议的实现。
准备工作

为了演示OpenSSL的使用,我们需要两个系统。一个将用作服务器,我们将在其中安装OpenSSL软件包和 Apache。第二个系统将用作客户端。
如何做…

现在我们将看到如何使用OpenSSL为 Apache 创建自署名证书。这将有助于加密到服务器的流量:
启用 SSL 支持后,按照上面的屏幕截图重启 Apache,使用以下命令:
  1. service apache2 restart
复制代码
  1. mkdir /etc/apache2/ssl
复制代码
在上述命令中,req –x509指定我们将创建一个符合 X.509 证书署名哀求CSR)管理的自署名证书。
-nodes指定将创建不受任何密码掩护的密钥文件。
-days 365告诉我们,正在创建的证书将在一年内有效。
-newkeyrsa:2048告诉我们,私钥文件和证书文件将同时创建,并且生成的密钥将为 2048 位长。
下一个参数-keyout指定要创建的私钥的名称。
-out参数提及正在创建的证书文件的名称。
找到并编辑如下屏幕截图中显示的行。对于ServerName,我们提供了 Apache 服务器系统的 IP 地址:

在同一文件中,滚动到文件末尾,在<VirtualHost>块关闭之前,添加以下屏幕截图中给出的行。提及在创建这些文件时使用的密钥文件名和证书文件名:

欣赏器将显示有关连接不安全的警告消息,因为证书未经任何受信任的机构署名。
工作原理…

在此设置中,我们使用两个系统。第一个是 Apache 服务器,我们在其中安装了OpenSSL软件包。第二个系统作为客户端,我们将尝试连接到 Apache Web 服务器。
在第一个系统上安装 Apache 和OpenSSL软件包后,我们为 Apache 启用 SSL 支持。然后,我们使用OpenSSL工具和一些参数创建服务器密钥和服务器证书文件。
之后,我们编辑文件/etc/apache2/sites-available/default,以便 Apache 可以使用我们创建的密钥和证书。
完成后,我们尝试通过客户端机器上的欣赏器访问 Apache Web 服务器。
我们看到它要求将新证书添加到欣赏器中,完成后,我们可以使用 HTTPS 协议访问 Web 欣赏器。
Tripwire

随着对服务器的攻击数量不停增加,安全地管理服务器变得越来越复杂。很难确定每次攻击是否已被有效克制。
Tripwire是一种基于主机的入侵检测系统IDS),可用于监督不同的文件系统数据点,然后在任何文件被修改或更改时向我们发出警报。
准备停当

我们只需要在 Linux 系统上安装 Tripwire 软件包来设置我们的 IDS。在下一节中,我们将看到如何安装和设置该工具。
如何操纵…

我们将在以下步骤中讨论如安在我们的 Ubuntu 系统上安装和设置 Tripwire:
它还会在下一个屏幕上要求重新确认密码。
在前面的输出中,我们可以看到许多文件名显示为没有这样的文件或目次的错误。这是因为 Tripwire 扫描其设置文件中提到的每个文件,无论它是否存在于系统中。
  1. touch tripwire_testing
复制代码
您可以根据本身的选择为文件选择任何名称。
  1. tripwire --check --interactive
复制代码

我们将得到一个输出,如前面的屏幕截图所示。 Tripwire 查抄全部文件/目次,如果有任何修改,将显示在效果中:

在我们的案例中,它显示了如前面的屏幕截图所示的一行,告诉我们在/root目次中添加了一个名为tripwire_testing的文件。
如果我们渴望保留所显示的更改,只需保存自动在编辑器中打开的效果文件。
在保存效果时,系统将提示您输入本地密码。输入您在安装 Tripwire 时设置的密码。
在这里,00 6告诉我们 Tripwire 将在每天 6 点查抄一次。
它是如何工作的…

首先安装 Tripwire 软件包,并在安装过程中填写所需的详细信息。安装完成后,我们初始化 Tripwire 数据库。
之后,我们查抄 Tripwire 是否正常工作。为此,我们首先在任何位置创建一个新文件,然后运行 Tripwire 交互命令。命令完成后,我们在输出中看到显示已添加的新文件。这证明了 Tripwire 的完美工作。
然后,我们编辑 Crontab 设置,以便以特定隔断自动运行 Tripwire。
Shorewall

您是否渴望将 Linux 系统设置为小型网络的防火墙? Shorewall 通过标准 Shorewall 工具帮助我们设置企业级防火墙。
Shorewall 现实上是建立在 Iptables 之上的。但是,Shorewall 使设置变得更加容易。
准备工作

需要安装并运行两张网络卡的 Linux 系统才能设置 Shorewall。一张卡将用作外部网络接口,第二张卡将用作内部网络接口。在我们的示例中,我们使用eth0作为外部接口,eth1作为内部接口。
根据网络设置设置两张卡。确保您可以或许 ping 本地网络上的另一个系统,也可以或许 ping 外部网络,即互联网上的某些内容。
在这个系统上,我们将安装 Shorewall 软件包,然后根据我们的要求举行设置。
操纵步骤…

这意味着我们需要先设置 Shorewall,然后它才能开始运行。

如果在安装后在/etc/shorewall目次中找不到这些文件中的任何一个,我们可以在目次/usr/share/doc/shorewall/default-config/中找到相同的文件。
今后位置复制所需文件到/etc/shorewall目次。
我们在设置中将eth0称为net,将eth1称为local。只要是字母数字且不超过五个字符,您可以选择任何其他名称。
在前面的设置中,fw指的是我,或者说是 Shorewall 防火墙本身。接下来的两行定义了两个网络接口的 ipv4。
该文件中的每一行都是从上到下处理的,并且每一行都是按以下格式读取的:
如果从 ____ 发送数据包到 ____,则 ______。

在我们的示例中,如果我们读取第一个策略,它将被读取为——如果从本地发送数据包到网络,则接受它。
您可以以相同的方式添加尽大概多的策略,Shorewall 防火墙将相应地工作。
示例规则文件如下截图所示:

我们已经添加了一条规则,该规则表示如果从net发送数据包到fw,并且使用端口号80的tcp协议,则接受该数据包。
  1. shorewall check
复制代码
在显示的输出中,滚动到底部,如果显示Shorewall 设置已验证,这意味着设置已精确完成,Shorewall 现在可以用作防火墙:

  1. service shorewall restart
复制代码
工作原理…

我们首先在系统上安装 Shorewall,该系统有两个网络接口卡。
安装完成后,我们编辑/etc/default/shorewall文件和/etc/shorewall/shorewall.conf文件。
然后我们在/etc/shorewall位置编辑或创建这些文件:interfaces、policy、rules 和 zones。然后根据要求向每个文件添加行。
编辑完成后,我们查抄一切是否正常,然后启动 Shorewall 服务以启动我们的防火墙。
第八章:Linux 安全发行版

在本章中,我们将讨论以下主题:

Kali Linux

Kali 是一个基于 Debian 开辟的 Linux 发行版,旨在举行安全测试。Kali 预装了数百种渗出测试工具,是一个可立即使用的操纵系统。我们可以通过光盘、USB 媒体或虚拟机来运行它。
通过其最新版本的 Kali 2.0,在操纵系统中举行了重大更改,将其转换为滚动发布模型。现在我们可以简单地在系统上安装 Kali 2.0,并通过正常更新获取其中工具的最新版本。这意味着我们不必等待 Kali 2.1 来获取最新的东西。
准备停当

要探索 Kali 2.0,请从其官方网站下载最新版本 - www.kali.org/downloads/。
我们可以下载 ISO,然后将其刻录到 CD/DVD 上,或创建一个可引导的 USB 装备。我们甚至可以从上面给出的链接下载 Kali Linux VMWare、Virtual Box 或 ARM 镜像。
如何做…

Kali 2.0 包罗其更新的开辟环境和工具方面的重大变化。我们将探究这些变化,以了解其中的区别:
在此菜单中,我们在左下角看到设置图标。

让我们点击详细信息以检察有关 Kali 2.0 的更多信息
每当我们渴望更新 Kali 时,只需点击详细信息窗口上的查抄更新按钮。
它是如何工作的…

当我们启动 Kali 2.0 时,桌面屏幕已经改变。现在我们在屏幕左侧有一个侧边栏,可以帮助我们轻松访问应用程序。
左上角的应用程序菜单包罗不同种别下的全部工具。也可以通过底部边栏上的菜单图标访问这些应用程序。
接下来,我们可以看到 Kali 2.0 现在包罗一个内置的屏幕录制工具,可以从右上角的菜单中访问。在同一个菜单中,我们现在可以选择访问系统设置菜单。
然后,我们看到查抄系统更新的选项,以保持 Kali 的最新状态。
Kali 2.0 包罗更新的工具,并且每天从 Debian 拉取四次更新,以确保系统始终保持最新状态,并且定期实施安全更新。
pfSense

作为网络管理员,拥有防火墙和路由器至关重要。当我们谈论设置防火墙时,我们可以选择简单地安装来自任何供应商的预设置防火墙,也可以设置本身的防火墙系统。
pfSense 是一个基于 FreeBSD 的开源 Linux 发行版,专门计划用作防火墙,可以通过 Web 界面轻松管理。
准备工作

首先,从以下链接下载 pfSense:
www.pfsense.org/download/mirror.php?section=downloads
根据您的需求选择精确的盘算机架构宁静台。
下载 pfSense 后,将 ISO 文件刻录到 CD/DVD 媒体,或者甚至可以创建现场可启动的 USB 媒体。
我们还需要一台具有两个网络接口卡的系统来安装和设置 pfSense。
操纵步骤…

为了在我们本身的系统上设置和设置防火墙,我们需要安装和设置 pfSense,以下步骤可以帮助我们完成这一过程。
6举行“设置引导选项”
回到第一个屏幕时,按Enter启动 pfSense。
I安装 pfSense。在 20 秒内快速选择该选项。
接下来,输入要用于 LAN 的接口名称。在我们的示例中,它是le1。

然后,按Y继续设置。
在我们的情况下,它是—http://192.168.1.115
输入默认用户名admin和默认密码pfsense举行登录。登录后可以随后更改这些详细信息。
工作原理…

我们从 pfSense CD/DVD 启动,然后选择在我们的系统上安装操纵系统的选项。
要安装 pfSense,我们在启动时使用选项I,然后使用Quick/Easy Install。安装完成后,我们设置两个接口卡。第一张卡根据外部网络举行设置,使用菜单中的设置接口 IP 地址选项。然后,我们设置 IP 地址、子网和网关地址。
接下来,我们为第二张卡重复相同的过程,根据本地网络举行设置。
设置完成后,我们可以使用第二张卡的 IP 地址从同一网络系统上的任何欣赏器访问 pfSense 的 Web 界面,并根据我们的要求自定义我们的路由器/防火墙。
DEFT – 数字取证和取证工具包

在举行盘算机取证时,重要的是使用的软件可以或许确保文件结构的完备性。它还应该可以或许分析正在观察的系统,而不会对数据举行任何更改、删除或更改。
DEFT是为取证而计划的,基于Lubuntu,后者本身又基于 Ubuntu。
准备停当

DEFT 可以从这个链接下载:
www.deftlinux.net/download/
下载后,我们可以将映像文件刻录到 CD/DVD 媒体上,或者创建一个可引导的 USB 媒体。
操纵步骤…

要使用 DEFT,我们需要了解 OS 中包罗了什么:
工作原理…

我们可以安装 DEFT,或者使用 Live CD 选项将其引导到我们的系统上。引导后,我们转到开始菜单,然后转到 DEFT 菜单。在这里,我们可以在不同种别下找到各种工具。我们可以使用分析工具、数据恢复工具、移动取证工具、网络取证工具等。
DEFT 中使用 WINE 在此执行 Windows 应用程序。
NST - 网络安全工具包

Linux 有许多发行版重要用于渗出测试。其中之一是网络安全工具包NST),它旨在提供易于访问的开源网络安全应用程序。
NST 基于 Fedora Linux,包罗专业人员和网络管理员的工具。
准备工作

NST 可以从其网页或直接今后链接下载:
sourceforge.net/projects/nst/files/
下载后,我们可以将 ISO 刻录到 CD/DVD 上,或创建一个可启动的 USB 媒体。
操纵步骤…

当我们了解如何使用操纵系统以及操纵系统中包罗的工具时,使用 NST 举行渗出测试变得很容易:
如果从本地网络上的其他系统访问,则使用运行 NST 的系统的 IP 地址。

打开链接后,我们会提示输入用户名和密码。输入详细信息,然后点击确定
我们还可以在右上角看到系统运行时间的信息。

将打开一个窗口,如下图所示。我们可以在这里运行任何命令。

它是如何工作的…

安装或引导 NST 后,第一步是为现有用户帐户设置密码。这是通过使用设置 NST 系统密码选项完成的。
设置密码后,我们通过任何欣赏器访问系统的 IP 地址来通过 Web 用户界面访问 NST。
登录 NSTWUI 后,我们会得到与网络安全相干的各种工具列表。
我们探索了一些工具,如 bandwidthd 和 SSH。
螺旋

在举行取证分析时,我们必须以分钟级别检察文件系统,并分析许多事变,如程序的执行,文件的下载,文件的创建等。
在这种情况下,最幸亏分析开始时创建磁盘的取证镜像。Helix 是创建这种镜像的最佳选择。
Helix 是用于取证观察和事件相应的基于 Linux 的 Live CD。
准备工作

Helix 有免费和商业形式,其免费版本可以从以下链接下载:
www.e-fense.com/products.php
下载后,我们可以将映像文件刻录到 CD/DVD 上,或者我们可以创建可引导的 USB 介质。
如何做?

为了演示 Helix 的使用,我们可以将其安装在我们的系统上,或者我们可以使用 Live CD/DVD 或 USB 介质,如下所示:
为此,请点击“责任链”选项卡,然后在底部点击“创建 PDF”。

工作原理是…

Helix 用于法证观察,在此过程中,一个重要的任务是创建被分析的硬盘的法证镜像。
我们已经通过 Adepto 工具了解了按照前面的步骤创建 USB 装备镜像的过程。
第九章:修补 Bash 漏洞

在本章中,我们将学习以下概念:

通过 Shellshock 了解 bash 漏洞

Shellshock,或者称为 Bashdoor,是 Linux 和 Unix 操纵系统中大多数版本中使用的漏洞。它于 2014 年 9 月 12 日被发现,影响使用 bash shell 的全部 Linux 发行版。Shellshock 漏洞使得可以使用环境变量远程执行命令。
准备工作

要理解 Shellshock,我们需要一个使用早于 4.3 版本的 bash 的 Linux 系统,该版本容易受到此漏洞的影响。
如何做…

在本节中,我们将看看如何设置我们的系统以了解 Shellshock 漏洞的内部细节:
从 4.3 版本开始的 Bash 版本据报告易受 Shellshock 影响。在我们的示例中,我们使用的是 Ubuntu 12.04 LTS 桌面版本。从前面的图像输出中,我们可以看到这个系统是有漏洞的。
一旦运行了上述命令,如果输出中打印了shellshock,则漏洞已确认。
  1. testvar=""shellshock''
复制代码
现在,如果我们想要打印这个变量的值,我们可以使用echo命令,如下所示:
  1. echo $testvar
复制代码
当我们尝试在子进程中打印该值时,我们看不到任何输出。
在上面的例子中,x函数已被定义,并且已使用-f标志导出。
  1. testfunc=''() { echo ''shellshock'';}''
复制代码
上述变量可以像平凡变量一样访问:
  1. echo $testfunc
复制代码
接下来,我们将导出这个变量,使其成为一个环境变量,然后尝试从子 shell 中访问它,如下所示:

在前面的效果中发生了一些意外的事变。在父 shell 中,该变量被视为平凡变量。然而,在子 shell 中,它被解释为一个函数,并执行函数体。
在上面的例子中,一旦我们启动一个新的 bash shell,定义在函数外部的代码将在 bash 启动时执行。
这是 bash shell 中的漏洞。
工作原理…

我们首先查抄系统上运行的 bash 版本。然后,我们运行一个众所周知的代码来确认 Shellshock 漏洞是否存在。
为了了解 Shellshock 漏洞是如何工作的,我们在 bash 中创建一个变量,然后尝试将其导出到子 shell 并在那里执行。接下来,我们尝试创建另一个变量,并将其值设置为''() { echo ''shellshock'';}''。这样做后,当我们将这个变量导出到子 shell 并在那里执行时,我们会看到它在子 shell 中被解释为一个函数并执行其中的内容。
这就是使 bash 容易受到 Shellshock 影响的地方,特别计划的变量可以在 bash 启动时用来运行任何命令。
Shellshock 的安全问题

在这个险些全部东西都在线的时代,在线安全是一个重要的问题。现在,许多 Web 服务器、Web 连接装备和服务都使用 Linux 作为平台。大多数 Linux 版本使用 Unix bash shell,因此Shellshock漏洞大概会影响大量的网站和 Web 服务器。
在上一个步骤中,我们详细了解了 Shellshock 漏洞。现在,我们将了解如何通过 SSH 使用这个漏洞。
准备工作

要使用 Shellshock 漏洞,我们需要两个系统。第一个系统将被用作受害者,并且应该容易受到 Shellshock 的影响。在我们的情况下,我们将使用 Ubuntu 系统作为易受攻击的系统。第二个系统将被用作攻击者,并且可以运行任何 Linux 版本。在我们的情况下,我们将在第二个系统上运行 Kali。
受害系统将运行openssH-server软件包。可以使用以下命令举行安装:
  1. apt-get install openssh-server
复制代码
我们将设置此系统为易受攻击的 SSH 服务器,以展示如何使用 Shellshock 漏洞。
如何操纵…

要了解 Shellshock 漏洞如何被用来使用 SSH 服务器,我们需要首先将我们的 SSH 服务器设置为易受攻击的系统。为此,我们将按照以下步骤举行:
添加完账户后,我们通过查抄/etc/passwd文件举行交织查抄。
我们可以看到公钥/私钥已经生成。
连接后,我们使用put命令传输文件。
  1. chmod +x sample.sh
复制代码
在authorized_keys文件中举行上述更改,以限定用户执行预定义的一组命令,将使公钥认证变得脆弱。
我们可以看到restricted消息被显示出来,因为我们将脚本添加到了authorized_keys文件中。
我们可以看到,只管我们在脚本中限定了date命令,但这次它被执行了,并且我们得到了date命令的输出。
让我们看看如何使用 Shellshock 漏洞来 compromise 一个运行任何可以触发带环境变量的 bash shell 的 Apache 服务器:
  1. apt-get install apache2
复制代码
安装完成后,我们使用此命令启动 Apache 服务器:
  1. service apache2 start
复制代码
然后,我们通过运行此命令使其可执行:
  1. chmod +x example.sh
复制代码
我们得到了预期的脚本输出,即Example Page。
  1. curl -A ''() { :;}; echo ""Content-type: text/plain""; echo; /bin/cat /etc/passwd http://192.168.1.104/cgi-bin/example.sh
复制代码

我们可以在攻击者的系统中看到输出,显示了受害系统如何可以使用 Shellshock 漏洞举行远程访问。在上述命令中,() { :;} ;表示一个看起来像函数的变量。在这段代码中,函数是一个单独的:,它什么也不做,只是一个简单的命令。
我们在上述输出中看到了受害系统的root目次的内容。
工作原理…

在我们的 SSH 服务器系统上,我们创建一个新的用户账户,并将 bash shell 分配为其默认 shell。我们还在/home中为这个新用户账户创建一个目次,并将其全部权分配给这个账户。
接下来,我们设置我们的 SSH 服务器系统来认证另一个系统,使用授权密钥连接到它。
然后,我们创建一个 bash 脚本来限定特定命令,比如date,并将此脚本路径添加到authorized_keys中使用command选项。
之后,当我们尝试从之前设置了授权密钥的其他系统连接到 SSH 服务器时,我们会注意到,如果我们在连接时转达date命令作为参数,该命令会受到限定。
然而,当使用 Shellshock 漏洞转达相同的date命令时,我们看到了date命令的输出,从而显示了 Shellshock 如何被用来使用 SSH 服务器。
雷同地,我们通过创建一个示例脚本并将其放置在 Apache 系统的/usr/lib/cgi-bin目次中来使用 Apache 服务器。
然后,我们尝试使用 curl 工具从另一个系统访问这个脚本。
您会注意到,如果我们通过 curl 访问脚本时转达了Shellshock exploit,我们可以远程在 Apache 服务器上运行我们的命令。
补丁管理系统

在当前的盘算场景中,漏洞和补丁管理是一个永无止境的循环的一部分。当盘算机因已知漏洞而受到攻击以被使用时,这种漏洞的补丁已经存在;然而,它尚未精确地在系统上实施,从而导致攻击。
作为系统管理员,我们必须知道哪个补丁需要安装,哪个应该被忽略。
准备工作

由于可以使用 Linux 的内置工具举行补丁管理,因此在执行这些步骤之前不需要设置特定的设置。
操纵步骤

保持系统更新的最简单和最有效的方法是使用内置的更新管理器,该管理器内置在 Linux 系统中。在这里,我们将探究 Ubuntu 系统中更新管理器的工作原理:
选择要安装的更新,然后单击安装更新以继续。
工作原理

要更新我们的 Linux 系统,我们使用内置的更新管理器,根据 Linux 发行版。
在更新管理器中,我们可以安装全部可用的更新,或者根据我们的需求使用设置窗口举行设置。
设置窗口中,我们有选项来显示可以下载更新的存储库列表。
设置窗口中的第二个选项卡让我们添加 Canonical 的第三方合作同伴存储库。
使用下一个选项卡,我们可以指定何时以及何种类型的更新应该被下载。
我们还使用设置窗口查抄软件提供商的身份验证密钥。
最后一个选项卡统计,帮助将数据发送给 Ubuntu 项目开辟人员,以改进软件的性能。
在 Linux 系统上应用补丁

每当在任何软件中发现安全漏洞时,都会为该软件发布安全补丁,以便修复错误。通常,我们使用内置于 Linux 中的 Update Manager 来应用安全更新。但是,对于通过编译源代码安装的软件,Update Manager 大概不太有用。
对于这种情况,我们可以将补丁文件应用到原始软件源代码上,然后重新编译软件。
准备工作

由于我们将使用 Linux 的内置命令来创建和应用补丁,在开始以下步骤之前不需要做任何事变。我们将创建一个 C 语言的示例程序来了解创建补丁文件的过程。
如何做…

在本节中,我们将看看如何使用diff命令为程序创建补丁,然后我们将使用patch命令应用补丁。
你会注意到一个新的example.c.orig文件已经被创建,这是备份文件。
如果我们没有收到任何错误消息,这意味着补丁文件现在可以在原始文件上运行。
  1. patch < example.patch
复制代码
我们可以看到在打补丁后文件的大小差异。
它是如何工作的…

我们首先创建一个示例 C 程序。然后,我们创建它的副本,并添加几行代码以使其成为更新版本。之后,我们使用diff命令创建一个补丁文件。在应用补丁之前,我们通过干跑来查抄是否有任何错误。
如果我们没有错误,我们使用 patch 命令应用补丁。现在,原始文件将具有与更新版本文件相同的内容。
我们也可以使用-R选项来撤销补丁。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4