分类 技术 下的文章

加密技术可以保证你的文件使用加密形式存储,不管你是要把它公开到因特网,备份到服务器,用U盘携带,还是保存在笔记本里。加密你的数据,意味着除非是你认可的接收者,其他人都不可以读取,这样可以防止信息泄漏。

GPG (GNU Privacy Guard)

GPG是GNU Privacy Guard的缩写。它是一种基于密钥的加密方式,使用了一对密钥对消息进行加密和解密,来保证消息的安全传输。一开始,用户通过数字证书认证软件生成一对公钥和私钥。任何其他想给该用户发送加密消息的用户,需要先从证书机构的公共目录获取接收者的公钥,然后用公钥加密信息,再发送给接收者。当接收者收到加密消息后,他可以用自己的私钥来解密,而私钥是不应该被其他人拿到的。

GPG 使用公钥和私钥

公钥是你共享出来的一个公开密钥,它可以被发给任何你希望收到加密信息的人,他们可以使用你的公钥来加密信息。公钥本身不能用来解密自己加密过的信息,只有你自己——那个拥有对应私钥的人——能够解密。私钥是你自己的私人密码,可以用来解密用你的公钥加密过的信息。如果你把私钥泄漏给别人,那么他将可以解密并查看那些使用你的公钥加密过的信息。

在终端里使用GPG

如今大多数的Linux发行版都默认包含了GPG。想检查一下的话,打开终端并输入:

$ gpg --version 

然后你应该看到版本。如果是这样的话,你不需要做其他事情了。否则,你需要从你的发行版软件仓库里安装GPG。

生成密钥

想使用GPG来加密你的通讯,你需要先创建一对密码。首先,打开终端并运行下面的命令:

$ gpg --gen-key 

然后会有如下提示:

Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 

这里要选择数字1,因为它可以用来加密和解密,第二和第三个选项只能让你给信息签名。按下数字1,然后按回车。

然后会有如下提示:

1 DSA key-pair will have 1024 bits.
2 ELG-E keys may be between 1024 and 4096 bits long.
3 What key-size do you want? (2048) 

这里最好输入“2048”,就像GPG推荐的那样。如果你不希望你的密钥过期的话(在后面的提示里,选择0)。如果有提示说信息是否正确的话,回答Yes,然后输入你的真实名字,email地址,以及一个说明(可选的)。如果一切顺利,按下“哦”(对应着OK)然后回车。

在这之后,会提示你输入一个密码,密码会要求重复输入一次。通常,请使用一个难于破解的加强密码,而不推荐用名字/地址/生日/单词等等来做密码。

在输好密码之后,请按照终端里的提示信息做:我们需要生成大量的随机数,建议您在生成素数的过程中做一下这些动作(敲击键盘,移动鼠标,读写硬盘),这样会让随机数生成器有机会获取更大的熵。

生成好密钥以后,你应该会看到一条类似的提示信息:gpg: key 083C39A4 marked as ultimately trusted. public and secret key created and signed.

密钥服务器

密钥服务器是用来发布你的公钥,并将其分发到其他人的服务器,这样其他用户可以轻松的根据你数据库中的名字(或者e-mail地址)来获取你的公钥,并给你发送加密信息。这样可以避免把公钥直接拷贝给你的朋友的方式,而让其他人直接通过在线数据库来找到你。

上传你的公钥到密钥服务器:

$ gpg --send-keys --keyserver [keyservers.address.com] [yourpublicid] 

你需要把keyservers.address.com替换成你选择的服务器(或者用mit.edu,它会跟其他服务器做同步),还需要把命令行中的yourpublicid替换成你的。最终执行的命令看上去会大概是下面这样子:

$ gpg --send-keys --keyserver hkp://pgp.mit.edu 083C39A4 

加密文件

如果你想给你的朋友发送一个用他的公钥加密过的文件,可以用下面的命令:

$ gpg -o encrypted_file.gpg --encrypt -r key-id original.file 

