标签 Ubuntu 下的文章

隧道 被设计用于远端客户端和本地(可通过inetd启动)或远端服务器间的SSL加密封装。它可以用于为inetd进程增加SSL功能,像POP2(译注:厄,POP2这个服务还有人用么?),POP3和IMAP服务而不必改变程序代码。隧道使用OpenSSL库用于加密,因此它支持任何被编译进库的加密算法。简而言之,隧道可以使任何一个不安全的端口变得安全加密。

在本篇中,我会描述如何通过SSL水稻封装SSH。这个步骤非常简单。你需要在你的客户端PC和远程PC都已经安装运行了sshd。

我正在使用下面提到的两个系统。

远程系统:

操作系统: Debian 7
IP 地址: 192.168.1.200/24

客户端(本地) 系统:

操作系统: Ubuntu 13.04 desktop
IP 地址: 192.168.1.100/24

配置远程系统

让我们在远程Debian 7服务器上安装stunnel包。

# apt-get install stunnel4

现在让我们像下面那样创建一个SSL证书。

# openssl genrsa 1024 > stunnel.key

示例输出:

Generating RSA private key, 1024 bit long modulus
............................................++++++
...................++++++
e is 65537 (0x10001)

# openssl req -new -key stunnel.key -x509 -days 1000 -out stunnel.crt

你会被询问若干个问题如国家、州、公司细节等。

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:Tamilnadu
Locality Name (eg, city) []:Erode
Organization Name (eg, company) [Internet Widgits Pty Ltd]:unixmen
Organizational Unit Name (eg, section) []:Technical
Common Name (e.g. server FQDN or YOUR name) []:server.unixmen.com
Email Address []:[email protected]

# cat stunnel.crt stunnel.key > stunnel.pem
# mv stunnel.pem /etc/stunnel/

现在我们需要配置stunnel来将 443(https)隧道到22(ssh)。这可以通过在/etc/stunnel/目录下创建stunnel.conf文件来实现:

 # vi /etc/stunnel/stunnel.conf

并加入下面的行:

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh]
accept = 192.168.1.200:443
connect = 127.0.0.1:22

上面的几行说明了stunnel在哪里寻找证书文件和哪里接收和转发ssh链接。在本例中,stunnel会接收来自443端口的流量并会转发给22端口。

保存并关闭文件。

现在让我们启用stunnel服务。要这么做,编辑文件 /etc/default/stunnel4:

# vi /etc/default/stunnel4

改变行从 ENABLED = 01

# /etc/default/stunnel
# Julien LEMOINE <[email protected]>
# September 2003

# Change to one to enable stunnel automatic startup
ENABLED=1
FILES="/etc/stunnel/*.conf"
OPTIONS=""

# Change to one to enable ppp restart scripts
PPP_RESTART=0

接着使用命令启用stunnel服务:

# service stunnel4 start

配置本地系统

用这个命令安装stunnel:

$ sudo apt-get install stunnel4

我们需要远程系统上相同的证书文件(stunnel.pem)。复制远程系统上的 stunnel.pem文件到我们本地系统中并在相同的位置保存(也就是 /etc/stunnel)。

/etc/stunnel/目录下创建新的文件stunnel.conf

$ sudo vi /etc/stunnel/stunnel.conf

加入下面的行:

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
client=yes
[ssh]
accept=443
connect=192.168.1.200:443

保存并关闭文件。这里的192.168.1.200是我们的远程系统IP。

现在让我们启用stunnel服务。要这么做,编辑文件/etc/default/stunnel4:

$ sudo vi /etc/default/stunnel4

改变行从 ENABLED = 01.

# /etc/default/stunnel
# Julien LEMOINE <[email protected]>
# September 2003

# Change to one to enable stunnel automatic startup
ENABLED=1
FILES="/etc/stunnel/*.conf"
OPTIONS=""

# Change to one to enable ppp restart scripts
PPP_RESTART=0

接着使用命令启用stunnel服务:

$ sudo service stunnel4 start

测试SSH连接

现在这样已经很好了,你可以使用命令连接到你的远程机器上了:

$ ssh sk@localhost -v -p 443

示例输出:

OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 443.
debug1: Connection established.
debug1: identity file /home/sk/.ssh/id_rsa type -1
debug1: identity file /home/sk/.ssh/id_rsa-cert type -1
debug1: identity file /home/sk/.ssh/id_dsa type -1
debug1: identity file /home/sk/.ssh/id_dsa-cert type -1
debug1: identity file /home/sk/.ssh/id_ecdsa type -1
debug1: identity file /home/sk/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-4
debug1: match: OpenSSH_6.0p1 Debian-4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1p1 Debian-4
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 78:05:ba:1b:73:02:75:86:10:33:8c:0f:21:61:d4:de
debug1: Host '[localhost]:443' is known and matches the ECDSA host key.
debug1: Found key in /home/sk/.ssh/known_hosts:12
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/sk/.ssh/id_rsa
debug1: Trying private key: /home/sk/.ssh/id_dsa
debug1: Trying private key: /home/sk/.ssh/id_ecdsa
debug1: Next authentication method: password
sk@localhost's password: #   ## Enter your remote system user password
debug1: Authentication succeeded (password).
Authenticated to localhost ([127.0.0.1]:443).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LC_PAPER = en_IN.UTF-8
debug1: Sending env LC_ADDRESS = en_IN.UTF-8
debug1: Sending env LC_MONETARY = en_IN.UTF-8
debug1: Sending env LC_NUMERIC = en_IN.UTF-8
debug1: Sending env LC_TELEPHONE = en_IN.UTF-8
debug1: Sending env LC_IDENTIFICATION = en_IN.UTF-8
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending env LC_MEASUREMENT = en_IN.UTF-8
debug1: Sending env LC_TIME = en_IN.UTF-8
debug1: Sending env LC_NAME = en_IN.UTF-8
Linux server 3.2.0-4-486 #1 Debian 3.2.51-1 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
Last login: Mon Dec 30 15:12:22 2013 from localhost
sk@server:~$

或者你可以简单地使用下面的命令:

$ ssh -p 443 sk@localhost

示例输出:

sk@localhost's password: 
Linux server 3.2.0-4-486 #1 Debian 3.2.51-1 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
Last login: Mon Dec 30 15:22:08 2013 from localhost
sk@server:~$

现在你可以用ssh连接到你的远程机器上了,但是所有的流量通过SSL隧道。

你已经完成了!即使ssh的默认端口被防火墙阻止了,你仍然可以使用SSH到你的远程系统。

参考链接:


via: http://www.unixmen.com/tunnel-ssh-connections-ssl-using-stunnel-debian-7-ubuntu-13-10/

译者:geekpi 校对:wxy

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

Ubuntu 13.10发布前后引起了很大的反响。这个操作系统让Canonical达到了一个全新的等级,尤其是在2013年这样一个Linux大年。但现在已经尘埃落定,外界的声音也小了,让我们看看这个系统让你喜欢的五件事,和让你讨厌的五件事。

OpenStack APIs:Ubuntu 13.10兼容OpenStack APIs。事实上,内部和外部Ubuntu-主机云现在与OpenStack APIs兼容。

GUI: Unity的GUI正在从个人电脑到智能手机和平板电脑很好的转变。

升级后的Dashboard: 为用户提供了搜索甚至是Ubuntu One cloud的Ubuntu Dash已经升级了。

好用的Juju: 在活泼的火蜥蜴中,您可以使用Juju在Linux容器或LXC中创建应用程序实例。

GUI更加顺滑:也许正因为它的多功能性,活泼的火蜥蜴的漂亮的用户界面比过去版本的用户界面更为顺滑。

没有Mir: Unity界面还没有从X.org转移到Mir 编译器。这是让很多人失望的主要的地方。

没有MariaDB: MySQL数据库的替代产品——MariaDB尚未被Canonical引入。这与其说让人失望,不如说是让人震惊,因为大多数其他发行版已经这么做了。Canonical的Ubuntu 13.10还在用MySQL作为LAMP的默认数据库。

老版本的landscape管理工具:Canonical的landscape服务还不够先进,实际上,甚至比微软的跟着Windows发布的系统中心还要古老。

只支持两款手机:现在只有Galaxy Nexus4和Galaxy Nexus智能手机支持Ubuntu 13.10。此外,这两个设备只能使用核心和shell程序。

LXC仍然是测试版: 我们说Juju和LXC一起使用,但LXC本身仍在测试模式。它今年2月应该能出一个稳定版。


via: http://www.networkworld.com/slideshow/134353/ubuntu-1310-5-things-we-love-5-things-we-hate.html

译者:Kingname 校对:wxy

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

Ubuntu 是一个处在牛 A 和牛 C 之间的现代操作系统,全世界数百万用户和公司都在使用它。无论是充当工作台还是高级工程机器,Ubuntu 都游刃有余。

