分类 技术 下的文章

想像一种情景,当我们的Linux系统用尽交换空间时,在这种情况下,我们想要使用swap分区扩展交换空间,但在某些情况下磁盘上已经没有可用的空闲分区了,致使我们不能把它扩大。

因此,在这种情况下,我们可以使用交换文件增加swap空间。

以下是使用交换文件在Linux上扩展swap空间的方法

让我们首先检查现有的交换空间/分区的大小,使用命令 ‘free -m‘ 或者 ‘swapon -s

free-output-with-swap

我的交换分区大小是2 GB,我们将把交换空间扩展1GB。

第一步:使用下面的dd命令创建大小为1GB交换文件

[root@linuxtechi ~]# dd if=/dev/zero of=/swap_file bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 414.898 s, 2.6 MB/s
[root@linuxtechi ~]#

根据你的需要替换 ‘bs‘ 和 ‘count‘ 的大小.

第二步:设置交换文件权限为600

[root@linuxtechi ~]# chmod 600 /swap_file

第三步:用文件开启交换区(swap\_file)

用mkswap命令开启交换区

[root@linuxtechi ~]# mkswap /swap_file
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=f7b3ae59-c09a-4dc2-ba4d-c02abb7db33b
[root@linuxtechi ~]#

第四步:在fstab文件中添加交换文件条目

在fstab文件中添加以下条目,以便交换文件每次重启后互能继续使用.

/swap_file  swap  swap  defaults  0 0

swap-file-fstab-entry

第五步:用命令 ‘mkswap on’ 启用交换文件.

[root@linuxtechi ~]# swapon /swap_file
[root@linuxtechi ~]#

第六步:现在查看交换空间

swap-space-after-extension

Note: 为了避免出现意外的情况,如下所示使用swapoff命令关闭它,仅在需要使用时,使用步骤5所示的swapon命令,重新启用交换文件。

[root@linuxtechi ~]# swapoff /swap_file
[root@linuxtechi ~]#

请分享您的宝贵意见或者评论此文章。


via: http://www.linuxtechi.com/extend-swap-space-using-swap-file-in-linux/

作者:Pradeep Kumar 译者:strugglingyouth 校对:wxy

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

1、编辑/etc/vmware/firewall/service.xml

vi /etc/vmware/firewall/service.xml 

2、在该文件重中倒数第二行开始添加以下内容:

<!-- Firewall configuration information for VNC --> 
<service id='0040'>
    <id>VNC</id>
    <rule id='0000'>
      <direction>inbound</direction>
      <protocol>tcp</protocol>
      <porttype>dst</porttype>
      <port>
        <begin>40000</begin>
        <end>60000</end>
      </port>
    </rule>
    <enabled>true</enabled>
    <required>false</required>
 </service> 

3、执行以下命令以使配置文件生效:

esxcli network firewall refresh

4、查看是否已经生效:

esxcli network firewall ruleset list | grep VNC
VNC                  true

在这个互联网世界和互联网的世界中,我们在线执行我们的大多数任务,无论是订票,汇款,研究,商务,娱乐,社交网络,还是其它。每天我们花费大部分时间在网络上。在过去这些的日子里,在网络中保持匿名变得越来越难,尤其是在被某些机构例如 NSA (National Security Agency) 植入后门的情况下,他们嗅探着我们在网络中的所有动作。在网络中,我们有着极少的,或者说根本就没有隐私。基于用户浏览网络的活动和机器的活动的搜索都被记录了下来。

一款来自于 Tor 项目的绝妙浏览器正被上百万人使用,它帮助我们匿名地浏览网络,即使这样,跟踪你的浏览习惯也并不难,所以只使用 Tor 并不能保证你的网络安全。你可以从下面的链接中查看 Tor 的特点及安装指南。

Tor 项目中有一个名为 Tails 的操作系统。Tails (The Amnesic Incognito Live System) 是一个 live 操作系统,基于 Debian Linux 发行版本,主要着眼于在浏览网络时在网络中保护隐私和匿名,这意味着所有的外向连接都强制通过 Tor 来连接,直接的(非匿名的) 连接请求都会被阻挡。该系统被设计为可在任何可启动介质上运行,例如 USB 棒或 DVD。

Tails OS 的最新稳定发行版本为 1.4 , 于 2015 年 5 月 12 日发行。Tails 由开源的 Linux 宏内核所驱动,构建在 Debian GNU/Linux 之上,着眼于个人电脑市场, 使用 GNOME 3 作为其默认的用户界面。

