2017年4月

Wireshark 是 Kali 中预置的众多有价值工具中的一种。与其它工具一样,它可以被用于正面用途,同样也可以被用于不良目的。当然,本文将会介绍如何追踪你自己的网络流量来发现潜在的非正常活动。

Wireshark 相当的强大,当你第一次见到它的时候可能会被它吓到,但是它的目的始终就只有一个,那就是追踪网络流量,并且它所实现的所有选项都只为了加强它追踪流量的能力。

安装

Kali 中预置了 Wireshark 。不过,wireshark-gtk 包提供了一个更好的界面使你在使用 Wireshark 的时候会有更友好的体验。因此,在使用 Wireshark 前的第一步是安装 wireshark-gtk 这个包。

# apt install wireshark-gtk

如果你的 Kali 是从 live 介质上运行的也不需要担心,依然有效。

基础配置

在你使用 Wireshark 之前,将它设置成你使用起来最舒适的状态可能是最好的。Wireshark 提供了许多不同的布局方案和选项来配置程序的行为。尽管数量很多,但是使用起来是相当直接明确的。

从启动 Wireshark-gtk 开始。需要确定启动的是 GTK 版本的。在 Kali 中它们是被分别列出的。

Wireshark running on Kali

布局

默认情况下,Wireshark 的信息展示分为三块内容,每一块都叠在另一块上方。(LCTT 译注:这里的三部分指的是展示抓包信息的时候的那三块内容,本段配图没有展示,配图 4、5、6 的设置不是默认设置,与这里的描述不符)最上方的一块是所抓包的列表。中间的一块是包的详细信息。最下面那块中包含的是包的原始字节信息。通常来说,上面的两块中的信息比最下面的那块有用的多,但是对于资深用户来说这块内容仍然是重要信息。

每一块都是可以缩放的,可并不是每一个人都必须使用这样叠起来的布局方式。你可以在 Wireshark 的“ 选项 Preferences ”菜单中进行更改。点击“ 编辑 Edit ”菜单,最下方就是的“ 选项 Preferences ”菜单。这个选项会打开一个有更多选项的新窗口。单击侧边菜单中“ 用户界面 User Interface ”下的“ 布局 Layout ”选项。

Wireshark's layout configuration

你将会看到一些不同的布局方案。上方的图示可以让你选择不同的面板位置布局方案,下面的单选框可以让你选择不同面板中的数据内容。

下面那个标记为“ Columns ”的标签可以让你选择展示所抓取包的哪些信息。选择那些你需要的数据信息,或者全部展示。

工具条

对于 Wireshark 的工具条能做的设置不是太多,但是如果你想设置的话,你依然在前文中提到的“布局”菜单中的窗口管理工具下方找到一些有用的设置选项。那些能让你配置工具条和工具条中条目的选项就在窗口选项下方。

你还可以在“ 视图 View ”菜单下勾选来配置工具条的显示内容。

功能

主要的用来控制 Wireshark 抓包的控制选项基本都集中在“ 捕捉 Capture ”菜单下的“ 选项 Options ”选项中。

在开启的窗口中最上方的“ 捕捉 Capture ”部分可以让你选择 Wireshark 要监控的某个具体的网络接口。这部分可能会由于你系统的配置不同而会有相当大的不同。要记得勾选正确的选择框才能获得正确的数据。虚拟机和伴随它们一起的网络接口也同样会在这个列表里显示。同样也会有多种不同的选项对应这多种不同的网络接口。

Wireshark's capture configuration

在网络接口列表的下方是两个选项。其中一个选项是全选所有的接口。另一个选项用来选择是否开启混杂模式。这个选项可以使你的计算机监控到所选网络上的所有的计算机。(LCTT 译注:混杂模式可以在 HUB 中或监听模式的交换机接口上捕获那些由于 MAC 地址非本机而会被自动丢弃的数据包)如果你想监控你所在的整个网络,这个选项是你所需要的。

注意: 在一个不属于你或者不拥有权限的网络上使用混杂模式来监控是非法的!

在窗口下方的右侧是“ 显示选项 Display Options ”和“ 名称解析 Name Resolution ”选项块。对于“ 显示选项 Display Options ”来说,三个选项全选可能就是一个很好的选择了。当然你也可以取消选择,但是最好还是保留选择“实时更新抓包列表”。

在“ 名称解析 Name Resolution ”中你也可以设置你的偏好。这里的选项会产生附加的请求因此选得越多就会有越多的请求产生使你的抓取的包列表显得杂乱。把 MAC 解析选项选上是个好主意,那样就可以知道所使用的网络硬件的品牌了。这可以帮助你来确定你是在与哪台设备上的哪个接口进行交互。

抓包

抓包是 Wireshark 的核心功能。监控和记录特定网络上的流量就是它最初产生的目的。使用它最基本的方式来作这个抓包的工作是相当简单方便的。当然,越多的配置和选项就越可以充分利用 Wireshark 的力量。这里的介绍的关注点依然还是它最基本的记录方式。

按下那个看起来像蓝色鲨鱼鳍的新建实时抓包按钮就可以开始抓包了。(LCTT 译注:在我的 Debian 上它是绿色的)

Wireshark listing packet information

在抓包的过程中,Wireshark 会收集所有它能收集到的包的数据并且记录下来。如果没有更改过相关设置的话,在抓包的过程中你会看见不断的有新的包进入到“包列表”面板中。你可以实时的查看你认为有趣的包,或者就让 Wireshark 运行着,同时你可以做一些其它的事情。

当你完成了,按下红色的正方形“停止”按钮就可以了。现在,你可以选择是否要保存这些所抓取的数据了。要保存的话,你可以使用“文件”菜单下的“保存”或者是“另存为”选项。

读取数据

Wireshark 的目标是向你提供你所需要的所有数据。这样做时,它会在它监控的网络上收集大量的与网络包相关的数据。它使用可折叠的标签来展示这些数据,使得这些数据看起来没有那么吓人。每一个标签都对应于网络包中一部分的请求数据。

这些标签是按照从最底层到最高层一层层堆起来的。顶部标签总是包含数据包中包含的字节数据。最下方的标签可能会是多种多样的。在下图的例子中是一个 HTTP 请求,它会包含 HTTP 的信息。您遇到的大多数数据包将是 TCP 数据,它将展示在底层的标签中。

Wireshark listing HTTP packet info

每一个标签页都包含了抓取包中对应部分的相关数据。一个 HTTP 包可能会包含与请求类型相关的信息,如所使用的网络浏览器,服务器的 IP 地址,语言,编码方式等的数据。一个 TCP 包会包含服务器与客户端使用的端口信息和 TCP 三次握手过程中的标志位信息。

Wireshark listing TCP packet info

在上方的其它标签中包含了一些大多数用户都感兴趣的少量信息。其中一个标签中包含了数据包是否是通过 IPv4 或者 IPv6 传输的,以及客户端和服务器端的 IP 地址。另一个标签中包含了客户端和接入因特网的路由器或网关的设备的 MAC 地址信息。

结语

即使只使用这些基础选项与配置,你依然可以发现 Wireshark 会是一个多么强大的工具。监控你的网络流量可以帮助你识别、终止网络攻击或者提升连接速度。它也可以帮你找到问题应用。下一篇 Wireshark 指南我们将会一起探索 Wireshark 的包过滤选项。


via: https://linuxconfig.org/basic-of-network-protocol-analyzer-wireshark-on-linux

作者:Nick Congleton 译者:wcnnbdk1 校对:wxy

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

 title=

这系列共三部分,首先,Chirs Binnie 探讨了在一个合理的架构中 NTP 服务的重要性。

鲜有互联网上的服务能如时间服务一样重要。影响你系统计时的小问题可能需要一两天才能被发现,而这些不期而遇的问题所带来的连锁反应几乎总是让人伤脑筋的。

设想你的备份服务器与网络时间协议(NTP)服务器断开连接,过了几天,引起了几小时的时间偏差。你的同事照常九点上班,发现需要大量带宽的备份服务器消耗了所有网络资源,这也就意味着他们在备份完成之前几乎不能登录工作台开始他们的日常工作。

这系列共三部分,首先,我将提供简要介绍 NTP 来防止这种困境的发生。从邮件的时间戳到记录你工作的进展,NTP 服务对于一个合理的架构是如此的重要。

可以把如此重要的 NTP 服务器(其他的服务器从此获取时钟数据)看做是倒置金字塔的底部,它被称之为 一层 Stratum 1 服务器(也被称为“ primary ”服务器)。这些服务器与国家级时间服务(称为 零层 Stratum 0 ,通常这些设备是是原子钟和 GPS 钟之类的装置)直接交互。与之安全通讯的方法很多,例如通过卫星或者无线电。

令人惊讶的是,几乎所有的大型企业都会连接 二层 Stratum 2 服务器(或“ 次级 secondary ”服务器)而是不是主服务器。如你所料,二层服务器和一层直接同步。如果你觉得大公司可能有自己的本地 NTP 服务器(至少两个,通常三个,为了灾难恢复之用),这些就是三层服务器。这样,三层服务器将连接上层预定义的次级服务器,负责任地传递时间给客户端和服务器,精确地反馈当前时间。

由简单设计而构成的 NTP 可以工作的前提是——多亏了通过互联网跨越了大范围的地理距离——在确认时间完全准确之前,来回时间(包什么时候发出和多少秒后被收到)都会被清楚记录。设置电脑的时间的背后要比你想象的复杂得多,如果你不相信,那这神奇的网页值得一看。

再次重提一遍,为了确保你的架构如预期般工作,NTP 是如此的关键,你的 NTP 与层次服务器之间的连接必须是完全可信赖并且能提供额外的冗余,才能保持你的内部时钟同步。在 NTP 主站有一个有用的一层服务器列表。

正如你在列表所见,一些 NTP 一层服务器以 “ClosedAccount” 状态运行;这些服务器需要事先接受才可以使用。但是只要你完全按照他们的使用引导做,“OpenAccess” 服务器是可以用于轮询使用的。而 “RestrictedAccess” 服务器有时候会因为大量客户端访问或者轮询间隙太小而受限。另外有时候也有一些专供某种类型的组织使用,例如学术界。

尊重我的权威

在公共 NTP 服务器上,你可能发现遵从某些规则的使用规范。现在让我们看看其中一些。

“iburst” 选项作用是如果在一个标准的轮询间隔内没有应答,客户端会发送一定数量的包(八个包而不是通常的一个)给 NTP 服务器。如果在短时间内呼叫 NTP 服务器几次,没有出现可辨识的应答,那么本地时间将不会变化。

不像 “iburst” ,按照 NTP 服务器的通用规则, “burst” 选项一般不允许使用(所以不要用它!)。这个选项不仅在轮询间隔发送大量包(明显又是八个),而且也会在服务器能正常使用时这样做。如果你在高层服务器持续发送包,甚至是它们在正常应答时,你可能会因为使用 “burst” 选项而被拉黑。

显然,你连接服务器的频率造成了它的负载差异(和少量的带宽占用)。使用 “minpoll” 和 “maxpoll” 选项可以本地设置频率。然而,根据连接 NTP 服务器的规则,你不应该分别修改其默认的 64 秒和 1024 秒。

此外,需要提出的是客户应该重视那些请求时间的服务器发出的“ 亲一下就死(死亡之吻) Kiss-Of-Death ” (KOD)消息。如果 NTP 服务器不想响应某个特定的请求,就像路由和防火墙技术那样,那么它最有可能的就是简单地遗弃或吞没任何相关的包。

换句话说,接受到这些数据的服务器并不需要特别处理这些包,简单地丢弃这些它认为这不值得回应的包即可。你可以想象,这并不是特别好的做法,有时候礼貌地问客户是否中止或停止比忽略请求更为有效。因此,这种特别的包类型叫做 KOD 包。如果一个客户端被发送了这种不受欢迎的 KOD 包,它应该记住这个发回了拒绝访问标志的服务器。

如果从该服务器收到不止一个 KOD 包,客户端会猜想服务器上发生了流量限速的情况(或类似的)。这种情况下,客户端一般会写入本地日志,提示与该服务器的交流不太顺利,以备将来排错之用。

牢记,出于显而易见的原因,关键在于 NTP 服务器的架构应该是动态的。因此,不要给你的 NTP 配置硬编码 IP 地址是非常重要的。通过使用 DNS 域名,个别服务器断开网络时服务仍能继续进行,而 IP 地址空间也能重新分配,并且可引入简单的负载均衡(具有一定程度的弹性)。

请别忘了我们也需要考虑呈指数增长的物联网(IoT),这最终将包括数以亿万计的新装置,意味着这些设备都需要保持正确时间。硬件卖家无意(或有意)设置他们的设备只能与一个提供者的(甚至一个) NTP 服务器连接终将成为过去,这是一个非常麻烦的问题。

你可能会想象,随着买入和上线更多的硬件单元,NTP 基础设施的拥有者大概不会为相关的费用而感到高兴,因为他们正被没有实际收入所困扰。这种情形并非杞人忧天。头疼的问题多呢 -- 由于 NTP 流量导致基础架构不堪重负 -- 这在过去几年里已发生过多次。

