解决GmSSL报错找不到libssl.so.1.1的错误

按照文档手册安装好国密库GmSSL之后,执行命令:

gmssl version

报错:

gmssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

解决方法如下:

添加两条软连接:

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

再次运行命令,就OK啦:

GmSSL 2.5.4 - OpenSSL 1.1.0d  19 Jun 2019

服务器挖矿病毒查杀(crontab pastebin.com)

服务器异常症状

  • CPU使用率过高,网络出口流量异常;
  • crontab异常,出现 pastebian.com 相关的 wget 命令

查杀方法

安装busybox

wget http://busybox.net/downloads/busybox-1.21.0.tar.bz2
yum -y install bzip2
tar -xvf busybox-1.21.0.tar.bz2
cd ./busybox-1.21.0
make defconfig
make
make install
ln -s `pwd`/busybox /usr/bin/busybox
busybox|grep BusyBox |grep v

如果出现以下信息,说明安装成功

BusyBox v1.21.0 (2019-04-15 19:51:44 CST) multi-call binary.

注意,部分挖矿病毒会修改动态链接库,用 vim 打开下面文件,并注释掉其中的内容

阅读更多

supervisor配置文件模板

项目中需要使用到supervisor来管理常驻内存的后台程序,配置文件样例如下:

[program: smproxy]
command=/usr/local/php/bin/php /usr/local/smproxy/SMProxy start --console    ;服务启动命令
directory=/usr/local/smproxy/    ;命令执行目录
user=root    ;执行命令用户
autorestart=true    ;是否自动重启
autostart=true ;启动supervisor时是否自行启动该程序
;redirect_stderr=true   ;如果为true则将stderr发送到stdout相应的log文件中去
;;stdout_logfile=/var/log/supervisor/app.log ;制定stdout的输出文件
;;stdout_logfile_maxbytes=10MB   ;限定logfile的大小, 默认为50M
;;stdout_logfile_backups=10 ;保存logfile的最大数目,如果操作这个数目则对最早的logfile进行覆盖,默认为10
;;environment=A="1", B="2" ;设置环境变量,这里可以保存运行程序需要的参数 

注:

通过yum安装的supervisor,默认配置文件目录为 /etc/supervisord.d

NGINX + PHP-FPM 优化记录

最近做的 NGINX + PHP-FPM 优化,记录一下,留待后用。

测试环境,8 核 CPU,64G 内存。

1、PHP-FPM 配置文件

listen = 127.0.0.1:9000 修改为 listen = /tmp/php-fpm.sock
listen.backlog 取消注释,并修改值为 102400
pm = dynamic 修改为 pm = static
pm.max_children 的值修改为 200

2、启动多个 PHP-FPM 实例

复制 php-fpm.conf 配置文件

cp php-fpm.conf php-fpm.1.conf

修改复制的 php-fpm.1.conf

listen = /tmp/php-fpm.sock 修改为 listen = /tmp/php-fpm.1.sock

建议启动的 PHP-FPM 实例数量与 CPU 核心数量一致。

3、NGINX 配置文件

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 204800;
events {
    use epoll;
    worker_connections 204800;
}
upstream phpbackend {
    server unix:/tmp/php-fpm.sock
    server unix:/tmp/php-fpm.1.sock
}
server {
    default backlog = 102400;
    location ~ .php$ {
        fastcgi_pass   phpbackend;
        include        fastcgi_params;
    }
}

4、修改系统打开文件数

打开 /etc/security/limits.conf 文件,添加:

* soft nofile 65535
* hard nofile 65535

修改完成需要重启服务器生效!并可使用下面命令查看是否生效:

ulimit -n

CentOS 上配置 LVS + keepalived 用作高可用负载均衡服务器

在Linux环境下,我们可以使用LVS来作为Web服务的负载均衡。由于LVS基于IP协议,所以LVS又被叫做ipvs。

在本文中,LVS服务运行与IP地址为172.16.24.139的服务器,两台Web服务器的IP地址分别为172.16.24.134、172.16.24.136。

假设你的Linux服务器中已经安装好了ipvsadm和keepalived。

如果没有安装,可以通过yum源来进行安装。

# yum install ipvsadm keepalived

下面直接说ipvsadm和keepalived的配置。

1、LVS + keepalived 的配置

