Lennart Poettering 宣布召开首届 systemd.conf 会议

备受争议的 Linux 初始化系统和服务管理器 Systemd 的创始人 Lennart Poettering 宣布即将召开首届systemd会议 :systemd.conf,它将于11月5日到7日在德国柏林举办。

Lennart Poettering 宣布召开首届 systemd.conf 会议
Lennart Poettering 宣布召开首届 systemd.conf 会议

systemd 项目是当今大多数 Linux 发行版的核心部件。在 systemd.conf 2015 上,将讨论 Linux 核心平台的现状和发展。参会者主要是开发者、发行版打包人员等。会议还包括一个黑客节活动。

本次大会的网址是: https://systemd.events/ 

注册地址: https://systemd.events/systemdconf-2015/registration ,在 8/16 前注册会有折扣。

本次大会也在征集演讲: https://systemd.events/systemdconf-2015/add/session 。

来源:https://linux.cn/article-5946-1.html

GitHub融资2.5亿美元,估值约20亿美元

GitHub融资2.5亿美元,估值约20亿美元
GitHub融资2.5亿美元,估值约20亿美元

据《华尔街日报》网络版报道,开源代码托管网站GitHub称,本周从知名硅谷风险投资公司融资2.5亿美元。据知情人士透露,本轮融资对GitHub估值增长至约20亿美元,其融资总额也增长至3.5亿美元。

GitHub本轮融资彰显出软件对所有产业日益增长的重要性,以及协作开发软件和分享代码日趋受到欢迎。迄今为止,GitHub成功的基础主要是开源软件的流行。

GitHub创办于2008年,被市场研究公司Forrester称作“开发者的Facebook”,有逾1000万名注册用户在协作开发2500万个软件项目。个人开发者利用GitHub存储、编写代码,并与其他开发者进行协作;企业和政府机构则利用它托管和管理软件项目。

GitHub对不公开的软件项目收费。机构可以通过付费在内部托管GitHub,方便内部人员分享代码。GitHub其他服务则是免费的。

投资者称,他们相信GitHub的管理团队。GitHub联合创始人、首席执行官克里斯·万斯特拉斯(Chris Wanstrath)对公司面临的机遇非常乐观,“我们希望进行大手笔投资”,在国际市场上扩张,并投资新产品,“目前全球有数以百万计的开发者,每天都有更多人在学习开发代码。我们的平台能‘孕育’优秀软件”。

红杉资本是GitHub这轮(B轮)融资的领投投资方,其他投资方包括Institutional Venture Partners、Thrive Capital和Andreessen Horowitz。Andreessen Horowitz 2012年曾对GitHub投资1亿美元。

来源:http://tech.ifeng.com/a/20150730/41406376_0.shtml

Slashdot 和 SourceForge 将再次被出售

Slashdot和SourceForge的母公司DHI Group Inc.(旧称Dice Holdings Inc.)在最新财报中宣布了出售 Slashdot Media的计划,它正在寻找买家。

Slashdot 和 SourceForge 将再次被出售
Slashdot 和 SourceForge 将再次被出售

DHI Group是在2012年收购了Geeknet的在线媒体业务,其中包括Slashdot、SourceForge,以及Linux、Unix等跨平台软件索引网站Freecode。DHI Group决定出售的理由是Slashdot业务不再符合该公司的策略,它要把精力集中在在线招聘业务上。

 

来源:http://www.solidot.org/story?sid=44933

阿里巴巴集团60亿增资阿里云 与用友签署战略合作

60亿战略增资阿里云 

