2022-08-15 06:07:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								layout: post
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								title: 如何避免Cloudflare背后的源站被恶意访问
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								tags: [Cloudflare, CDN, 安全]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								  Cloudflare还是非常完善的, ! <!-- more -->     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# 起因
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  很久以前我写过一篇文章是介绍关于[如何简单的找到Cloudflare背后源站IP ](/2019/05/03/origip.html )的文章。虽然当时的我知道设置了防火墙白名单可以有效的解决这类问题。   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								  不过随着Cloudflare的业务越来越广泛, , , ForumSignin ](https://github.com/LovesAsuna/ForumSignin ), , , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# 关于防火墙白名单的缺陷
  
						 
					
						
							
								
									
										
										
										
											2022-08-15 06:17:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								  我们现在已经知道了Cloudflare除了本身CDN的业务外还加了很多花里胡哨的功能, , , , , 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-15 06:07:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# 解决方法
  
						 
					
						
							
								
									
										
										
										
											2022-08-15 06:21:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								  以前我的想法是如果Cloudflare能发送一个只有我和Cloudflare知道的请求头那不就可以了嘛, , , , 功能解释 ](https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/explanation/ ),原来这是通过双向认证实现的,这配置起来也非常的简单,所以就按照[配置文档 ](https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/set-up )的说明设置了。   
							 
						 
					
						
							
								
									
										
										
										
											2022-08-15 06:07:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								  如果看不懂英文,我大概解释一下,首先下载[Cloudflare 客户端CA ](https://developers.cloudflare.com/ssl/static/authenticated_origin_pull_ca.pem ), : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								SSLVerifyClient require
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								SSLVerifyDepth 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								SSLCACertificateFile /path/to/authenticated_origin_pull_ca.pem
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								  不过Nginx使用这个功能貌似要crt格式的证书, `openssl x509 -in authenticated_origin_pull_ca.pem -out cloudflare.crt` 获得crt证书, : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								ssl_client_certificate /etc/nginx/certs/cloudflare.crt;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								ssl_verify_client on;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  就可以了。   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								  设置完之后, , , , , , , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# 感想
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								  不过这个配置实在是不够显眼, ,