サーバーの設定変更
Category
Server
SSH接続してサーバー設定を変更する際の覚え書きとして、php.ini、httpd.conf、sshd_configファイルの変更を中心に書いていこうと思います。また、「SSHでの接続速度を早くする」「SSH接続時のポート番号を変更する」「サービスの起動・停止」の設定についても書いておきます。
※今後、サーバーでよく行う設定をこのページに追記していこうと思います。
Keyword:Linuxコマンド,php.ini,httpd.conf,sshd_config
php.iniの設定変更
viコマンドでphp.iniを編集
vi /etc/php.ini・・・viでphp.iniを開く ;メモリの上限を変更 memory_limit = ○○M ; Maximum amount of memory a script may consume ;ポストサイズを変更 post_max_size = ○○M ;アップロードサイズを変更 upload_max_filesize = ○○M ;デフォルトのキャラセットを変更 default_charset = "○○○-○" ;マルチバイト文字列関数のデフォルトエンコードを変更 mbstring.internal_encoding = ○○○-○ ;allow_url_fopenの設定 allow_url_fopen = Off /etc/rc.d/init.d/httpd restart・・・設定を反映させるためアパッチを再起動
補足
PHP関連の設定は、viコマンドでphp.iniを開き編集します。
php.iniの”;(セミコロン)”は、コメントアウトを意味します。
それぞれの”○”の箇所に任意の設定を記述していきます。
●メモリの上限、ポストサイズ、アップロードサイズ
それぞれのサイズの大きさは、以下のようにする必要があります。
memory_limit > post_max_size > upload_max_filesize
※メモリの上限が一番大きく、アップロードサイズを一番小さくします。
●allow_url_fopenの設定
外部から任意スクリプトを実行される危険性がありますので、セキュリティ上の対策として”Off”にします。Off設定にしている場合、”simplexml_load_file()関数”を使用して外部サーバーからRSSフィード等を取得しようとしても、パースエラーが出力されxmlが取得できない場合があります。そのような場合、初めに”curl”でxmlを取得した後、”simplexml_load_string()関数”を使用することで取得可能です。
変更した内容を反映させるため、アパッチを再起動します。
[php.iniの変更後はアパッチの再起動が必要?]
PHPがモジュールモードかCGIモードどちらで動作しているかによります。
モジュールモードの場合、アパッチの再起動が必要です。
共用サーバーで、php.iniが編集できるようなホスティングサーバーでは、アパッチの再起動はできません。このような場合、PHPはCGIモードで動作していますので、アパッチの再起動は必要ありません。
httpd.confの設定変更
viコマンドでhttpd.confを編集
vi /etc/httpd/conf/httpd.conf・・・viでhttpd.confを開く #リクエスト処理終了後の接続維持 KeepAlive Off #Webサーバーのポート番号 Listen 80 #エラーメッセージに表記されるメールアドレス ServerAdmin ○○○○○@webcreator-net.com #運用するサーバ名 ServerName webcreator-net.com:80 #ドキュメントルート DocumentRoot "/ver/www/html" #指定ディレクトリにおけるオプション設定 <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> #ユーザーディレクトリの指定 <IfModule mod_userdir.c> UserDir public_html </IfModule> #"/(ディレクトリ)"でリクエストがあった場合、自動補完するファイル名 DirectoryIndex index.html index.htm index.php index.cgi index.pl #ディレクトリにおいてオプション設定を上書きするファイル名 AccessFileName .htaccess #.htから始まるファイルのアクセスを禁止 <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> #デフォルトの文字コード設定 # AddDefaultCharset UTF-8 #.cgiと.plをCGIスクリプトとして実行 AddHandler cgi-script .cgi .pl #httpd.confのチェックコマンド httpd -t /etc/rc.d/init.d/httpd restart・・・設定を反映させるためアパッチを再起動
補足
サーバー関連の設定は、viコマンドでhttpd.confを開き編集します。
httpd.confの”#(シャープ)”は、コメントアウトを意味します。
●リクエスト処理終了後の接続維持
デフォルト設定は”Off”。”On”設定にすると、リクエスト処理終了後も一定時間接続を維持しますので、複数ファイルを一度に取得する必要があるような場合”On”にします。
●Webサーバーのポート番号
通常は80番ポートを使用します。
●エラーメッセージに表記されるメールアドレス
エラーメッセージ等に表示されるメールアドレスを記述します。
●運用するサーバ名
運用するサーバーのドメインを記述します。
●ドキュメントルート
TOPページにしたいディレクトリを指定します。
●指定ディレクトリにおけるオプション設定
指定ディレクトリを記述し、オプションを追記します。
オプションには次のキーワードを指定できます。
All
MultiViews を除いた全ての機能が有効になります。
ExecCGI
CGIスクリプトの実行を許可します。
Includes
SSIの利用を許可します。
Indexes
下記条件に合致する場合、ディレクトリ内のファイル名一覧を返します。
・リクエストURLにファイル名がない場合
・リクエストURLに合致するディレクトリが存在する場合
・該当ディレクトリ内に”DirectoryIndex”で指定したファイルがない場合
※デフォルトは index.html
FollowSymLinks
シンボリックリンクによるファイル参照を許可します。
●ユーザーディレクトリの指定
UserDirの前の”#(シャープ)”を外すと、/home/username/public_html内に置かれたファイルが”ドメイン/~username”からアクセスできるようになります。
●”/(ディレクトリ)”でリクエストがあった場合、自動補完するファイル名
優先度の高いものから順番に記述します。ここに記述したファイルがサーバーにない場合、ファイル一覧が表示されてしまいます。ファイル一覧を表示させたくない場合、存在しないページは404エラーページにリダイレクト処理させるか、”指定ディレクトリにおけるオプション設定”のIndexesの箇所を以下のようにします。
Options -Indexes FollowSymLinks
※Indexesの前に”-(マイナス)”を追記。
●ディレクトリにおいてオプション設定を上書きするファイル名
httpd.confを編集できない環境やWordPressのようにパーマリンク設定に.htaccessを使用する場合、ディレクトリにおいてオプション設定を上書きするファイル名を指定します。
●.htから始まるファイルのアクセスを禁止
.htaccessや.htpasswd等、ブラウザ経由にて直接中身を参照できないようにアクセスを禁止します。
●デフォルトの文字コードを設定
CentOSの場合、デフォルトの文字コードがUTF-8になっています。そのため、metaタグが無視されてしまうようで、ファイルのヘッダーにmetaタグで記述したキャラセットが反映されず文字バケしてしまいます。これを回避するため、デフォルトの文字コードはコメントアウトしてやります。
●.cgiと.plをCGIスクリプトとして実行
デフォルト設定は”.cgiのみがCGIスクリプト”として動作するようになっていますので、”.pl”も追加してやります。
●httpd.confのチェックコマンド
httpd.confに文法上の記述ミスがないか確認するコマンドです。
“apachectl configtest”も同じ処理をするコマンドです。
変更した内容を反映させるため、アパッチを再起動します。
sshd_configの設定変更
viコマンドでsshd_configを編集
vi /etc/ssh/sshd_config・・・viでsshd_configを開く #SSH接続で使用するポート番号 Port 22 #プロトコルバージョンの指定 Protocol 2 #rootユーザーでのSSH接続の禁止 PermitRootLogin no #RSA公開鍵認証の設定 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys #パスワード認証を無効 PasswordAuthentication no /etc/init.d/sshd restart・・・設定を反映させるためSSHを再起動
補足
SSH関連の設定は、viコマンドでsshd_configを開き編集します。
sshd_configの”#(シャープ)”は、コメントアウトを意味します。
●SSH接続で使用するポート番号
デフォルト設定ではSSHで使用されるポート番号は22番になっています。
このことは周知の事実ですので、セキュリティを高めるためにも変更しましょう(※後の項目で”SSH接続でのポート番号を変更する”を参照ください)。
●プロトコルバージョンの指定
デフォルト設定では、初めにプロトコル2を利用し、利用できない場合はプロトコル1を利用する設定になっています。プロトコル2の方が1よりも新しく暗号化も強固ですので、プロトコル2のみに変更します。
●rootユーザーでのSSH接続の禁止
rootユーザーでのSSH接続を禁止し、他ユーザーでログイン後、必要な場合のみrootにスイッチするようにします。
●RSA公開鍵認証の設定
RSA認証と公開鍵認証を許可し、認証に使われる公開鍵のファイルのパスを指定します(※公開鍵を使って認証するユーザーのホームディレクトリからのパスを記述します)。
公開鍵認証の導入に関しては、以前に公開済みの記事をご参照ください。
●パスワード認証を無効
公開鍵認証を導入した場合、よりセキュリティを高めるためパスワード認証を無効にします(※公開鍵認証での接続が確認できた場合のみパスワード認証を無効にしましょう。公開鍵認証を導入していないのに、パスワード認証を無効にしてしまうとSSHで接続できなくなってしまいますので注意してください)。
変更した内容を反映させるため、SSHを再起動します。
SSHでの接続速度を早くする
viコマンドでssh_configを編集
vi /etc/ssh/ssh_config・・・viでssh_configを開く #GSSAPI認証をしない GSSAPIAuthentication no #IPv4(inet)のみを使用 AddressFamily inet
viコマンドでsshd_configを編集
vi /etc/ssh/sshd_config・・・viでsshd_configを開く #IPアドレスのDNS逆引きをしない UseDNS no /etc/init.d/sshd restart・・・設定を反映させるためSSHを再起動
補足
●GSSAPI認証をしない
GSSAPI認証をしているため接続に時間がかかる場合、GSSAPI認証をしないように設定します。
●IPv4(inet)のみを使用
IPv6で接続(名前解決)しようとしているため接続に時間がかかる場合、IPv4(inet)のみで接続するように設定します。
●IPアドレスのDNS逆引きをしない
デフォルト設定では、IPアドレスからドメイン名を逆引してホスト名が正しく引けるかをチェックしているため、IPアドレスのDNS逆引きをしないように設定します。クライアントのIPアドレスがDNS経由で逆引きできない場合、問い合わせがタイムアウトになるまで待たされてしまうため、接続に時間がかかってしまいます。
変更した内容を反映させるため、SSHを再起動します。
SSH接続時のポート番号を変更する
viコマンドでsshd_configとiptablesを編集
vi /etc/ssh/sshd_config・・・viでsshd_configを開く #SSH接続で使用するポート番号 Port ○○○○○ vi /etc/sysconfig/iptables・・・viでiptablesを開く #ssh -A INPUT -m state --state NEW -m tcp -p tcp --dport ○○○○○ -j ACCEPT /etc/init.d/sshd restart・・・設定を反映させるためSSHを再起動 /etc/init.d/iptables restart・・・設定を反映させるためiptablesを再起動
補足
●SSH接続で使用するポート番号
デフォルトで設定されている22番以外で空いているものを設定します。
●SSH
iptablesに記述されているSSH接続に使用するポート番号をsshd_configで設定したもの(○○○○○と同じもの)に変更します。
再起動はSSH⇒iptablesの順で行いましょう(※順番を間違えると接続できなくなります)。
サービスの起動・停止
chkconfigコマンドでサービスの起動・停止設定
#起動リストの表示 chkconfig --list #指定したサービスを起動・停止 chkconfig [サービス名] on or off #指定したサービスの状態確認 chkconfig --list [サービス名] #ランレベル別に指定したサービスを起動・停止 chkconfig --level [ランレベル] [サービス名] on or off 例) chkconfig --level 345 sshd on sshをランレベル3・4・5で起動します。 #指定したサービスを追加 chkconfig --add [サービス名] #指定したサービスを削除 chkconfig --del [サービス名]
補足
●ランレベル別に指定したサービスを起動・停止
ランレベルは0~6まであり、ランレベルを指定せずにコマンドを実行した場合、ランレベル3・4・5でサービスが開始されます。
ランレベル0(システムの停止モード)
システムを停止する際に指定。
ランレベル1(シングルユーザーモード)
システムを1人で占有する際に指定。
ランレベル2(マルチユーザーモード)
システムを複数ユーザーが利用する際に指定。
ネットワークは起動しません。
ランレベル3(マルチユーザーモード)
システムを複数ユーザーが利用する際に指定(ログインはテキストベース)。
ランレベル4(カスタムモード)
起動するサービスを自由に設定可能。
ランレベル5(マルチユーザーモード)
システムを複数ユーザーが利用する際に指定(ログインはGUI ベース)。
ランレベル6(システムの再起動モード)
システムをリブートする際に指定。
関連記事(※当記事と関連性が高いと思われる記事)
.htaccessでよく使う設定
2011/12/22APCでPHPの処理を高速化
2012/06/12画像の直リンクを禁止する
2011/12/27Webサーバーに公開鍵認証を導入する
2011/12/30よく使うLinuxコマンドの覚え書き
2012/01/29おすすめ書籍・商品(※当記事と関連性が高いと思われる書籍・商品)