Tails OS 1.4 的特点

  • Tails 是一个 free 的操作系统, free 的意义不仅是免费(free)啤酒的免费,也是言论自由(free) 中的自由
  • 构建在 Debian/GNU Linux 操作系统之上, Debian 是使用最广泛的通用操作系统
  • 着眼于安全的发行版本
  • 伪装成 Windows 8 外观
  • 不必安装就可以使用 Live Tails CD/DVD 来匿名浏览网络
  • 当 Tails 运行时,不会在计算机上留下任何痕迹
  • 使用先进的加密工具来加密任何相关文件,邮件等内容
  • 通过 Tor 网络来发送和接收流量
  • 真正意义地无论何时何处保护隐私
  • 在 Live 环境中带有一些立即可用的应用
  • 系统自带的所有软件都预先配置好只通过 Tor 网络来连接到互联网
  • 任何不通过 Tor 网络而尝试连接网络的应用都将被自动阻拦
  • 限制那些想查看你正在浏览什么网站的人的行动,并限制网站获取你的地理位置
  • 连接到那些被墙或被审查的网站
  • 特别设计不使用主操作系统的空间,即便是 swap 空间也不用
  • 整个操作系统加载在内存中,在每次重启或关机后会自动擦除掉,所以不会留下任何运行的痕迹。
  • 先进的安全实现,通过加密 USB 磁盘, HTTPS 应答加密和对邮件,文档进行签名。

在 Tails 1.4 中所期待的东西

  • 带有安全滑块的 Tor 浏览器 4.5
  • Tor 被升级到版本 0.2.6.7
  • 修补了几个安全漏洞
  • 针对诸如 curl、 OpenJDK 7、 tor Network、 openldap 等应用, 许多漏洞被修复并打上了补丁

要得到完整的更改记录,你需要访问 这里

注意: 假如你使用 Tails 的任何旧版本,强烈建议升级到 Tails 1.4 。

为什么我应该使用 Tails 操作系统

你需要 Tails 因为你想:

  • 在网络监控下保持自由
  • 捍卫自由,隐私和秘密
  • 流量分析下保持安全

这个教程将带你了解 Tails 1.4 操作系统的安装并给出一个简短的评论。

Tails 1.4 安装指南

  1. 为了下载最新的 Tails OS 1.4,你可以使用 wget 命令来直接下载它

$ wget http://dl.amnesia.boum.org/tails/stable/tails-i386-1.4/tails-i386-1.4.iso

或者你可以直接下载 Tails 1.4 的 ISO 镜像文件,或使用一个 Torrent 客户端来为你获取 ISO 镜像文件:

  1. 下载后,可使用 sha256sum 来获取 ISO 文件的哈希值并与官方提供的值相比较,以核实 ISO 文件的完整性

$ sha256sum tails-i386-1.4.iso

339c8712768c831e59c4b1523002b83ccb98a4fe62f6a221fee3a15e779ca65d

假如你熟悉 OpenPGP ,将 Tails 的签名密钥与 Debian 的 keyring 相比较以验证其签名,若想了解任何有关 Tails 的加密签名,请用浏览器访问 这里

  1. 下一步,你需要将镜像写入 USB 棒或 DVD ROM 中。或许你需要看看这篇文章 “如何创建一个 Live 可启动的 USB棒 ”以了解如何使得一个闪存盘变得可启动并向它写入 ISO 镜像文件。
  2. 插入 Tails OS 的可启动闪存盘或 DVD ROM,并从那里启动 (在 BIOS 中选择该介质来启动)。第一个屏幕中会有两个选项 'Live' 和 'Live (failsafe)' 让你选择。选择 'Live' 并确定。

Tails 启动菜单

Tails 启动菜单

  1. 在登录之前,你有两个选项, 假如你想配置并设定高级选项,点击 '更多选项' 否则点击 'NO'。

Tails 欢迎界面

Tails 欢迎界面

  1. 在点击高级选项后,你需要设置 root 密码。假如你想升级它,这是非常重要的。这个 root 密码的有效期将持续到你关机或重启。

另外,若你想开启 Windows 伪装,假如你想在一个公共场所运行这个操作系统,这将使得看起来你正在运行 Windows 8 操作系统。这真是一个好的选项!不是吗?另外,你还有一个选项来配置网络和 Mac 地址,当一切准备完毕后,点击 '登录' !

Tails OS 的配置

Tails OS 的配置

  1. 这是使用 Windows 皮肤伪装的 Tails GNU/Linux OS:

Tails 的 Windows 伪装