命令解释:

-o encrypted_file.gpg = 指定输出文件
--encrypt = 做加密
-r = 接收者的KEY-ID,比如这里就填你朋友的KEY-ID。
original.file = 指定要加密的文件

解密文件

如果有人给你发送了一个用你的公钥加密过的文件,你可以按下面的方式解密:

$ gpg --decrypt filename.gpg 

对称加密

你还可以使用GPG做对称加密,来给文件加上一个密码。这种不同于公钥加密的方式,在对称加密中,同一个密钥用于加密和解密。这种方式在处理信息的时候会简单点,但是保密性没那么好,因为需要把密码告诉接收者。下面是用密码加密文件的命令:

$ gpg -c filename.txt 

解密这个文件,用下面的命令:

$ gpg filename.txt 

然后,会提示你输入密码,之后就开始解密文件。

文档数字签名

数字签名非常类似于你在信件或者重要文件的末尾签上自己的名字,它表示这份文件确实是由你发出来的。通过数字签名,它会计算整个文件内容的SHA1哈希值,然后把这个值附加到签名末尾。如果文件内容被篡改,签名的校验就会失败,可以用来鉴定伪造。如果用户自己在签名后编辑了这份文件,签名校验也会失败,因为此时文件的SHA1哈希值已经和之前签名时不同了。

对一份文件做数字签名,运行下面的命令:

$ gpg --clearsign filename.txt 

生成销毁密钥

销毁密钥可以在你的私钥泄漏或者怀疑泄漏的时候,吊销你的公钥。使用下面的命令创建一个销毁密钥:

$ gpg --output revoke.asc --gen-revoke keyid 

把销毁密钥保存到一个安全的地方,任何人都可以用它让你的密钥失效。(你可以用对称加密方式来加密你的销毁密钥文件。)

在终端里使用GPG的一些技巧

通过下面的命令可以查看你已经导入的GPG密钥:

$ gpg --list-keys 

之后应该会列出来用你e-mail注册的密钥列表(因为这里只有一个密钥,它只列出了你自己的密钥),然后,你可以看到自己的KEY-ID,就可以通过上文介绍的命令提交给密钥服务器。

显示你的密钥链中的私钥和公钥。

$ gpg --list-public-keys # 会列出来公钥
$ gpg --list-secret-keys # 会列出来私钥

导入密钥

$ gpg --import KEYFILE 

命令中的KEYFILE应该是需要导入的公钥文件名。(如果文件不在主目录中,使用cd命令切换到该文件的目录下,再执行上面的命令)

导出公钥到文件

用下面的命令可以将你的公钥导出为ASCII格式:

$ gpg --export -a > publickey.asc 

* * * * *

关于Richard White

Richard是一位技术爱好者,在不止一个场合他被称为极客。他还是三本书的作者,最近的一本《数字时代的隐私》即将在2014年5月份出版精装本。他还是数字时代网站的主编和驱动者,数字时代的目的是提供资源和工具来实现和维护匿名,安全和隐私。Ricard经常写一些和隐私相关的文章,最近忙着写《CLI艺术》,收集开源的命令行软件。关于GNU Privacy Guard的更多信息以及如何使用GPG软件的图形界面工具,你可以访问White的数字时代网站。


via: http://distrowatch.com/weekly.php?issue=20140407

译者:zpl1025 校对:wxy

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

亲爱的 Linux 极客们,

Q: 我下载了一部高品质 3D 电影,但是当我用 VLC 播放器播放的时候,画面被分割成两个部分,我可不想这样欣赏我的高清大片。

在本教程中你将会学习如何在 Ubuntu 中用名为bino的 3D 电影播放器来观看 3D 电影。你可以在终端中执行以下命令来轻松获取有关 3D 电影播放器的相关信息。

apt-cache search bino

在你的 Ubuntu 电脑中打开新终端(CTRL+ALT+T),执行以下命令来安装 bino。

