分类 系统运维 下的文章

在我们之前的 NMAP 安装一文中,列出了 10 种不同的 ZeNMAP 扫描模式,大多数的模式使用了不同的参数。各种不同参数代表执行不同的扫描模式。之前我们介绍过两种扫描类型 PING 扫描 和 UDP 扫描,这篇文章将介绍最后剩下的两种常用扫描类型。

四种通用扫描类型

下面列出了最常用的四种扫描类型:

  1. PING 扫描(-sP
  2. TCP SYN 扫描(-sS
  3. TCP Connect() 扫描(-sT
  4. UDP 扫描(-sU

当我们利用 NMAP 来执行扫描的时候,这四种扫描类型是我们需要熟练掌握的。更重要的是需要知道这些命令做了什么,并且需要知道这些命令是怎么做的。在这篇文章中将介绍两种 TCP 扫描 — TCP SYN 扫描和 TCP Connect() 扫描。

TCP SYN 扫描 (-sS)

TCP SYN 扫描是默认的 NMAP 扫描方式。为了运行 TCP SYN 扫描,你需要有 Root 权限。

TCP SYN 扫描的目的是找到被扫描系统上的已开启端口。使用 NMAP 扫描可以扫描在防火墙另一侧的系统。当扫描通过防火墙时,扫描时间会延长,因为数据包会变慢。

TCP SYN 扫描的工作方式是启动一个“三次握手”。正如在另一篇文章中所述,“三次握手”发生在两个系统之间。首先,源系统发送一个包到目标系统,这是一个同步(SYN)请求。然后,目标系统将通过同步/应答(SYN/ACK)响应。接下来,源系统将通过应答(ACK)来响应,从而建立起一个通信连接,然后,可以在两个系统之间传输数据。

TCP SYN 扫描通过执行下面的步骤来进行工作:

  1. 源系统向目标系统发送一个同步请求,该请求中包含一个端口号。
  2. 如果添加在上一步中的所请求的端口号是开启的,那么目标系统将通过同步/应答(SYN/ACK)来响应源系统。
  3. 源系统通过重置(RST)来响应目标系统,从而断开连接。
  4. 目标系统可以通过重置/应答(RST/ACK)来响应源系统。

这种连接已经开始建立,所以这被认为是半开放连接。因为连接状态是由 NMAP 来管理的,所以你需要有 Root 权限。

如果被扫描的端口是关闭的,那么将执行下面的步骤:

  1. 源系统发送一个同步(SYN)请求到目标系统,该请求中包含一个端口号。
  2. 目标系统通过重置(RST)响应源系统,因为该端口是关闭的。

如果目标系统处于防火墙之后,那么 ICMP 传输或响应会被防火墙禁止,此时,会执行下面的步骤:

  1. 源系统发送一个同步(SYN)请求到目标系统,该请求中包含一个端口号。
  2. 没有任何响应,因为请求被防火墙过滤了。

在这种情况下,端口可能是被过滤、或者可能打开、或者可能没打开。防火墙可以设置禁止指定端口所有包的传出。防火墙可以禁止所有传入某个指定端口的包,因此目标系统不会接收到请求。

注:无响应可能发生在一个启用了防火墙的系统上。即使在本地网络,你也可能会发现被过滤的端口。

我将向 图片1那样执行对单一系统(10.0.0.2)的 TCP SYN 扫描。使用命令 sudo nmap -sS <IP 地址> 来执行扫描。<IP 地址>可以改为一个单一 IP 地址,像图片1那样,也可以使用一组 IP 地址。

Figure 01.jpg

图片1

你可以看到它表明 997 个被过滤端口没有显示在下面。NMAP 找到两个开启的端口:139 和 445 。

注:请记住,NMAP 只会扫描绝大多数熟知的 1000 多个端口。以后,我们会介绍可以扫描所有端口或者指定端口的其它扫描。

该扫描会被 WireShark 俘获,正如图片2所展示的那样。在这儿,你可以看到对目标系统的初始地址解析协议(ARP)请求。在 ARP 请求下面的是一长列到达目标系统端口的 TCP 请求。第 4 行是到达 http-alt 端口(8080)。源系统的端口号为 47128 。正如图片3 展示的,许多 SYN 请求只有在做出响应以后才会发送。

Figure 2.jpg

图片2

Figure 3.jpg

图片3

在图片3的第 50 行和第 51 行,你可以看到,重置(RST)包被发送给了目标系统。第 53 行和第 55 行显示目标系统的 RST/ACK(重置/应答)。第 50 行是针对 ‘microsoft-ds’ 端口(445),第 51 行是针对 ‘netbios-ssn’ 端口(135),我们可以看到,这两个端口都是打开的。(LCTT 译注:在 50 行和 51 行之前,目标系统发回了 SYN/ACK 响应,表示端口打开。)除了这些端口,没有其他 ACK(应答)是来自目标系统的。每一个请求均可发送超过 1000 次。

正如图片4所展示的,目标系统是 Windows 系统,我关闭了系统防火墙,然后再次执行扫描。现在,我们看到了 997 个已关闭端口不是 997 个被过滤端口。目标系统上的 135 端口之前被防火墙禁止了,现在也是开启的。

Figure 04.jpg

图片4

TCP Connect() 扫描 (-sT)

尽管 TCP SYN 扫描需要 Root 权限,但 TCP Connect() 扫描并不需要。在这种扫描中会执行一个完整的“三次握手”。因为不需要 Root 权限,所以在无法获取 Root 权限的网络上,这种扫描非常有用。

TCP Connect() 扫描的工作方式也是执行“三次握手”。正如上面描述过的,“三次握手”发生在两个系统之间。源系统发送一个同步(SYN)请求到目标系统。然后,目标系统将通过同步/应答(SYN/ACK)来响应。最后,源系统通过应答(ACK)来响应,从而建立起连接,然后便可在两个系统之间传输数据。

TCP Connect 扫描通过执行下面的步骤来工作:

  1. 源系统发送一个同步(SYN)请求到目标系统,该请求中包含一个端口号。
  2. 如果上一步所请求的端口是开启的,那么目标系统将通过同步/应答(SYN/ACK)来响应源系统。
  3. 源系统通过应答(ACK)来响应目标系统从而完成会话创建。
  4. 然后,源系统向目标系统发送一个重置(RST)包来关闭会话。
  5. 目标系统可以通过同步/应答(SYN/ACK)来响应源系统。

若步骤 2 执行了,那么源系统就知道在步骤 1 中的指定端口是开启的。

如果端口是关闭的,那么会发生和 TCP SYN 扫描相同的事。在步骤 2 中,目标系统将会通过一个重置(RST)包来响应源系统。

可以使用命令 nmap -sT <IP 地址> 来执行扫描。<IP 地址>可以改为一个单一 IP 地址,像图片5那样,或者使用一组 IP 地址。

TCP Connect() 扫描的结果可以在图片5中看到。在这儿,你可以看到,有两个已开启端口:139 和 445,这和 TCP SYN 扫描的发现一样。端口 80 是关闭的。剩下没有显示的端口是被过滤了的。

Figure 05.jpg

图片5

让我们关闭防火墙以后再重新扫描一次,扫描结果展示在图片6中。

Figure 06.jpg

图片6

关闭防火墙以后,我们可以看到,更多的端口被发现了。就和 TCP SYN 扫描一样,关闭防火墙以后,发现 139 端口和 445 端口是开启的。我们还发现,端口 2869 也是开启的。也发现有 996 个端口是关闭的。现在,端口 80 是 996 个已关闭端口的一部分 — 不再被防火墙过滤。

在一些情况下, TCP Connect() 扫描可以在一个更短的时间内完成。和 TCP SYN 扫描相比,TCP Connect() 扫描也可以找到更多的已开启端口


via: https://www.linuxforum.com/threads/nmap-common-scans-part-two.3879/

作者:Jarret 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

bmon 是类 Unix 系统中一个基于文本,简单但非常强大的 网络监视和调试工具,它能抓取网络相关统计信息并把它们以用户友好的格式展现出来。它是一个可靠高效的带宽监视和网速估测工具。

它能使用各种输入模块读取输入,并以各种输出模式显示输出,包括交互式文本用户界面和用于脚本编写的可编程文本输出。

推荐阅读: 一大波你可能不知道的 Linux 网络工具

在 Linux 上安装 bmon 带宽监视工具

几乎所有 Linux 发行版的默认仓库中都有 bmon 软件包,可以从默认包管理器中轻松安装,但可用的版本可能比较旧。

$ sudo yum install bmon      [On RHEL/CentOS/Fedora]
$ sudo dnf install bmon      [On Fedora 22+]
$ sudo apt-get install bmon  [On Debian/Ubuntu/Mint]

另外,你也可以从 https://pkgs.org/download/bmon 获取对应你 Linux 发行版的 .rpm.deb 软件包。

如果你想要最新版本(例如版本 4.0)的 bmon,你需要通过下面的命令从源码构建。

在 CentOS、RHEL 和 Fedora 中

$ git clone https://github.com/tgraf/bmon.git
$ cd bmon
$ sudo yum install make libconfuse-devel libnl3-devel libnl-route3-devel ncurses-devel
$ sudo ./autogen.sh
$ sudo./configure
$ sudo make
$ sudo make install

在 Debian、Ubuntu 和 Linux Mint 中

$ git clone https://github.com/tgraf/bmon.git
$ cd bmon
$ sudo apt-get install build-essential make libconfuse-dev libnl-3-dev libnl-route-3-dev libncurses-dev pkg-config dh-autoreconf
$ sudo ./autogen.sh
$ sudo ./configure
$ sudo make
$ sudo make install

如何在 Linux 中使用 bmon 带宽监视工具

通过以下命令运行它(初学者说明:RX 表示每秒接收数据,TX 表示每秒发送数据):

$ bmon

bmon - Linux 带宽监视

d 键可以查看更详细的带宽使用情况的图形化统计信息,参考下面的截图。

bmon - Detailed Bandwidth Statistics

Shift + ? 可以查看快速指南。再次按 Shift + ? 可以退出(指南)界面。

bmon - 快速指南

bmon – 快速指南

通过 UpDown 箭头键可以查看特定网卡的统计信息。但是,要监视一个特定的网卡,你也可以像下面这样作为命令行参数指定。

推荐阅读: 监控 Linux 性能的 13 个工具

选项 -p 指定了要显示的网卡,在下面的例子中,我们会监视网卡 enp1s0

$ bmon -p enp1s0

bmon - 监控以太网带宽

bmon – 监控以太网带宽

要查看每秒位数而不是每秒字节数,可以像下面这样使用 -b 选项:

$ bmon -bp enp1s0

我们也可以像下面这样按秒指定刷新间隔时间:

$ bmon -r 5 -p enp1s0

如何使用 bmon 的输入模块

bmon 有很多能提供网卡统计数据的输入模块,其中包括:

  1. netlink - 使用 Netlink 协议从内核中收集网卡和流量控制统计信息。这是默认的输入模块。
  2. proc - 从 /proc/net/dev 文件读取网卡统计信息。它被认为是传统界面,且提供了向后兼容性。它是 Netlink 接口不可用时的备用模块。
  3. dummy - 这是用于调试和测试的可编程输入模块。
  4. null - 停用数据收集。

要查看关于某个模块的其余信息,可以像下面这样使用 help 选项调用它:

$ bmon -i netlink:help

下面的命令将启用 proc 输入模块运行 bmon:

$ bmon -i proc -p enp1s0

如何使用 bmon 输出模块

bmon 也使用输出模块显示或者导出上面输入模块收集的统计数据,输出模块包括:

  1. curses - 这是一个交互式的文本用户界面,它提供实时的网上估计以及每个属性的图形化表示。这是默认的输出模块。
  2. ascii - 这是用于用户查看的简单可编程文本输出。它能显示网卡列表、详细计数以及图形到控制台。当 curses 库不可用时这是默认的备选输出模块。
  3. format - 这是完全脚本化的输出模式,供其它程序使用 - 意味着我们可以在后面的脚本和程序中使用它的输出值进行分析。
  4. null - 停用输出。

像下面这样通过 help 选项获取更多的模块信息。

$ bmon -o curses:help

下面的命令会用 ascii 输出模式运行 bmon:

$ bmon -p enp1s0 -o ascii  

bmon - Ascii 输出模式

bmon – Ascii 输出模式

我们也可以用 format 输出模式,然后在脚本或者其它程序中使用获取的值:

$ bmon -p enp1s0 -o format

bmon - Format 输出模式

bmon – Format 输出模式

想要其它的使用信息、选项和事例,可以阅读 bmon 的 man 手册:

$ man bmon 

访问 bmon 的 Github 仓库:https://github.com/tgraf/bmon

就是这些,在不同场景下尝试 bmon 的多个功能吧,别忘了在下面的评论部分和我们分享你的想法。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S 爱好者、Linux 系统管理员、网络开发人员,现在也是 TecMint 的内容创作者,他喜欢和电脑一起工作,坚信共享知识。


via: http://www.tecmint.com/bmon-network-bandwidth-monitoring-debugging-linux/

作者:Aaron Kili 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

DHCP(Dynamic Host Configuration Protocol)是一个网络协议,它使得服务器能从预定义的 IP 池中为网络中的客户端节点自动分配 IP 地址并提供其它相关的网络配置参数。

这意味着每次客户端节点启动(连接到网络)的时候,它都会获得一个和从不改变的“静态” IP 地址相反的“动态” IP 地址。DHCP 服务器给 DHCP 客户端分配 IP 地址称为“租约”,租约时间随客户端需要的连接时间或 DHCP 的配置而异。

在这篇指南中,我们会介绍如何在 CentOS/RHEL 和 Fedora 发行版中安装和配置 DHCP 服务。

设置测试环境

本次安装中我们使用如下的测试环境:

  • DHCP 服务器 - CentOS 7
  • DHCP 客户端 - Fedora 25 和 Ubuntu 16.04

DHCP 如何工作?

在进入下一步之前,让我们首先了解一下 DHCP 的工作流程:

  • 当已连接到网络的客户端计算机(配置为使用 DHCP)启动时,它会发送一个 DHCPDISCOVER 消息到 DHCP 服务器。
  • 当 DHCP 服务器接收到 DHCPDISCOVER 请求消息时,它会回复一个 DHCPOFFER 消息。
  • 客户端收到 DHCPOFFER 消息后,它再发送给服务器一个 DHCPREQUEST 消息,表示客户端已准备好获取 DHCPOFFER 消息中提供的网络配置。
  • 最后,DHCP 服务器收到客户端的 DHCPREQUEST 消息,并回复 DHCPACK 消息,表示允许客户端使用分配给它的 IP 地址。

第一步:在 CentOS 上安装 DHCP 服务

1、安装 DHCP 服务非常简单,只需要运行下面的命令即可。

$ yum -y install dhcp

重要:假如系统中有多个网卡,但你想只在其中一个网卡上启用 DHCP 服务,可以按照下面的步骤在该网卡上启用 DHCP 服务。

2、 打开文件 /etc/sysconfig/dhcpd,将指定网卡的名称添加到 DHCPDARGS 列表,假如网卡名称为 eth0,则添加:

DHCPDARGS=eth0

保存文件并退出 。

第二步:在 CentOS 上配置 DHCP 服务

3、 对于初学者来说,配置 DHCP 服务的第一步是创建 dhcpd.conf 配置文件,DHCP 主要配置文件一般是 /etc/dhcp/dhcpd.conf(默认情况下该文件为空),该文件保存了发送给客户端的所有网络信息。

但是,有一个样例配置文件 /usr/share/doc/dhcp*/dhcpd.conf.sample,这是配置 DHCP 服务的良好开始。

DHCP 配置文件中定义了两种类型的语句:

  • 参数 - 说明如何执行任务、是否执行任务、或者给 DHCP 客户端发送什么网络配置选项。
  • 声明 - 指定网络拓扑、定义客户端、提供客户端地址、或将一组参数应用于一组声明。

因此,首先复制示例配置文件为主配置文件:

$ cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 

4、 然后,打开主配置文件并定义你的 DHCP 服务选项:

$ vi /etc/dhcp/dhcpd.conf 

首先在文件开头设置以下应用于全部子网的全局参数(注意要使用你实际场景中的值):

option domain-name "tecmint.lan";
option domain-name-servers ns1.tecmint.lan, ns2.tecmint.lan;
default-lease-time 3600; 
max-lease-time 7200;
authoritative;

5、 然后,定义一个子网;在这个事例中,我们会为 192.168.56.0/24 局域网配置 DHCP(注意使用你实际场景中的值):

subnet 192.168.56.0 netmask 255.255.255.0 {
option routers                  192.168.56.1;
option subnet-mask              255.255.255.0;
option domain-search            "tecmint.lan";
option domain-name-servers      192.168.56.1;
range   192.168.56.10   192.168.56.100;
range   192.168.56.120  192.168.56.200;
}

第三步:为 DHCP 客户端分配静态 IP

只需要在 /etc/dhcp/dhcpd.conf 文件中定义下面的部分,其中你必须显式指定它的 MAC 地址和打算分配的 IP,你就可以为网络中指定的客户端计算机分配一个静态 IP 地址:

host ubuntu-node {
hardware  ethernet 00:f0:m4:6y:89:0g;
fixed-address 192.168.56.105;
}
host fedora-node {
hardware  ethernet 00:4g:8h:13:8h:3a;
fixed-address 192.168.56.110;
}

保存文件并关闭。

注意:你可以使用下面的命令找到 Linux 的 MAC 地址。

$ ifconfig -a eth0 | grep HWaddr

6、 现在,使用下面的命令启动 DHCP 服务,并使在下次系统启动时自动启动:

---------- On CentOS/RHEL 7 ---------- 
$ systemctl start dhcpd
$ systemctl enable dhcpd
---------- On CentOS/RHEL 6 ----------
$ service dhcpd start
$ chkconfig dhcpd on

7、 另外,别忘了使用下面的命令允许 DHCP 服务通过防火墙(DHCPD 守护进程通过 UDP 监听67号端口):

---------- On CentOS/RHEL 7 ----------
$ firewall-cmd --add-service=dhcp --permanent 
$ firewall-cmd --reload 
---------- On CentOS/RHEL 6 ----------
$ iptables -A INPUT -p tcp -m state --state NEW --dport 67 -j ACCEPT
$ service iptables save

第四步:配置 DHCP 客户端

8、 现在,你可以为网络中的客户端配置自动从 DHCP 服务器中获取 IP 地址。登录到客户端机器并按照下面的方式修改以太网接口的配置文件(注意网卡的名称和编号):

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

添加下面的选项:

DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes

保存文件并退出。

9、 你也可以在桌面服务器中按照下面的截图(Ubuntu 16.04桌面版)通过 GUI 设置 MethodAutomatic (DHCP)

Set DHCP in Client Network

在客户端网络中设置 DHCP

10、 按照下面的命令重启网络服务(你也可以通过重启系统):

---------- On CentOS/RHEL 7 ----------
$ systemctl restart network
---------- On CentOS/RHEL 6 ----------
$ service network restart

到了这里,如果所有设置都是正确的,你的客户端就应该能自动从 DHCP 服务器中获取 IP 地址。

你也可以阅读:

  1. 如何在 Debian Linux 中安装和配置 Multihomed ISC DHCP 服务
  2. 配置网络的 10 个有用的 “IP” 命令

在这篇文章中我们为你展示了如何在 RHEL/CentOS 中安装 DHCP 服务。在下面的评论框中给我们反馈吧。在接下来的文章中,我们还会为你展示如何在 Debian/Ubuntu 中安装 DHCP 服务。和 TecMint 保持联系。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S 的爱好者,即将推出的 Linux SysAdmin 网络开发人员,目前也是 TecMint 的内容创作者,他喜欢和电脑一起工作,并且坚信共享知识。


via: http://www.tecmint.com/install-dhcp-server-in-centos-rhel-fedora/

作者:Aaron Kili 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这篇文章讲的是在两个 Samba4 活动目录域控制器之间,通过一些强大的 Linux 工具来完成 SysVol 的复制操作,比如 Rsync 数据同步工具Cron 任务调度进程SSH 协议

需求:

1、在 Ubuntu 系统上使用 Samba4 来创建活动目录架构

2、在 Linux 命令行下管理 Samba4 AD 架构

3、使用 Windows 10 的 RSAT 工具来管理 Samba4 活动目录架构

4、在 Windows 下管理 Samba4 AD 域管制器 DNS 和组策略

5、将另一台 Ubuntu DC 服务器加入到 Samba4 AD DC 实现双域控主机模式

第一步:配置 DC 服务器时间同步

1、在两个域控制器之间复制 sysvol 目录的内容之前,你得保证这两个服务器时间设置准确且一致。

如果这两个服务器的时间延迟大于 5 分钟,并且时钟也不同步,你将会遇到 AD 账号和域复制的各种问题。

为了解决多个域控制器之间时间漂移的问题,你需要在服务器上执行如下命令来安装和配置 NTP 服务

# apt-get install ntp

2、在 NTP 服务安装完成之后,打开主配置文件,把默认的 pool 值注释(在每行 pool 参数前添加 # ),并且添加新的 pool 值,指向已安装了 NTP 服务端的主 Samba4 AD DC FQDN,如下所示。

# nano /etc/ntp.conf

把下面几行添加到 ntp.conf 配置文件。

pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
pool adc1.tecmint.lan
# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com

Configure NTP for Samba4

Samba4 配置 NTP 服务

3、先不要关闭该文件,在文件末尾添加如下内容,这是为了让其它客户端能够查询并与这个 NTP 服务器同步时间,并发出 NTP 签署请求,以防主 DC 离线:

restrict source notrap nomodify noquery mssntp
ntpsigndsocket /var/lib/samba/ntp_signd/

4、最后,关闭并保存该配置文件,然后重启 NTP 服务以应用更改。等待几分钟后时间同步完成,执行 ntpq 命令打印出 adc1 时间同步情况。

# systemctl restart ntp
# ntpq -p

Synchronize NTP Time with Samba4 AD

与 Samba4 AD 同步 NTP 时间

第二步:通过 Rsync 命令来复制第一个 DC 服务器上的 SysVol 目录

默认情况下,Samba4 AD DC 不会通过 DFS-R 分布式文件系统复制 Distributed File System Replication )或者 FRS 文件复制服务 File Replication Service )来复制 SysVol 目录。

这意味着只有在第一个域控制器联机时, 组策略对象 Group Policy objects 才可用。否则组策略设置和登录脚本不会应用到已加入域的 Windosws 机器上。

为了克服这个障碍,以及基本实现 SysVol 目录复制的目的,我们通过执行一个基于 SSH 的身份认证并使用 SSH 加密通道的Linux 同步命令来从第一个域控制器安全地传输 GPO 对象到第二个域控制器。

这种方式能够确保 GPO 对象在域控制器之间的一致性,但是也有一个很大的缺点。它只能进行单向同步,因为在同步 GPO 目录的时候, rsync 命令会从源 DC 服务器传输所有的更改到目标 DC 服务器,

源 DC 服务器上不存在的组策略对象也会从目标 DC 服务器上删除,为了限制并避免任何冲突,所有的 GPO 编辑操作只能在第一个 DC 服务器上执行。

5、要进行 SysVol 复制,先到第一个 AD DC 服务器上生成 SSH 密钥,然后使用下面的命令把该密钥传输到第二个 DC 服务器。

在生成密钥的过程中不要设置密码,以便在无用户干预的情况下进行传输。

# ssh-keygen -t RSA  
# ssh-copy-id root@adc2  
# ssh adc2 
# exit 

Generate SSH Key on Samba4 DC

在 Samba4 DC 服务器上生成 SSH 密钥

6、 当你确认 root 用户可以从第一个 DC 服务器以免密码方式登录到第二个 DC 服务器时,执行下面的 rsync 命令,加上 --dry-run 参数来模拟 SysVol 复制过程。注意把对应的参数值替换成你自己的数据。

# rsync --dry-run -XAavz --chmod=775 --delete-after  --progress --stats  /var/lib/samba/sysvol/ root@adc2:/var/lib/samba/sysvol/

7、如果模拟复制过程正常,那么再次执行去掉 --dry-run 参数的 rsync 命令,来真实的在域控制器之间复制 GPO 对象。

# rsync -XAavz --chmod=775 --delete-after  --progress --stats  /var/lib/samba/sysvol/ root@adc2:/var/lib/samba/sysvol/

Samba4 AD DC SysVol Replication

Samba4 AD DC SysVol 复制

8、在 SysVol 复制完成之后,登录到目标域控制器,然后执行下面的命令来列出其中一个 GPO 对象目录的内容。

从第一个 DC 服务器上执行这个命令时,列出的 GPO 对象也要相同。

# ls -alh /var/lib/samba/sysvol/your_domain/Policiers/

Verify Samba4 DC SysVol Replication

验证 Samba4 DC SysVol 复制结果是否正常

9、为了自动完成组策略复制的过程(通过网络传输 sysvol 目录),你可以使用 root 账号设置一个任务来执行同步命令,如下所示,设置为每隔 5 分钟执行一次该命令。

# crontab -e 

添加一条每隔 5 分钟运行的同步命令,并把执行结果以及错误信息输出到日志文件 /var/log/sysvol-replication.log 。如果执行命令异常,你可以查看该文件来定位问题。

*/5 * * * * rsync -XAavz --chmod=775 --delete-after  --progress --stats  /var/lib/samba/sysvol/ root@adc2:/var/lib/samba/sysvol/ > /var/log/sysvol-replication.log 2>&1

10、如果以后 SysVol ACL 权限有问题,你可以通过下面的命令来检测和修复这些异常。

# samba-tool ntacl sysvolcheck
# samba-tool ntacl sysvolreset

Fix SysVol ACL Permissions

修复 SysVol ACL 权限问题

11、如果第一个 Samba4 AD DCFSMO 角色,即“PDC 模拟器”不可用,你可以强制 Microsoft Windows 系统上的组策略管理控制台只连接到第二个域控制器,通过选择更改域控制器选项和手动选择目标机器,如下图所示。

Change Samba4 Domain Controller

更改 Samba4 域控制器

Select Samba4 Domain Controller

选择 Samba4 域控制器

当你从组策略管理控制台连接到第二个 DC 服务器时,你应该避免对组策略做任何更改。否则,当第一个 DC 服务器恢复正常后, rsync 命令将会删除在第二个 DC 服务器上所做的更改。


作者简介:

Matei Cezar -- 我是一个电脑迷,开源软件和 Linux 系统爱好者,有超过 4 年的 Linux 桌面、服务器版本系统和 bash 编程经验。


via: http://www.tecmint.com/samba4-ad-dc-sysvol-replication/

作者:Matei Cezar 译者:rusking 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

 title=

作为一个系统管理员/SRE 工作 5 年后,我知道当我连接到一台 Linux 服务器时我首先应该做什么。这里有一系列关于服务器你必须了解的信息,以便你可以(在大部分时间里)更好的调试该服务器。

连上 Linux 服务器的第一分钟

这些命令对于有经验的软件工程师来说都非常熟悉,但我意识到对于一个刚开始接触 Linux 系统的初学者来说,例如我在 Holberton 学校任教的学生,却并非如此。这也是我为什么决定分享当我连上 Linux 服务器首先要运行的前 5 个命令的原因。

w
history
top
df
netstat

这 5 个命令在任何一个 Linux 发行版中都有,因此不需要额外的安装步骤你就可以直接使用它们。

w:

[ubuntu@ip-172-31-48-251 ~]$ w
23:40:25 up 273 days, 20:52,  2 users,  load average: 0.33, 0.14, 0.12
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
ubuntu pts/0    104-7-14-91.ligh 23:39    0.00s  0.02s  0.00s w
root pts/1    104-7-14-91.ligh 23:40    5.00s  0.01s  0.03s sshd: root [priv]
[ubuntu@ip-172-31-48-251 ~]$ 

这里列出了很多有用的信息。首先,你可以看到服务器运行时间 uptime,也就是服务器持续运行的时间。然后你可以看到有哪些用户连接到了服务器,当你要确认你没有影响你同事工作的时候这非常有用。最后 load average 能很好的向你展示服务器的健康状态。

history

[ubuntu@ip-172-31-48-251 ~]$ history
   1  cd /var/app/current/log/
   2  ls -al
   3  tail -n 3000 production.log 
   4  service apache2 status
   5  cat ../../app/services/discourse_service.rb 

history 能告诉你当前连接的用户之前运行了什么命令。你可以看到很多关于这台机器之前在执行什么类型的任务、可能出现了什么错误、可以从哪里开始调试工作等信息。

top

top - 23:47:54 up 273 days, 21:00,  2 users,  load average: 0.02, 0.07, 0.10
Tasks:  79 total,   2 running,  77 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.0%us,  0.0%sy,  0.0%ni, 98.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.3%st
Mem:   3842624k total,  3128036k used,   714588k free,   148860k buffers
Swap:        0k total,        0k used,        0k free,  1052320k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                                      
21095 root      20   0  513m  21m 4980 S  1.0  0.6   1237:05 python                                                                                                                                                                                                                        
1380 healthd   20   0  669m  36m 5712 S  0.3  1.0 265:43.82 ruby                                                                                                                                                                                                                          
19703 dd-agent  20   0  142m  25m 4912 S  0.3  0.7  11:32.32 python                                                                                                                                                                                                                        
   1 root      20   0 19596 1628 1284 S  0.0  0.0   0:10.64 init                                                                                                                                                                                                                          
   2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                                                                                                                      
   3 root      20   0     0    0    0 S  0.0  0.0  27:31.42 ksoftirqd/0                                                                                                                                                                                                                   
   4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kworker/0:0                                                                                                                                                                                                                   
   5 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                                                                                  
   7 root      20   0     0    0    0 S  0.0  0.0  42:51.60 rcu_sched                                                                                                                                                                                                                     
   8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 rcu_bh

你想知道的下一个信息:服务器当前在执行什么工作。使用 top 命令你可以看到所有正在执行的进程,然后可以按照 CPU、内存使用进行排序,并找到占用资源的进程。

df

[ubuntu@ip-172-31-48-251 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  4.5G  3.3G  58% /
devtmpfs        1.9G   12K  1.9G   1% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm

你服务器正常工作需要的下一个重要资源就是磁盘空间。磁盘空间消耗完是非常典型的问题。

netstat

[ubuntu@ip-172-31-48-251 ec2-user]# netstat -lp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 *:http                      *:*                         LISTEN      1637/nginx          
tcp        0      0 *:ssh                       *:*                         LISTEN      1209/sshd           
tcp        0      0 localhost:smtp              *:*                         LISTEN      1241/sendmail       
tcp        0      0 localhost:17123             *:*                         LISTEN      19703/python        
tcp        0      0 localhost:22221             *:*                         LISTEN      1380/puma 2.11.1 (t 
tcp        0      0 *:4242                      *:*                         LISTEN      18904/jsvc.exec     
tcp        0      0 *:ssh                       *:*                         LISTEN      1209/sshd           

计算机已成为我们世界的重要一部分,因为它们有通过网络进行相互交流的能力。知道你的服务器正在监听什么端口、IP地址是什么、以及哪些进程在使用它们,这对于你来说都非常重要。

显然这个列表会随着你的目的和你已有的信息而变化。例如,当你需要调试性能的时候,Netflix 就有一个自定义的列表。你有任何不在我 Top 5 中的有用命令吗?在评论部分和我们一起分享吧!


via: https://www.linux.com/blog/first-5-commands-when-i-connect-linux-server

作者:SYLVAIN KALACHE 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这篇文章将讲解如何使用 Ubuntu 16.04 服务器版系统来创建第二台 Samba4 域控制器,并将其加入到已创建好的 Samba AD DC 林环境中,以便为一些关键的 AD DC 服务提供负载均衡及故障切换功能,尤其是为那些重要的服务,比如 DNS 服务和使用 SAM 数据库的 AD DC LDAP 模式。

需求

这篇文章是 Samba4 AD DC 系列的第篇,前边几篇如下:

1、在 Ubuntu 系统上使用 Samba4 来创建活动目录架构

2、在 Linux 命令行下管理 Samba4 AD 架构

3、使用 Windows 10 的 RSAT 工具来管理 Samba4 活动目录架构

4、在 Windows 下管理 Samba4 AD 域管制器 DNS 和组策略

第一步:为设置 Samba4 进行初始化配置

1、在开始把第二个 DC 服务器加入到 Samba4 AD DC 域环境之前,你需要注意一些初始化设置信息,首先,确保这个新系统的主机名包含描述性名称。

假设第一个域服务器的主机名叫做 adc1 ,你可以把第二个域服务器命名为 adc2,以保持域控制器名称的一致性。

执行下面的命令来修改系统主机名

# hostnamectl set-hostname adc2

或者你也可以手动编辑 /etc/hostname 文件,在新的一行输入你想设置的主机名。

# nano /etc/hostname

这里添加主机名。

adc2

2、下一步,打开本地系统解析文件并添加一个条目,包含主域控制器的 IP 地址和 FQDN 名称。如下图所示:

在这篇教程中,主域控服务器的主机名为 adc1.tecmint.lan ,其对应的 IP 地址为 192.168.1.254 。

# nano /etc/hosts

添加如下行:

IP_of_main_DC       FQDN_of_main_DC     short_name_of_main_DC

Set Hostname for Samba4 AD DC

为 Samba4 AD DC 服务器设置主机名

3、下一步,打开 /etc/network/interfaces 配置文件并设置一个静态 IP 地址,如下图所示:

注意 dns-nameserversdns-search 这两个参数的值。为了使 DNS 解析正常工作,需要把这两个值设置成主 Samba4 AD DC 服务器的 IP 地址和域名。

重启网卡服务以让修改的配置生效。检查 /etc/resolv.conf 文件,确保该网卡上配置的这两个 DNS 的值已更新到这个文件。

# nano /etc/network/interfaces

编辑并替换你自定义的 IP 设置:

auto ens33
iface ens33 inet static
address 192.168.1.253
netmask 255.255.255.0
brodcast 192.168.1.1
gateway 192.168.1.1
dns-nameservers 192.168.1.254
dns-search tecmint.lan

重启网卡服务并确认生效。

# systemctl restart networking.service
# cat /etc/resolv.conf

Configure DNS for Samba4 AD

配置 Samba4 AD 服务器的 DNS

当你通过简写名称(用于构建 FQDN 名)查询主机名时, dns-search 值将会自动把域名添加上。

4、为了测试 DNS 解析是否正常,使用一系列 ping 命令测试,命令后分别为简写名, FQDN 名和域名,如下图所示:

在所有测试用例中,Samba4 AD DC DNS 服务器都应该返回主域控服务器的 IP 地址。

Verify DNS Resolution for Samba4 AD

验证 Samba4 AD 环境 DNS 解析是否正常

5、最后你需要注意的是确保这个主机跟域控服务器时间同步。你可以通过下面的命令在系统上安装 NTP 客户端工具来实现时间同步功能:

# apt-get install ntpdate

6、假设你想手动强制本地服务器与 samba4 AD DC 服务器时间同步,使用 ntpdate 命令加上主域控服务器的主机名,如下所示:

# ntpdate adc1

Time Synchronize with Samba4 AD

与 Samba4 AD 服务器进行时间同步

第 2 步:安装 Samba4 必须的依赖包

7、为了让 Ubuntu 16.04 系统加入到你的域中,你需要通过下面的命令从 Ubuntu 官方软件库中安装 Samba4 套件、 Kerberos 客户端 和其它一些重要的软件包以便将来使用:

# apt-get install samba krb5-user krb5-config winbind libpam-winbind libnss-winbind

Install Samba4 in Ubuntu

在 Ubuntu 系统中安装 Samba4

8、在安装的过程中,你需要提供 Kerberos 域名。输入大写的域名然后按回车键完成安装过程。

Configure Kerberos Authentication for Samba4

为 Samba4 配置 Kerberos 认证

9、所有依赖包安装完成后,通过使用 kinit 命令为域管理员请求一个 Kerberos 票据以验证设置是否正确。使用 klist 命令来列出已授权的 kerberos 票据信息。

# kinit domain-admin-user@YOUR_DOMAIN.TLD
# klist

Verify Kerberos on Samba4 Domain

在 Samba4 域环境中验证 Kerberos

第 3 步:以域控制器的身份加入到 Samba4 AD DC

10、在把你的机器集成到 Samba4 DC 环境之前,先把系统中所有运行着的 Samba4 服务停止,并且重命名默认的 Samba 配置文件以便从头开始。在域控制器配置的过程中, Samba 将会创建一个新的配置文件。

# systemctl stop samba-ad-dc smbd nmbd winbind
# mv /etc/samba/smb.conf /etc/samba/smb.conf.initial

11、在准备加入域前,先启动 samba-ad-dc 服务,之后使用域管理员账号运行 samba-tool 命令将服务器加入到域。

# samba-tool domain join your_domain -U "your_domain_admin"

加入域过程部分截图:

# samba-tool domain join tecmint.lan DC -U "tecmint_user"

输出示例:

Finding a writeable DC for domain 'tecmint.lan'
Found DC adc1.tecmint.lan
Password for [WORKGROUP\tecmint_user]:
workgroup is TECMINT
realm is tecmint.lan
checking sAMAccountName
Deleted CN=ADC2,CN=Computers,DC=tecmint,DC=lan
Adding CN=ADC2,OU=Domain Controllers,DC=tecmint,DC=lan
Adding CN=ADC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tecmint,DC=lan
Adding CN=NTDS Settings,CN=ADC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tecmint,DC=lan
Adding SPNs to CN=ADC2,OU=Domain Controllers,DC=tecmint,DC=lan
Setting account password for ADC2$
Enabling account
Calling bare provision
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Provision OK for domain DN DC=tecmint,DC=lan
Starting replication
Schema-DN[CN=Schema,CN=Configuration,DC=tecmint,DC=lan] objects[402/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=tecmint,DC=lan] objects[804/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=tecmint,DC=lan] objects[1206/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=tecmint,DC=lan] objects[1550/1550] linked_values[0/0]
Analyze and apply schema objects
Partition[CN=Configuration,DC=tecmint,DC=lan] objects[402/1614] linked_values[0/0]
Partition[CN=Configuration,DC=tecmint,DC=lan] objects[804/1614] linked_values[0/0]
Partition[CN=Configuration,DC=tecmint,DC=lan] objects[1206/1614] linked_values[0/0]
Partition[CN=Configuration,DC=tecmint,DC=lan] objects[1608/1614] linked_values[0/0]
Partition[CN=Configuration,DC=tecmint,DC=lan] objects[1614/1614] linked_values[28/0]
Replicating critical objects from the base DN of the domain
Partition[DC=tecmint,DC=lan] objects[97/97] linked_values[24/0]
Partition[DC=tecmint,DC=lan] objects[380/283] linked_values[27/0]
Done with always replicated NC (base, config, schema)
Replicating DC=DomainDnsZones,DC=tecmint,DC=lan
Partition[DC=DomainDnsZones,DC=tecmint,DC=lan] objects[45/45] linked_values[0/0]
Replicating DC=ForestDnsZones,DC=tecmint,DC=lan
Partition[DC=ForestDnsZones,DC=tecmint,DC=lan] objects[18/18] linked_values[0/0]
Committing SAM database
Sending DsReplicaUpdateRefs for all the replicated partitions
Setting isSynchronized and dsServiceName
Setting up secrets database
Joined domain TECMINT (SID S-1-5-21-715537322-3397311598-55032968) as a DC

Join Domain to Samba4 AD DC

把域加入到 Samba4 AD DC

12、在已安装了 Samba4 套件的 Ubuntu 系统加入域之后,打开 Samba 主配置文件添加如下行:

# nano /etc/samba/smb.conf

添加以下内容到 smb.conf 配置文件中。

dns forwarder = 192.168.1.1
idmap_ldb:use rfc2307 = yes
template shell = /bin/bash
winbind use default domain = true
winbind offline logon = false
winbind nss info = rfc2307
winbind enum users = yes
winbind enum groups = yes

使用你自己的 DNS 转发器 IP 地址替换掉上面 dns forwarder 地址。 Samba 将会把域权威区之外的所有 DNS 解析查询转发到这个 IP 地址。

13、最后,重启 samba 服务以使修改的配置生效,然后执行如下命令来检查活动目录复制功能是否正常。

# systemctl restart samba-ad-dc
# samba-tool drs showrepl

Configure Samba4 DNS

配置 Samba4 DNS

14、另外,还需要重命名原来的 /etc下的 kerberos 配置文件,并使用在加入域的过程中 Samba 生成的新配置文件 krb5.conf 替换它。

Samba 生成的新配置文件在 /var/lib/samba/private 目录下。使用 Linux 的符号链接将该文件链接到 /etc 目录。

# mv /etc/krb6.conf /etc/krb5.conf.initial
# ln -s /var/lib/samba/private/krb5.conf /etc/
# cat /etc/krb5.conf

Configure Kerberos

配置 Kerberos

15、同样,使用 samba 的 krb5.conf 配置文件验证 Kerberos 认证是否正常。通过以下命令来请求一个管理员账号的票据并且列出已缓存的票据信息。

# kinit administrator
# klist

Verify Kerberos Authentication with Samba

使用 Samba 验证 Kerberos 认证是否正常

第 4 步:验证其它域服务

16、你首先要做的一个测试就是验证 Samba4 DC DNS 解析服务是否正常。要验证域 DNS 解析情况,使用 host 命令,加上一些重要的 AD DNS 记录,进行域名查询,如下图所示:

每一次查询,DNS 服务器都应该返回两个 IP 地址。

# host your_domain.tld
# host -t SRV _kerberos._udp.your_domain.tld  # UDP Kerberos SRV record
# host -t SRV _ldap._tcp.your_domain.tld  # TCP LDAP SRV record

Verify Samba4 DC DNS

*验证 Samba4 DC DNS *

17、这些 DNS 记录也可以从注册过的已安装了 RSAT 工具的 Windows 机器上查询到。打开 DNS 管理器,展开到你的域 tcp 记录,如下图所示:

Verify DNS Records on Windows RSAT Tool

通过 Windows RSAT 工具来验证 DNS 记录

18、下一个验证是检查域 LDAP 复制同步是否正常。使用 samba-tool 工具,在第二个域控制器上创建一个账号,然后检查该账号是否自动同步到第一个 Samba4 AD DC 服务器上。

在 adc2 上:

# samba-tool user add test_user

在 adc1 上:

# samba-tool user list | grep test_user

Create User Account on Samba4 AD

在 Samba4 AD 服务器上创建账号

Verify Replication on Samba4 AD

在 Samba4 AD 服务器上验证同步功能

19、你也可以从 Microsoft AD DC 控制台创建一个账号,然后验证该账号是否都出现在两个域控服务器上。

默认情况下,这个账号都应该在两个 samba 域控制器上自动创建完成。在 adc1 服务器上使用 wbinfo 命令查询该账号名。

Create Account from Microsoft AD UC

从 Microsoft AD UC 创建账号

Verify Account Replication On Samba4 AD

在 Samba4 AD 服务器上验证账号同步功能

20、实际上,打开 Windows 机器上的 AD DC 控制台,展开到域控制器,你应该看到两个已注册的 DC 服务器。

Verify Samba4 Domain Controllers

验证 Samba4 域控制器

第 5 步:启用 Samba4 AD DC 服务

21、要在整个系统启用 Samba4 AD DC 的服务,首先你得禁用原来的不需要的 Samba 服务,然后执行如下命令仅启用 samba-ad-dc 服务:

# systemctl disable smbd nmbd winbind
# systemctl enable samba-ad-dc

Enable Samba4 AD DC Services

启用 Samba4 AD DC 服务

22、如果你从 Microsoft 客户端远程管理 Samba4 域控制器,或者有其它 Linux 或 Windows 客户机集成到当前域中,请确保在它们的网卡 DNS 服务器地址设置中提及 adc2 服务器的 IP 地址,以实现某种程序上的冗余。

下图显示 Windows 和 Debian/Ubuntu 客户机的网卡配置要求。

Configure Client to Administer Samba4 DC

配置 Windows 客户端来管理 Samba4 DC

Configure Linux Client to Administer Samba4 DC

配置 Linux 客户端来管理 Samba4 DC

如果第一台 DC 服务器 192.168.1.254 网络不通,则调整配置文件中 DNS 服务器 IP 地址的顺序,以免先查询这台不可用的 DNS 服务器。

最后,如果你想在 Linux 系统上使用 Samba4 活动目录账号来进行本地认证,或者为 AD LDAP 账号授予 root 权限,请查看在 Linux 命令行下管理 Samba4 AD 架构 这篇教程的 第 2 步和第 3 步。


作者简介:

我叫 Ravi Saive,TecMint 网站博主。一个喜欢在网上分享技术知识及经验的电脑极客和 Linux 系统专家。我的大多数的服务器都运行在 Linux 开源平台上。关注我:Twitter ,Facebook 和 Google+ 。


via: http://www.tecmint.com/join-additional-ubuntu-dc-to-samba4-ad-dc-failover-replication/

作者:Ravi Saive 译者:rusking 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出