Tails 的 Windows 伪装

  1. 系统将在后台启动 Tor 网络。在屏幕的右上角查看通知 :“Tor 已经准备好了,现在你已经连接上了互联网”。

你也可以在 Internet 菜单下查看它包含了哪些东西。 注意 :它包含有 Tor 浏览器(安全的) 和 不安全的网络浏览器(其中的向内和向外数据不通过 Tor 网络) 和其他应用。

Tails 菜单和工具

Tails 菜单和工具

  1. 点击 Tor 并检查你的 IP 地址。 它确认我的物理位置没有被分享以及我的隐私未被触动。

在 Tails 上检查隐私

在 Tails 上检查隐私

  1. 你还可以激活 Tails 安装器来“克隆和安装”, “克隆和升级”以及“从 ISO 镜像文件中升级系统”。

Tails 安装器选项

Tails 安装器选项

  1. 如果选择另外的那个不带有高级选项的方式,那就直接登录。(查看上面的第 5 步).

不设置高级选项的 Tails

不设置高级选项的 Tails

  1. 这将登录到 Gnome3 桌面环境。

Tails Gnome 桌面

Tails Gnome 桌面

  1. 假如你点击启动不安全的浏览器,无论是否带有地址伪装,你都将会收到弹窗通知。

Tails 浏览通知

Tails 浏览通知

假如你仍启动不安全的浏览器,你将在浏览器中看到如下网页:

Tails 浏览警告

Tails 浏览警告

Tails 适合我吗?

要想得到上面问题的答案,首先回答如下的问题:

  • 在上网时,你想你的隐私不被触动吗?
  • 你想在窃取身份信息的人的眼皮底下保持隐身吗?
  • 你想在你的网上私人聊天过程中被他人嗅探吗?
  • 你真的想向任何人展示你的地理位置吗?
  • 你开展银行网上交易吗?
  • 你希望避免政府和 ISP 的审查吗?(LCTT 译注:原文有误,根据上下文环境修改。)

假如以上问题中,任意一个问题的答案为 'YES',则你最好需要 Tails。假如上面所有的问题的答案都是 'NO',则或许你不需要它。

想对 Tails 了解更多?请将你的浏览器指向它的用户文档页面:

文档: https://tails.boum.org/doc/index.en.html

总结

对于那些工作在不安全环境中的人来说,Tails 是一个必需的操作系统。Tails 还是一个着眼于安全的操作系统,现在为止,包含了一大批应用 – Gnome 桌面、Tor、 Firefox (Iceweasel)、 Network Manager、 Pidgin、 Claws mail、 Liferea feed addregator、 Gobby、 Aircrack-ng、 I2P。

同时,它含有一些有关加密和隐私的工具,即 UKS、 GnuPG、 PWGen、 Shamir's Secret Sharing、 Virtual Keyboard (对付硬件的键盘记录器)、 MAT、 KeePassX Password Manager 等。

这就是全部了。关注我们。请分享你的有关 Tails GNU/Linux 操作系统的想法。对于这个项目的未来,你怎么看?同时在实际中测试它,并让我们获知你的体验感受。

你也可以在 Virtualbox 中运行它。 Tails 在内存中加载整个操作系统,所以在虚拟机中你需要给定足够的内存来运行 Tails。

我在 1GB 内存的环境中测试了 Tails,它工作起来毫无滞后感。谢谢我们的所有用户的支持。使我们成为一个包含所有 Linux 相关信息的地方,你的支持是必需的。 Kudos!


via: http://www.tecmint.com/install-tails-1-4-linux-operating-system-to-preserve-privacy-and-anonymity/

作者:Avishek Kumar 译者:FSSlc 校对:wxy

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

这里,我们来看Linux命令行实用技巧的下一个部分。如果你错过了Linux Tracks之前的文章,可以从这里找到。

本篇中,我们将会介绍6个命令行小技巧,包括使用Netcat命令创建Linux命令行聊天,从某个命令的输出中对某一列做加法,移除Debian和CentOS上多余的包,从命令行中获取本地与远程的IP地址,在终端获得彩色的输出与解码各样的颜色,最后是Linux命令行里井号标签的使用。让我们来一个一个地看一下。

Linux Commandline Chat Server

6个实用的命令行技巧

1. 创建Linux命令行聊天服务

我们大家使用聊天服务都有很长一段时间了。对于Google Chat,Hangout,Facebook Chat,Whatsapp,Hike和其他一些应用与集成的聊天服务,我们都很熟悉了。那你知道Linux的nc命令可以使你的Linux机器变成一个聊天服务器,而仅仅只需要一行命令吗。什么是nc命令,它又是怎么工作的呢?

nc即Linux netcat命令。nc就像瑞士军刀一样,内建了大量的功能。nc可用做调式工具,调查工具,使用TCP/UDP读写网络连接,DNS正向/反向查询等等。

nc主要用在端口扫描,文件传输,后台和端口监听。nc可以使用任何闲置的端口和任何本地网络源地址。

使用nc命令(在192.168.0.7的服务器上)创建一个命令行即时信息传输服务器。

$ nc -l -vv -p 11119

对上述命令的解释。

  • -v : 显示冗余信息
  • -vv : 显示更多的冗余信息
  • -p : 本地端口号

你可以用任何其他的本地端口号替换11119。

接下来在客户端机器(IP地址:192.168.0.15),运行下面的命令初始化聊天会话(这里需要上面提到的信息服务器正在运行)。

$ nc 192.168.0.7:11119

Linux Commandline Chat with nc Command

注意:你可以按下ctrl+c终止会话,同时nc聊天是一个一对一的服务。

2. Linux中如何统计某一列的总值

如何在终端里统计某个命令的输出中其中一列的数值总和,

‘ls -l’命令的输出。

$ ls -l

Sum Numerical Values

注意到第二列代表软连接的数量,第五列则是文件的大小。假设我们需要汇总第五列的数值。

仅仅列出第五列的内容。我们会使用‘awk’命令做到这点。‘$5’即代表第五列。

$ ls -l | awk '{print $5}'

List Content Column

现在,通过管道连接,使用awk打印出第五列数值的总和。

$ ls -l | awk '{print $5}' | awk '{total = total + $1}END{print total}'

Sum and Print Columns

在Linux里如何移除废弃包

废弃包是指那些作为其他包的依赖而被安装,但是当源包被移除之后就不再需要的包。

假设我们安装了一个叫gtprogram的软件包,其依赖是gtdependency。除非我们安装了gtdependency,否则安装不了gtprogram。

当我们移除gtprogram的时候,默认并不会移除gtdependency。并且如果我们不移除gtdependency的话,它就会遗留下来成为废弃包,与其他任何包再无联系。

# yum autoremove                [On RedHat Systems]

Remove Orphan Packages in CentOS

# apt-get autoremove                [On Debian Systems]

Remove Orphan Packages in Debian

你应该经常移除废弃包,保持Linux机器仅仅加载一些需要的东西。

4. 如何获得Linux服务器本地的与公网的IP地址

为了获得本地IP地址,运行下面的一行脚本。

$ ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:

你必须安装了ifconfig,如果没有,使用apt或者yum工具安装需要的包。这里我们将会管道连接ifconfig的输出,并且结合grep命令找到包含“intel addr:”的字符串。

我们知道对于输出本地IP地址,ifconfig命令足够用了。但是ifconfig生成了许多的输出,而我们关注的地方仅仅是本地IP地址,不是其他的。

# ifconfig | grep "inet addr:"

Check Local IP Address

尽管目前的输出好多了,但是我们需要过滤出本地的IP地址,不含其他东西。针对这个,我们将会使用awk打印出第二列输出,通过管道连接上述的脚本。

# ifconfig | grep “inet addr:” | awk '{print $2}' 

Filter Only IP Address

上面图片清楚的表示,我们已经很大程度上自定义了输出,当仍然不是我们想要的。本地环路地址 127.0.0.1 仍然在结果中。

我们可以使用grep的-v选项,这样会打印出不匹配给定参数的其他行。每个机器都有同样的环路地址 127.0.0.1,所以使用grep -v打印出不包含127.0.0.1的行,通过管道连接前面的脚本。

# ifconfig | grep "inet addr" | awk '{print $2}' | grep -v '127.0.0.1'

Print IP Address

我们差不多得到想要的输出了,仅仅需要从开头替换掉字符串(addr:)。我们将会使用cut命令单独打印出第二列。一二列之间并不是用tab分割,而是(:),所以我们需要使用到域分割符选项(-d),通过管道连接上面的输出。

# ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:

Customized IP Address

最后!期望的结果出来了。

5.如何在Linux终端彩色输出

你可能在终端看见过彩色的输出。同时你也可能知道在终端里允许/禁用彩色输出。如果都不知道的话,你可以参考下面的步骤。

在Linux中,每个用户都有'.bashrc'文件,被用来管理你的终端输出。打开并且编辑该文件,用你喜欢的编辑器。注意一下,这个文件是隐藏的(文件开头为点的代表隐藏文件)。

$ vi /home/$USER/.bashrc