7月29日消息,阿里巴巴集团(BABA)宣布对旗下阿里云战略增资60亿元(约折合10亿美元),用于国际业务拓展,云计算、大数据领域基础和前瞻技术的研发,以及DT生态体系的建设。阿里巴巴集团CEO张勇认为,阿里云已迎来最好的机遇,在技术和商业上更进一步,成为DT世界的引擎。

  获得战略增资后,阿里云将加速在全球部署下一代的数据中心,开发更加丰富、高性能的计算和数据产品,提供更优质的网络,并在全球寻找更有潜力的DT(Data Technology)合作伙伴。

  阿里巴巴集团CEO张勇表示:”经过六年多的持续投入和建设,阿里云已经成为中国最大,全球领先的云计算服务平台。今天,数据经济和实体经济大融合的趋势下,阿里云本质上应是新经济的引擎。60亿投入只是开始,我们希望阿里云能不断赋予所有商家、合作伙伴新的能力,帮助所有企业升级基础设施,直接连接消费者,将数据转化为生产力,最终从IT走向DT。这不仅对阿里自身,对整个社会新经济来讲,都是最重要的事。”

  国际业务拓展方面,目前,阿里云开放了包括硅谷、香港在内的6个数据中心,为超过百万的各类客户提供服务,业务正以超过100%的速度增长。同时,阿里云正计划在香港、美国设立第2个数据中心,并在新加坡、中东、日本、欧洲部署新的数据中心。阿里云还将投资国际网络建设,提升云计算用户在中国与海外之间的通信访问质量。

  基础和前瞻技术领域的研发方面,阿里云将加大对芯片、存储、网络硬件、大规模计算集群和软硬件一体化的研发投入,在人类科技最前沿的通信领域投入研究,在技术战略层面进行深度资源整合,提升核心技术竞争力。

  在DT生态体系建设方面,阿里云将在大数据领域进行前沿探索投资;制定针对合作伙伴向DT转型的扶持计划;开展高校合作,进行云计算科普教育,培养更多人掌握云计算和大数据的知识技能。

  经过6年的技术沉淀,阿里云在云计算基础设施领域,覆盖了从域名、备案、解析、计算、网络、存储、数据库、安全、海量数据分析到互联网中间件等一站式服务,并已在众多领域步入全球TOP行列,向全球顶尖的云计算公司迈进。

  几天前,阿里云在一天内集中发布并预告了21款新产品。新品包括读写性能超群的SSD云盘、可一键搭建混合云的VPC服务、基于PostgreSQL并兼容Oracle的云数据库、支持Redis的KV数据库、以及应用于基因测序与渲染等行业的批量计算等。即将推出的产品包括了金融级自研数据库Oceanbase、SSD本地盘、海外CDN节点、StreamSQL等。此外,阿里云还透露即将推出基于GPU的高性能计算与加速器,支持深度学习领域的应用。

  张勇表示,商业变革的奇点临近,从IT向DT的转型中,云计算是引擎,大数据是新能源。阿里巴巴集团积累了全球最丰富的大数据实践,这些技术和经验也将通过阿里云平台,以产品服务的方式分享给全球的公司和合作伙伴,共建DT世界。

阿里巴巴与用友签署全面战略合作协议

阿里巴巴集团60亿增资阿里云 与用友签署战略合作
阿里巴巴集团60亿增资阿里云 与用友签署战略合作

7月29日,阿里巴巴集团同用友网络签署战略合作协议,云计算成为两大行业巨头共同谋求的发展重点。

用友网络董事长兼CEO王文京在现场发言中透露了合作的初衷。他说,希望通过对接阿里巴巴的生态资源,把电子商务和云计算服务与企业管理和运营服务打通,为企业客户创造出聚合效应和全新价值。“在全面服务中国及全球企业互联网化的同时,也将加速用友自身的创新发展。”

在云计算领域,具体合作内容包括:用友将旗下多款产品逐步迁入阿里云,在云上向企业提供SaaS化的服务。企业将可一站式获得阿里云提供的高可靠、强性能的云计算支持,以及用友网络提供的多样化行业解决方案和企业互联网服务。阿里巴巴和用友网络这两大生态体系也将在阿里云平台上实现融通。

