教えて!goo限定 1000名様に電子コミック1000円分が当たる!!

Linuxの頻繁なバージョンアップとセキュリティについて教えてください。

Linuxは3か月ごとに新たなバージョンがリリースされると聞きました。
このような場合、セキュリティ対策はどのように
並行してアップデートされるのでしょうか。


ありがとうございます。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

Linuxに代表されるオープンソースライセンスのソフトウェア(OSS)は


その特徴に、誰でも再配布ができるというものがあります。

もちろん、OSSにもいくつものライセンスがあり、それに従う必要はありますが
契約書を交わしたりする必要はありませんから、一口にLinuxと言っても
Linuxカーネル自体と、それを内包したいくつものLinux系OSが配布されています。


OSSの本質的な配布は、開発メーリングリストなどに投稿される修正や
開発者による大小のソースコードの変更が、連続的に配布されています。

これは、数種類ある、ソースコード管理システムを介して
インターネット上で、誰でも自由にソースコードを取得できるというものです。


ですから、bashやwgetのようなセキュリティホール発見の報があれば
すみやかに、ソースコードツリーに修正が施されたり
あるいは、有志の開発者が、開発メーリングリストに暫定的の修正パッチを投稿し
これを、メーリングリストに参加している人が、自分で適用してシステムを再構成することもできます。


ただ、実際にそうやっている人は少数派で、多くはLinuxカーネルとしての
三ヶ月ごとの公式リリースを、更新のきっかけとするか

あるいは、Linux系OSの配布元が、再構成して配布する
アップデート版のカーネルパッケージのダウンロードを利用します。

この場合は、配布元が緊急のセキュリティパッチなどを適用して
随時、安全なカーネルを提供できるように心がけられています。

bashやwgetの事例でも、2,3日の間に報道が広まるころには
自動アップデートでパッケージが更新されていたりするものです。
企業のセキュリティ担当者でもなければ、更新の不安に悩まされることは少ないはずです。


Linuxカーネルの全貌を理解することは簡単ではありません。
私も、ほとんどを理解していません。

ただ、Linuxカーネルの運用は
公式のLinuxカーネルのリリースと
それを受けたディストリビューションごとの変更
その流れを超越して、緊急的に行われるセキュリティパッチ適用という
三種類の要素から成立していると考えられます。


たとえばUbuntuのようなディストリビューションでは
Linux系OSとしてのリリース時に、採用するカーネルバージョンを定めます。
そして、そのサポート期間の間に行われる更新において
同バージョンのカーネルが使い続けられます。

ですから、特定バージョンのカーネルでなければ
動作に問題があるようなハードウェアでは
自動アップデートで動かなくなるようなことは通常ありません。

反面、それだけではセキュリティの問題が生じるので
新しく発見されたセキュリティホールに対しては
個別に修正を施して、安全なカーネルとして自動アップデートで提供します。

こういった面倒な仕事を配布元が行なっているおかげで
Linux系OSは運用しやすくなってもいますし
DebianからUbuntuが派生し、UbuntuからMintが派生した場合のように
上流の修正を、下流でとりいれて省力化したり
逆に、下流で行われた作業成果を、上流に戻して協力することもあります。


また、カーネルツリーに含まれるデバイスドライバー群の都合がありますから
Ubuntuのように、通常サポート版と長期サポート版を提供している場合には
長期サポート版が、時代遅れになることを避けるために
たとえば、Ubuntu12.04LTSに、Ubuntu14.04LTS用のカーネルを流用できる制度もあります。

たとえば、2012年には存在しなかったハードウェアのドライバーは
12.04LTSには無い可能性が高いのですが
14.04LTSのカーネルを流用できれば、ドライバーが含まれているような場合があります。


MicrosoftがVista,7,8.1のセキュリティアップデートを
同時進行で継続しているように

Linux系OSでも、カーネルなどのバージョンアップと
それに対してのセキュリティアップデートは
複数系統、同時進行で継続されているわけです。

ただ、WindowsならMicrosoft
OSXならAppleが自社内ですべてまかなう必要があって
やたらと古いOSをサポートし続けることは困難です。