确保以下的行没有被注释掉。即,行开头没有#。

if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dirc$
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

User .bashrc File

完成后!保存并退出。为了让改动生效,需要注销账户后再次登录。

现在,你会看见列出的文件和文件夹名字有着不同的颜色,根据文件类型来决定。要了解所用的颜色代码,可以运行下面的命令。

$ dircolors -p | less

Linux Color Output

6.如何用#号标记Linux命令和脚本

我们一直在Twitter,Facebook和Google Plus(可能是其他我们没有提到的地方)上使用#号标签。那些#号标签使得其他人搜索一个标签更加容易。可是很少人知道,我们可以在Linux命令行使用#号标签。

我们已经知道配置文件里的#,在大多数的编程语言中,这个符号被用作注释行,即不被执行。

运行一个命令,然后为这个命令创建一个#号标签,这样之后我们就可以找到它。假设我们有一个很长的脚本,就上面第四点被执行的命令。现在为它创建一个#号标签。我们知道ifconfig可以被sudo或者root执行,因此用root来执行。

# ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d: #myip

上述脚本被’myip‘给标记了。现在在reverse-i-search(按下ctrl+r)搜索一下这个标签,在终端里,并输入’myip‘。你可以从这里开始执行。

Create Command Hash Tags

你可以为每个命令创建#号标签,之后使用reverse-i-search找到它。

目前就这么多了。我们一直在辛苦的工作,创造有趣的,有知识性的内容给你。你觉得我们是如何工作的呢?欢迎咨询任何问题。你可以在下面评论。保持联络!Kudox。


via: http://www.tecmint.com/linux-commandline-chat-server-and-remove-unwanted-packages/

作者:Avishek Kumar 译者:wi-cuckoo 校对:wxy

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

我们中有些人出于安全原因,在家里或者VPS上通过Linux统一密钥配置(LUKS)为硬盘驱动器加密,而这些驱动器的容量很快会增长到数十或数百GB。因此,虽然我们享受着LUKS设备带来的安全感,但是我们也该开始考虑一个可能的远程备份方案了。对于安全的非现场备份,我们将需要能在LUKS加密的设备上以块级别操作的东西。因此,最后我们发现这么个状况,我们每次都需要传输想要做备份的整个LUKS设备(比如说200GB大)。很明显,这是不可行的。我们该怎么来处理这个问题呢?

一个解决方案: Bdsync

这时,一个卓越的开源工具来拯救我们了,它叫Bdsync(多亏了Rolf Fokkens)。顾名思义,Bdsync可以通过网络同步“块设备”。对于快速同步,Bdsync会生成并对比本地/远程块设备的块的MD5校验和,只同步差异部分。rsync在文件系统级别可以做的,Bdsync可以在块设备级别完成。很自然,对于LUKS加密的设备它也能工作得很好。相当地灵巧!

使用Bdsync,首次备份将拷贝整个LUKS块设备到远程主机,因而会花费大量时间来完成。然而,在初始备份后,如果我们在LUKS设备新建一些文件,再次备份就会很快完成,因为我们只需拷贝修改过的块。经典的增量备份在起作用了!

安装Bdsync到Linux

Bdsync并不包含在Linux发行版的标准仓库中,因而你需要从源代码来构建它。使用以下针对特定版本的指令来安装Bdsync及其手册页到你的系统中。

Debian,Ubuntu或Linux Mint

$ sudo apt-get install git gcc libssl-dev
$ git clone https://github.com/TargetHolding/bdsync.git
$ cd bdsync
$ make
$ sudo cp bdsync /usr/local/sbin
$ sudo mkdir -p /usr/local/man/man1
$ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

Fedora或CentOS/RHEL

$ sudo yum install git gcc openssl-devel
$ git clone https://github.com/TargetHolding/bdsync.git
$ cd bdsync
$ make
$ sudo cp bdsync /usr/local/sbin
$ sudo mkdir -p /usr/local/man/man1
$ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

对LUKS加密的设备实施非现场增量备份

我假定你已经准备好了一个LUKS加密的块设备作为备份源(如,/dev/LOCDEV)。同时,我假定你也有一台远程主机,用以作为源设备的备份点(如,/dev/REMDEV)。

你需要在两台系统上具有root帐号访问权限,并且设置从本地访问远程的无密码SSH访问。最后,你需要安装Bdsync到两台主机上。

要在本地主机上初始化一个远程备份进程,我们需要以root执行以下命令:

# bdsync "ssh root@remote_host bdsync --server" /dev/LOCDEV /dev/REMDEV | gzip > /some_local_path/DEV.bdsync.gz 

