仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 936|回复: 8
打印 上一主题 下一主题

[CentOS(社区)] 带来一篇20步打造最宁静的Nginx Web办事器

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:30:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
欢迎大家来到仓酷云论坛!Nginx是一个轻量级的,高功能的Web办事器和反向代办署理和邮箱(IMAP/POP3)代办署理办事器。它运转在UNIX,GNU/Linux,BSD各类版本,MacOSX,Solaris和Windows。依据查询拜访统计,6%的网站利用NginxWeb办事器。Nginx是多数能处置C10K成绩的办事器之一。跟传统的办事器分歧,Nginx不依附线程来处置哀求。相反,它利用了更多的可扩大的事务驱动(异步)架构。Nginx为一些高流量的网站供应动力,好比WordPress,大家网,腾讯,网易等。这篇文章次要是先容怎样进步运转在Linux或UNIX体系的NginxWeb办事器的宁静性。

默许设置文件和Nginx端口



  • /usr/local/nginx/conf/-Nginx设置文件目次,/usr/local/nginx/conf/nginx.conf是主设置文件
  • /usr/local/nginx/html/-默许网站文件地位
  • /usr/local/nginx/logs/-默许日记文件地位
  • NginxHTTP默许端口:TCP80
  • NginxHTTPS默许端口:TCP443
你可使用以下下令来测试Nginx设置文件正确性。
[size=1em]
[size=1em]1

[size=1em][size=1em]/usr/local/nginx/sbin/nginx-t




将会输入。
theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok
configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful
实行以下下令来从头加载设置文件。

[size=1em]
[size=1em]1

[size=1em][size=1em]/usr/local/nginx/sbin/nginx-sreload




实行以下下令来中断办事器。
[size=1em]
[size=1em]1

[size=1em][size=1em]/usr/local/nginx/sbin/nginx-sstop




1、设置SELinux

宁静加强型Linux(SELinux)的是一个Linux内核的功效,它供应撑持会见把持的宁静政策回护机制。它能够年夜局部的打击。上面我们来看怎样启动基于CentOS/RHEL体系的SELinux。
装置SELinux

[size=1em]
[size=1em]1

[size=1em][size=1em]rpm-qa|grepselinux




libselinux-1.23.10-2
selinux-policy-targeted-1.23.16-6
假如没有前往任何了局,代表没有装置SELinux,假如前往了相似下面的了局,则申明体系装置了SELinux。
布什值锁定
运转下令getsebool-a来锁定体系。

[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em][size=1em]getsebool-a|less
[size=1em]getsebool-a|grepoff
[size=1em]getsebool-a|grepo



2、经由过程分区挂载同意起码特权

办事器上的网页/html/php文件独自分区。比方,新建一个分区/dev/sda5(第一逻辑分区),而且挂载在/nginx。确保/nginx是以noexec,nodevandnosetuid的权限挂载。以下是我的/etc/fstab的挂载/nginx的信息:
LABEL=/nginx/nginxext3defaults,nosuid,noexec,nodev12
注重:你必要利用fdisk和mkfs.ext3下令创立一个新分区。

3、设置/etc/sysctl.conf强化Linux宁静

你能够经由过程编纂/etc/sysctl.conf来把持和设置Linux内核、收集设置。
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em]19

[size=1em]20

[size=1em]21

[size=1em]22

[size=1em]23

[size=1em]24

[size=1em]25

[size=1em]26

[size=1em]27

[size=1em]28

[size=1em]29

[size=1em]30

[size=1em]31

[size=1em]32

[size=1em]33

[size=1em]34

[size=1em]35

[size=1em]36

[size=1em]37

[size=1em]38

[size=1em]39

[size=1em]40

[size=1em]41

[size=1em]42

[size=1em]43

[size=1em]44

[size=1em]45

[size=1em]46

[size=1em]47

[size=1em]48

[size=1em]49

[size=1em]50

[size=1em]51

[size=1em]52

[size=1em]53

[size=1em]54

[size=1em]55

[size=1em]56

[size=1em]57

[size=1em]58

[size=1em]59

[size=1em]60

[size=1em]61

[size=1em]62

[size=1em]63

[size=1em]64

[size=1em]65

[size=1em]66

[size=1em]67