以用友旗下畅捷通为例。畅捷通面向不同成长阶段的小微企业提供基于云计算的财务、销售、管理等服务,是国内SaaS领域第一家上市公司。此次合作之后,畅捷通产品将陆续迁入阿里云平台,小微企业将可获得更为稳定、可靠、强悍的云计算支撑。如果恰好这些企业在天猫、淘宝等开展业务,那他们有望享受到数据带来的创新动力。

按照阿里云业务总经理刘松的描绘:未来你在天猫上对某一款产品的评价在经过语义识别后,将会通过阿里云实时传输到企业的前、中、后端。产品经理的年终奖不仅你说了算,可能下一代产品都将为你量身打造。

如果觉得这还太遥远,那就在眼下的是:阿里云上将迎来一大波SaaS化的服务和行业解决方案,阿里云生态优势迅速拉升。

用友网络是亚太本土最大的企业管理软件与服务提供商,拥有超过200万的企业及政府客户。通过27年的行业积累,用友网络的产品和服务在财务、汽车、金融、医疗、能源等垂直领域均有广泛应用。

面对企业互联网化的浪潮,用友很早之前就启动了对软件系统“云+端”的改造。同阿里云的合作,将进一步加速这一进程。显然,改造后的软件必将在阿里云上向企业开放,这对丰富阿里云的生态而言意义重大。

对用友而言,这一模式的发展空间不可限量,Salesforce堪称典型。在美国,Salesforce只有十多年的时间,却让发展了四、五十年的企业软件巨头Oracle(甲骨文)在CRM领域岌岌可危。Salesforce基于SaaS模式,为企业按需提供云CRM服务,让用户在电脑、手机端实现同步管理客户关系,促进销售。其不用安装服务器、无需前期开发和复杂后台管理、还能连接最流行的社交网络和企业端等特性,顿时甩了传统CRM几条街。

行业观察人士分析,用友是国内最大的SaaS服务商,阿里云是国内最大的IaaS平台,二者的结合将至少带动中国30%的企业加速采用云计算。同时,双方的联合进一步推高了云计算的准入门槛,创业窗口期已然关闭,纯粹基于技术和产品的竞争已属于过去式。阿里云除了提供强大和丰富的产品技术之外,在与之搭档的生态方面也树立了难以企及的高度。简而言之,云计算全面进入了生态级竞争阶段。

阿里云总裁胡晓明认为,在数据经济和实体经济全面融合的时代,大数据是新经济的能源,云计算将成为引擎。同用友网络的全面合作,将为企业输送云计算和大数据能力,助力企业向DT转型。

更多了解阿里云:http://click.aliyun.com/m/1334/

Linux有问必答:如何为在Linux中安装兄弟牌打印机

提问: 我有一台兄弟牌HL-2270DW激光打印机,我想从我的Linux机器上打印文档。我该如何在我的电脑上安装合适的驱动并使用它?

兄弟牌以买得起的紧凑型激光打印机而闻名。你可以用低于200美元的价格得到高质量的WiFi/双工激光打印机,而且价格还在下降。最棒的是,它们还提供良好的Linux支持,因此你可以在Linux中下载并安装它们的打印机驱动。我在一年前买了台HL-2270DW,我对它的性能和可靠性都很满意。

下面是如何在Linux中安装和配置兄弟打印机驱动。本篇教程中,我会演示安装HL-2270DW激光打印机的USB驱动。

首先通过USB线连接你的打印机到Linux上。

准备

在准备阶段,进入兄弟官方支持网站,输入你的型号(比如:HL-2270DW)搜索你的兄弟打印机型号。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

进入下面页面后,选择你的Linux平台。对于Debian、Ubuntu或者其他衍生版,选择“Linux (deb)”。对于Fedora、CentOS或者RHEL选择“Linux (rpm)”。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

下一页,你会找到你打印机的LPR驱动和CUPS包装器驱动。前者是命令行驱动,后者允许你通过网页管理和配置你的打印机。尤其是基于CUPS的图形界面对(本地、远程)打印机维护非常有用。建议你安装这两个驱动。点击“Driver Install Tool”下载安装文件。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

