Ubuntu上启用TCP BBR 算法

Ubuntu 18.04 LTS以上可以直接启用BBR算法

对于 Ubuntu 16.04 LTS来说需要升级到最新的4.10以上的内核版本后可以启用BBR。

启用方法

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
#使配置生效
sysctl -p

检查BBR是否开启

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
lsmod | grep bbr

Ubuntu 16.04 LTS 升级最新4.10内核

Ubuntu最近发布了最新的16.04.3,新版本默认自带了4.10的内核,有了4.10内核就可以愉快的使用BBR了。老版本的系统之间升级的话似乎会继续升级4.4的内核而不是使用4.10内核,这里记录一下升级方法。
首先当然是apt update,随后执行下面的命令即可升级到4.10内核。
Desktop:
sudo apt-get install –install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04

Server:
sudo apt-get install –install-recommends linux-generic-hwe-16.04
安装新内核之后记得使用apt upgrade更新其他的包。

卸载阿里云ECS监控服务

使用阿里云ECS的时候不难发现系统里面会有阿里云的有关进程,出于某些原因,我们不希望系统中有这种东西,所以我们这里记录一下卸载或者停用的方法。
本文适用于Ubuntu 16.04 LTS,其他系统用户可以自己看着办反正systemd很多发行版都在使用。

卸载云盾

curl -sSL http://update.aegis.aliyun.com/download/quartz_uninstall.sh | sudo bash
sudo killall -9 aegis_*
sudo killall -9 aliyun_*
sudo systemctl disable agentwatch.service
sudo systemctl disable aliyun.service
sudo rm -rf /usr/local/aegis
sudo rm /usr/sbin/aliyun-service
sudo rm /lib/systemd/system/aliyun.service

卸载阿里云其他服务软件

sudo systemctl stop accounts-daemon.service
sudo systemctl disable accounts-daemon.service
sudo systemctl stop aliyun-util.service
sudo systemctl disable aliyun-util.service
sudo systemctl stop cloud-config.service
sudo systemctl disable cloud-config.service
sudo systemctl stop cloud-final.service
sudo systemctl disable cloud-final.service
sudo systemctl stop cloud-init-local.service
sudo systemctl disable cloud-init-local.service
sudo systemctl stop cloud-init-upgrade.service
sudo systemctl disable cloud-init-upgrade.service
sudo systemctl stop cloud-init.service
sudo systemctl disable cloud-init.service
#如果需要删除可以执行
sudo rm /etc/systemd/system/aliyun-util.service
sudo rm -rf /etc/aliyun-util
sudo rm /lib/systemd/system/accounts-daemon.service
sudo rm /lib/systemd/system/cloud-final.service
sudo rm /lib/systemd/system/cloud-config.target
sudo rm /lib/systemd/system/cloud-init.service
sudo rm /lib/systemd/system/cloud-config.service
sudo rm /lib/systemd/system/cloud-init-upgrade.service
sudo rm /lib/systemd/system/cloud-init-local.service

通过Nginx启用HTTP验证(HTTP Authentication)

在后台我经常可以看到有扫描器通过wp-login.php穷举密码登陆试图wordpress,也可以看到web应用方面的各种服务,我们始终无法防御各种各样未知的web漏洞,所以我想引入http验证是非常不错的一种手段。
通过http验证我们可以阻挡各种未经授权的访问以缓解各种漏洞。因为启用之后只有输入正确的用户密码才允许访问web内容。
首先配置HTTP认证我们需要创建认证账户密码文件。
我们可以通过openssl或者htapasswd来创建
方法1:htapasswd

#要使用htapasswd需要安装apache2-utils
sudo apt-get install apache2-utils
htpasswd -nb username password >> /etc/nginx/http_passwd

方法2:使用openssl

#printf "username:$(openssl passwd -crypt password)\n" >> /etc/nginx/http_passwd
#Apache variant加密方式,更安全
printf "username:$(openssl passwd -apr1 password)\n" >> /etc/nginx/http_passwd
# cat /etc/nginx/http_passwd

创建了passwd文件(/etc/nginx/http_passwd)之后,我们需要修改Nginx的配置启用http验证。
Ubuntu上Nginx配置文件在/etc/nginx/sites-enabled 下面。
我们这里对应是/etc/nginx/sites-enabled/exvs
为需要保护的文件或者目录添加类似下面这样的内容

location / {
    auth_basic           "Need HTTP Authentication";
    auth_basic_user_file /etc/nginx/http_passwd;
}

关于配置的详细信息可阅读Nginx文档:https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
最后重启Nginx
systemctl restart nginx
再次访问制定的文件或者目录则需要http验证了。

2017/01/15 记一次phpmyadmin的漏洞修复

这两天阿里云发短信提醒我的机器安装存在漏洞的phpmyadmin,上控制台一看提醒有这么个提示。

通过CVE编号CVE-2016-6617我找到了官方对于此漏洞的详细说明。
https://www.phpmyadmin.net/security/PMASA-2016-40/
官方给此漏洞的编号是:PMASA-2016-40
对此漏洞的描述是:A vulnerability was reported where a specially crafted database and/or table name can be used to trigger an SQL injection attack through the export functionality.
翻译过来就是,通过特殊的数据库,表名会导致使用导出功能的时候产生SQL注入的漏洞。
所有早于4.6.4之前的版本都会收到此漏洞影响。目前最新版4.6.5已经修复此漏洞,所以直接升级到最新版本的phpmyadmin即可。

值得注意的是,我使用的Ubuntu 16.04 LTS包版本库中提供的最新版是phpmyadmin_4.5.4.1-2ubuntu2,也就是说通过apt-get安装的phpmyadmin仍然存在此漏洞,直接apt-get upgrade并不能解决问题,这也是阿里云提示检测到漏洞的原因。

如果无法确定自己安装的包版本
可通过下列命令查询包版本

dpkg -s phpmyadmin
#或者
dpkg -s phpmyadmin | grep "Version"

修复方案:
方案1:可以登陆phpmyadmin官网https://www.phpmyadmin.net下载最新版的包覆盖安装路径即可。
方案2:对于Ubuntu用户可以使用phpmyadmin官方提供的ppa源,这样就能直接更新到最新的包。
官方提供的安装手册链接:https://docs.phpmyadmin.net/en/latest/setup.html
具体到Ubuntu用户来说,可执行下列命令

sudo apt-get install software-properties-common
#添加PPA源
sudo add-apt-repository ppa:nijel/phpmyadmin
sudo apt-get update
sudo apt-get upgrade
#如果提示The following packages have been kept back
#那么可以使用sudo apt-get dist-upgrade完成更新

由于我希望能尽量使用包管理器解决问题,这样能够长期保持最新版本,所以我选择了方案2。
至此phpmyadmin就更新完毕了。