如果你是 Ubuntu 初学者,使用过程还需要高手指导,那就关注本站吧。我们已经写了数百篇 Ubuntu 教程,足以带你入门。从安装 Ubuntu 到系统基本设置,我们都有涉猎。

这篇简单的教程为你介绍当笔记本盖子合上时该干嘛还是干嘛,而不是进入睡眠模式或者直接关机。

大多数现代操作系统(包括 Windows)会在笔记本合上时进入睡眠状态。Ubuntu 也是如此。如果你想让你的笔记本盖子合上时不睡眠,就跟着我们学习吧。

要达到这个目的,Ubuntu 有两种方法。第一种是打开 System Settings –> Power(中文版是打开 系统设置 -> 电源),然后进行设置。一些用户设置后不会生效。

另一个方法是直接编辑 Login Manager 的配置文件(logind.conf)。这个方法基本能生效,建议使用这个。

要开始了,按下 Ctrl – Alt – T 组合键,打开终端。然后运行下面的命令打开 logind.conf 文件。你的所有修改都在这个文件内。

sudo gedit /etc/systemd/logind.conf

打开文件后修改下面这行:

#HandleLidSwitch=suspend

改成这样:

HandleLidSwitch=ignore

保存文件,重启 Login Manager 服务:

sudo restart systemd-logind

工作完成!

配置文件的 “ignore” 值告诉 Ubuntu 当笔记本合上后不要睡眠或挂起。不要改动其它设置然后保存文件。


via: http://www.liberiangeek.net/2013/12/daily-ubuntu-tips-do-nothing-when-laptop-lid-is-closed/

译者:bazz2 校对:Caroline

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

  • 2014-01-14: FreeBSD 10.0
  • 2014-01-21: Tails 0.22.1
  • 2014-01-23: Ubuntu 14.04 Alpha 2
  • 2014-01-31: OpenMandriva 2014.0 Alpha
  • 2014-02-01: Mageia 4
  • 2014-02-06: Ubuntu 12.04.4
  • 2014-02-27: Ubuntu 14.04 Beta 1
  • 2014-02-28: OpenMandriva 2014.0 Beta
  • 2014-03-04: Tails 0.23
  • 2014-03-21: OpenMandriva 2014.0 RC1
  • 2014-03-27: Ubuntu 14.04 Final Beta
  • 2014-04-04: OpenMandriva 2014.0 RC2
  • 2014-04-15: Tails 1.0
  • 2014-04-17: Ubuntu 14.04
  • 2014-04-18: OpenMandriva 2014.0
  • 2014-05-27: Tails 1.1

Ubuntu可能不像你想象的那么安全.据报道,Linux驱动的发行版在主目录外存储Wi-Fi配置文件,这使得它们更易于被访问。这包括Wi-Fi配置文件的密码。报道说,一个用户指出,Wi-Fi密码在Ubuntu上是不加密的,因为它们都存储在主目录之外。此文件夹虽然可以在操作系统的安装过程中进行加密。

"最近,我偶然发现了一个事实,NetworkManager默认存储WiFi配置文件包括明文密码到/etc/NetworkManager/system-connections/。我认为当他/她开启了主目录加密时,肯定不希望存储密码到主目录之外,应该以某种方式纠正。" - Softpedia引用邮件列表中Per Guth的话。

这个问题显然是为了让“所有用户都可以连接到这个网络”,即默认情况下启用该选项的结果。为了关掉此功能,用户必须打开Network Indicator,然后去Edit Connection。然后选择在Edit上的Select Network and clock。在General选项卡,取消勾选,以将其关闭。

取消选中该选项据说会移动这个密码进入到所需的文件夹(主目录),但Softpedia报告推测,大多数用户不会注意到这个问题。Canonical是否会进行任何更改,还有待观察。


via: http://www.efytimes.com/e1/fullnews.asp?edid=125483

译者:Akagi201 校对:wxy

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

系统管理员的日常工作之一就是升级服务,为服务打上补丁包或升级一些花哨的功能。2013年初,最新的 MySQL 5.6发布,目标是提供更好的性能和扩展能力。如果你对此有点兴趣,倒是可以看看我写的这篇 如何在 Debian 和 Ubuntu 上升级 MySQL

在这篇教程中,我会假设你已经通过 apt-get 安装了 MySQL。写这篇文章的时候,大部分 Linux 发行版上部署的都是 MySQL 5.5。这里我将向你们介绍如何从 MySQL 5.5升级到5.6。

步骤1:备份 MySQL 配置文件。