运行安装文件之前,你需要在64位的Linux系统上做另外一件事情。

因为兄弟打印机驱动是为32位的Linux系统开发的,因此你需要按照下面的方法安装32位的库。

在早期的Debian(6.0或者更早期)或者Ubuntu(11.04或者更早期),安装下面的包。

$ sudo apt-get install ia32-libs

对于已经引入多架构的新的Debian或者Ubuntu而言,你可以安装下面的包:

$ sudo apt-get install lib32z1 lib32ncurses5

上面的包代替了ia32-libs包。或者你只需要安装:

$ sudo apt-get install lib32stdc++6

如果你使用的是基于Red Hat的Linux,你可以安装:

$ sudo yum install glibc.i686

驱动安装

现在解压下载的驱动文件。

$ gunzip linux-brprinter-installer-2.0.0-1.gz

接下来像下面这样运行安装文件。

$ sudo sh ./linux-brprinter-installer-2.0.0-1

你会被要求输入打印机的型号。输入你打印机的型号,比如“HL-2270DW”。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

同意GPL协议之后,接受接下来的任何默认问题。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

现在LPR/CUPS打印机驱动已经安装好了。接下来要配置你的打印机了。

打印机配置

我接下来就要通过基于CUPS的网页管理和配置兄弟打印机了。

首先验证CUPS守护进程已经启动。

$ sudo netstat -nap | grep 631

打开一个浏览器输入 http://localhost:631 。你会看到下面的打印机管理界面。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

进入“Administration”选项卡,点击打印机选项下的“Manage Printers”。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

你一定在下面的页面中看到了你的打印机(HL-2270DW)。点击打印机名。

在下拉菜单“Administration”中,选择“Set As Server Default”。这会设置你的打印机位系统默认打印机。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

当被要求验证时,输入你的Linux登录信息。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

现在基础配置已经基本完成了。为了测试打印,打开任何文档浏览程序(比如:PDF浏览器)并打印。你会看到“HL-2270DW”被列出并被作为默认的打印机设置。

Linux有问必答:如何为在Linux中安装兄弟牌打印机
Linux有问必答:如何为在Linux中安装兄弟牌打印机

打印机应该可以工作了。你可以通过CUPS的网页看到打印机状态和管理打印机任务。


via: http://ask.xmodulo.com/install-brother-printer-linux.html

作者:Dan Nanni 译者:geekpi 校对:wxy

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

来源:https://linux.cn/article-5844-1.html

如何在 Fedora 22 上面配置 Apache 的 Docker 容器

在这篇文章中,我们将会学习关于Docker的一些知识,如何使用Docker部署Apache httpd服务,并且共享到Docker Hub上面去。首先,我们学习怎样拉取和使用Docker Hub里面的镜像,然后在一个Fedora 22的镜像上交互式地安装Apache,之后我们将会学习如何用一个Dockerfile文件来以一种更快,更优雅的方式制作一个镜像。最后,我们将我们创建的镜像发布到Docker Hub上,这样以后任何人都可以下载并使用它。

如何在 Fedora 22 上面配置 Apache 的 Docker 容器
如何在 Fedora 22 上面配置 Apache 的 Docker 容器

安装并初体验Docker

要求

运行Docker,你至少需要满足这些:

  • 你需要一个64位的内核,版本3.10或者更高
  • Iptables 1.4 – Docker会用它来做网络配置,如网络地址转换(NAT)
  • Git 1.7 – Docker会使用Git来与仓库交流,如Docker Hub
  • ps – 在大多数环境中这个工具都存在,在procps包里有提供
  • root – 尽管一般用户可以通过TCP或者其他方式来运行Docker,但是为了简化,我们会假定你就是root

使用dnf安装docker

以下的命令会安装Docker

dnf update && dnf install docker

注意:在Fedora 22里,你仍然可以使用Yum命令,但是它被DNF取代了,而且在纯净安装时不可用了。

检查安装