[size=1em][size=1em]#Avoidasmurfattack
[size=1em]net.ipv4.icmp_echo_ignore_broadcasts=1
[size=1em]
[size=1em]#Turnonprotectionforbadicmperrormessages
[size=1em]net.ipv4.icmp_ignore_bogus_error_responses=1
[size=1em]
[size=1em]#TurnonsyncookiesforSYNfloodattackprotection
[size=1em]net.ipv4.tcp_syncookies=1
[size=1em]
[size=1em]#Turnonandlogspoofed,sourcerouted,andredirectpackets
[size=1em]net.ipv4.conf.all.log_martians=1
[size=1em]net.ipv4.conf.default.log_martians=1
[size=1em]
[size=1em]#Nosourceroutedpacketshere
[size=1em]net.ipv4.conf.all.accept_source_route=0
[size=1em]net.ipv4.conf.default.accept_source_route=0
[size=1em]
[size=1em]#Turnonreversepathfiltering
[size=1em]net.ipv4.conf.all.rp_filter=1
[size=1em]net.ipv4.conf.default.rp_filter=1
[size=1em]
[size=1em]#Makesurenoonecanaltertheroutingtables
[size=1em]net.ipv4.conf.all.accept_redirects=0
[size=1em]net.ipv4.conf.default.accept_redirects=0
[size=1em]net.ipv4.conf.all.secure_redirects=0
[size=1em]net.ipv4.conf.default.secure_redirects=0
[size=1em]
[size=1em]#Dontactasarouter
[size=1em]net.ipv4.ip_forward=0
[size=1em]net.ipv4.conf.all.send_redirects=0
[size=1em]net.ipv4.conf.default.send_redirects=0
[size=1em]
[size=1em]#Turnonexecshild
[size=1em]kernel.exec-shield=1
[size=1em]kernel.randomize_va_space=1
[size=1em]
[size=1em]#TuenIPv6
[size=1em]net.ipv6.conf.default.router_solicitations=0
[size=1em]net.ipv6.conf.default.accept_ra_rtr_pref=0
[size=1em]net.ipv6.conf.default.accept_ra_pinfo=0
[size=1em]net.ipv6.conf.default.accept_ra_defrtr=0
[size=1em]net.ipv6.conf.default.autoconf=0
[size=1em]net.ipv6.conf.default.dad_transmits=0
[size=1em]net.ipv6.conf.default.max_addresses=1
[size=1em]
[size=1em]#OptimizationforportuseforLBs
[size=1em]#Increasesystemfiledescriptorlimit
[size=1em]fs.file-max=65535
[size=1em]
[size=1em]#AllowformorePIDs(toreducerolloverproblems);maybreaksomeprograms32768
[size=1em]kernel.pid_max=65536
[size=1em]
[size=1em]#IncreasesystemIPportlimits
[size=1em]net.ipv4.ip_local_port_range=200065000
[size=1em]
[size=1em]#IncreaseTCPmaxbuffersizesetableusingsetsockopt()
[size=1em]net.ipv4.tcp_rmem=4096873808388608
[size=1em]net.ipv4.tcp_wmem=4096873808388608
[size=1em]
[size=1em]#IncreaseLinuxautotuningTCPbufferlimits
[size=1em]#min,default,andmaxnumberofbytestouse
[size=1em]#setmaxtoatleast4MB,orhigherifyouuseveryhighBDPpaths
[size=1em]#TcpWindowsetc
[size=1em]net.core.rmem_max=8388608
[size=1em]net.core.wmem_max=8388608
[size=1em]net.core.netdev_max_backlog=5000
[size=1em]net.ipv4.tcp_window_scaling=1



4、删除一切不必要的Nginx模块

你必要间接经由过程编译Nginx源代码使模块数目起码化。经由过程限定只同意web办事器会见模块把风险降到最低。你能够只设置装置nginx你所必要的模块。比方,禁用SSL和autoindex模块你能够实行以下下令:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em][size=1em]./configure--without-http_autoindex_module--without-http_ssi_module
[size=1em]make
[size=1em]makeinstall



经由过程以下下令来检察当编译nginx办事器时哪一个模块能开户或封闭:
[size=1em]
[size=1em]1

[size=1em][size=1em]./configure--help|less




禁用你用不到的nginx模块。
(可选项)变动nginx版本称号。
编纂文件/http/ngx_http_header_filter_module.c:

[size=1em]
[size=1em]1

[size=1em][size=1em]vi+48src/http/ngx_http_header_filter_module.c




找到行:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em][size=1em]staticcharngx_http_server_string[]="Server:nginx"CRLF;