対して、Linux系OSでは、それを複数系統を
いくつもの組織が「自分たちが必要なところだけやれば良い」
「それで、よそでも必要なら自由に流用してくれ」
というOSS特有の文化の元、古いハードウェアを活かしやすい性質をも生み出しているわけです。


もちろん、理論上は、とっくにサポートの切れた古いバージョンのLinux系OSを
独自にセキュリティホールの修正を施しながら、長く使い続けることもできるんですよ。

実際に、半年ごとリリースで長期サポート版も無いFedora8を採用して
それをサポート切れ後も3,4年使い続けた大手SNSの例が報じられたことがあります。

当然、セキュリティ対応は、独自で行なっていたとのことです。
http://it.slashdot.jp/story/12/12/27/0949241
    • good
    • 0
この回答へのお礼

Microsoftのお話からつながりました!

丁寧なご回答どうもありがとうございました。

お礼日時:2014/11/03 14:10

>旧kernelを使用していれば、旧kernelも


>それを使用しているdistributionも、Win
>dowsのようにサポート期間が終了するまで
>はアップグレードの影響を受けずに使用でき
>ますか。
Linuxで使われている各プログラムは其々別の
開発グループ(Kernelもその内の一つ)の成果
が使われていて、バージョンアップのタイミ
ングも異なっています。
#そもそも各ディストリビュータのバージョン
#アップのタイミングも違います。
各ディストリビュータはそれらの中から、どの
時点のバージョンを使うかを取捨選択し、動作
確認した後にユーザーに提供します。
個別の開発グループでバージョンアップが行わ
れても、変更内容がディストリビューションの
互換性等に影響が有るようなら、ディストリビ
ュータでは、そのバージョンは採用せずに次回
以降でのLinuxバージョンでの採用候補とします。
    • good
    • 0
この回答へのお礼

ご回答頂きどうもありがとうございました。

前回頂いたご回答を参考に実践してみます。

お礼日時:2014/11/03 14:13

>・・ということは、もし旧kernelを使用していれば、旧kernelもそれを使用しているdistributionも、Windowsのようにサポート期間が終了するまではアップグレードの影響を受けずに使用できますか。



「Windowsのようにサポート期間が終了するまでは」の「サポート期間」は何のサポート期間の話でしょう?
カーネル?ディストリビューション?
何らかのディストリビューションを使用している限りカーネルのサポート期間を気にする事はないと思いますが。
カーネルの約3ヶ月毎のバージョンアップはWindowsでいえばWindowsUpdateで更新される内容みたいなものですし。
またディストリビューションで使用されてるカーネルは、https://www.kernel.org/ で公開されている(約3ヶ月毎の更新はここで公開されてるものの話)そのままではなくディストリビューション独自の手が入ってる場合もあります。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

そうですね。そんなに気にすることもないのかもしれませんね。
オープンソースということでちょっと複雑に考えていたのだと思います。

お礼日時:2014/11/03 14:04

>Linuxは3か月ごとに新たなバージョンがリリースされる


最新の技術を積極的に取り込み、その成果
を検証実験する事を目的としているFedora
Linuxでも概ね6ヶ月程度です。
3か月ごとというのは聞いた事がありません。
#正式配布前のβテスト版ならありそうですが。

サーバー目的として長期の運用を目的とする
CentOSはメンテナンス更新期限が10年程度で
その間年2~4回のマイナーバージョンアップ
が行われます。
Debianの場合は2年程度でバージョンアップ
が行われます。

新バージョンがリリースされた時のインスト
ールは、Windowsと同様にハードディスクを
フォーマットしなおすか空き領域を確保して
新規インストールする場合と、既存システム
設定やデータを残した状態から追加・上書き
インストールする場合とが有ります。
#バージョンアップで変更部分が多い時には
#上書きインストールできない事も有ります。

>セキュリティ対策はどのように並行して
>アップデートされるのでしょうか。
ネットワークを利用したインストールの場合
には、ディストリビュータ(各Linuxの配布元)
上にある最新版がインストールされます。
CD/DVDを使用したインストールの場合はイン
ストール後にアップデートする事で最新版に
します。
    • good
    • 0

その3ヶ月毎というのはlinuxのカーネルの話では?

この回答への補足