这里需要进行一些说明。Bdsync客户端将以root打开一个到远程主机的SSH连接,并执行带有--server选项的Bdsync客户端。明确说明一下,/dev/LOCDEV是我们的本地主机上的源LUKS块设备,而/dev/REMDEV是远程主机上的目标块设备。它们可以是/dev/sda(作为整个磁盘),或者/dev/sda2(作为单个分区)。本地Bdsync客户端的输出结果随后被管道输送到gzip,用来在本地主机中创建DEV.bdsync.gz(所谓的二进制补丁文件)。

你第一次运行上面的命令的时候,它会花费很长一段时间,这取决于你的互联网/局域网速度,以及/dev/LOCDEV的大小。记住,你必须有两个大小相同的块设备(/dev/LOCDEV和/dev/REMDEV)。

下一步是要将补丁文件从本地主机拷贝到远程主机。一种方式是使用scp:

# scp /some_local_path/DEV.bdsync.gz root@remote_host:/remote_path 

最后一步,是要在远程主机上执行以下命令,它们会将补丁文件应用到/dev/REMDEV:

# gzip -d < /remote_path/DEV.bdsync.gz | bdsync --patch=/dev/DSTDEV 

我推荐在使用真实数据部署Bdsync前,使用一些(没有任何重要数据)小分区来做这些测试。在你完全弄懂整个设置是如何工作之后,你可以开始备份真实数据。

尾声

小结之,我们演示了如何使用Bdsync来为LUKS设备实施增量备份。和rsync一样,每次备份只有一小部分数据,而不是整个LUKS设备,需要被推送到非现场备份点,这样会节省带宽和备份时间。剩下来,需要通过SSH或SCP来保证所有数据传输的安全,事实上设备自身是由LUKS加密的。也可以通过使用可以运行bdsync的专用用户(而非root)来改进该配置。我们也可以将bdsync用于任何块设备,如LVM卷或RAID磁盘,也可以很轻易地设置Bdsync备份本地磁盘到USB驱动器上。如你所见,它有着无限可能性!

随时分享你的想法。


via: http://xmodulo.com/remote-incremental-backup-luks-encrypted-disk-partition.html

作者:Iulian Murgulet 译者:GOLinux 校对:wxy

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

对于那些需要在因特网上提供服务或托管主机的人来说,保证您的系统在面对攻击时的安全是一个重要的事情。

mod\_security(一个开源的用于Web应用入侵检测及防护的引擎,可以无缝地集成到Web服务器)和mod\_evasive是两个在服务器端对抗暴力破解和(D)DoS攻击的非常重要的工具。

mod\_evasive,如它的名字一样,在受攻击时提供避实就虚的功能,它像一个雨伞一样保护Web服务器免受那些威胁。

安装mod\_security和mod\_evasive来保护Apache

在这篇文章中我们将讨论如何安装、配置以及在RHEL/CentOS6、7和Fedora 21-15上将它们整合到Apache。另外,我们会模拟攻击以便验证服务器做出了正确的反应。

以上以您的系统中安装有LAMP服务器为基础,所以,如果您没有安装,请先阅读下面链接的文章再开始阅读本文。

(LCTT 译注:本文有修改。原文为了在RHEL/CentOS 7或Fedora 21中使用同样的工具,而删除了它们自带的 firewalld,使用了旧式的iptables。译者以为这样并不恰当,因此,译文中做了相应删节,并增加了firewalld的相应脚本。)

步骤 1: 安装mod\_security和mod\_evasive

另外,在安装LAMP后,您还需要在RHEL/CentOS 7/6中开启EPEL仓库来安装这两个包。Fedora用户不需要开启这个仓库,因为epel已经是Fedora项目的一部分了。

# yum update && yum install mod_security mod_evasive

当安装结束后,您会在/etc/httpd/conf.d下找到这两个工具的配置文件。

# ls -l /etc/httpd/conf.d

mod\_security + mod\_evasive 配置文件

现在,为了整合这两个模块到Apache,并在启动时加载它们。请确保下面几行出现在mod\_evasive.conf和mod\_security.conf的顶层部分,它们分别为:

LoadModule evasive20_module modules/mod_evasive24.so
LoadModule security2_module modules/mod_security2.so

请注意modules/mod\_security2.so和modules/mod\_evasive24.so都是从/etc/httpd到模块源文件的相对路径。您可以通过列出/etc/httpd/modules的内容来验证(如果需要的话,修改它):

# cd /etc/httpd/modules
# pwd
# ls -l | grep -Ei '(evasive|security)'