在下面两篇文章里,我将着重于一些重要的 NTP 安全配置选项和描述服务器的搭建。


via: https://www.linux.com/learn/arrive-time-ntp-part-1-usage-overview

作者:CHRIS BINNIE 译者:XYenChi 校对:wxy

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

作为一个系统管理员,我们会有这样的一些需求:作为升级服务器容量的一部分,或者有时出现磁盘故障时更换磁盘,我们需要将新的硬盘配置到现有服务器。

在这篇文章中,我会向你逐步介绍添加新硬盘到现有 RHEL/CentOS 或者 Debian/Ubuntu Linux 系统的步骤。

推荐阅读: 如何将超过 2TB 的新硬盘添加到现有 Linux

重要:请注意这篇文章的目的只是告诉你如何创建新的分区,而不包括分区扩展或者其它选项。

我使用 fdisk 工具 完成这些配置。

我已经添加了一块 20GB 容量的硬盘,挂载到了 /data 分区。

fdisk 是一个在 Linux 系统上用于显示和管理硬盘和分区命令行工具。

# fdisk -l

这个命令会列出当前分区和配置。

查看 Linux 分区详情

查看 Linux 分区详情

添加了 20GB 容量的硬盘后,fdisk -l 的输出像下面这样。

# fdisk -l

查看新分区详情

查看新分区详情

新添加的磁盘显示为 /dev/xvdc。如果我们添加的是物理磁盘,基于磁盘类型它会显示为类似 /dev/sda。这里我使用的是虚拟磁盘。

要在特定硬盘上分区,例如 /dev/xvdc

# fdisk /dev/xvdc

常用的 fdisk 命令。

  • n - 创建分区
  • p - 打印分区表
  • d - 删除一个分区
  • q - 不保存更改退出
  • w - 保存更改并退出

这里既然我们是要创建一个分区,就用 n 选项。

在 Linux 上创建新分区

在 Linux 上创建新分区

创建主分区或者扩展分区。默认情况下我们最多可以有 4 个主分区。

创建主分区

创建主分区

按需求输入分区编号。推荐使用默认的值 1

分配分区编号

分配分区编号

输入第一个扇区的大小。如果是一个新的磁盘,通常选择默认值。如果你是在同一个磁盘上创建第二个分区,我们需要在前一个分区的最后一个扇区的基础上加 1

为分区分配扇区

为分区分配扇区

输入最后一个扇区或者分区大小的值。通常推荐输入分区的大小。总是添加前缀 + 以防止值超出范围错误。

分配分区大小

分配分区大小

保存更改并退出。

保存分区更改

保存分区更改

现在使用 mkfs 命令格式化磁盘。

# mkfs.ext4 /dev/xvdc1

格式化新分区

格式化新分区

格式化完成后,按照下面的命令挂载分区。

# mount /dev/xvdc1 /data

/etc/fstab 文件中添加条目以便永久启动时自动挂载。

/dev/xvdc1  /data   ext4    defaults     0   0

总结

现在你知道如何使用 fdisk 命令 在新磁盘上创建分区并挂载了。

当处理分区、尤其是编辑已配置磁盘的时候,我们需要格外的小心。请分享你的反馈和建议吧。

(题图:Pixabay,CC0)


作者简介:

我的工作内容包括 IBM-AIX、Solaris、HP-UX 多种平台以及存储技术 ONTAP 和 OneFS,并具有 Oracle 数据库的经验。


via: http://www.tecmint.com/add-new-disk-to-an-existing-linux/

作者:Lakshmi Dhandapani 译者:ictlyh 校对:jasminepeng

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

在这篇指南中,我们会逐步对进程做基本的了解,然后简要看看如何用特定命令管理 Linux 进程

进程 process 是指正在执行的程序;是程序正在运行的一个实例。它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。

进程的类型

在 Linux 中主要有两种类型的进程:

  • 前台进程(也称为交互式进程) - 这些进程由终端会话初始化和控制。换句话说,需要有一个连接到系统中的用户来启动这样的进程;它们不是作为系统功能/服务的一部分自动启动。
  • 后台进程(也称为非交互式/自动进程) - 这些进程没有连接到终端;它们不需要任何用户输入。

什么是 守护进程 daemon

这是后台进程的特殊类型,它们在系统启动时启动,并作为服务一直运行;它们不会死亡。它们自发地作为系统任务启动(作为服务运行)。但是,它们能被用户通过 init 进程控制。

Linux 进程状态

Linux 进程状态

在 Linux 中创建进程