先ほど調べてみましたらそのようです。
・・ということは、もし旧kernelを使用していれば、旧kernelもそれを使用しているdistributionも、Windowsのようにサポート期間が終了するまではアップグレードの影響を受けずに使用できますか。

補足日時:2014/11/02 09:41
    • good
    • 0

アップデートされる都度、セキュリティが強化されます。


カーネルやアプリケーションのバージョンアップ、バグの修正、などなどです。

>Linuxは3か月ごとに新たなバージョンがリリースされると聞きました。
 アップデートを纏めて、サービスパックの様な形で提供してくれます、
 多分、この事だと思います。
 CentOS 6.0⇒CentOS 6.01⇒CentOS 6.02 の様に枝番が付加されます。

6ヶ月毎にアップグレード版がリリースされる、Linux OSが多いです。
Ubuntu14.04 が2014年4月リリース、Ubuntu14.10 が2014年10月にリリースされました。

サポート期間は9ヶ月、18ヶ月、3年、5年、その他。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございました。

頂いたご回答をもとにディストリビューションについても調べてみました。
インストールして実践してみますね!

お礼日時:2014/11/03 14:09

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qredhatのlinuxのバージョンアップについて

redhat社のカーネル2.4.9-e57(update6)にバージョンナップしようと思っています。

http://www.jp.redhat.com/support/errata/RHSA/RHSA-2004-505J.html
のリンク先を参照してどういう風に修正されているかはわかったのですが、それによってどのような影響がでるか、どこをどのように変更をしたのか、というのがわかりません。

どなたかupdateについての詳しい変更内容や影響など知っている方がいましたら教えていただけませんか?また詳しく書いてあるサイトなどしっておりましたら教えていただけませんか?

よろしくお願いします。

Aベストアンサー

アップデート前にできます。

QCentOSのセキュリティパッチ適用状況

CentOSのセキュリティパッチ適用状況はどのファイルに書かれているのでしょうか。
また、どのようなコマンドを使えばそれを解析できるでしょうか。

各サーバの構成情報を把握するために、定期的にコマンドを実施、セキュリティパッチ適用状況を確認することが目的です。

Aベストアンサー

rpm -qa
で、とりあえずバージョン番号の一覧は出てくる。

どういったパッチが当てられているのかを見るには、ソースのrpm(src.rpm)の中にあるspecファイルを見るのが一番詳しく見れると思います。

でも、サーバにインストールされたパッケージ全てのパッチを確認するのは、かなり骨の折れる作業だと思いますが…

確か、Redhatのサイトで、ある程度パッチの状況とかは情報として掲載されていたりしますが…

一体、どの程度のことをされたいのでしょうか?
どういった情報さえあれば良いのでしょうか?
セキュリティーパッチであれば、CVE番号とかがわかればOKっていうレベル?
それとも、どういったセキュリティーホールを、どのように埋めたかとか?

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)

Qレッドハットのバージョン確認方法

自分のサーバで使用しているREDHATのバージョン確認はどうすればいいのでしょうか?

more /etc/issue
とやっても英文しか出てきませんでした。

uname -all
でもカーネルのバージョンは出るのですが、REDHATのバージョンは出ませんでした。

Aベストアンサー

> more /etc/issue
> とやっても英文しか出てきませんでした。

その英文にはRedHatのバージョンは書いてなかったのですか?
書いていなかったとしたら、管理者により編集されている可能性
がありますね。

cat /etc/redhat-release

ではいかがでしょう?
やっぱり英文ですけど。

rpm -q redhat-release

でもいいかも

QRedhat Linux のバージョンアップ方法

会社に Redhat Linux のマシンが結構な台数あるのですが、バージョンが 5.2, 6.2, 7.0, 7.1, 7.2, 7.3, 8, 9 とバラバラで、Errata 対応作業にいつも閉口しています。5.2, 6.2 あたりはもう無理としても、7.0 以降のバージョンに関して、再インストールではなく、そのままの状態でバージョンアップ方法をお教えいただけないでしょうか?

# RHN とかで一発更新、とかできるんですか?

私は FreeBSD 使いなので、「FreeBSD なら cvsup & make world で終わりなんだけどなぁ」と思っちゃうのですが、同時に「FreeBSD でできるんだから、Redhat Linux でできないことはないだろう」とも思っております。

よろしくお願いします。

Aベストアンサー

> Redhat Network って、Redhat Linux 8 -> Redhat
> Linux 9 のようなアップデートもできるんでしょうか?

できません.

それだけではなんなので,テスト環境で apt を用いたアップグレードを試してみました.
ディストリビューションのアップグレードの場合,先に書いた apt-get upgrade では無くて,apt-get dist-upgrade が正しいです.

◎手順
aptをrpmでインストールすると,/etc/apt/ に sources.lstというファイルができます.例えばRedHat-7.3用のパッケージをインストールした場合 RedHat-7.3用のリポジトリのみが有効にされていますので,RedHat-9までのrpmのリポジトリ(rpm-srcは不要)を有効にします.そして以下の順にコマンドを実行.

(1) 依存関係データベースを更新

 # apt-get update

(2) アップグレード

 # apt-get dist-upgrade

(2)を実行すると,アップグレードされるもの,置き換えられるもの,新規にインストールされるもの,削除されるものについてのサマリーがでますので,このメッセージを注意して読んで,良ければ Y と答えてください.
依存関係が解決できずに重要なパッケージが削除されることがありますので注意が必要です.逆に,ここで削除されるパッケージがほとんどなければ,問題ないと判断して良いでしょう.

Y と答えれば,ダウンロード及びアップグレードが開始されます.また N で中止できます.

各種設定ファイルはhogehoge.rpmsave にバックアップされたり,hogehoge.rpmnewという名前で作成されたりします.
アップグレード中にこれらのメッセージがでるので,ログは tee で分けてファイルにリダイレクトしておいた方がいいでしょう.

また,カーネルはアップグレードされないので,最新のrpmをダウンロードして rpm -Uvh すれば良いでしょう.

手元では,それぞれ RH6.2, RH7.3, RH8.0 から RH9へのアップグレードを試しましたが,7.3, 8.0 では問題なくRH9になりました.予想どおり,RH6.2は厳しいようです.RH7.0-RH7.2の環境は手元に無いので悪しからず.

ちなみに,aptを使えば日常のメンテナンスは

# apt-get update
# apt-get upgrade

でおしまいです.

> Redhat Network って、Redhat Linux 8 -> Redhat
> Linux 9 のようなアップデートもできるんでしょうか?

できません.

それだけではなんなので,テスト環境で apt を用いたアップグレードを試してみました.
ディストリビューションのアップグレードの場合,先に書いた apt-get upgrade では無くて,apt-get dist-upgrade が正しいです.

◎手順
aptをrpmでインストールすると,/etc/apt/ に sources.lstというファイルができます.例えばRedHat-7.3用のパッケージをインストールした場合 RedHat-7....続きを読む

Q展開できません・・

makeのpackageをダウンロードし、gunzipで解凍しようとすると、

invalid compressed data--crc error

とメッセージがでて解凍できません。
エラーからしてダウンロードしたpackageファイルが悪いように思えるのですが、どうなのでしょうか?

packageをダウンロードしたのは以下のサイトです。
http://sunsite.sut.ac.jp/sun/solaris-binaries/sparc/

この場合の対処はどのようにしたらいいのでしょうか?
よろしくお願い致します。

Aベストアンサー

パッケージが普通にgzip圧縮されているだけだと思います。
まずgzipが使えるようにしなければなりません。
すでにgzipがインストールされていれば、
gzip -d GNUmake.3.80.SPARC.32bit.Solaris.8.pkg.tgz
でよいと思いますし、インストールされていないのであれば、参考URLから該当する環境用のバイナリをダウンロードしてください。
gzipはSolarisのパッケージが無圧縮で提供されています。

参考URL:http://www.sunfreeware.com/

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

Q「輩(やから)」ってどういう意味ですか?

テレビやラジオで関西の芸人さんが「ヤカラや」って言ってるのを聞いたことがあるのですが

意味が分かる方、教えてください。

関西方面の言葉(大阪弁)なのでしょうか?

Aベストアンサー