验证mod\_security + mod\_evasive模块

接下来重启Apache并且核实它已加载了mod\_evasive和mod\_security:

# service httpd restart         [在RHEL/CentOS 6和Fedora 20-18上]
# systemctl restart httpd       [在RHEL/CentOS 7和Fedora 21上]

# httpd -M | grep -Ei '(evasive|security)'     [输出已加载的静态模块和动态模块列表]

检查mod\_security + mod\_evasive模块已加载

步骤 2: 安装一个核心规则集并且配置mod\_security

简单来说,一个核心规则集(即CRS)为web服务器提供特定状况下如何反应的指令。mod\_security的开发者们提供了一个免费的CRS,叫做OWASP([开放Web应用安全项目])ModSecurity CRS,可以从下面的地址下载和安装。

下载OWASP CRS到为之创建的目录

# mkdir /etc/httpd/crs-tecmint
# cd /etc/httpd/crs-tecmint
# wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master

下载mod\_security核心规则

解压CRS文件并修改文件夹名称

# tar xzf master
# mv SpiderLabs-owasp-modsecurity-crs-ebe8790 owasp-modsecurity-crs

解压mod\_security核心规则

现在,是时候配置mod\_security了

将示例的规则文件(owasp-modsecurity-crs/modsecuritycrs10\_setup.conf.example)拷贝为同名的配置文件。

# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf

并通过将下面的几行插入到web服务器的主配置文件/etc/httpd/conf/httpd.conf来告诉Apache将这个文件和该模块放在一起使用。如果您选择解压打包文件到另一个文件夹,那么您需要修改Include的路径:

<IfModule security2_module>
    Include crs-tecmint/owasp-modsecurity-crs/modsecurity_crs_10_setup.conf
    Include crs-tecmint/owasp-modsecurity-crs/base_rules/*.conf
</IfModule>

最后,建议您在/etc/httpd/modsecurity.d目录下创建自己的配置文件,在那里我们可以用我们自定义的文件夹(接下来的示例中,我们会将其命名为tecmint.conf)而无需修改CRS文件的目录。这样做能够在CRS发布新版本时更加容易的升级。

<IfModule mod_security2.c>
    SecRuleEngine On
    SecRequestBodyAccess On
    SecResponseBodyAccess On 
    SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream 
    SecDataDir /tmp
</IfModule>

您可以在SpiderLabs的ModSecurity GitHub仓库中参考关于mod\_security目录的更完整的解释。

步骤 3: 配置mod\_evasive

mod\_evasive被配置为使用/etc/httpd/conf.d/mod\_evasive.conf中的指令。与mod\_security不同,由于在包升级时没有规则来更新,因此我们不需要独立的文件来添加自定义指令。

默认的mod\_evasive.conf开启了下列的目录(注意这个文件被详细的注释了,因此我们剔掉了注释以重点显示配置指令):

<IfModule mod_evasive24.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

这些指令的解释:

  • DOSHashTableSize: 这个指令指明了哈希表的大小,它用来追踪基于IP地址的活动。增加这个数字将使得站点访问历史的查询变得更快,但如果被设置的太大则会影响整体性能。
  • DOSPageCount: 在DOSPageInterval间隔内可由一个用户发起的针对特定的URI(例如,一个Apache 提供服务的文件)的同一个请求的数量。
  • DOSSiteCount: 类似DOSPageCount,但涉及到整个站点总共有多少的请求可以在DOSSiteInterval间隔内被发起。
  • DOSBlockingPeriod: 如果一个用户超过了DOSSPageCount的限制或者DOSSiteCount,他的源IP地址将会在DOSBlockingPeriod期间内被加入黑名单。在DOSBlockingPeriod期间,任何从这个IP地址发起的请求将会遭遇一个403禁止错误。

尽可能的试验这些值,以使您的web服务器有能力处理特定大小的负载。

一个小警告: 如果这些值设置的不合适,则您会蒙受阻挡合法用户的风险。

您也许还会用到以下其它有用的指令:

DOSEmailNotify

如果您运行有一个邮件服务器,您可以通过Apache发送警告消息。注意,如果SELinux已开启,您需要授权apache用户SELinux的权限来发送email。您可以通过下面的命令来授予权限:

# setsebool -P httpd_can_sendmail 1

接下来,将这个指令和其他指令一起加入到mod\_evasive.conf文件。

DOSEmailNotify [email protected]

如果这个指令设置了合适的值,并且您的邮件服务器在正常的运行,则当一个IP地址被加入黑名单时,会有一封邮件被发送到相应的地址。

DOSSystemCommand

它需要一个有效的系统命令作为参数,

DOSSystemCommand </command>

这个指令指定当一个IP地址被加入黑名单时执行的命令。它通常结合shell脚本来使用,比如在脚本中添加一条防火墙规则来阻挡某个IP进一步的连接。

写一个shell脚本在防火墙阶段处理IP黑名单

当一个IP地址被加入黑名单,我们需要阻挡它进一步的连接。我们需要下面的shell脚本来执行这个任务。在/usr/local/bin下创建一个叫做scripts-tecmint的文件夹(或其他的名字),以及一个叫做ban\_ip.sh的文件。

用于iptables防火墙

#!/bin/sh
# 由mod_evasive检测出,将被阻挡的IP地址
IP=$1
# iptables的完整路径
IPTABLES="/sbin/iptables"
# mod_evasive锁文件夹
mod_evasive_LOGDIR=/var/log/mod_evasive
# 添加下面的防火墙规则 (阻止所有从$IP流入的流量)
$IPTABLES -I INPUT -s $IP -j DROP
# 为了未来的检测,移除锁文件
rm -f "$mod_evasive_LOGDIR"/dos-"$IP"

用于firewalld防火墙

#!/bin/sh
# 由mod_evasive检测出,将被阻挡的IP地址
IP=$1
# firewalld-cmd的完整路径
FIREWALL_CMD="/usr/bin/firewall-cmd"
# mod_evasive锁文件夹
mod_evasive_LOGDIR=/var/log/mod_evasive
# 添加下面的防火墙规则 (阻止所有从$IP流入的流量)
$FIREWALL_CMD --zone=drop --add-source $IP
# 为了未来的检测,移除锁文件
rm -f "$mod_evasive_LOGDIR"/dos-"$IP"

我们的DOSSystemCommand指令应该是这样的:

DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"

上面一行的%s代表了由mod\_evasive检测到的攻击IP地址。

将apache用户添加到sudoers文件

请注意,如果您不给予apache用户以无需终端和密码的方式运行我们脚本(关键就是这个脚本)的权限,则这一切都不起作用。通常,您只需要以root权限键入visudo来存取/etc/sudoers文件,接下来添加下面的两行即可:

apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh
Defaults:apache !requiretty

添加Apache用户到Sudoers

重要: 在默认的安全策略下您只能在终端中运行sudo。由于这个时候我们需要在没有tty的时候运行sudo,我们必须像下图中那样注释掉下面这一行:

#Defaults requiretty

为Sudo禁用tty

最后,重启web服务器:

# service httpd restart         [在RHEL/CentOS 6和Fedora 20-18上]
# systemctl restart httpd       [在RHEL/CentOS 7和Fedora 21上]

步骤4: 在Apache上模拟DDoS攻击

有许多工具可以在您的服务器上模拟外部的攻击。您可以google下“tools for simulating DDoS attacks”来找一找相关的工具。

注意,您(也只有您)将负责您模拟所造成的结果。请不要考虑向不在您自己网络中的服务器发起模拟攻击。

假如您想对一个由别人托管的VPS做这些事情,您需要向您的托管商发送适当的警告或就那样的流量通过他们的网络获得允许。Tecmint.com不会为您的行为负责!

另外,仅从一个主机发起一个DoS攻击的模拟无法代表真实的攻击。为了模拟真实的攻击,您需要使用许多客户端在同一时间将您的服务器作为目标。

我们的测试环境由一个CentOS 7服务器[IP 192.168.0.17]和一个Windows组成,在Windows[IP 192.168.0.103]上我们发起攻击:

确认主机IP地址

请播放下面的视频(YT 视频,请自备梯子: https://www.youtube.com/-U_mdet06Jk ),并跟从列出的步骤来模拟一个DoS攻击:

然后攻击者的IP将被防火墙阻挡:

阻挡攻击者的IP地址

结论

在开启mod\_security和mod\_evasive的情况下,模拟攻击会导致CPU和RAM用量在源IP地址被加入黑名单之前出现短暂几秒的使用峰值。如果没有这些模块,模拟攻击绝对会很快将服务器击溃,并使服务器在攻击期间无法提供服务。

我们很高兴听见您打算使用(或已经使用过)这些工具。我们期望得到您的反馈,所以,请在留言处留下您的评价和问题,谢谢!

参考链接


via: http://www.tecmint.com/protect-apache-using-mod_security-and-mod_evasive-on-rhel-centos-fedora/

作者:Gabriel Cánepa 译者:wwy-hust 校对:wxy

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