我们将要使用的第一个命令是docker info,这会输出很多信息给你:

docker info

也可以试着用docker version

docker version

以守护进程方式启动Dcoker

你应该启动一个docker实例,然后她会处理我们的请求。

docker -d

现在我们设置 docker 随系统启动,以便我们不需要每次重启都需要运行上述命令。

chkconfig docker on

让我们用Busybox来打印hello world:

dockr run -t busybox /bin/echo "hello world"

这个命令里,我们告诉Docker在Busybox镜像的一个实例/容器里执行 /bin/echo “hello world”。Busybox是一个小型的POSIX环境,将许多小工具都结合到了一个单独的可执行程序里。

如果Docker不能在你的系统里找到本地的Busybox镜像,她就会自动从Docker Hub里拉取镜像,正如你可以看下如下的快照:

如何在 Fedora 22 上面配置 Apache 的 Docker 容器
如何在 Fedora 22 上面配置 Apache 的 Docker 容器

Hello world with Busybox

再次尝试相同的命令,这次由于Docker已经有了本地的Busybox镜像,你将会看到的全部就是echo的输出:

docker run -t busybox /bin/echo "hello world"

也可以尝试以下的命令进入到容器环境里去:

docker run -it busybox /bin/sh

使用exit命令可以离开容器并停止它

交互式地Docker化Apache

拉取/下载 Fedora 镜像:

docker pull fedora:22

启动一个容器在后台运行:

docker run -d -t fedora:22 /bin/bash

列出正在运行地容器及其名字标识,如下

docker ps

listing with docker ps and attaching with docker attach

使用docker ps列出,并使用docker attach进入一个容器里

angry_noble是docker分配给我们容器的名字,所以我们来连接上去:

docker attach angry_noble

注意:每次你启动一个容器,就会被给与一个新的名字,如果你的容器需要一个固定的名字,你应该在 docker run 命令里使用 -name 参数。

安装Apache

下面的命令会更新DNF的数据库,下载安装Apache(httpd包)并清理dnf缓存使镜像尽量小

dnf -y update && dnf -y install httpd && dnf -y clean all

配置Apache

我们需要修改httpd.conf的唯一地方就是ServerName,这会使Apache停止抱怨

sed -i.orig 's/#ServerName/ServerName/' /etc/httpd/conf/httpd.conf

设定环境

为了使Apache运行为独立模式,你必须以环境变量的格式提供一些信息,并且你也需要创建这些变量里的目录,所以我们将会用一个小的shell脚本干这个工作,当然也会启动Apache

vi /etc/httpd/run_apache_foreground

#!/bin/bash
#设置环境变量
APACHE_LOG_DI=R"/var/log/httpd"
APACHE_LOCK_DIR="/var/lock/httpd"
APACHE_RUN_USER="apache"
APACHE_RUN_GROUP="apache"
APACHE_PID_FILE="/var/run/httpd/httpd.pid"
APACHE_RUN_DIR="/var/run/httpd"
#如果需要的话,创建目录
if ! [ -d /var/run/httpd ]; then mkdir /var/run/httpd;fi
if ! [ -d /var/log/httpd ]; then mkdir /var/log/httpd;fi
if ! [ -d /var/lock/httpd ]; then mkdir /var/lock/httpd;fi
#运行 Apache
httpd -D FOREGROUND

另外地,你可以粘贴这个片段代码到容器shell里并运行:

dnf -y install git && git clone https://github.com/gaiada/run-apache-foreground.git && cd run-apach* && ./install && dnf erase git

上面的内嵌脚本会安装Git,克隆这个仓库,到文件里去运行脚本,并询问你是否卸载Git。

保存你的容器状态

你的容器现在准备好运行Apache,是时候保存容器当前的状态为一个镜像,以备你需要的时候使用。

为了离开容器环境,你必须顺序按下 Ctrl+qCtrl+p,如果你仅仅在shell执行exit,你同时也会停止容器,失去目前为止你做过的所有工作。