由于keepalived与ipvsadm的深度整合,可以由keepalived来对ipvsadm的虚IP以及实体服务器IP进行托管。所以我们这里在安装好ipvsadm和keepalived之后,只需要修改keepalived的配置,并且启动keepalived服务,即可实现对ipvsadm的配置与管理。

修改keepalived的配置文件

# vim /etc/keepalived/keepalived.conf

配置文件内容如下:

global_defs {
    router_id LVS_DEVEL
}

vrrp_instance LVS_WEB {
    state MASTER    # 注意:如果Keepalived的备机,这里是SLAVE 
    interface eth0
    virtual_router_id 51
    priority 100    # 注意:这里是主备的权重,备一般权重低于主
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.24.140    # 虚IP
    }
}

# 定义虚拟服务器
virtual_server 172.16.24.140 80 {
    delay_loop 3
    lb_algo rr    # 负载均衡算法
    lb_kind DR    # LVS工作模式
    persistence_timeout 0    # 会话保存时长(秒),0表示不使用stickyness会话
    protocol TCP

    # 定义实体服务器
    real_server 172.16.24.134 80 {
        weight 1    # 权重
        HTTP_GET {
            url {
                path /testurl/test.jsp    # 验证实体服务器状态地址
                digest 640205b7b0fc66c1ea91c463fac6334d    # 验证地址内容的md5摘要
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    # 定义实体服务器
    real_server 172.16.24.136 80 {
        weight 1
        HTTP_GET {
            url {
                path /testurl/test.jsp
                digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

修改系统网络设置:

# vim /etc/sysctl.conf

在文件中修改下面内容:

net.ipv4.ip_forward = 1

以上命令逐一执行完毕,并且无系统报错后,设置keepalived开机自启动,并立即启动keepalived服务:

# chkconfig keepalived on
# service keepalived start

可以通过ipvsadm命令来查看负载均衡器的配置。

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.24.140:http rr
  -> 172.16.24.134:http           Route   1      0          0
  -> 172.16.24.136:http           Route   1      0          0

如看到上面信息,说明负载均衡器配置成功。

2、实体服务器配置

假设在你的实体服务器中,已经安装并且配置好了Web服务。

两台实体Web服务器的配置如下,分别在两台Web服务器上依次执行下面的命令:

# ifconfig lo:0 172.16.24.140 netmask 255.255.255.255 broadcast 172.16.24.140
# route add default gw 172.16.24.140
# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
# sysctl -p

上面是临时修改配置的方法,如果需要做永久性修改的话,按照下面的说明来。

添加一个虚拟IP地址:

# vim /etc/sysconfig/network-scripts/ifcfg-lo:0

向文件中写入下面内容:

DEVICE=lo:0
IPADDR=172.16.24.140
NETMASK=255.255.255.255
BROADCAST=172.16.24.140
ONBOOT=yes
NAME=loopbackvip

修改系统网络设置:

# vim /etc/sysctl.conf

向文件中添加下面内容:

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

OK,你可以reboot你的实体服务器了。

3、配置完成,看效果

打开浏览器,在浏览器中输入虚拟IP地址(172.16.24.140),有可能分别看到两台Web服务器上的内容哦~~

另外,基于这种模式做负载均衡必须要求负载均衡服务器有双网卡,一个对内网,另一个对外网,并且还需要和后面的真实服务器是在同一个局域内。

架设你自己的堡垒机 — GateOne

GateOne是一款基于HTML5的开源终端模拟器/SSH客户端,同时内置强大的插件功能。它自带的插件使其成为一款令人惊艳的SSH客户端,但是,它可以用于运行任何终端应用。用户可以将GateOne嵌入其他应用程序从而提供各类终端访问界面,它也支持各类基于Web的管理界面……后面的大家自己看吧~~

GateOne是实用python开发的,它的安装也非常的简单,下载GateOne源码到服务器,并解压缩之后:

sudo python setup.py install

期间,系统会提示GateOne运行所必要的包,直接用pip来进行安装就可以了。

安装之后,会自动在/etc/init.d下生成自启动文件gateone,启动、停止、重启的命令如下:

service gateone start
service gateone stop
service gateone restart

GateOne的配置文件,默认存放于/etc/gateone/conf.d目录下,有三个文件:

10server.conf、20authentication.conf、50terminal.conf

10server.conf中,可以设置web页面的端口、协议等信息,默认开启ssl,通过https协议访问:

https://127.0.0.1:443