大阪出身のものです.
疑問に思われたということは,一般に使われている「・・・する人たち」というような意味ではなく,いきなり一つの名詞のようにして「やから」が出てきたのではないですか?
もしそうなら,それは「やくざや不良など,理不尽な言い分を押し付ける人」という意味に使われているものです.特にやくざ限定というわけではなく,街のおっさんでも,変な因縁をつけてきたら,やからです.
また,「やかられる」(=因縁をつけられる,からまれる)などという言葉もあります.

Qミドルウエアの具体例を教えてください。

初級シスアドで、OSとアプリケーションソフトの中間に位置するものとしてミドルウエアがあり
 ・データベース管理システム(DBMS)
 ・通信管理システム(LAN制御を含む)
 ・ソフトウエア開発支援ツール
 ・EUCツール
 ・運用管理ツール
説明されています。なんとなく具体例が推測できるものもありますし、ぜんぜんイメージできないものもあります。
そこで、推測が間違っていないか確認したいのと、イメージできないものの場合具体例をあげていただければ助かります。

(1) データベース管理システム(DBMS)
多分、OracleやSQL-SeaverやMySQLのようなものだと思うのですが。
この推測はあってますか?

(2) 通信管理システム(LAN制御を含む)
プラットホームや使用アプリが違う場合のデータのやり取りを行うようなもの・・・というイメージがあります。使用アプリの場合はODBCドライバみたいなものの様な(全然自信ない)、プラットホームとなると実例が浮かんできません。

(3) ソフトウエア開発支援ツール
なんでしょう?プログラミングジェネレータのことでしょうか。
EXCELマクロの自動記録機能なんてのもこれに入るのでしょうか。ひょっとするとEXCELマクロは、次のEUCツールでしょうか?

(4) EUCツール
AccessとかEXCELとかでしょうか。イメージ沸きません。

(5) 運用管理ツール
う~ん・・・なんでしょう?

補足:IMEとかもミドルウエアと考えてよいのだろうか? WEBで調べるとワープロや表計算もミドルウエアと定義しているものもあります。それは少し拡張解釈なような気がします。

いずれにせよ、すっきりした定義と具体例を書いてあるものを見つけられないのです。

宜しくお願いします。

初級シスアドで、OSとアプリケーションソフトの中間に位置するものとしてミドルウエアがあり
 ・データベース管理システム(DBMS)
 ・通信管理システム(LAN制御を含む)
 ・ソフトウエア開発支援ツール
 ・EUCツール
 ・運用管理ツール
説明されています。なんとなく具体例が推測できるものもありますし、ぜんぜんイメージできないものもあります。
そこで、推測が間違っていないか確認したいのと、イメージできないものの場合具体例をあげていただければ助かります。

(1) データベース管理システ...続きを読む

Aベストアンサー

(1) データベース管理システム(DBMS):お書きになられた通りです。
(2) 通信管理システム(LAN制御を含む:TCP/IPドライバー等通信制御を行うアプリケーションです。ファームウェアも該当するでしょう。通常ユーザが操作する類のアプリケーションではありません。
(3) ソフトウエア開発支援ツール:VisualBASIC、C言語、Perl等、亜ぷロケーションを開発するツール、プログラミング言語と言えば分かり易いでしょうか。
(4)EUCツール:エンドユーザが使用するアプリケーションです。
(5)運用管理ツール:クライアントPCの管理ツール、DBシステムの管理ツール、WEB/メールのサーバ管理等、運用機器を管理するツールです。最近では情報漏えいを防止する目的のツールが多数出ています。

Qディレクトリの中身(ファイル)をコピーするコマンドは?(fedora)

こんにちは。
fedora core5を使っていてCPコマンドで困りました。
cp -R /home/aaa /home/bbb
と入力して、aaaというディレクトリの中身のファイルを全てbbbというディレクトリへコピーしようとしたのですが、これではaaaというディレクトリごとbbbへコピーされてしまい、/home/bbb/aaa みたいになってしまいます。

指定したディレクトリの中のファイルを全て別ディレクトリへコピーするときはどのように指定すればよいのでしょうか?

Aベストアンサー

カレントディレクトリが/homeとします。
cp ./aaa/* ./bbb/
とすればいいと思います。ドットファイルまでコピーしてくれるかどうかは自信がありません。manを読んで下さい。


人気Q&Aランキング