当现有的进程在内存中完全拷贝一份自身的时候就会创建出一个新的进程。子进程会有和父进程一样的环境,只有进程 ID 不同。

在 Linx 中有两种常规方式创建进程:

  • 使用 system() 函数 - 这个方法相对简单,但是比较低效而且具有明显的安全隐患。
  • 使用 fork() 和 exec() 函数 - 这个技巧比较高级但提供更好的灵活性、速度以及安全性。

Linux 如何识别进程?

由于 Linux 是一个多用户系统,意味着不同的用户可以在系统上运行各种各样的程序,内核必须唯一标识程序运行的每个实例。

程序由它的进程 ID(PID)和它父进程的进程 ID(PPID)识别,因此进程可以被分类为:

  • 父进程 - 这些是在运行时创建其它进程的进程。
  • 子进程 - 这些是在运行时由其它进程创建的进程。

init 进程

init 进程是系统中所有进程的父进程,它是启动 Linux 系统后第一个运行的程序;它管理着系统上的所有其它进程。它由内核自身启动,因此理论上说它没有父进程。

init 进程的进程 ID 总是为 1。它是所有孤儿进程的收养父母。(它会收养所有孤儿进程)。

查找进程 ID

你可以用 pidof 命令查找某个进程的进程 ID:

# pidof systemd
# pidof top
# pidof httpd

查找 Linux 进程 ID

查找 Linux 进程 ID

要查找当前 shell 的进程 ID 以及它父进程的进程 ID,可以运行:

$ echo $$
$ echo $PPID

查找 Linux 父进程 ID

查找 Linux 父进程 ID

在 Linux 中启动进程

每次你运行一个命令或程序(例如 cloudcmd - CloudCommander),它就会在系统中启动一个进程。你可以按照下面的方式启动一个前台(交互式)进程,它会被连接到终端,用户可以发送输入给它:

# cloudcmd

启动 Linux 交互进程

启动 Linux 交互进程

Linux 后台任务

要在后台(非交互式)启动一个进程,使用 & 符号,此时,该进程不会从用户中读取输入,直到它被移到前台。

# cloudcmd &
# jobs

在后台启动 Linux 进程

在后台启动 Linux 进程

你也可以使用 Ctrl + Z 暂停执行一个程序并把它发送到后台,它会给进程发送 SIGSTOP 信号,从而暂停它的执行;它就会变为空闲:

# tar -cf backup.tar /backups/*  ### 按下 Ctrl+Z
# jobs

要在后台继续运行上面被暂停的命令,使用 bg 命令:

# bg

要把后台进程发送到前台,使用 fg 命令以及任务的 ID,类似:

# jobs
# fg %1

Linux 后台进程任务

Linux 后台进程任务

你也可能想要阅读:如何在后台启动 Linux 命令以及在终端分离(Detach)进程

Linux 中进程的状态

在执行过程中,取决于它的环境一个进程会从一个状态转变到另一个状态。在 Linux 中,一个进程有下面的可能状态:

  • Running - 此时它正在运行(它是系统中的当前进程)或准备运行(它正在等待分配 CPU 单元)。
  • Waiting - 在这个状态,进程正在等待某个事件的发生或者系统资源。另外,内核也会区分两种不同类型的等待进程; 可中断等待进程 interruptible waiting processes - 可以被信号中断,以及 不可中断等待进程 uninterruptible waiting processes - 正在等待硬件条件,不能被任何事件/信号中断。
  • Stopped - 在这个状态,进程已经被停止了,通常是由于收到了一个信号。例如,正在被调试的进程。
  • Zombie - 该进程已经死亡,它已经停止了但是 进程表 process table 中仍然有它的条目。

如何在 Linux 中查看活跃进程

有很多 Linux 工具可以用于查看/列出系统中正在运行的进程,两个传统众所周知的是 pstop 命令:

1. ps 命令

它显示被选中的系统中活跃进程的信息,如下图所示:

# ps 
# ps -e | head 

列出 Linux 活跃进程

列出 Linux 活跃进程

2. top - 系统监控工具

top 是一个强大的工具,它能给你提供 运行系统的动态实时视图,如下面截图所示:

# top 

列出 Linux 正在运行的程序

列出 Linux 正在运行的程序

阅读这篇文章获取更多 top 使用事例:Linux 中 12 个 top 命令实例

3. glances - 系统监控工具

glances 是一个相对比较新的系统监控工具,它有一些比较高级的功能:

# glances

Glances - Linux 进程监控

Glances – Linux 进程监控