回到Docker主机,使用 docker commit 及容器名和你想要的仓库名字/标签:

docker commit angry_noble gaiada/apache

现在,你保存了容器的状态到一个镜像里,可以使用 docker stop 停止容器了:

docker stop angry_noble

运行并测试你的镜像

最后,从你的新镜像启动一个容器,并且重定向80端口到该容器:

docker run -p 80:80 -d -t gaiada/apache /etc/httpd/run_apache_foreground

到目前,你正在你的容器里运行Apache,打开你的浏览器访问该服务,在http://localhost,你将会看到如下Apache默认的页面

如何在 Fedora 22 上面配置 Apache 的 Docker 容器
如何在 Fedora 22 上面配置 Apache 的 Docker 容器

在容器里运行的Apache默认页面

使用Dockerfile Docker化Apache

现在,我们将要去创建一个新的Apache镜像,这次所有步骤会写在一个Dockerfile文件里,文件将会被用于生成该镜像。

首先,新建一个目录,在里面放Dockerfile文件,并进入该目录:

mkdir apachedf; cd apachedf

然后创建一个名为Dockerfile的文件,添加以下内容:

FROM fedora:22
MAINTAINER Carlos Alberto
LABEL version="0.1"
RUN dnf -y update && dnf -y install httpd && dnf -y clean all
RUN [ -d /var/log/httpd ] || mkdir /var/log/httpd
RUN [ -d /var/run/httpd ] || mkdir /var/run/httpd
RUN [ -d /var/lock/httpd ] || mkdir /var/lock/httpd
RUN sed -i.orig 's/#ServerName/ServerName/' /etc/httpd/conf/httpd.conf
ENV APACHE_RUN_USER apache
ENV APACHE_RUN_GROUP apache
ENV APACHE_LOG_DIR /var/log/httpd
ENV APACHE_LOCK_DIR /var/lock/httpd
ENV APACHE_RUN_DIR /var/run/httpd
ENV APACHE_PID_FILE /var/run/httpd/httpd.pid
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

我们一起来看看Dockerfile里面有什么:

  • FROM – 这告诉docker,我们将要使用Fedora 22作为基础镜像
  • MAINTAINERLABLE – 这些命令对镜像没有直接作用,属于标记信息
  • RUN – 自动完成我们之前交互式做的工作,安装Apache,新建目录并编辑httpd.conf
  • ENV – 设置环境变量,现在我们再不需要runapacheforeground脚本
  • EXPOSE – 暴露80端口给外网
  • CMD – 设置默认的命令启动httpd服务,这样我们就不需要每次起一个新的容器都重复这个工作

建立该镜像

现在,我们将要建立这个镜像,并为其添加tag gaiada/apachedf

docker build -t gaiada/apachedf:0.1 .
如何在 Fedora 22 上面配置 Apache 的 Docker 容器
如何在 Fedora 22 上面配置 Apache 的 Docker 容器

docker完成创建

使用 docker images 列出本地镜像,查看是否存在你新建的镜像:

docker images

然后运行新的镜像:

docker run -t -p 80:80 gaiada/apachedf

这就是Dockerfile的工作,使用这项功能会使得事情更加容易,快速并且可重复生成。

发布你的镜像

直到现在,你仅仅是从Docker Hub拉取了镜像,但是你也可以推送你的镜像,以后需要也可以再次拉取他们。实际上,其他人也可以下载你的镜像,在他们的系统中使用它而不需要改变任何东西。现在我们将要学习如何使我们的镜像对世界上的其他人可用。

创建帐号

为了能够在Docker Hub上推送你的镜像,你需要创建一个帐号。访问 https://hub.docker.com/account/signup/,填写下面的表格:

如何在 Fedora 22 上面配置 Apache 的 Docker 容器
如何在 Fedora 22 上面配置 Apache 的 Docker 容器

Docker Hub 注册页面

登录

输入下面的命令,接着输入你注册时提供的用户名,密码和邮箱

docker login

