web 服务的版本号对于恶意的攻击者无疑是有帮助的,因为不同版本号或多或少有其对应的漏洞,一旦被恶意的攻击者发现将对线上服务造成严重危害。而隐藏服务版本号则有助于提升 web 的安全性。
常用php-composer库汇总
nginx https优化
1 | # 不同 worker 绑定到不同核上,提高 CPU 缓存命中率,auto 根据 worker 数量自动绑定 CPU。 |
用于加密和解密TLS会话票据的密钥设置,生成 ticket 文件,必须含有80或48个字节的随机数据。
1 | openssl rand 80> ticket.key |
certbot 自动化脚本生成 Let’s Encrypt 免费证书。
1 | yum install python2-certbot-nginx |
域名
test.codezm.com
必须可访问。CA机构才能颁发证书。https://certbot.eff.org/docs/install.html
Tcp 优化
SYN_RCVD 状态
- SYN -
SYN_RECEIVED QUEUE
net.ipv4.tcp_max_syn_backlog=262144
接收SYN
最大数量,半链接个数。SYN
- 查看:
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
- 查看:
net.ipv4.tcp_synack_retries
被动建立连接时,发送 SYN/ACK 的重试次数。SYN+ACK
- 查看:
cat /proc/sys/net/ipv4/tcp_synack_retries
- 查看:
ACCEPT
-ESTABLISHED QUEUE
net.core.somaxconn
系统级最大 backlog 队列长度。- nginx 端口限制 backlog 队列长度
listen 80 backlog=8192;
- 如何查看 Accept queue 溢出?
netstat -s | grep LISTEN
,返回SYNS to LISTEN sockets ignored
时。
防止 SYN
攻击,开启 net.ipv4.tcp_syncookies=1
,在 SYN 队列满时,启用 cookie。
一切皆文件:句柄数的上限
操作系统全局
fs.file-max 操作系统可使用的最大句柄数
1
sysctl -a | grep file-max
- fs.file-nr 查看当前已分配(正使用)、待重新分配、上限
限制用户
/etc/security/limits.conf
- root soft nofile 65535
- root hard nofile 65535
限制
root
用户,软、硬链接个数。hard
强制的、真实的链接,soft
软的限制,进程在运行时自动的修改软限制、但无法修改硬的,soft
一定要小于hard
。
* - noproc 11000
*
代表针对所有用户-
的意思为soft
和hard
全部限制。nofile 代表最大文件打开数
noproc 代表最大进程数
限制进程
Syntax: worker_rlimit_nofile number;
Default: -
Context: main
限制一个 worker 进程最大能打开的文件句柄数。
活动连接数查看
ss -n | grep ESTAB | wc -l
Tcp Fast Open - TFO
net.ipv4_tcp_fastopen
需 Client、Server 两端均支持 TFO。
- 0:关闭
- 1:作为客户端时可以使用TFO
- 2:作为服务端时可以使用TFO
- 3:无论作为客户端还是服务端,都可以使用TFO
Syntax: listen address[:port] [fastopen=number];
Default: listen *:80 | *:8000;
Context: server
fastopen=number
为防止带数据的 SYN 攻击,限制最大长度,指定 TFO 连接队列的最大长度。
worker 进程最大连接数量
包括 Nginx 与上游、下游间的连接。
Syntax: worker_connections numbers;
Default: worker_connections 512;
Context: events
参考
Nginx-https优化
Nginx-https优化
Nginx-gzip压缩
Aria2 使用总结
Aria2 使用总结。
VirtualBox 虚拟机复制、导出与导入
通过 VirtualBox CentOS-8 虚拟机搭建、VirtualBox CentOS-8 虚拟机配置 两篇文章成功搭建并简单配置了 CentOS
虚拟机,本篇将讲解如何将虚拟机共享给他人或者复制出多台虚拟机以供使用。
系统、软件版本:
- System:macOS Majave 10.14.6
- VirtualBox: 6.0.22 r137980 (Qt5.6.3)
VirtualBox CentOS-8 虚拟机配置
为了后续能重复使用虚拟机,下面将进行简单配置。
CentOS 8 基础配置
常用工具汇总
vim
文件编辑工具。net-tools
网络工具包:ifconfig
、netstat
、route
,详情见:yum info net-tools
pcre2-tools
工具包:pcre2test
:可效验nginx
路由正则规则。tcpdump
用于抓取、分析网络包。
配置 SSH 远程登录
1 | [root@codezm ~]# vi /etc/ssh/sshd_config |
vi normal
模式下,可使用 /
搜索关键字,示例:依次按键 /
+ Port
+Enter
。使用 x
删除 #
注释符号。
Port 22
ListenAddress 0.0.0.0ListenAddress ::
PermitRootLogin yes
PubkeyAuthentication yes
更改完毕后键入 :wq
保存并退出文件编辑操作。
为使配置生效,需重启 sshd
服务。
1 | $ systemctl restart sshd |
关闭防火墙
1 | $ systemctl stop firewalld |
关闭SELinux
查看
SELinux
状态1
2
3
4[root@codezm ~]# /usr/sbin/sestatus -v
SELinux status: disabled
[root@codezm ~]# getenforce
Disabled- Disabled 表示关闭
- Enabled 表示开启
临时关闭
SELinux
1
$ setenforce 0
永久关闭
SELinux
,更改配置文件之后需重启机器使之生效。1
$ sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
CentOS 系统没落后记
- https://rockylinux.org/ 将继续延续 CentOS ,并基于上游稳定
RHEL
版本构建。 - 迁移 CentOS 8、7、6 至
Oracle Linux
。
VirtualBox CentOS-8 虚拟机搭建
本文主要记录在 VirtualBox
中安装 CentOS-8
虚拟操作系统(即:虚拟机)的流程。