要获取完整使用指南,请阅读:Glances - Linux 的一个高级实时系统监控工具

还有很多你可以用来列出活跃进程的其它有用的 Linux 系统监视工具,打开下面的链接了解更多关于它们的信息:

  1. 监控 Linux 性能的 20 个命令行工具
  2. 13 个有用的 Linux 监控工具

如何在 Linux 中控制进程

Linux 也有一些命令用于控制进程,例如 killpkillpgrepkillall,下面是一些如何使用它们的基本事例:

$ pgrep -u tecmint top
$ kill 2308
$ pgrep -u tecmint top
$ pgrep -u tecmint glances
$ pkill glances
$ pgrep -u tecmint glances

控制 Linux 进程

控制 Linux 进程

想要深入了解如何使用这些命令,在 Linux 中杀死/终止活跃进程,可以点击下面的链接:

  1. 终止 Linux 进程的 Kill、Pkill 和 Killall 命令指南
  2. 如何在 Linux 中查找并杀死进程

注意当你系统 僵死 freeze 时你可以使用它们杀死 Linux 中的不响应程序

给进程发送信号

Linux 中控制进程的基本方法是给它们发送信号。你可以发送很多信号给一个进程,运行下面的命令可以查看所有信号:

$ kill -l

列出所有 Linux 信号

列出所有 Linux 信号

要给一个进程发送信号,可以使用我们之前提到的 killpkillpgrep 命令。但只有被编程为能识别这些信号时程序才能响应这些信号。

大部分信号都是系统内部使用,或者给程序员编写代码时使用。下面是一些对系统用户非常有用的信号:

  • SIGHUP 1 - 当控制它的终端被被关闭时给进程发送该信号。
  • SIGINT 2 - 当用户使用 Ctrl+C 中断进程时控制它的终端给进程发送这个信号。
  • SIGQUIT 3 - 当用户发送退出信号 Ctrl+D 时给进程发送该信号。
  • SIGKILL 9 - 这个信号会马上中断(杀死)进程,进程不会进行清理操作。
  • SIGTERM 15 - 这是一个程序终止信号(kill 默认发送这个信号)。
  • SIGTSTP 20 - 它的控制终端发送这个信号给进程要求它停止(终端停止);通过用户按 Ctrl+Z 触发。

下面是当 Firefox 应用程序僵死时通过它的 PID 杀死它的 kill 命令事例:

$ pidof firefox
$ kill 9 2687
或
$ kill -KILL 2687
或
$ kill -SIGKILL 2687  

使用它的名称杀死应用,可以像下面这样使用 pkill 或 killall:

$ pkill firefox
$ killall firefox 

更改 Linux 进程优先级

在 Linux 系统中,所有活跃进程都有一个优先级以及 nice 值。有比点优先级进程有更高优先级的进程一般会获得更多的 CPU 时间。

但是,有 root 权限的系统用户可以使用 nicerenice 命令影响(更改)优先级。

在 top 命令的输出中, NI 显示了进程的 nice 值:

$ top  

列出 Linux 正在运行的进程

列出 Linux 正在运行的进程

使用 nice 命令为一个进程设置 nice 值。记住一个普通用户可以给他拥有的进程设置 0 到 20 的 nice 值。

只有 root 用户可以使用负的 nice 值。

要重新设置一个进程的优先级,像下面这样使用 renice 命令:

$ renice +8  2687
$ renice +8  2103

阅读我们其它如何管理和控制 Linux 进程的有用文章。

  1. Linux 进程管理:启动、停止以及中间过程
  2. 使用 ‘top’ 命令 Batch 模式查找内存使用最高的 15 个进程
  3. 在 Linux 中查找内存和 CPU 使用率最高的进程
  4. 在 Linux 中如何使用进程 ID 查找进程名称

就是这些!如果你有任何问题或者想法,通过下面的反馈框和我们分享吧。

(题图:Pixabay,CC0)


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S(Free and Open-Source Software) 爱好者,一个 Linux 系统管理员、web 开发员,现在也是 TecMint 的内容创建者,他喜欢和电脑一起工作,他相信知识共享。


via: http://www.tecmint.com/linux-process-management/

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

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

这篇指南向你介绍使用 badips 滥用追踪器 abuse tracker 和 Fail2ban 保护你的服务器或计算机的步骤。我已经在 Debian 8 Jessie 和 Debian 7 Wheezy 系统上进行了测试。

什么是 badIPs?

BadIps 是通过 fail2ban 报告为不良 IP 的列表。