第一次登录过后,你的帐号信息会被记录在 ~/.dockercfg

推送

推送镜像,使用 docker push [registry/]yourlogin/repositoryname[:tag]

docker push docker.io/gaiada/apachedf

你可能会看见像这样的输出,在你的控制台上:

如何在 Fedora 22 上面配置 Apache 的 Docker 容器
如何在 Fedora 22 上面配置 Apache 的 Docker 容器

Docker推送Apache镜像完成

结论

现在,你知道如何Docker化Apache,试一试包含其他一些组件,Perl,PHP,proxy,HTTPS,或者任何你需要的东西。我希望你们这些家伙喜欢她,并推送你们自己的镜像到Docker Hub。


via: http://linoxide.com/linux-how-to/configure-apache-containers-docker-fedora-22/

作者:Carlos Alberto 译者:wi-cuckoo 校对:wxy

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

来源:https://linux.cn/article-5845-1.html

HTTP 的内容安全策略(CSP)

本文介绍的是W3C的Content Security Policy,简称CSP。顾名思义,这个规范与内容安全有关,主要是用来定义页面可以加载哪些资源,减少XSS的发生。

HTTP 的内容安全策略(CSP)
HTTP 的内容安全策略(CSP)

Chrome扩展已经引入了CSP,通过manifest.json中的content_security_policy字段来定义。一些现代浏览器也支持通过响应头来定义CSP。下面我们主要介绍如何通过响应头来使用CSP,Chrome扩展中CSP的使用可以参考Chrome官方文档

浏览器兼容性

早期的Chrome是通过X-WebKit-CSP响应头来支持CSP的,而firefox和IE则支持X-Content-Security-Policy,Chrome25和Firefox23开始支持标准的的Content-Security-Policy,见下表。

响应头 Chrome Firefox Safari IE
Content-Security-Policy 25+ 23+
X-Content-Security-Policy 4.0+ 10.0(有限的)
X-Webkit-CSP 14+ 6+

完整的浏览器CSP支持情况请移步CanIUse

如何使用

要使用CSP,只需要服务端输出类似这样的响应头就行了:

Content-Security-Policy: default-src 'self'

default-src是CSP指令,多个指令之间用英文分号分割;’self’是指令值,多个指令值用英文空格分割。目前,有这些CSP指令:

指令 指令值示例 说明
default-src ‘self’ cnd.a.com 定义针对所有类型(js、image、css、web font,ajax请求,iframe,多媒体等)资源的默认加载策略,某类型资源如果没有单独定义策略,就使用默认的。
script-src ‘self’ js.a.com 定义针对JavaScript的加载策略。
style-src ‘self’ css.a.com 定义针对样式的加载策略。
img-src ‘self’ img.a.com 定义针对图片的加载策略。
connect-src ‘self’ 针对Ajax、WebSocket等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为400的响应。
font-src font.a.com 针对Web Font的加载策略。
object-src ‘self’ 针对等标签引入的flash等插件的加载策略。
media-src media.a.com 针对
frame-src ‘self’ 针对frame的加载策略。
sandbox allow-forms 对请求的资源启用sandbox(类似于iframe的sandbox属性)。
report-uri /report-uri 告诉浏览器如果请求的资源不被策略允许时,往哪个地址提交日志信息。 特别的:如果想让浏览器只汇报日志,不阻止任何内容,可以改用Content-Security-Policy-Report-Only头。

指令值可以由下面这些内容组成:

指令值 指令示例 说明
  img-src 允许任何内容。
‘none’ img-src ‘none’ 不允许任何内容。
‘self’ img-src ‘self’ 允许来自相同来源的内容(相同的协议、域名和端口)。
data img-src data 允许data:协议(如base64编码的图片)。
www.a.com img-src img.a.com 允许加载指定域名的资源。
*.a.com img-src *.a.com 允许加载a.com任何子域的资源。
https://img.com img-src https://img.com 允许加载img.com的https资源(协议需匹配)。
https: img-src https: 允许加载https资源。
‘unsafe-inline’ script-src ‘unsafe-inline’ 允许加载inline资源(例如常见的style属性,onclick,inline js和inline css等等)。
‘unsafe-eval’ script-src ‘unsafe-eval’ 允许加载动态js代码,例如eval()。