$ sudo mkdir /backup
$ sudo tar cvfvz /backup/mysql_conf.tgz /etc/mysql

步骤2:把数据库导出到一个 .sql 文件,并且把数据存放路径下面的数据也备份起来。

$ sudo sh -c 'mysqldump -u root -p -A --events > /backup/backup_db.sql
$ sudo tar cvfvz /backup/mysql_data.tgz /var/lib/mysql

注意:如果你为你的在线 MySQL 系统提供了持续备份,强烈建议你在执行上面步骤时使用单事务选项,或显式使用锁(以保证数据一致性 —— 译注),详见这个教程

步骤3:停止 MySQL 服务

$ sudo service mysql stop

步骤4:卸载 MySQL 软件包

$ sudo apt-get remove mysql-server mysql-client mysql-common
$ sudo apt-get autoremove
$ sudo apt-get autoclean

使用 apt-get 卸载时不要用 purge 选项,这会删除 MySQL 配置文件和其它一些以后要用到的数据。

步骤5: 安装 MySQL 依赖包(内核异步 IO 访问库),MySQL 5.5以及之后的版本都依赖它。

$ sudo apt-get install libaio1

步骤6:从官网下载 Debian 版的 MySQL 软件包

32位系统:

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-debian6.0-i686.deb

64位系统:

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-debian6.0-x86_64.deb

步骤7:安装 MySQL 软件包

$ sudo dpkg -i mysql-5.6.15-debian6.0-*.deb

这个软件包会被安装在 /opt/mysql 目录下面。

步骤8:将 MySQL 命令所在的路径添加到系统环境变量 PATH 内。

Debian 上:

$ sudo sh -c 'echo "PATH=$PATH:/opt/mysql/server-5.6/bin" >> /etc/profile'
$ source /etc/profile

Ubuntu 或 Linux Mint 上:

$ sudo sh -c 'echo "PATH=${PATH}:/opt/mysql/server-5.6/bin" >> /etc/environment'
$ source /etc/environment

步骤9:进入 MySQL 配置文件,修改下面两行配置。

$ sudo vi /etc/mysql/my.cnf

-

basedir = /opt/mysql/server-5.6

lc-messages-dir = /opt/mysql/server-5.6/share

步骤10:设置启动脚本

复制 MySQL 启动脚本到 /etc/init.d 目录下,并且将脚本设置为开机启动,这样一来 MySQL 就能在系统启动的时候自动启动了。

$ sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql
$ sudo update-rc.d mysql defaults

步骤11:(仅限 Ubuntu) 编辑AppArmor配置

MySQL 的上个版本安装时会为 AppArmor 服务创建一个配置文件,这个文件在 MySQL 卸载后会保留在系统中,但是它与现在安装好的 MySQL 版本不兼容。你需要重新编辑下这个配置文件,然后 MySQL 服务才能正常启动。

首先,建一个软链接。

$ sudo ln -s /opt/mysql/server-5.6/bin/mysqld /usr/sbin/mysqld

然后编辑 MySQL AppArmor 配置文件。

$ sudo vi /etc/apparmor.d/usr.sbin.mysqld

/opt/mysql/server-5.6/lib/plugin/ r,

/opt/mysql/server-5.6/lib/plugin/.so mr,

/opt/mysql/server-5.6/share/** r,

最后重启 AppArmor 服务。

$ sudo service apparmor restart

步骤12:(还是仅限 Ubuntu)删除上个 MySQL 版本留下的自启动配置文件。

这个版本的 MySQL 使用 SysVinit (就是 /etc/init.d/mysql)来代替。

$ sudo rm /etc/init/mysql.conf

步骤13:启动 MySQL 服务。

$ sudo service mysql start

步骤14:恢复 MySQL 数据库。

$ sudo mysql -u root -p < /backup/backup_db.sql

步骤15:最后,升级 MySQL 系统表。

$ sudo /opt/mysql/server-5.6/bin/mysql_upgrade -v -u root -p

解决 MySQL 升级过程中产生的问题

如果 Ubuntu 下的 MySQL 服务启动时出现如下错误,就是由于旧版 MySQL AppArmor 配置文件禁止其运行而引起。你需要参考步骤11来更新 AppArmor 的配置文件。

Dec 20 19:57:48 ubuntu kernel: [ 5856.960592] type=1400 audit(1387598268.807:39): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=25216 comm="apparmor_parser"

via: http://xmodulo.com/2013/12/upgrade-mysql-server-debian-ubuntu.html

译者:bazz2 校对:Caroline

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