sudo apt-get install bino

bino 安装完成后通过应用程序 → 音视频 → Bino 来启动,或者只需在终端中输入 bino 并按下回车。

如果你想播放,可以通过文件(File)点击打开(Open)来定位你的3D视频剪辑或电影。你的电影将会开始播放,但是画面仍然分成两个部分,没人喜欢这样看电影。

现在在输入(Input)中选择左/右(Left/Right)选项。你将看到很大的改变,我觉得你会喜欢。下面的截图说明了一切。我虽然刚开始用bino播放器,但是尝试着播放,看看我是否可以找到更多的技巧。

不要忘记点击播放按钮来观看电影。


via: http://www.unixmen.com/play-3d-movies-ubuntu/

译者:Vito 校对:Caroline

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

Ubuntu 14.04 Trusty Tahr 已发布,如果你是其中之一的安装者,你需要做一些事来提升你的使用体验。

对于那些升级,这可能已经做完了,你不必再去做它,除非你没有在Ubuntu 13.10 里做这些。

Ubuntu 并不是完全开箱即用的。有一些可以提升体验的包和工具由于合法问题被Canonical排除在外。

这些包如果没有安装,会使观看电影,播放flash视频和收听MP3文件变得困难。由于法律或者其他原因,Ubuntu的父公司将它们排除在外。

如果你希望做上面这些事情,你必须继续下去来学习如何解决这些问题。

对于已经安装Ubuntu 13.10 并且准备升级的人,阅读这篇文章,或者点击下面的链接。

当你已经升级或者安装好了Ubuntu 14.04,打开你的命令行,接着运行下面的命令来安装缺失的可以在Ubuntu上更简易地播放媒体文件的包。

sudo apt-get install ubuntu-restricted-extras

当提示输入密码后,按回车继续。在安装完后,继而测试你的系统。这个包帮助安装Adobe Flash Player,MP3编码器,这样你就可以收听MP3音乐,电影插件来观看合法的DVD电影,和其他有用的事。

因此,无论你何时安装Ubuntu,首先试着安装这个包。这会在你使用Ubuntu时,提升你的一点体验。

这还有一种情况是你想要观看加密的DVD电影。在这种情形下,你需要运行下面的命令。

sudo apt-get install libavformat-extra-54 libavcodec-extra-54 libdvdread4

接着运行下面的命令,你就完成了。

sudo /usr/share/doc/libdvdread4/install-css.sh

最后,安装VLC媒体播放器,这是一个在Windows和Linux系统上一个很棒的观看DVD电影的程序。

sudo apt-get install vlc

希望这对你有帮助。

祝你体验愉快!


via: http://www.liberiangeek.net/2014/04/daily-ubuntu-tips-make-ubuntu-14-04-trusty-tahr-perform-better/

译者:geekpi 校对:wxy

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

你听说过“快速阅读”吗?说实话我也没有。直到一个名叫Spritz的新型公司筹集了350万种子基金来开发使用户能够实现每分钟阅读1000个单词的一个API。

“快速阅读”的概念十分简单:将一文本分割成一个个独立短小的部分,像一两个单词,然后使这些部分迅速地闪过屏幕。在这一阅读过程中,读者的眼睛完全不需要运动,从而减少读者平常阅读中花费的不必要的浏览页面的时间。因为这是一件相对较新的技术,没人知道在这样的阅读速度下,你的大脑是否会爆炸或者崩溃。不过,实际上这技术是十分安全的,因为你的大脑运行地足够快来处理这些信息。一旦人们习惯了这种阅读方式,这种方式会变得十分方便。想必你像我一样已经对这项技术的到来已经激动万分了,但我并不想等待,而是更快地习惯这种阅读方式。好消息是:现在你就可以在你最喜爱的操作系统下尝试“快速阅读”了。

1. Spread0r

