Linuxサーバーでのnginxのセキュリティ構成

WBOY
リリース: 2016-08-23 09:03:35
オリジナル
1159 人が閲覧しました

1. 常識

  • Linux では、ファイルを読み取るには、まずファイルが配置されているフォルダーに対する実行権限が必要で、次にファイルに対する読み取り権限が必要です。

  • php ファイルの実行にはファイルの実行権限は必要ありません。nginx および php-fpm 実行アカウントの読み取り権限のみが必要です。

  • トロイの木馬をアップロードした後、フォルダーの内容を一覧表示できるかどうかは、フォルダー上で php-fpm を実行しているアカウントの読み取り権限に依存します。トロイの木馬がコマンドを実行する権限は、php-fpm のアカウント権限に関連しています。

  • トロイの木馬がコマンドを実行したい場合、php-fpm アカウントは対応する sh に対する実行権限を持っている必要があります。

  • フォルダー内のファイルを読み取るには、フォルダーに対する読み取り権限は必要ありません。フォルダーに対する実行権限のみが必要です。

1. トップ構成

リーリー

2. イベントモジュール

リーリー

3.HTTPモジュール

リーリー

4. SERVERモジュール

リーリー

2. 一般的な方法

1. トロイの木馬がアップロード後に実行できないようにします。アップロード ディレクトリについて、このディレクトリが php
を解析できないように設定を追加します。2. トロイの木馬が実行後に非 Web サイトのディレクトリ ファイルを参照できないようにします。他のディレクトリの読み取り権限の php-fpm 実行アカウントをキャンセルします
3. トロイの木馬が実行された後、コマンドは実行できません: sh
4 の php-fpm アカウントの実行権限をキャンセルします。権限が高すぎることはできません。root を使用したり、php-fpm アカウントの root グループに参加したりしないでください

3.具体的な構成

1.phpファイルへのアクセスと実行を禁止します

リーリー

2. IPアクセスを禁止する

リーリー

3. ユーザーの実際の IP に基づいて接続制限を設定します

リーリー

4. マルチレイヤー CDN 後の元のユーザーの IP アドレスと nginx 設定を取得します

リーリー

5. 隠しバージョン情報

リーリー

6. 不要なメソッドを無効にする

リーリー

7. 拡張機能を無効にする

リーリー

8. 応答ヘッダーを適切に設定する

リーリー

Strict-Transport-Security (HSTS と呼ばれる) は、指定された max-age 内で常に HTTPS 経由でアクセスするようにブラウザに指示できます

X-Frame-Options は、この Web ページが iframe によってネストされることを許可するかどうかを指定するために使用されます。deny は、ネストの発生が許可されないことを意味します

9. 一部のユーザーエージェントを拒否する

リーリー

10. 画像のホットリンクを防止する

リーリー

11. バッファオーバーフロー攻撃の制御

リーリー

解释说明

1、client_body_buffer_size 1k-(默认8k或16k)这个指令可以指定连接请求实体的缓冲区大小。如果连接请求超过缓存区指定的值,那么这些请求实体的整体或部分将尝试写入一个临时文件。
2、client_header_buffer_size 1k-指令指定客户端请求头部的缓冲区大小。绝大多数情况下一个请求头不会大于1k,不过如果有来自于wap客户端的较大的cookie它可能会大于1k,Nginx将分配给它一个更大的缓冲区,这个值可以在large_client_header_buffers里面设置。
3、client_max_body_size 1k-指令指定允许客户端连接的最大请求实体大小,它出现在请求头部的Content-Length字段。如果请求大于指定的值,客户端将收到一个”Request Entity Too Large” (413)错误。记住,浏览器并不知道怎样显示这个错误。
4、large_client_header_buffers-指定客户端一些比较大的请求头使用的缓冲区数量和大小。请求字段不能大于一个缓冲区大小,如果客户端发送一个比较大的头,nginx将返回”Request URI too large” (414)

1、client_body_timeout 10;-指令指定读取请求实体的超时时间。这里的超时是指一个请求实体没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx将返回一个”Request time out” (408)错误。
2、client_header_timeout 10;-指令指定读取客户端请求头标题的超时时间。这里的超时是指一个请求头没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx将返回一个”Request time out” (408)错误。
3、keepalive_timeout 5 5; – 参数的第一个值指定了客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接。参数的第二个值(可选)指定了应答头中Keep-Alive: timeout=time的time值,这个值可以使一些浏览器知道什么时候关闭连接,以便服务器不用重复关闭,如果不指定这个参数,nginx不会在应答头中发送Keep-Alive信息。(但这并不是指怎样将一个连接“Keep-Alive”)参数的这两个值可以不相同。
4、send_timeout 10; 指令指定了发送给客户端应答后的超时时间,Timeout是指没有进入完整established状态,只完成了两次握手,如果超过这个时间客户端没有任何响应,nginx将关闭连接。

12、控制并发连接

limit_zone slimits $binary_remote_addr 5m;
limit_conn slimits 5;
ログイン後にコピー

13、sysctl.conf配置

# Avoid a smurf attack
net.ipv4.icmp_echo_ignore_broadcasts = 1
 
# Turn on protection for bad icmp error messages
net.ipv4.icmp_ignore_bogus_error_responses = 1
 
# Turn on syncookies for SYN flood attack protection
net.ipv4.tcp_syncookies = 1
 
# Turn on and log spoofed, source routed, and redirect packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
 
# No source routed packets here
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
 
# Turn on reverse path filtering
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
 
# Make sure no one can alter the routing tables
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
 
# Don't act as a router
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
 
# Turn on execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1
 
# Tuen IPv6
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1
 
# Optimization for port usefor LBs
# Increase system file descriptor limit
fs.file-max = 65535
 
# Allow for more PIDs (to reduce rollover problems); may break some programs 32768
kernel.pid_max = 65536
 
# Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000
 
# Increase TCP max buffer size setable using setsockopt()
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
 
# Increase Linux auto tuning TCP buffer limits
# min, default, and max number of bytes to use
# set max to at least 4MB, or higher if you use very high BDP paths
# Tcp Windows etc
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1
ログイン後にコピー

14、在防火墙级限制每个IP的连接数

/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60  --hitcount 15 -j DROP
ログイン後にコピー

15、限制Nginx连接传出

/sbin/iptables -A OUTPUT -o eth0 -m owner --uid-owner vivek -p tcp --dport 80 -m state --state NEW,ESTABLISHED  -j ACCEPT
ログイン後にコピー

 

。。。

 

参考链接

http://www.bzfshop.net/article/176.html

http://nginx.org/en/docs/

http://www.oschina.net/translate/nginx-setup

http://www.ha97.com/5194.html

 

 

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート