OpenedX安全相关

本周(2017.1.5)在Open edX开发研究群里有2家公司/1所高校的系统被攻击(这是已知的,不清楚是否有更多案例),涉及的open edx版本包括D版和E版,造成mongo数据库被删(edxapp和cs_comments_service_development),群里一番讨论下来,原因主要是以下两点:

  • 开发者未修改ansible脚本的mongo密码
  • mongo端口外部可访问(阿里云默认所有端口开放,青云相反)

本次攻击的动机是勒索,攻击者先删除数据,留下信息说交0.2个比特币,将恢复数据。好在大家都有做好数据备份,暂无经济损失.

安全方面,建议做些基本防范,就服务器层面而言:

  • 使用ssh key登陆,禁用密码登陆(如果你一定要用密码登陆,提高密码强度,并修改ssh端口)
  • 修改安装脚本中的默认密码
  • 服务器只对外暴露http端口(80/443)和ssh端口(默认是22,可以修改)

顺便把临时的补救措施记一下:

修改 /etc/mongodb.conf, 使得 bind_ip = 127.0.0.1, sudo service mongod restart


年底安全这块真是热闹非凡,最近全球 500 亿条数据被 Elasticsearch 勒索者删除.

edx的es非常老旧,建议对外关闭9200端口

默认9200对外开放,可以测试: lynx ip:9200

操作方法也简单:

sudo vim /etc/elasticsearch/elasticsearch.yml

使得network.host: localhost

重启es: sudo service elasticsearch

mongo数据库迁移

mongo用久了,数据会占据极大的空间,关于这块,网上讨论很多:

对新手而言,一种简易做法是:db.repairDatabase()

如果你没用把握,对数据库做操作前最好做个备份

我的edx实例中mongo数据库文件(/edx/var/mongo/mongodb)为8.8G大小,我最近想把它迁移到了外挂盘上,试了几种办法,目前只有软链接有效,大多教程建议的:修改mongo配置文件(修改/etc/mongod.conf中的dbpath=/edx/var/mongo/mongodb)始终无效,原因不明

我把有效操作列出如下(这个操作由@dsl完成):

1
2
sudo mv /edx/var/mongo/mongodb /path/to/mongodb
sudo ln -s /path/to/mongodb /edx/var/mongo/mongodb  # 在建立软链接之前先保证/edx/var/mongo这个路径下面已经没有mongodb这个文件夹

视频集成

修改cms/envs/common.py 中的MAX_ASSET_UPLOAD_FILE_SIZE_IN_MB = 10,单位是MB,修改为你允许的上传文件大小,就可以直接在studio里上传视频了。

注:用于早期的实验或小规模使用没用问题,如果是长期使用,建议使用云平台或是搭建流媒体服务器

镜像扩容

edustack.org发布的OpenedX D镜像默认空间为20G(E版默认为500G),D版本无法满足日常需求,对于想扩容的新司机来说,在虚拟机里扩容还挺麻烦的.我这边已将D版本扩容为500G,本来写在这里,发现步骤太多,就不放过来了,建议大家直接使用E版本