ホームページ  >  記事  >  バックエンド開発  >  CentOS+Nginx+PHP+Mysql(3)(転送)

CentOS+Nginx+PHP+Mysql(3)(転送)

WBOY
WBOYオリジナル
2016-06-23 14:31:45827ブラウズ

[AVI、MP3 などのダウンロードを提供するように Ngnix を設定する]

# vi /usr/local/webserver/nginx/conf/mime.types
↑ mime.types ファイルを編集します
ダウンロード前の形式 ファイルの種類を「application/octet-stream」に変更します
# vi /usr/local/webserver/nginx/conf/mime.types.default
↑ mime.types.default ファイルを編集します
ダウンロード形式の前にファイルの種類を指定します。 「application/octet-stream」に変更されました

[Web サイトの同時実行制限を設定する]
nginx.conf ファイルの設定時に同時実行制限が追加されました。詳しくは、公式 Wikipedia (http. ://wiki.codemongers.com/NginxChsHttpLimit_zoneModule) 「httplimit_zonemodule」セクション

[nginx プログラム制限設定時の 1M アップロードの問題]
nginx.conf ファイルの設定時に 1M アップロード制限が解除されました。詳細については、を参照してください。 nginx.conf ファイル内のコメント

[PHP の最適化]
詳細については、(http://www.cnprint.org/bbs/blogs/1/blog312.html) の「PHP 最適化設定」セクションを参照してください
一部のみ必要な内容をここに設定します

# vi /usr/local/webserver/php/etc/php.ini
↑ php.ini ファイルを編集します

1.「disable_functions="
」を「disable_functions = phpinfo,passthru,exec」に変更します,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status"
↑**このオプションは、Web サイト構築後に変更することをお勧めします。 **このオプションでは、使用を禁止する PHP 関数を設定できます。 PHP の関数は非常に危険です。これらの関数の実行が許可されている場合、プログラムに抜け穴が発生すると、非常に重大な損失が発生します。
注: サーバーにシステムステータス検出用の PHP プログラムが含まれている場合は、shell_exec、proc_open、proc_get_status およびその他の関数を無効にしないでください。

2. "upload_max_filesize = 2M"
を "upload_max_filesize = 50M" に変更します
↑このオプションは、PHP で許可される最大アップロード ファイル サイズを設定します。デフォルトは 2MB です。この設定は、実際のアプリケーション要件に基づいて適切に増やすことができます。

[mysqlの最適化]
詳細は、(http://www.cnprint.org/bbs/blogs/1/blog312.html)の「mysqlの最適化とセキュリティの設定」セクションを参照してください
ここでは必要な内容のみを設定します

# vi /usr/local/webserver/mysql/my.cnf ↑ my.cnf ファイルを編集します

1. "table_cache = 64"
を "table_cache = 512" に変更します
↑テーブル キャッシュのサイズを指定します。 MySQL がテーブルにアクセスするたびに、テーブル バッファにスペースがある場合は、テーブルが開かれてそこに配置され、テーブルの内容に高速にアクセスできるようになります。ピーク時のステータス値 Open_tables と Opened_tables を確認することで、table_cache の値を増やす必要があるかどうかを判断できます。 open_tables が table_cache と等しく、open_tables が常に増加していることがわかった場合は、table_cache の値を増やす必要があります (上記のステータス値は、「Open_tables」などの show status を使用して取得できます)。 table_cache をむやみに大きな値に設定することはできないことに注意してください。設定値が高すぎると、ファイル記述子が不足し、パフォーマンスが不安定になったり、接続が失敗したりする可能性があります。

2. "sort_buffer_size = 512k"
を "sort_buffer_size = 2M" に変更します
↑ 各スレッドのソートに必要なバッファー

3. "read_buffer_size = 128k"
を "read_buffer_size = 2M" に変更します
↑特定のテーブルをスキャンし、MySQL がそのテーブルにメモリ バッファを割り当てます。 read_buffer_size 変数は、このバッファのサイズを制御します。連続スキャンの速度が遅すぎると思われる場合は、この変数の値とメモリ バッファ サイズを増やすことでパフォーマンスを向上させることができます。

4. "read_rnd_buffer_size = 512k"
を "read_rnd_buffer_size = 4M" に変更します
↑ソート操作後のデータの読み取りを高速化し、カテゴリ行の読み取り速度を向上させます。使用可能なメモリよりもはるかに大きいテーブルに対して GROUP BY または ORDER BY 操作を実行している場合は、read_rnd_buffer_size の値を増やして、並べ替え操作後の行の読み取りを高速化する必要があります。このオプションの有用性はまだ理解できません...

5. REPAIR TABLE の "myisam_sort_buffer_size = 8M"
を "myisam_sort_buffer_size = 32M"
↑ に変更します。このオプションの使い方がわかりません。Baidu の設定方向も 128M、64M、32M などさまざまです。妥協して選択してください。

【mysqlのセキュリティ設定】
詳細は、(http://www.cnprint.org/bbs/blogs/1/blog312.html)の「Mysqlのセキュリティ設定」セクションを参照してください
必要な一部の内容のみ設定していますここ

* *iptables** でリモート接続、つまりポート 3306 を閉じるように設定します。これは MySQL のデフォルトのリスニング ポートです。ここでは MySQL はローカル スクリプトのみを提供するため、リモート接続は必要ありません。 MySQL の組み込みセキュリティ メカニズムは非常に厳格ですが、MySQL プログラム自体に問題がある場合、不正アクセスによって MySQL の組み込みセキュリティ メカニズムが完全にバイパスされる可能性があるため、TCP ポートをリッスンすることは依然として危険な動作です。 (本当にmysqlにリモート接続する必要がないのか判断する必要があります)

[システム全体のセキュリティ調整]

1. **最終設定** RHEL または Red Had Enterprise Linux 5.X のユーザーは、まず /etc/selinux/config ファイルの SELINUX="" を変更して SElinux を有効にする必要があります。これにより、システムが異常にクラッシュすることがなくなります。これをオフにするべきだと考える人もいますが、私はそれを強くお勧めしません。もちろん、実際のサーバーではなく、趣味でのみ RHEL を使用する場合には問題ありません。
2. **最終設定** iptables ファイアウォールを有効にします。これには、システムのセキュリティを強化するための多くの利点があります。ファイアウォール ルールを設定します。
iptables の要件:
* すべてのポートをブロックします
* デフォルトの SSH ポートを 56565 に設定します
* ポート 56565、80、および 3306 を開きます
* ローカル アクセスのみを許可するようにポート 3306 を設定します

Iptables ルール:
# vi /usr/local /webserver/fw.sh
次のスクリプト コマンドを fw.sh ファイルに貼り付けます
#!/bin/bash
# iptables サービスを停止します
/sbin/service iptables stop
# 初期チェーンのデフォルト ポリシー
/sbin /iptables -F -t filter
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
# ネイティブネットワーク転送を有効にする
/sbin/iptables -A INPUT -i lo -j ACCEPT
# 確立された接続を受け入れる
/sbin/ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ICMP Control
/sbin/iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
# WWW サービス
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# SSH サービス
/sbin/iptables -A INPUT -p tcp --dport 56565 -j ACCEPT
# DDOS 対策
/sbin /iptables -I INPUT -p tcp --syn -m ttl --ttl-eq 117 -j DROP
/sbin/iptables -I INPUT -p tcp --syn -m length --length :40 - j DROP
# mysql 3306 Accept
/sbin/iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT
# iptablesサービスを起動
/sbin/service iptables start

保存後以下のコマンドを実行
# chmod 755 /usr/local/webserver/fw.sh
# echo '/usr/local/webserver/fw.sh ' > > /etc/rc.d/rc.local
# /usr/local/webserver/fw.sh

3. セットアップを実行して、開く必要のないサービスが 1 つ減り、危険が 1 つ減りました。 <システムインストール後の初期環境設定>で設定します

4. Control-Alt-Delete キーボードシャットダウンコマンドを無効にします
「/etc/inittab」ファイル内の次の行をコメントアウトします (# を使用します):
# vi /etc /inittab
「ca::ctrlaltdel:/sbin/shutdown -t3 -r now」を「#ca::ctrlaltdel:/sbin/shutdown -t3 -r now」に変更します
この変更を機能させるには、以下のコマンド:
# /sbin/init q
5.「/etc/rc.d/init.d」以下のスクリプトファイルの権限を設定します
起動時に実行されるプログラムを実行または終了するスクリプトファイルの権限を設定します。
# chmod -R 700 /etc/rc.d/init.d/*
これは、root だけがこのディレクトリ内のスクリプト ファイルの読み取り、書き込み、実行を許可されていることを意味します。
6. 「/etc/services」ファイルを免疫化します。
「/etc/services」ファイルを免疫化し、サービスの不正な削除または追加を防ぎます:
#chattr +i /etc/services
7. システムが ping に応答しないようにします。外部/内部ソースからのリクエスト。
これで、誰もあなたのマシンに ping を送信して応答を受け取ることができなくなり、サイトのセキュリティを大幅に強化できます。次のコマンド行を /etc/rc.d/rc.local に追加すると、起動のたびに自動的に実行されます。
# vi /etc/rc.d/rc.local
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
8. システム上のすべてのユーザーにリソース制限を設定すると、DoS タイプの攻撃 (サービス拒否攻撃) を防ぐことができます。 )
最大プロセス数、メモリ量など。たとえば、すべてのユーザーに対する制限は次のようになります。
# vi /etc/security/limits.conf
以下のコード例では、すべてのユーザーはセッションあたり 10 MB に制限され、4 人の同時ログインが許可されます。 3 行目は、全員のコア ダンプを無効にします。 4 行目は、ユーザー bin に対するすべての制限を削除します。
* ハード RSS 10000
* ハード maxlogins 4
* ハードコア 0
bin -
これらの制限をアクティブ化します
# vi /etc/pam.d/login 一番下に行を追加します: session required /lib/security/pam_limits.so 。
9. chattr コマンドを使用して、以下のファイルに変更不可の属性を追加します。
# chattr +i /etc/passwd
# chattr +i /etc/shadow
# chattr +i /etc/group
# chattr +i /etc/gshadow
** mysql データベースのパスワードを変更後設定してください** Pay実行時の注意 この操作の後は、システムにユーザーを追加したり、root としてパスワードを変更したりすることはできません。
ユーザーを追加するか、パスワードを変更したい場合。続行する前に、まず chattr -i /etc/passwd およびその他のコマンドを使用して書き込み不可の設定を削除する必要があります。
10. sshd ポートを変更します:
ファイアウォール構成を変更し、新しいリモート ポート (56565) を開きます
# vi /etc/sysconfig/iptables

/etc/ssh/sshd_config:

# vi /etc/ssh/sshd_config
内部のポートを 56565 に変更します (特定のポートは任意であり、他のプログラムのポートと競合することはできません)。そして、先頭の # 記号をコメントアウトして

、sshd サービスを有効にします:

# pkill sshd
# service sshd start

ファイアウォール構成を変更し、古いリモート ポート (22) を閉じます
# vi /etc/sysconfig/iptables
注: ファイアウォール構成ファイルを変更した後、セットアップを使用してファイアウォール設定を変更しないでください。そうしないと、現在の設定が変更されます。無効です
11. カーネルパラメータを調整します
sysctl.conf ファイルを編集します:
# vi /etc/sysctl.conf
次のように変更します:
net.ipv4.conf.default.accept_source_route=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_echo_ignore_all=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.ip_conntrack_max=65535
net.ipv4.tcp_syn_retries=1
net.ipv4.tcp_synack_retries=1
.gc_timeout=100
net.ipv 4.tcp_max_syn_backlog=32768
net.ipv4.conf.default.rp_filter=0
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
kernel.shmmax = 134217728
ステータスの表示:
# sysctl - p
12. システムログを頻繁に確認してください。システム ログは主に /var/log/ ディレクトリにあります。問題の芽を摘み取ります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。