!!!細々したこと http://d.hatena.ne.jp/bluepapa32/20101108/1289187846 !Locale の変更 $ date Thu Nov 4 14:58:50 UTC 2010 UTC になっている。 $ sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime $ date Thu Nov 4 23:59:00 JST 2010 JST になった。 !ntpd の設定 時刻がずれると色々問題なので、ntp を設定する yum install ntp /etc/init.d/ntpd start chkconfig --level 2345 ntpd on !umask vi .bashrc umask 022 !su、sudo の設定 vi /etc/pam.d/su auth required pam_wheel.so use_uid コメントイン。 visudo %wheel ALL=(ALL) NOPASSWD: ALL secure_path に /usr/local/bin を追加しても良いかも。 管理者ユーザだけグループ追加 usermod -a -G wheel ユーザ !!!スワップ領域 http://cloudstory.in/2012/02/adding-swap-space-to-amazon-ec2-linux-micro-instance-to-increase-the-performance/ http://x68000.q-e-d.net/~68user/unix/pickup?dd 標準のままだとスワップ領域を持っていないこともある。 なくてもなんとかなるけど、作りたい時はスワップ領域をイメージファイルとして作成する !スワップ領域のイメージファイル作成 dd if=/dev/zero of=/swapfile bs=1M count=1024 !スワップ領域の初期化 mkswap /swapfile !スワップ領域の有効化 swapon /swapfile もし /etc/fstab を編集後なら swapon -a でも良い。 !スワップ領域の確認 swapon -s !/etc/fstab: の編集 /swapfile swap swap defaults 0 0 !!!SSH !!パスワードログインの禁止 PasswordAuthentication yes を PasswordAuthentication no に修正 !!!ダイナミック DNS http://b.n-at.me/archives/182 http://shikichi.ddo.jp/dice_install.html http://www.jitaku-server.net/domain_dice.html !!DiCE の設定 http://ddo.jp に登録 http://www.hi-ho.ne.jp/yoshihiro_e/dice/linux.html からダウンロード 解凍して適当なディレクトリに移動。(/usr/local/lib/DiCE とする) cd /usr/local/lib/DiCE ./diced | nkf -uw で起動する。 EUC で出力してくるので、文字化け対策のために nkf する。 もし ld-linux.so.2 不足でエラーが出る場合は yum install glibc.i686 でライブラリ追加。 =-=-=- DiCE DynamicDNS Client -=-=-= Version 0.19 for Japanese Copyright(c) 2001 sarad :? ? でヘルプ。 setupでDiCEの環境設定をします。 :setup IPアドレスの検出方法を指定してください (0) 自動検出 (1) ローカルのネットワークアダプタから検出 (2) 外部のスクリプトから検出 <現在:0> (N)変更しない (P)戻る >n ------------------------------------------------- プライベートIPアドレスも検出対象ですか? (Y/N) <現在:いいえ> (P)戻る >n ------------------------------------------------- IPアドレスの検出をテストしますか? (Y/N) (P)戻る >y 検出IPアドレス>xxx.xxx.xxx.xxx ------------------------------------------------- IPアドレスの検出をテストしますか? (Y/N) (P)戻る >n ------------------------------------------------- IPアドレスをチェックする間隔を指定してください(分) 設定可能範囲は5分以上です <現在:10> (N)変更しない (P)戻る >n ================================================= DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります 前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して ください(分) 設定可能範囲は10分から1440分です <現在:60> (N)変更しない (P)戻る >30 ================================================= 設定を保存しますか? (Y/N) (P)戻る >y 設定を保存しました ================================================= add でイベント追加 :add 新しくイベントを追加します DynamicDNSサービス名を入力してください "?"で対応しているサービスを一覧表示します (P)戻る >?     <--対応しているサービスを検索 ZENNO.COM livedoor MyDNS.JP pcc.jp JPN.ch MyIP.US @nifty StaticCling MyServer ddns.ca p2p did.expoze.com Dynamx WebReactor unicc Earth DNS2Go EveryDNS Now.nu dynDNS.it onamae.com DION ODN ysdn ddo.jp Netservers todd USA cjb Dyn.ee BIGLOBE dnip my-domain ZoneEdit ZiVE yi theBBS SelfHOsT No-IP nicolas miniDNS Microtech instat ieServer HAMMERNODE GetmyIP Dynup Dynu dyns DynDSL DynDNSdk dyndns DtDNS dnsQ dhs DDNS.nu cheapnet changeIP ARTofDNS VALUEDOMAIN ODS JSPEED IPDYN DnsTokyo ================================================= >ddo.jp     <--今回はddo.jpを使用 ------------------------------------------------- << Dynamic DO!.jp >> URL: http://ddo.jp/ *** 情報 *** ユーザー名の入力は不要です 独自ドメインの場合はドメイン名を”ホスト”の所へ入力してください ================================================= ドメイン名を入力してください "?"でドメイン一覧を表示します (P)戻る >ddo.jp   <--取得したドメインが***.ddo.jpの場合(***を除いた部分) ================================================= ホスト名を入力してください (P)戻る >***    <--取得したドメインが***.ddo.jpの場合(ddo.jpを除いた部分) ================================================= ログインユーザ名を入力してください (P)戻る >***    <--取得したドメインが***.ddo.jpの場合(ddo.jpを除いた部分) ================================================= ログインパスワードを入力してください (P)戻る >??????   <--登録時に設定したパスワード ================================================= 登録するIPアドレスを入力してください 空白にすると現在のIPアドレスを自動検出します (P)戻る >       <--空白のまま [enter] このイベントに題名を付けてください (P)戻る >***.ddo.jpの更新      <--わかりやすい名前を設定 ================================================= このイベントを実行するスケジュールを設定します ------------------------------------------------- 実行する頻度を指定してください (番号入力) (0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回 (4)その他の周期 (5)IPアドレス変化時 (6)起動時 (N)変更しない (P)戻る >5     <--サーバーに負荷をかけない ------------------------------------------------- IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると アカウントを削除されてしまうことがあります IPアドレスの変化が無い時に実行する間隔を指定してください (0)7日毎 (1)14日毎 (2)21日毎 (3)28日毎 (4)35日毎 (5)56日毎 (6)84日毎 (N)変更しない (P)戻る >0     <--ドメインが削除されないよう短めに設定 ================================================= 詳細オプションを設定します ------------------------------------------------- [ サービスタイプ ] (0)無料 (1)有料 番号>0 ------------------------------------------------- [ SSL ] (0)使用する (1)使用しない 番号>1 ------------------------------------------------- [ オフライン ] (0)No (1)Yes 番号>0 ================================================= このイベントを有効にしますか? (Y/N) (イベントの有効/無効は"EN/DIS"コマンドで切替えられます) >y     <--イベントを有効にする ================================================= イベントを保存しますか? (Y/N) (イベントの有効/無効は"EN/DIS"コマンドで切替えられます) >y     <--イベントを保存する !!サービス登録 # /etc/init.d/ に移動 cd /etc/init.d/ # 起動スクリプトの作成 vi diced #!/bin/sh # # chkconfig: 35 99 99 # description: DiCE # # diced: /usr/local/bin/DiCE/diced diced="/usr/local/bin/DiCE/diced" [ -f "$diced" ] || exit 0 case "$1" in start) # Start daemons. if [ ! -f /var/lock/diced ] ; then echo "Starting DiCE." "$diced" -d -l > /dev/null touch /var/lock/diced else echo "DiCE is Already Started." fi ;; stop) # Stop daemons. echo "Shutting down DiCE." PID=`/bin/ps -aefw | grep "$diced" | awk '{print $2}'` if [ ! -z "$PID" ] ; then /bin/kill ${PID} 1> /dev/null 2>&1 fi rm -f /var/lock/diced ;; *) echo "Usage: /etc/init.d/diced {start|stop}" exit 1 esac exit 0 # 登録する chkconfig --add diced # 確認する chkconfig --list | grep diced # パーミッションの変更 chmod 754 diced # サービススタート service diced start !!ログ確認 nkf -Ew /usr/local/lib/DiCE/log/events.log !!cron 登録 普通は必要ないと思うのだけど、一週間に一度の更新が正常に動作していないことがある。 とりあえず、cron で一週間に一度の更新をする。 sudo crontab -e 00 02 * * 5 /usr/local/lib/DiCE/diced -e 0 > /dev/null 毎週金曜日の2:00にIP更新をする。 !!!Apache !!インストール yum install httpd chkconfig --level 2345 httpd on !!設定 !サーバの設定 vi /etc/httpd/conf/httpd.conf KeepAlive On ← onが良いような気がするが、 off のままで運用してみる。 ServerTokens Prod ← 余計な情報を出さない ServerSignature Off ← 余計な情報を出さない メモリを食いつぶさないようにプロセス数を制御する http://www.happyquality.com/2012/02/01/1905.htm http://9ensan.com/blog/server/sakura-vps-httpd-confi/ StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 32 MaxClients 32 MaxRequestsPerChild 100 ちなみに、httpd が prefork なのか worker なのかは httpd -V | grep MPM でわかる !public_html の設定 UserDir public_html ← public_html を有効 AllowOverride FileInfo AuthConfig Limit Options Options MultiViews SymLinksIfOwnerMatch IncludesNoExec AllowOverride All Options All は避けたい。ディレクティブの詳細は http://httpd.apache.org/docs/2.2/ja/mod/core.html !Welcome 非表示 vi /etc/httpd/conf.d/welcome.conf Options -Indexes # ErrorDocument 403 /error/noindex.html !!CGI を使う yum install perl yum install php .htaccess Options +ExecCGI -Indexes AddHandler cgi-script cgi pl perl の実行権限は suExec によりホーム以下の場合は各ユーザの権限で実行される。 php での実行は、apache ユーザで実行されるので注意。 所有者をapacheにするか、sgid と apache の umask の設定で対処する !!!vsftpd yum -y install vsftpd chkconfig --level 2345 vsfptd on vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO  ← anonymousユーザ(匿名ユーザ)のログイン禁止 chroot_local_user=YES ← デフォルトでホームディレクトリより上層へのアクセスを禁止する userlist_deny=NO ← user_list に書かれているユーザのみを許可する use_localtime=YES ← タイムスタンプ時間を日本時間にする pasv_addr_resolve=YES ← PASVモード接続先IPアドレスをホスト名から取得する pasv_address=hogehoge.ddo.jp ← PASVモード接続先IPアドレスが牽けるホスト名※ pasv_min_port=60000 ← PASVモード接続時の最小ポート番号 pasv_max_port=60030 ← PASVモード接続時の最大ポート番号 force_dot_files=YES ← .htaccess のような隠しファイルも表示する この場合は 60000 〜 60030 も Security Group の設定で通信を許可する !!!メール送信設定 sendmail コマンドで外部へメールを送る。 ただし、メールサーバは建てない。 なので、他のメールサーバにリレーしてもらう。 具体的な方法は、[[sendmailコマンドのsmtpサーバの設定]]参照。 !!!バックアップジョブ EC2 API tools を使ってcronでスナップショットを取得してバックアップを取る。 !!EC2 API tools をインストールする [[Amazon EC2 に EC2 API tools をインストール]] !!スナップショットによるバックアップ [[Amazon EC2 を snapshot でバックアップ]] !!!メンテナンス記録 !!2014/10/25 中国を中心に大量アクセスがあったため、日本国内からのみアクセス可能とした !流したスクリプト #!/bin/sh IPLIST=cidr.txt # 初期化をする iptables -F # Flush iptables -X # Reset #iptables -P INPUT DROP # 受信はすべて破棄 iptables -P OUTPUT ACCEPT # 送信はすべて許可 iptables -P FORWARD DROP # 通過はすべて破棄 # サーバーから接続を開始した場合の応答を許可する。 iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -s 127.0.0.1 -j ACCEPT if [ -z "$1" ]; then date=`date -d '1 day ago' +%Y%m%d` else date="$1" fi if [ -e $IPLIST ]; then mv $IPLIST "${IPLIST}_${date}" fi # 最新のIPリストを取得する wget http://nami.jp/ipv4bycc/$IPLIST.gz gunzip -d $IPLIST.gz # ダウンロードしてきたIPリストで日本のIPだけを許可するようにする sed -n 's/^JP\t//p' $IPLIST | while read ipaddress; do iptables -A INPUT -s $ipaddress -j ACCEPT done # Amazon EC2のAsia Pacific (Tokyo) に割り振られているIPレンジを許可する iptables -A INPUT -s 46.51.224.0/19 -j ACCEPT iptables -A INPUT -s 54.248.0.0/15 -j ACCEPT iptables -A INPUT -s 103.4.8.0/21 -j ACCEPT iptables -A INPUT -s 175.41.192.0/18 -j ACCEPT iptables -A INPUT -s 176.34.0.0/18 -j ACCEPT iptables -A INPUT -s 176.32.64.0/19 -j ACCEPT iptables -A INPUT -s 54.250.0.0/16 -j ACCEPT # iptablesによってDROPされたアクセスのログを取る #iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT DROP] : ' iptables -P INPUT DROP # 受信はすべて破棄 #設定を保存する場合はコメントを外す #/etc/init.d/iptables save {{category2 仮想化}}