从上面的介绍可以看到,CSP协议可以控制的内容非常多。而且如果不特别指定’unsafe-inline’时,页面上所有inline的样式和脚本都不会执行;不特别指定’unsafe-eval’,页面上不允许使用new Function,setTimeout,eval等方式执行动态代码。在限制了页面资源来源之后,被XSS的风险确实小不少。

当然,仅仅依靠CSP来防范XSS是远远不够的,不支持全部浏览器是它的硬伤。不过,鉴于低廉的开发成本,加上也没什么坏处。如果担心影响面太大,也可以像下面这样,仅收集不匹配规则的日志,先观察下:

Content-Security-Policy-Report-Only: script-src 'self'; report-uri http://test/

这样,如果页面上有inline的JS,依然会执行,只是浏览器会向指定地址发送一个post请求,包含这样的信息:

{"csp-report":{"document-uri":"http://test/test.php","referrer":"","violated-directive":"script-src 'self'","original-policy":"script-src 'self'; report-uri http://test/","blocked-uri":""}}

 

来源:http://imququ.com/post/content-security-policy-reference.html

一些安全相关的 HTTP 响应头

现代浏览器提供了一些安全相关的响应头,使用这些响应头一般只需要修改服务器配置即可,不需要修改程序代码,成本很低。本文介绍一些这样的响应头:

一些安全相关的 HTTP 响应头
一些安全相关的 HTTP 响应头

1. Strict-Transport-Security

HTTP Strict Transport Security,简称为HSTS。它允许一个HTTPS网站,要求浏览器总是通过HTTPS来访问它。现阶段,除了Chrome浏览器,Firefox4+,以及Firefox的NoScript扩展都支持这个响应头。

我们知道HTTPS相对于HTTP有更好的安全性,而很多HTTPS网站,也可以通过HTTP来访问。开发人员的失误或者用户主动输入地址,都有可能导致用户以HTTP访问网站,降低了安全性。一般,我们会通过Web Server发送301/302重定向来解决这个问题。现在有了HSTS,可以让浏览器帮你做这个跳转,省一次HTTP请求。另外,浏览器本地替换可以保证只会发送HTTPS请求,避免被劫持。

要使用HSTS,只需要在你的HTTPS网站响应头中,加入下面这行:

strict-transport-security: max-age=16070400; includeSubDomains

includeSubDomains是可选的,用来指定是否作用于子域名。支持HSTS的浏览器遇到这个响应头,会把当前网站加入HSTS列表,然后在max-age指定的秒数内,当前网站所有请求都会被重定向为https。即使用户主动输入http://或者不输入协议部分,都将重定向到https://地址。

Chrome内置了一个HSTS列表,默认包含Google、Paypal、Twitter、Linode等等服务。我们也可以在Chrome输入chrome://net-internals/#hsts,进入HSTS管理界面。在这个页面,你可以增加/删除/查询HSTS记录。例如,你想一直以https访问某网址,通过“add Domain”加上去就好了。查看Chrome内置的全部HSTS列表,或者想把自己的网站加入这个列表,请点这里

2. X-Frame-Options

X-Frame-Options,已经转正为Frame-Options,但现阶段使用最好还是带上X-。Chrome4+、Firefox3.6.9+、IE8+均支持,详细的浏览器支持情况看这里。使用方式如下:

x-frame-options: SAMEORIGIN

这个响应头支持三种配置:

  • DENY:不允许被任何页面嵌入;
  • SAMEORIGIN:不允许被本域以外的页面嵌入;
  • ALLOW-FROM uri:不允许被指定的域名以外的页面嵌入(Chrome现阶段不支持);

如果某页面被不被允许的页面以