一个非常无语的高危漏洞,任何人都可以重置任意账号的密码然后发送到指定邮箱
对于容器部署来说,直接修改 /var/opt/gitlab/nginx/conf/gitlab-http.conf 文件,在其中添加
location /users/password {
return 444;
}
然后重新加载nginx配置文件
gitlab-ctl hup nginx
一个非常无语的高危漏洞,任何人都可以重置任意账号的密码然后发送到指定邮箱
对于容器部署来说,直接修改 /var/opt/gitlab/nginx/conf/gitlab-http.conf 文件,在其中添加
location /users/password {
return 444;
}
然后重新加载nginx配置文件
gitlab-ctl hup nginx
升级至 gitlab-jh v16.5.0 以后,PostgreSQL 数据库的连接数会一直持续上升,直至触碰最大连接数上限,前台报500错误。升级至v16.5.2后恢复和以前版本一样的,连接数约200,峰值不超过500。
大体架构是:前端 Nginx 卸载SSL后反代给 OnlyOffice,OnlyOffice 将监控信息喂给 statsd-exporter,Prometheus 从 statsd-exporter 拉取数据,最终用 Grafana 可视化展示。
先来 docker-compose.yml 配置如下,有一些注意修改的地方:
services:
onlyoffice:
image: onlyoffice/documentserver-ee
container_name: onlyoffice
volumes:
- ./onlyoffice/logs:/var/log/onlyoffice
- ./onlyoffice/data:/var/www/onlyoffice/Data
- ./onlyoffice/lib:/var/lib/onlyoffice
- ./onlyoffice/db:/var/lib/postgresql
- ./onlyoffice/fonts/dejavu:/usr/share/fonts/dejavu
- ./onlyoffice/fonts/founder:/usr/share/fonts/founder
- ./onlyoffice/fonts/liberation:/usr/share/fonts/liberation
- ./onlyoffice/fonts/libertinus:/usr/share/fonts/libertinus
- ./onlyoffice/fonts/noto-cjk:/usr/share/fonts/noto-cjk
- ./onlyoffice/fonts/noto-emoji:/usr/share/fonts/noto-emoji
- ./onlyoffice/fonts/sarasa-gothic:/usr/share/fonts/sarasa-gothic
- ./onlyoffice/fonts/source-code-pro:/usr/share/fonts/source-code-pro
- ./onlyoffice/fonts/source-han-sans:/usr/share/fonts/source-han-sans
- ./onlyoffice/fonts/source-han-serif:/usr/share/fonts/source-han-serif
- ./onlyoffice/fonts/source-sans:/usr/share/fonts/source-sans
- ./onlyoffice/fonts/source-serif:/usr/share/fonts/source-serif
- ./onlyoffice/fonts/windows:/usr/share/fonts/windows
- ./onlyoffice/local-production-linux.json:/etc/onlyoffice/documentserver/local-production-linux.json
environment:
- TZ=Asia/Shanghai
- JWT_ENABLED=true
- JWT_SECRET=yaoge123
statsd-exporter:
image: prom/statsd-exporter
container_name: statsd-exporter
ports:
- 9102:9102
depends_on:
- onlyoffice
nginx:
image: nginx:alpine
container_name: nginx
ports:
- 80:80
- 443:443
volumes:
- ./nginx/conf.d/:/etc/nginx/conf.d/:ro
- ./nginx/ssl/:/etc/nginx/ssl/:ro
environment:
- TZ=Asia/Shanghai
nginx-exporter:
image: nginx/nginx-prometheus-exporter
container_name: nginx-prometheus-exporter
ports:
- 9113:9113
command:
- -nginx.scrape-uri
- http://nginx:8080/stub_status
depends_on:
- nginx
……
在 local-production-linux.json 对 OnlyOffice 进行持久化配置,主要是三部分:
{
"statsd": {
"useMetrics": true,
"host": "statsd-exporter",
"port": "9125",
"prefix": "ds."
},
"services": {
"CoAuthoring": {
"autoAssembly": {
"enable": true,
"interval": "5m"
}
}
},
"FileConverter": {
"converter": {
"maxDownloadBytes": 1073741824,
"downloadAttemptMaxCount": 3
}
}
}
Nginx 配置反代卸载SSL
map $http_host $this_host {
"" $host;
default $http_host;
}
map $http_x_forwarded_proto $the_scheme {
default $http_x_forwarded_proto;
"" $scheme;
}
map $http_x_forwarded_host $the_host {
default $http_x_forwarded_host;
"" $this_host;
}
map $http_upgrade $proxy_connection {
default upgrade;
"" close;
}
server {
listen 80;
listen [::]:80;
server_name onlyoffice.nju.edu.cn;
rewrite ^ https://$http_host$request_uri? permanent;
server_tokens off;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name onlyoffice.nju.edu.cn;
server_tokens off;
include ssl/nju_edu_cn.conf;
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://onlyoffice;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 8080;
listen [::]:8080;
server_name localhost;
location /stub_status {
stub_status on;
access_log off;
}
}
在 Consul 中注册 OnlyOffice 和 Nginx 的监控
[yaoge123 ~]$ curl -X PUT -d '{"id": "onlyoffice.nju.edu.cn_statsd-exporter","name": "statsd_exporter","address": "onlyoffice.nju.edu.cn","port": 9102,"tags": ["prometheus","vm"],"checks": [{"http": "http://onlyoffice.nju.edu.cn:9102/metrics","interval": "30s"}]}' http://consul:8500/v1/agent/service/register
[yaoge123 ~]$ curl -X PUT -d '{"id": "onlyoffice.nju.edu.cn_nginx-exporter","name": "nginx_exporter","address": "onlyoffice.nju.edu.cn","port": 9113,"tags": ["prometheus","vm"],"checks": [{"http": "http://onlyoffice.nju.edu.cn:9113/metrics","interval": "30s"}]}' http://consul:8500/v1/agent/service/register
在Grafana中导入基于官方Dashboard的修改版
VPN:
在以上配置的情况下,单一客户端可以跑满总带宽,多个客户端时可以保证每个客户端至少能获得最小带宽。
以FortiWeb 6.3.1导入GoGetSSL颁发的RSA/ECC双证书为例
用 openssl s_client -showcerts -status -tlsextdebug -connect www.yaoge123.com:443 和 SSL Labs 检查证书链和OCSP
防病毒脚本 /opt/kaspersky/kav4fs_scan.sh
#!/bin/bash
VIRUS_FOUND=1
CLEAN=0
UNDEFINED=2
KAV4FS='/opt/kaspersky/kav4fs/bin/kav4fs-control'
if [ ! -x $KAV4FS ]
then
echo "Binary not executable"
exit $UNDEFINED
fi
SCAN_OUTPUT=`$KAV4FS --scan-file "$1"`
if [ "$?" -ne 0 ]
then
echo "Error due to check file '$1'"
exit 3
fi
while read line
do
OUT1=`echo $line|cut -d':' -f 1`
OUT2=`echo $line|cut -d':' -f 2|sed 's/ //g'`
case "$OUT1" in
"Threats found" )
THREATS_C=$OUT2
;;
"Riskware found" )
RISKWARE_C=$OUT2
;;
"Infected" )
INFECTED=$OUT2
;;
"Suspicious" )
SUSPICIOUS=$OUT2
;;
"Scan errors" )
SCAN_ERRORS_C=$OUT2
;;
"Password protected" )
PASSWORD_PROTECTED=$OUT2
;;
"Corrupted" )
CORRUPTED=$OUT2
;;
esac
done <<< "$SCAN_OUTPUT"
if [ $INFECTED -gt 0 ]
then
exit $VIRUS_FOUND
elif [ $THREATS_C -gt 0 -o $RISKWARE_C -gt 0 -o $SUSPICIOUS -gt 0 -o $SCAN_ERRORS_C -gt 0 -o $CORRUPTED -gt 0 ]
then
exit $UNDEFINED
else
exit $CLEAN
fi
/opt/seafile/conf/seafile.conf 添加防病毒配置
[virus_scan] scan_command = /opt/kaspersky/kav4fs_scan.sh virus_code = 1 nonvirus_code = 0 scan_interval = 60
每天crontab清除kav4fs的日志/etc/cron.d/kav
30 0 * * * root find /var/log/kaspersky/kav4fs/supervisor_trace.log* -exec rm {} \;
40 0 * * * root /opt/kaspersky/kav4fs/bin/kav4fs-control -S --clean-stat
应用发布服务器组策略,路径如下:
本地计算机策略-用户配置-管理模板-Windows组件-Internet Explorer
启用以下策略:
关闭加载项性能通知
自动激活新安装的加载项
禁止用户启用或禁用加载项
阻止运行“首次运行”向导,选择直接转到主页
//先停止服务 sudo systemctl stop transmission-daemon.service //修改文件 vim /etc/init/transmission-daemon.conf setuid yaoge123 setgid yaoge123 //添加信息 sudo systemctl edit transmission-daemon.service [Service] User=yaoge123 //重启服务 sudo systemctl daemon-reload sudo systemctl start transmission-daemon.service
apt安装drush版本是5.x,已被官方标记为不支持;采用pear安装虽然版本为6,但是小版本较老,所以:
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer composer global require drush/drush:6.* echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc //用于升级: composer global update
下载和启用模块,并且en的时候会自动处理依赖
drush dl views drush en views
配置很简单,但是需要注意的有:
openssl s_client -connect www.example.com:443
server {
listen [::]:80;
listen [::]:443 ssl;
……
ssl_certificate /etc/ssl/microstructures_bundle.crt;
ssl_certificate_key /etc/ssl/microstructures_org.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
……
}