Halo博客安全配置
Halo博客安全配置
全站强制https
server {
listen 80;
server_name www.codehome.vip;
#强制将http的URL重写成https
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
server_name www.codehome.vip;
listen 443 ssl;
ssl_certificate /usr/local/ssl/codehome.crt;
ssl_certificate_key /usr/local/ssl/codehome.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:1111/;
}
}
隐藏服务器信息
在http标签中加入下面指令隐藏nginx版本与自定义返回Server
server_tokens off;
add_header Server 'Zhan-Sir-Server' always;
禁止网页通过iframe嵌套
X-Frame-Options 有三个值:
DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri表示该页面可以在指定来源的 frame 中展示。
add_header X-Frame-OPTIONS "SAMEORIGIN";
禁用不安全的方法
在server标签中加入,判断请求方法是不是在GET、HEAD、POST范围内,其他的禁止
,halo使用的rest风格的,这些就不开启了。😕
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
图片添加水印跟压缩
下载nginx源码跟NGINX-IMAGE-FILTER-WATERMARK项目页下载源码包。解压完成后把 ngx_http_image_filter_module.c 文件覆盖到 NGINX 源码中,目录是 /src/http/modules/ngx_http_image_filter_module.c,重新编译nginx。我这里是重新编译,只需要make,把objs下的nginx覆盖原先nginx/sbin下的nginx即可。
./configure --prefix=/usr/local/nginx --with-pcre --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_image_filter_module --with-http_slice_module --with-mail --with-threads --with-file-aio --with-stream --with-mail_ssl_module --with-stream_ssl_module
make
nginx添加配置代理upload路径下的图片,这里要重名下根目录地址。
location ^~ /upload/ { #在img目录下开启水水印,可改成主目录
image_filter watermark; #开启水印
image_filter_watermark "PATH_TO_FILE"; #水印文件位置
image_filter_watermark_position bottom-right; #水印位置
image_filter_jpeg_quality 95; #图片质量
image_filter_buffer 10M; #缓存
image_filter_watermark_width_from 400; # 打水印的图片最小宽度,只有大于这个宽度的才会打水印
image_filter_watermark_height_from 400; #打水印的图片最小高度,只有大于这个高度的才会打水印
alias /xx/xxx/attachments/upload/; #halo的本地上传路径
}
防止反代
在halo的主题里面全局放置一个隐藏的图片,当检测到域名不是本站的域名,自动跳转到本站。
<img style="display:none" src=" " onerror='this.onerror=null;var currentDomain="www.codehome." + "vip"; var str1=currentDomain; str2="docu"+"ment.loca"+"tion.host"; str3=eval(str2) ;if( str1!=str3 ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "currentDomain" + ")";eval(do_action) }' />
防范一般爬虫
在nginx的配置目录新建ua_deny.conf文件,最后在nginx.conf标签中include ua_deny.conf引入即可。
#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 444;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{
return 444;
}
#这三句if是禁止使用代理ip来访问,或禁止使用压力测试软件进行dos攻击
if ($http_user_agent ~* ApacheBench|WebBench|java/){
return 444;
}
if ($http_user_agent ~* (Wget|ab) ) {
return 444;
}
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 444;
}
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
编程之家!
喜欢就支持一下吧