年度归档: 2019 年

  • Linux TCP “SACK PANIC” 远程拒绝服务漏洞 处理应对方案 图文教程

    Linux TCP “SACK PANIC” 远程拒绝服务漏洞 处理应对方案 图文教程

    Linux 内核被曝存在TCP “SACK PANIC” 远程拒绝服务漏洞(漏洞编号:CVE-2019-11477,CVE-2019-11478,CVE-2019-11479),攻击者可利用该漏洞远程攻击目标服务器,导致系统崩溃或无法提供服务。       

    为避免您的业务受影响,老季建议您及时开展安全自查,如在受影响范围,请您及时进行更新修复,避免被外部攻击者入侵。

    【漏洞详情】

    近日,Netflix 信息安全团队研究员Jonathan Looney发现 Linux 以及 FreeBSD 等系统内核上存在严重远程DoS漏洞,攻击者可利用该漏洞构造并发送特定的 SACK 序列请求到目标服务器导致服务器崩溃或拒绝服务。

    【风险等级】高风险【漏洞风险】  

    远程发送特殊构造的攻击包,导致目标 Linux 或 FreeBSD 服务器崩溃或服务不可用。 

    【影响版本】

     目前已知受影响版本如下: FreeBSD 12(使用到 RACK TCP 协议栈)
     CentOS 5(Redhat 官方已停止支持,不再提供补丁)
     CentOS 6
     CentOS 7
     Ubuntu 18.04 LTS
     Ubuntu 16.04 LTS
     Ubuntu 19.04
     Ubuntu 18.10 

    【安全版本】 

    各大Linux发行厂商已发布内核修复补丁,详细内核修复版本如下: 

    CentOS 6 :2.6.32-754.15.3
    CentOS 7 :3.10.0-957.21.3
    Ubuntu 18.04 LTS:4.15.0-52.56
    Ubuntu 16.04 LTS:4.4.0-151.178

    【修复建议】

    请参照上述【安全版本】升级您的 Linux 服务器内核,参考操作如下:

    【CentOS 6/7 系列用户】

    • yum clean all && yum makecache ,进行软件源更新;
    • yum update kernel  -y ,更新当前内核版本;
    • reboot,更新后重启系统生效;

    uname -a,检查当前版本是否为上述【安全版本】,如果是,则说明修复成功。

    【Ubuntu 16.04/18.04 LTS 系列用户】

    • sudo apt-get update && sudo apt-get install linux-image-generic ,进行软件源更新并安装最新内核版本;
    • sudo reboot ,更新后重启系统生效;

    uname -a ,检查当前版本是否为【安全版本】,如果是,则说明修复成功。

    临时缓解方案

    如不方便重启进行内核补丁更新,可选择如下方式禁用内核 SACK配置防范漏洞利用(可能会对网络性能产生一定影响),运行如下命令即可:

    • echo 'net.ipv4.tcp_sack = 0' >> /etc/sysctl.conf ,禁用 SACK 配置;
    • sysctl -p ,重载配置,使其生效。
  • 解决Chrome插件安装时出现 程序包无效:”CRX_HEADER_INVALID”。

    解决Chrome插件安装时出现 程序包无效:”CRX_HEADER_INVALID”。

    今天想去chrome应用商店加载一个插件,百度了很久都是说按照“更多工具”–“扩展程序”–开启“开发者模式”,然后将.crx的拖进扩展程序里即可。

    但是按照这个教程,发现还是不行,会出现如下错误:

    程序包无效:”CRX_HEADER_INVALID”。

    安装步骤 图文教程

    下面我们说一下正确的安装方法。

    首先我们在网上下载到了.crx文件之后将文件名改成.rar的文件。然后“右击”解压缩到整体文件夹。

    安装完成

  • PHP实用基础如何实现删除数组中的特定元素 代码实例

    PHP实用基础如何实现删除数组中的特定元素 代码实例

    举例,在数组中删除3这个数字。

    方法1:

    <?php
    $arr1 = array(1,3, 5,7,8);
    $tmp[] = 3;
    $arr1 = array_diff($arr1,$tmp);
    var_dump($arr1);
    

    返回结果:array(4) { [0]=> int(1) [1]=> int(5) [2]=> int(7) [3]=> int(8) }

    方法2:

    <?php
    $arr2 = array(1,3, 5,7,8);
    foreach ($arr2 as $key=>$value)
    {
        if ($value === 3)
            unset($arr2[$key]);
    }
    var_dump($arr2);

    返回结果:array(4) { [0]=> int(1) [2]=> int(5) [3]=> int(7) [4]=> int(8) }

    总结:可以看到使用array_splice()删除特定值和使用unset删除特定值是有区别的。

    array_splice()函数删除的话,数组的索引值也变化了。

    unset()函数删除的话,数组的索引值没有变化

  • PHP数组函数–array_filter 用法详解

    PHP数组函数–array_filter 用法详解

    (PHP 4 >= 4.0.6, PHP 5, PHP 7)
    array_filter — 用回调函数过滤数组中的单元
    (PHP 4 >= 4.0.6, PHP 5, PHP 7) array_filter — 用回调函数过滤数组中的单元

    依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
    返回值 返回过滤后的数组

    下面是一个例子:

    <?php                
    $arr = array(        
    "1",                 
    "2",                 
    "3",                 
    "4",                 
    "5",                 
    "",                  
    "6",                 
    "7",                 
    "8",                 
    false,               
    "14",                
    "15",                
    "195",               
    "",                  
    "9",                 
    );                   
    //删除空字符串和false  
    $re1 = array_filter($arr);
    var_dump($re1);          
    echo "------------------\n";
    function add($num) {     
        $num = intval($num); 
        if($num >6) {    
            return true;     
        }                
        return false;    
    }                    
    $res = array_filter($arr,"add");
    var_dump($res);

    运行结果:

    array(12) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
      [3]=>
      string(1) "4"
      [4]=>
      string(1) "5"
      [6]=>
      string(1) "6"
      [7]=>
      string(1) "7"
      [8]=>
      string(1) "8"
      [10]=>
      string(2) "14"
      [11]=>
      string(2) "15"
      [12]=>
      string(3) "195"
      [14]=>
      string(1) "9"
    }
    ------------------
    array(6) {
      [7]=>
      string(1) "7"
      [8]=>
      string(1) "8"
      [10]=>
      string(2) "14"
      [11]=>
      string(2) "15"
      [12]=>
      string(3) "195"
      [14]=>
      string(1) "9"
  • Vultr更换新UI界面 新增High Frequency Compute 更换新LOGO

    Vultr更换新UI界面 新增High Frequency Compute 更换新LOGO

    今天老季有看到VULTR商家再次改版修改UI和LOGO,这次的LOGO也是再次更换的,不过界面是比之前的好看一些。

    Vultr 注册即送$50美金,16机房可选,按时计费:购买直达链接

    整体界面也比较稳重、大气,LOGO也换掉,其实功能上没什么区别,对于使用者来说一样用,只是以前一直看着一个界面有视觉疲劳。

    这次变动可以看到纽约机房有增加月费用2.5、3.5美元方案,前者是没有IPV4的,后者是有一个IPV4地址的,根据网友反馈,最近这家商家开通的VPS主机也是很多IP不可以用的,但是还好可以不断的删除重建找到合适的。对于他家而言,速度一般,但是优势是机房多。

    同时我们也可以看到VULTR商家新增High Frequency高性能云服务器,但是只有纽约机房。最低配置是1G内存、32GB NVMe、1TB流量,月付$6美元起。

  • jQuery全文检索表格 特定文字变色高亮红色 图文教程

    jQuery全文检索表格 特定文字变色高亮红色 图文教程

    下面我们记录一下如何在table中检索每个文字,如果遇到我们设置的关键字设置为红色。不多说废话,直接上代码。

    jQuery Javascript代码:

    $(function () {        
            var redKey = '未审核';
            $('table.tbl_list tr').find("td").each(function(){
                if( $(this).html() == redKey ){
                  console.log( $(this).html());
                  $(this).css("color",'red');
                }
            });
    });

    HTML代码:

    <table class="tbl_list">
        <tr>
            <td>文字1</td>
            <td>未审核</td>
            <td>文字1</td>
            <td>文字1</td>
        </tr>
        <tr>
            <td>文字1</td>
            <td>未审核</td>
            <td>文字1</td>
            <td>文字1</td>
        </tr>
    </table>

    这里我们检索的时候是以td为单位进行检索的。如果是其他div等大家可以自由发挥。

  • Discuz官方论坛关闭发言权

    Discuz官方论坛关闭发言权

    前几天我们很多网友应该都看到Discuz官方发布公告,关于Discuz官方论坛关闭发言权限,而且应用中心也都无法打开。确实在圈内影响还是比较大的,毕竟作为国内比较知名的社区源码,很多平台都有在使用,而且也有专门针对主题、应用的开发者赖以生存提供第三方技术支持,有些开发者就依赖于提供Discuz二次开发、应用插件服务。

    如果Discuz一旦关闭,确实会给在使用Discuz运营网站的无法确保安全以及后续的升级,以及对于依赖Discuz的开发者有较大的影响。虽然我们可以看到官方有通告提到后续还是有人提供支持,但是不清楚是否能保质保量。

    Discuz 官方Git地址:https://gitee.com/ComsenzDiscuz/DiscuzX

  • LNMP1.6正式版已更新 已支持PHP7.3

    LNMP1.6正式版已更新 已支持PHP7.3

    LNMP在六一儿童节发布了1.6的正式版,已支持PHP7.3。

    版本更新:

    增加PHP 7.3支持;
    增加PHP 7.3支持;
    增加MariaDB 10.3支持;
    增加Nginx/Apache TLS 1.3支持;
    增加使用DNS API方式只创建SSL证书不添加网站,命令lnmp onlyssl;
    增加Fedora 30、Ubuntu 19.04、RHEL 8等新版本的支持;
    增加nginx、apache等一些例子,并移至conf/example目录下;
    增加在低于2048MB内存是增加2GB SWAP或低于1024MB时增加1GB SWAP的选项;
    增加反向代理配置例子文件 nginx-reverse-proxy-example.conf;
    增加只安装nginx模式增加拷贝lnmp管理工具;
    增加 RHELRepo=local 参数,RHEL安装时使用RHEL本地源,不设置源为163 centos源;
    增加 CheckMirror=n 参考,安装时不检查下载镜像,方便无网络安装;
    优化不安装数据库时的处理流程;
    优化acme.sh规则可能不生效的情况;
    优化nginx系统满足条件是启用reuseport;
    优化程序代码目录清理;
    优化重写nginx管理脚本;
    优化安装数据库时的内存判断,放宽内存限制;
    修复新版深度Deepin 15.8桌面版问题;
    修复新版Fedora 29下问题;
    调整mysql使用带boost源码,同时支持不带boost安装方式;
    调整卸载时不删除安装时添加的iptables规则;
    调整fileinfo安装选项,内存满足时自动安装(可关闭);
    升级Nginx至1.16.0;
    升级各程序版本;
    更新诸多软件版本;
    其他一些功能优化及调整……

  • LNMP一键安装包(Linux+Nginx+Mysql/MariaDB+PHP)图文教程

    LNMP一键安装包(Linux+Nginx+Mysql/MariaDB+PHP)图文教程

    前面的文章里我们讲到了一些Linux中常用的shell一键安装包

    下面我们介绍一下军哥的LNMP一键安装包,也很稳定很实用。

    系统需求:

    • CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/Mint Linux发行版
    • 需要5GB以上硬盘剩余空间,MySQL 5.7,MariaDB 10至少9GB剩余空间
    • 需要128MB以上内存(128MB小内存VPS,Xen需有SWAP,OpenVZ至少要有128MB以上的vSWAP或突发内存),注意小内存请勿使用64位系统!
    • 安装MySQL 5.6或5.7及MariaDB 10必须1G以上内存,更高版本至少要2G内存!。
    • 安装PHP 7及以上版本必须1G以上内存!。
    • VPS或服务器必须已经联网且必须设置的是网络源不能是光盘源,同时VPS/服务器DNS要正常!
    • Linux下区分大小写,输入命令时请注意!
    • 如有通过yum或apt-get安装的MySQL/MariaDB请自行备份数据等相关文件!
    • CentOS 5,Debian 6及之前版本其官网已经结束支持无法使用!
    • Ubuntu 18+,Debian 9+,Mint 19+,Deepin 15.7+及所有新的Linux发行版只能使用1.6进行安装!

    LNMP一键安装包 V1.6 已经在Vultr、搬瓦工、Linode、DigitalOcean、RamNode、BuyVM、阿里云等众多VPS的CentOS 6-7、RHEL 6-8、Fedora 21-30、Debian 7-9、Ubuntu 10.04-19.04的32位和64位系统上测试通过(CentOS 5,Debian 6及之前版本其官网已经结束支持无法使用,Debian9上Apache需选2.4.26版本以上。

    安装步骤:

    1、使用putty或类似的SSH工具登陆VPS或服务器( [Vutlr]Linux Cetnos Debian 使用putty登陆 vultr VPS 服务器 );


    登陆后运行:screen -S lnmp
    如果提示screen: command not found 命令不存在可以执行:yum install screen 或 apt-get install screen安装,详细内容参考screen教程 Linux Screen 简单用法 图文教程 。

    2、下载并安装LNMP一键安装包:

    您可以选择使用下载版(推荐美国及海外VPS或空间较小用户使用)或者完整版(推荐国内VPS使用,国内用户可用在下载中找国内下载地址替换),两者没什么区别,只是完整版把一些需要的源码文件预先放到安装包里。

    安装LNMP稳定版

    wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

    如需要安装LNMPA或LAMP,将./install.sh 后面的参数lnmp替换为lnmpa或lamp即可。如需更改网站和数据库目录、自定义Nginx参数、PHP参数模块、开启lua等需在运行./install.sh 命令前修改安装包目录下的 lnmp.conf 文件

    运行上述LNMP安装命令后,会出现如下提示:

    目前提供了较多的MySQL、MariaDB版本和不安装数据库的选项,需要注意的是MySQL 5.6,5.7及MariaDB 10必须在1G以上内存的更高配置上才能选择!如仅需安装数据库在lnmp安装包目录下执行:./install.sh db

    输入对应MySQL或MariaDB版本前面的序号,回车进入下一步.

    3、安装完成

    设置MySQL的root密码(为了安全不输入直接回车将会设置为lnmp.org#随机数字)如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除(个别情况下是只需要Backspace键)。输入后回车进入下一步,如下图所示:

    询问是否需要启用MySQL InnoDB,InnoDB引擎默认为开启,一般建议开启,直接回车或输入 y ,如果确定确实不需要该引擎可以输入 n,(MySQL 5.7+版本无法关闭InnoDB),输入完成,回车进入下一步。

    注意:选择PHP 7+版本时需要自行确认PHP版本是否与自己的程序兼容。

    输入要选择的PHP版本的序号,回车进入下一步,选择是否安装内存优化:

    可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车,直接回车为默认为不安装。

    如果是LNMPA或LAMP的话还会提示设置邮箱和选择Apache“Please enter Administrator Email Address:”,需要设置管理员邮箱,该邮箱会在报错时显示在错误页面上。
    再选择Apache版本

    按提示输入对应版本前面的数字序号,回车。

    提示”Press any key to install…or Press Ctrl+c to cancel”后,按回车键确认开始安装。
    LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin等软件及相关的组件。

    安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。

    如果显示Nginx: OK,MySQL: OK,PHP: OK

    并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并提示安装使用的时间及Install lnmp V1.6 completed! enjoy it.的话,说明已经安装成功。
    某些系统可能会一直卡在Install lnmp V1.5 completed! enjoy it.不自动退出,可以按Ctrl+c退出。

    安装完成接下来开始使用就可以了,按添加虚拟主机教程,将域名解析到VPS或服务器的IP上,解析生效即可使用。

    4、安装失败

    如果出现类似上图的提示,有一个或几个没安装成功表明安装失败!!需要用winscp或其他类似工具,将/root目录下面的lnmp-install.log下载下来,到LNMP支持论坛发帖注明你的系统发行版名称及版本号、32位还是64位等信息,并将lnmp-install.log压缩以附件形式上传到论坛,我们会通过日志查找错误,并给予相应的解决方法。

  • 搬瓦工美国cn2 vps服务器推荐购买方案 支持支付宝/微信

    搬瓦工美国cn2 vps服务器推荐购买方案 支持支付宝/微信

    关于搬瓦工

    搬瓦工是美国知名vps销售商,主营美国洛杉矶cn2 gt、cn2 gia线路产品,采用kvm架构为主,vps稳定性、带宽质量是业内有目共睹的,支持支付宝、微信、PayPal、信用卡等方式付款购买,vps控制面板支持一键切换机房。下面整理了几款搬瓦工目前最便宜的美国cn2 gt、美国cn2 gia线路vps主机方案,大家可根据自己需要进行挑选。

    推荐方案

    KVM常规方案
    CPU:2核心
    内存:1GB
    硬盘:20GB SSD RAID 10
    端口:1Gbps
    流量:1000GB
    架构:KVM
    面板:KiwiVM
    IPv4:1个
    系统:Linux
    位置:可迁移到DC8、DC3
    优惠码:BWH26FXH3HIQ
    价格:$49.99/年 $46.87/年
    购买:点击直达
    CN2 GT特价方案
    CPU:1核心
    内存:1GB
    硬盘:20GB SSD RAID 10
    端口:1Gbps
    流量:1000GB
    架构:KVM
    面板:KiwiVM IPv4:1个
    系统:Linux
    位置:默认可选DC8、DC3
    优惠码:BWH26FXH3HIQ 价格:$49.99/年 $46.87/年
    购买:点击直达
    CN2 GIA ECOMMERCE
    CPU:2核心
    内存:1GB
    硬盘:20GB SSD RAID 10
    端口:2.5Gbps
    流量:1000GB
    架构:KVM
    面板:KiwiVM IPv4:1个
    系统:Linux
    位置:默认可选DC6 优惠码:BWH26FXH3HIQ 价格:$65.99/半年 $119.99/年
    购买:点击直达

    机房测试IP

    美国洛杉矶CN2 GIA机房(USCA_6(DC6 CN2 GIA))

    测试IP: 162.244.241.101 / 173.242.115.39

    美国洛杉矶C3机房(USCA_8(DC8 CN2 KVM))

    测试IP: 23.252.99.102 / 172.96.205.211

    美国洛杉矶QN机房(USCA_3(DC3 CN2 KVM))

    测试IP: 23.252.103.101 / 65.49.198.150

  • 腾讯云如何更换服务器新的IP

    腾讯云如何更换服务器新的IP

    前面我们介绍了腾讯云的 腾讯云 数字生态 – 每天五场秒杀 爆款1C1G云服务器首年99元/香港服务器199元 以及 腾讯云秒杀活动仅限新人 香港云服务器云服务器1C1G年付¥452元 活动 ,有一些同学买了之后来问我们如何更换IP,下面我们来说一说腾讯云服务器中如何更换新的IP。

    腾讯云 数字生态 直达链接:https://www.jiloc.com/go/qcloud-digit

    腾讯云支持可以弹性更换IP地址,这样可以将IP地址更换一个,保留服务器中的数据。但是需要注意的是,即便是更换之后,我们一定要搭建正规的环境使用。我们在登录腾讯云账户后,选择【云服务器】菜单。然后点击【更多】。

    在这里老季用自己账户的一台机器演示的,并没有直接在他账户操作。所以我乱折腾没事,他的话我就建议他备份好快照备份,万一出问题得记得恢复。这里看到我上面的IP地址,然后上图所示,【更换公网IP】。

    我们可以看到本实例仅可以更换1次IP地址,每个账号每个地域最高可以更换一天三次。不管有多少次了,搞不清楚,只知道目前是可以换的。确认。

    这样,腾讯云服务器就更换成新的IP地址,我们测试下是否可以用新的IP地址登入。如果有网站的话需要重新解析到新的IP地址。如果我们有需要更多的IP地址更换,这个免费方法是不支持太多的IP的,我们可以用到弹性更换IP地址方法。

  • 如何使用SecureCRT实现命令行的上传下载文件(使用sz与rz命令)图文教程

    如何使用SecureCRT实现命令行的上传下载文件(使用sz与rz命令)图文教程

    我们借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器。

    其中,对于sz和rz的理解与记忆我用了如下的方法(很多时候容易搞混):
    sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载。

    rz中的r意为received(接收),告诉客户端,我(服务器)要接收文件 received by cilent,就等同于客户端在上传。

    记住一点,不论是send还是received,动作都是在服务器上发起的。我们习惯了说上传或是下载,其实大可不必。使用这两个命令,只要思考一点,是要把文件从服务器上发送出去,还是从客户端接上接收回来,就可以了。

    若想把文件从客户端上传到服务器,就是服务器将文件接收回来,逻辑是:我(客户端)上传,你(服务器)接收,使用rz。

    若想把文件从服务器上下载回(到客户端),就是服务器将文件发送出去,逻辑是:我下载(客户端),你(服务器)发送,使用sz。

    好吧,最后总结为一句话:

    我(客户端)上传,你(服务器)接收(RZ)。
    我下载(客户端),你(服务器)发送(SZ)。

    我下载(客户端),你(服务器)发送(SZ)。

    如何使用 SecureCRT 下载文件?

    比如我们想快速的下载一个名为:moitorSwitch.php的文件,可以直接在终端中输入:

    sz moitorSwitch.php

    如何设定SecureCRT下载的位置?

    如何使用 SecureCRT 上传文件?

    在终端中直接输入rz命令,然后再对话框中选择文件即可。

    rz
WeChat
↑