这个指南包括两个部分,第一部分介绍列表的使用,第二部分介绍数据提交。

使用 badIPs 列表

定义安全等级和类别

你可以通过使用 REST API 获取 IP 地址列表。

  • 当你使用 GET 请求获取 URL:https://www.badips.com/get/categories 后,你就可以看到服务中现有的所有不同类别。
  • 第二步,决定适合你的等级。 参考 badips 应该有所帮助(我个人使用 scope = 3):
  • 如果你想要编译一个统计信息模块或者将数据用于实验目的,那么你应该用等级 0 开始。
  • 如果你想用防火墙保护你的服务器或者网站,使用等级 2。可能也要和你的结果相结合,尽管它们可能没有超过 0 或 1 的情况。
  • 如果你想保护一个网络商店、或高流量、赚钱的电子商务服务器,我推荐你使用值 3 或 4。当然还是要和你的结果相结合。
  • 如果你是偏执狂,那就使用 5。

现在你已经有了两个变量,通过把它们两者连接起来获取你的链接。

http://www.badips.com/get/list/{{SERVICE}}/{{LEVEL}}

注意:像我一样,你可以获取所有服务。在这种情况下把服务的名称改为 any

最终的 URL 就是:

https://www.badips.com/get/list/any/3

创建脚本

所有都完成了之后,我们就会创建一个简单的脚本。

1、 把你的列表放到一个临时文件。