[size=1em]staticcharngx_http_server_full_string[]="Server:"NGINX_VERCRLF;



依照以下行修正:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em][size=1em]staticcharngx_http_server_string[]="Server:NinjaWebServer"CRLF;

[size=1em]staticcharngx_http_server_full_string[]="Server:NinjaWebServer"CRLF;



保留并封闭文件。如今你能够编纂办事器了。增添以下代码到nginx.conf文件来封闭nginx版本号的显现。
[size=1em]
[size=1em]1

[size=1em][size=1em]server_tokensoff




5、利用mod_security(只合适后端Apache办事器)

mod_security为Apache供应一个使用步伐级的防火墙。为后端ApacheWeb办事器装置mod_security,这会制止良多注进式打击。
6、装置SELinux战略以强化NginxWeb办事器

默许的SELinux不会回护NginxWeb办事器,可是你能够装置和编译回护软件。
1、装置编译SELinux所需情况撑持

[size=1em]
[size=1em]1

[size=1em][size=1em]yum-yinstallselinux-policy-targetedselinux-policy-devel




2、下载SELinux战略以强化NginxWeb办事器。
[size=1em]
[size=1em]1

[size=1em]2

[size=1em][size=1em]cd/opt

[size=1em]wgethttp://downloads.sourceforge.net/project/selinuxnginx/se-ngix_1_0_10.tar.gz?use_mirror=nchc



3、解压文件
[size=1em]
[size=1em]1

[size=1em][size=1em]tar-zxvfse-ngix_1_0_10.tar.gz




4、编译文件
[size=1em]
[size=1em]1

[size=1em]2

[size=1em][size=1em]cdse-ngix_1_0_10/nginx

[size=1em]make



将会输入以下:
Compilingtargetednginxmodule
/usr/bin/checkmodule:loadingpolicyconfigurationfromtmp/nginx.tmp
/usr/bin/checkmodule:policyconfigurationloaded
/usr/bin/checkmodule:writingbinaryrepresentation(version6)totmp/nginx.mod
Creatingtargetednginx.pppolicypackage

[size=1em]
[size=1em]1

[size=1em][size=1em]rmtmp/nginx.mod.fctmp/nginx.mod




5、装置天生的nginx.ppSELinux模块:
[size=1em]
[size=1em]1

[size=1em][size=1em]/usr/sbin/semodule-inginx.pp




7、基于Iptables防火墙的限定

上面的防火墙剧本制止任何除同意:


  • 来自HTTP(TCP端口80)的哀求
  • 来自ICMPping的哀求
  • ntp(端口123)的哀求输入
  • smtp(TCP端口25)的哀求输入
<divstyle="background-color:#FFFFFF;border:none;margin:0px;padding:0px;font-family:微软雅黑;color:#222222;font-size:13px;"><divid="highlighter_549270"class="syntaxhighlighterbash"style="border:none;padding:0px;margin:1em0px!important;font-size:1em!important;">
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em]19

[size=1em]20

[size=1em]21

[size=1em]22

[size=1em]23

[size=1em]24

[size=1em]25

[size=1em]26

[size=1em]27

[size=1em]28

[size=1em]29

[size=1em]30

[size=1em]31

[size=1em]32

[size=1em]33

[size=1em]34

[size=1em]35

[size=1em]36

[size=1em]37

[size=1em]38

[size=1em]39

[size=1em]40

[size=1em]41

[size=1em]42

[size=1em]43

[size=1em]44
飘灵儿 该用户已被删除
沙发
发表于 2015-1-16 18:55:10 | 只看该作者

带来一篇20步打造最宁静的Nginx Web办事器

不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-28 13:45:38 来自手机 | 只看该作者
Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。
柔情似水 该用户已被删除
地板
发表于 2015-2-5 22:42:47 | 只看该作者
下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。
简单生活 该用户已被删除
5#
发表于 2015-2-14 00:42:06 | 只看该作者
就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
若相依 该用户已被删除
6#
发表于 2015-3-4 03:57:42 | 只看该作者
为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?
海妖 该用户已被删除
7#
发表于 2015-3-11 16:12:46 | 只看该作者
对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。
精灵巫婆 该用户已被删除
8#
发表于 2015-3-19 06:24:59 | 只看该作者
任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统.
莫相离 该用户已被删除
9#
发表于 2015-3-27 11:09:54 | 只看该作者
另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图?片,玩游戏、上网、播放多媒体文件等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表