基于Perl和GTK2,spread0r(曾名为Gritz)是一个GPL软件,它以文本文档作为输入,然后将文本内容在你眼前以最高1000词每分钟速度闪过。当然你可以先尝试较慢的速度,来慢慢熟悉它。软件的用户界面十分简介,功能按键几乎极简:开始文章阅读,选择阅读速度,推出等等。这个软件也有一些需要改进的地方,我建议使其能够支持除了文本文档之外的其他文件作为输入(当然你也可以自己转换格式),另外也可以考虑加入“无干扰”模式。不管怎样,这款软件是十分高大上的。

你可以通过从github中下载源码并启动“spread0r.pl”文件来尝试Spread0r。注意你先需要在你的操作系统中安装GTK2以及Perl.

$ sudo apt-get install libgtk2-perl (for Debian/Ubuntu)
$ sudo pacman -S gtk2-perl (for Archlinux)
$ sudo yum install perl-gtk2 (for Fedora) 

2. Spread

除电子书以及word文档之外,我在电脑中阅读最多的就是来自网络的文章了(是的,这就是下面这种方法的起因)。如果我需要复制并黏贴我需要阅读的文本到一个文本编辑器中,将其保存为一个txt文档,然后用Spread0r打开,这样事情会变得太麻烦了。幸运的是,Chrome的一个拓展程序Spread会为我们处理这个需求。在你的Chrome浏览器中安装并启用Spread之后,你只需要选择你想要“快速阅读”的文本,在选取内右击,然后选择“Spreed selected text.”这个拓展程序会开启一个新窗口,你选择的文本就会在那个窗口中为你进行快速阅读。我喜欢这个和用扩展程序的方式集成到Chrome做法。比如说,你可以选择窗口的配色,一次快速阅读的文本量,字体大小,通过空格键控制的开始以及暂停,你甚至可以进行高于4,000词每分钟的快速阅读(但这已经不是快速阅读了,你只能看到零星的闪烁)。

3. Squirt

如果您喜欢在浏览器中快速阅读的点子,但是你不使用Chrome,也不喜欢“扩展程序”,对此的解决方案是书签Squirt。除了Squirt这个不明觉厉的名字之外,Squirt是我现在最喜欢的快速阅读工具。它十分高效并且使用简单。从这里加入它,通过把那个蓝色大按钮拖进你最喜欢的书签栏中。然后你就可以在任何网页中打开它,无论是否选中了阅读文本——一个白色的面板会出现在当前页面之上。你可以凭直觉来控制阅读文本。用户界面十分漂亮,而且它也可以实现4,000词以上的阅读速度。

 Bonus: Zethos

如果之前提及的方案没有一个能使你满意,而且你是一名程序员,你会很高兴地发现有一个叫做Zethos的免费及开源的JS项目,你可以通过使用它来开发你自己的“快速阅读”应用。你可以在github上查看代码,并为作者点个赞。

总而言之,你现在没有理由不在你最爱的操作系统进行“快速阅读”了。你只需要防止你的大脑被烧焦就行了。你更喜欢以上的哪个解决方案呢?或者你有另外更好的选择?你认为“快速阅读”在未来能够发展吗?在评论区中评论让我们知道你的想法。


via: http://xmodulo.com/2014/04/speed-read-linux.html

译者:ThomazL 校对:wxy

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

Linux的命令行提供很多命令来杀死进程。比如,你可以向“kill”命传递一个PID来杀死进程;“pkill”命令使用一个正则表达式作为输入,所以和该模式匹配的进程都被杀死。

但是还有一个命令叫“killall”,默认情况下,它精确地匹配参数名,然后杀死匹配进程。在这篇文章中,我们将讨论有关这个命令的实际应用。

Linux 的 killall 命令

killall命令可以用来给一个特定的进程发送一个信号。这个信号默认情况下是SIGTERM,但也可以由killall命令使用参数来指定其它信号。

现在让我们通过一些实际的例子来看看这个命令的实际用法。

1. 基本示例

在这个例子中,我们将使用killall来杀死特定进程。假如,有两个开头字符相同的进程:

$ ps -aef | grep “test”
himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test
himanshu 3970 2811 0 14:14 pts/0 00:00:00 ./test_again

如何杀死“test\_again”进程呢?

$ killall test_again
[2]+ Terminated ./test_again

如你所见,killall命令终止了“test\_again”进程。你可以通过ps命令来确认这个事实:

$ ps -aef | grep “test”
himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test

你可以观察到“test\_again”没有被显示出来,因为它已经被杀死了。

2. 使用 -I 选项忽略大小写

默认情况下,killall命令是大小写敏感的。例如:

$ ps -aef | grep “test”
himanshu 4177 3161 0 14:54 pts/3 00:00:00 ./test
himanshu 4178 3161 0 14:54 pts/3 00:00:00 ./test_again
himanshu 4180 3161 0 14:54 pts/3 00:00:00 grep --color=auto test

$ killall TEST
TEST: no process found

你可以看到,killall命令找不到叫做“TEST”的进程,但是“test”进程是确确实实的在运行的。

来让killall命令忽略大小写,可以使用-I选项(大写i)。例如:

$ killall -I TEST
[1]- Terminated ./test

你可以观察到,现在你成功的终止了“test”进程。

3. 使用 -i 选项交互式的终止进程

killall命令可以用来终止多个进程。

$ killall test test_again
[2]- Terminated ./test_again
[3]+ Terminated ./test

但是,如果你想要killall交互式地来终止进程,你可以使用-i选项。

这里是例子:

$ killall -i test test_again
Kill test(4201) ? (y/N) y
Kill test_again(4202) ? (y/N) y
[1]- Terminated ./test
[2]+ Terminated ./test_again

你可以看到,用这种方式,在同时终止多个进程时,用户可以控制是否终止某一个进程。

4. 使用 -q 选项关闭命令执行回显

有些时候,当killall找不到指定的进程时,它就会像下面这样输出错误信息。

$ killall TEST
TEST: no process found

但是,当你想要killall执行地安安静静的话,你就可以使用-q选项:

$ killall -q TEST
$

如你所见,-q选项被使用之后,killall命令的输出信息就被抑制了。

5. 使用-l选项列出所有支持的信号(signal)

如之前描述的一样,killall向进程发送信号。

你可以使用-s选项(后面跟一个信号名)来向一个进程发送特殊信号。

想要知道所有可以发送的信号,可以使用-l选项(小写L)来获取:

$ killall -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

killall支持上面的所有信号。

看着这些信号的名字,可能你心里就会嘀咕:这些信号都是干什么的?

译者注:使用下面的命令来获取所有信号的说明:

$ man 7 signal

我需要和大家讨论一件事情

killall命令的man说:假如进程的名字的长度小于等于15,默认情况下就会以完整名称匹配。

比如,假设有两个名字很长的进程:

$ ps -aef | grep “test”
himanshu 4021 3161 0 14:27 pts/3 00:00:00 ./test_abcdefghij
himanshu 4035 3161 0 14:27 pts/3 00:00:00 ./test_abcdefgh

第一个进程的名字有15个字符。现在,让我们试着使用killall杀死这个进程:

$ killall test_abcdefghij
[1]- Terminated ./test_abcdefghij

如你所见,killall命令成功杀死了这个进程。

假如,两个进程的名字都超过15个字符,根据man,killall将把两个进程全部杀死。比如:

$ ps -aef | grep “test”
himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx
himanshu 4141 3161 0 14:46 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwxyz
himanshu 4143 3161 0 14:46 pts/3 00:00:00 grep --color=auto test

你可以观察到,两个进程的名字都超过15个字符。现在,当我使用killall试着杀死第二个进程时:

$ killall test_abcdefghijklmnopqrstuvwxyz
[6]+ Terminated ./test_abcdefghijklmnopqrstuvwxyz

它只杀死了指定的进程,另一个则没有被杀死。