2、 在 iptables 中创建一个 chain (只需要创建一次)。(LCTT 译注:iptables 可能包括多个 tables ,表可能包括多个 chains ,链可能包括多个 规则 rules

3、 把所有链接到该链的数据(旧条目)刷掉。

4、 把每个 IP 链接到这个新的链。

5、 完成后,阻塞所有链接到该链的 INPUT / OUTPUT /FORWARD 请求。

6、 删除我们的临时文件。

为此,我们创建脚本:

cd /home/<user>/
vi myBlacklist.sh

把以下内容输入到文件。

#!/bin/sh
### based on this version http://www.timokorthals.de/?p=334
### adapted by Stéphane T.

_ipt=/sbin/iptables    ### iptables 路径(应该是这个)
_input=badips.db       ### 数据库的名称(会用这个名称下载)
_pub_if=eth0           ### 连接到互联网的设备(执行 $ifconfig 获取)
_droplist=droplist     ### iptables 中链的名称(如果你已经有这么一个名称的链,你就换另外一个)
_level=3               ### Blog(LCTT 译注:Bad log)等级:不怎么坏(0)、确认坏(3)、相当坏(5)(从 www.badips.com 获取详情)
_service=any           ### 记录日志的服务(从 www.badips.com 获取详情)

### 获取不良 IPs
wget -qO- http://www.badips.com/get/list/${_service}/$_level > $_input || { echo "$0: Unable to download ip list."; exit 1; }

### 设置我们的黑名单 ###
### 首先清除该链
$_ipt --flush $_droplist

### 创建新的链
### 首次运行时取消下面一行的注释
# $_ipt -N $_droplist

### 过滤掉注释和空行
### 保存每个 ip 到 $ip
for ip in `cat $_input`
do
    ### 添加到 $_droplist
    $_ipt -A $_droplist -i ${_pub_if} -s $ip -j LOG --log-prefix "Drop Bad IP List "
    $_ipt -A $_droplist -i ${_pub_if} -s $ip -j DROP
done

### 最后,插入或者追加到我们的黑名单列表
$_ipt -I INPUT -j $_droplist
$_ipt -I OUTPUT -j $_droplist
$_ipt -I FORWARD -j $_droplist

### 删除你的临时文件
rm $_input
exit 0

完成这些后,你应该创建一个定时任务定期更新我们的黑名单。

为此,我使用 crontab 在每天晚上 11:30(在我的延迟备份之前) 运行脚本。

crontab -e
23 30 * * * /home/<user>/myBlacklist.sh #Block BAD IPS

别忘了更改脚本的权限:

chmod + x myBlacklist.sh

现在终于完成了,你的服务器/计算机应该更安全了。

你也可以像下面这样手动运行脚本:

cd /home/<user>/
./myBlacklist.sh

它可能要花费一些时间,因此期间别中断脚本。事实上,耗时取决于该脚本的最后一行。

使用 Fail2ban 向 badIPs 报告 IP 地址

在本篇指南的第二部分,我会向你展示如何通过使用 Fail2ban 向 badips.com 网站报告不良 IP 地址。

Fail2ban >= 0.8.12

通过 Fail2ban 完成报告。取决于你 Fail2ban 的版本,你要使用本章的第一或第二节。

如果你 fail2ban 的版本是 0.8.12 或更新版本。

fail2ban-server --version

在每个你要报告的类别中,添加一个 action。

[ssh]
enabled = true
action = iptables-multiport
         badips[category=ssh]
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry= 6

正如你看到的,类别是 SSH,从 https://www.badips.com/get/categories 查找正确类别。

Fail2ban < 0.8.12

如果版本是 0.8.12 之前,你需要新建一个 action。你可以从 https://www.badips.com/asset/fail2ban/badips.conf 下载。

wget https://www.badips.com/asset/fail2ban/badips.conf -O /etc/fail2ban/action.d/badips.conf

在上面的 badips.conf 中,你可以像前面那样激活每个类别,也可以全局启用它:

cd /etc/fail2ban/
vi jail.conf
[DEFAULT]
...

banaction = iptables-multiport
            badips

现在重启 fail2ban - 从现在开始它就应该开始报告了。

service fail2ban restart

你的 IP 报告统计信息

最后一步 - 没那么有用。你可以创建一个密钥。 但如果你想看你的数据,这一步就很有帮助。

复制/粘贴下面的命令,你的控制台中就会出现一个 JSON 响应。

wget https://www.badips.com/get/key -qO -

{
  "err":"",
  "suc":"new key 5f72253b673eb49fc64dd34439531b5cca05327f has been set.",
  "key":"5f72253b673eb49fc64dd34439531b5cca05327f"
}

badips 网站,输入你的 “key” 并点击 “statistics”。

现在你就可以看到不同类别的统计信息。

(题图:Pixabay , CC0


via: https://www.howtoforge.com/tutorial/protect-your-server-computer-with-badips-and-fail2ban/

作者:Stephane T 译者:ictlyh 校对:wxy

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

该木马尝试使用出厂默认凭证对不同协议进行身份验证,如果成功则会部署 Mirai 僵尸程序。

Windows Trojan uses brute-force attacks against IoT devices.

攻击者已经开始使用 Windows 和 Android 恶意软件入侵嵌入式设备,这消除了人们广泛持有的想法,认为如果设备不直接暴露在互联网上,那么它们就不那么脆弱。

来自俄罗斯防病毒供应商 Doctor Web 的研究人员最近遇到了一个 Windows 木马程序,它使用暴力方法访问嵌入式设备,并在其上安装 Mirai 恶意软件。

Mirai 是一种用在基于 Linux 的物联网设备的恶意程序,例如路由器、IP 摄像机、数字录像机等。它主要通过使用出厂设备凭据来发动分布式拒绝服务 (DDoS) 攻击并通过 Telnet 传播。

Mirai 的僵尸网络在过去六个月里一直被用来发起最大型的 DDoS 攻击。它的源代码泄漏之后,恶意软件被用来感染超过 50 万台设备。

Doctor Web 发现,一旦在一台 Windows 上安装之后,该新木马会从命令控制服务器下载配置文件。该文件包含一系列 IP 地址,通过多个端口,包括 22(SSH)和 23(Telnet),尝试进行身份验证。

如果身份验证成功,恶意软件将会根据受害系统的类型。执行配置文件中指定的某些命令。在通过 Telnet 访问的 Linux 系统中,木马会下载并执行一个二进制包,然后安装 Mirai 僵尸程序。

如果按照设计或配置,受影响的设备不会从 Internet 直接访问,那么许多物联网供应商会降低漏洞的严重性。这种思维方式假定局域网是信任和安全的环境。

然而事实并非如此,其他威胁如跨站点请求伪造已经出现了多年。但 Doctor Web 发现的新木马似乎是第一个专门设计用于劫持嵌入式或物联网设备的 Windows 恶意软件。

Doctor Web 发现的新木马被称为 Trojan.Mirai.1,从它可以看到,攻击者还可以使用受害的计算机来攻击不能从互联网直接访问的物联网设备。

受感染的智能手机可以以类似的方式使用。卡巴斯基实验室的研究人员已经发现了一个 Android 程序,通过本地网络对路由器执行暴力密码猜测攻击。

(题图: Gerd Altmann / Pixabay)


via: http://www.csoonline.com/article/3168357/security/windows-trojan-hacks-into-embedded-devices-to-install-mirai.html

作者:Lucian Constantin 译者:geekpi 校对:jasminepeng

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