$ ps -aef | grep “test”
himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx
himanshu 4146 3161 0 14:47 pts/3 00:00:00 grep --color=auto test

我不太确定,是我进行的尝试中有不对的地方,还是这是killall的一个bug。假如你在评论中写上你的观点,我会非常感激。

顺便说一下,这是我机器上killall命令的版本信息:

$ killall --version
killall (PSmisc) 22.20
Copyright (C) 1993-2012 Werner Almesberger and Craig Small

PSmisc comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under
the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.

via: http://linoxide.com/linux-command/linux-killall-my-options/

译者:intermerlin 校对:wxy

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

我们在之前的教程中创建的DNS服务器是一个开放DNS解析器。开放解析器不会过滤任何来源请求,并会接受来自所有IP的查询。

不幸的是,开放解析器很容易成为一个攻击目标。比如,攻击者可以对开放DNS服务器发起一个拒绝服务攻击(DoS)或者更糟的分布式拒绝服务攻击(DDoS)。这些也可与IP欺骗结合,将应答包指向受害者被欺骗的IP地址。在另外的场合下称作DNS放大攻击,开放的DNS服务器很容易就会成为攻击的对象。

根据openresolverproject.org,除非有必要,运行一个开放解析器是不明智的。大多数公司要让它们的DNS服务器仅对他们的客户开放。本篇教程会只要集中于如何配置一个DNS服务器来使它停止开放解析且仅对有效的客户响应。

调整防火墙

由于DNS运行在UDP的53端口上,系统管理可能试图仅允许来自53端口的客户端IP地址,并阻止剩余的因特网端口。虽然这可以工作,但是也会有一些问题。既然根服务器与DNS服务器的通信也用53端口,我们不得不在防火墙内也确保UDP 53端口被允许。

一个防火墙示例如下所示。对于生产服务器,确保你的规则匹配你的要求并遵守与公司安全制度。

# vim firewall-script 

## existing rules are flushed to start with a new set of rules ##
iptables -F

iptables -A INPUT -s A.A.A.A/X -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s B.B.B.B/Y -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s C.C.C.C/Z -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --dport 53 -j DROP

## making the rules persistent ##
service iptables save

让脚本可执行并运行它。

# chmod +x firewall-script
# ./firewall-script 

阻止递归查询

DNS查询主要可以分为递归查询和迭代查询。对于递归查询,服务器会响应客户端应答或者错误信息。如果应答不在服务器的缓存中,服务器会与根服务器通信并获得授权域名服务器。服务器会不停查询知道获得结果,或者请求超时。对于迭代查询,另一个方面讲,服务器会将客户端指向另外一个可能可以处理的服务器上,那么就会减少服务器自身的处理。

我们可以控制运行递归查询的IP地址。我们修改位于/etc/named.conf的配置文件并增加/修改下面的参数。

# vim /etc/named.conf

## we define ACLs to specify the source address/es ##
acl customer-a{ A.A.A.A/X; };
acl customer-b { B.B.B.B/Y; C.C.C.C/Z; };

## we call the ACLs under options directive ##
options {
        directory "/var/named";
        allow-recursion { customer-a; customer-b; };
};

调整用于开放解析器的防火墙

如果你必须运行一个开放解析器,建议你适当调节一下你的服务器,这样就不会被利用了。smurfmonitor 仓库提供了强大的一组可以用于开放解析器的iptables规则,比如阻止来自DNS放大攻击的域名解析请求。这个仓库会定期地更新,强烈建议DNS服务器管理员使用它。

总的来说,对于开放DNS解析器的攻击是很常见的,特别是对于没有适当安全防护的DNS服务器而言。这个教程延时了如何禁止一个开放DNS服务器。我们同样看到了如何使用iptables在一个开放DNS服务器上加上一层安全防护。

希望这对你有用。


via: http://xmodulo.com/2014/04/close-open-dns-resolver.html

译者:geekpi 校对:校对者ID

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