セキュリティについて

数日前どこぞのスマホ決済の不正利用のニュースを
観ていて、記者会見に応じた社長の無知さ加減に
呆れるのを通り越して怒りさえ覚えました。
決済会社の社長がセキュリティのセの字も知らない。。
すぐお辞めになったほうがよろしいかと。

拙生は拙宅でサーバーを2台運用しています。
他にクライアント様に収め管理を任せられている
ものもあります。
それらは果たしてお辞めになったほうが良いなんて
言い切れるだけのセキュリティが確保出来ているのか。。
そんなんでセキュリティについて色々考えてみました。
ボーっと考えただけなのでドンドンとっ散らかって
いくと思われますのでご勘弁を。。。

■ いかに管理者権限を乗っ取られないか

乗っ取られないのが一番ですが万が一乗っ取られた時
被害を最小限に食い止めるためには、クラッカーに
管理者権限を与えないことが大事です。

ubuntuはWindowsよりセキュリティは高いの?
という質問はよく受けます。
正直最近は99%Windowsを使わないので浦島太郎状態
になっていて、比較が出来ないのですよ。@トホホ
しかし昔々にWindowsをメインOSとして使用していた頃
ディフォルトでAdministrator(管理者)として
ログインが出来るようになっていた記憶があります。
その状態で乗っ取られると、クラッカーは管理者権限で
ほぼナンでもできちゃいます。
最近はLinuxよりセキュリティが甘いと言われていた
WindowsもLinuxに近づいてきているようで、ディフォルト
ではAdministratorでのログインは出来ないように
なっていますのでちょっと安心ですね。

拙宅サーバーのCentOSやメインOSのubuntuはLinux
デストロですが、ディフォルトでubuntuはWindowsで言う
Administrator相当するrootではログインできません。
CentOSはGUIでは出来ませんがCUIでは出来てしまいます。
インストール時やインストール直後に管理者権限が必要な
作業が多いので楽チンなのですが、それらが終わって
インターネット上からリモート出来るようにする前に
rootログインは禁止するか、拙生のように理由があって
rootのログインが必須の場合はパスワード認証はやめて
SSHの公開鍵認証でしかログインできないようにします。

rootでは普段の作業を行わないということが鉄則です。
システムをいじるときにroot権限が必要な場合などは、
そのコマンドを実行する時にのみ1回だけroot権限を
得ることができる仕組みです。
もちろん誰もがroot権限を使えるということではなく、
許可するユーザーは設定により限定されています。
もし悪意のある外部の人間がコンピュータを乗っ取り
それを踏み台にして他のコンピュータを攻撃したり
スパムメールをばらまこうとした場合、乗っとっても
rootになれない限り大したことは出来ません。

Windows10で見てみると、管理者権限が必要なときは
ダイヤログでこの作業は管理者権限が必要だけど
本当にやる?と尋ねてきますよね。
ここで気になるのはubuntuだとユーザーパスワードで
root権限を得るのですが、Windowsはクリックするだけで
管理者権限が得られてしまいます。
これってどぉなん?って気もしますが。。。

ところで・・・
いずれも設定によりroot・Adminisuratorのログインが
できるようにすることは出来ます。
ubuntuではディフォルトではrootのパスワードが設定
されておらずアカウントはロックされています。
ターミナルなどで一時的にroot権限が必要なコマンドを
実行したいときは
$ sudo コマンド
でパスワードを尋ねられますので、ユーザーパスワードで
コマンドを実行します。
勿論前述のとおり誰もがroot権限を得られるわけではなく、
登録してあるユーザーに限定されています。
1回のみのroot権限なので、作業によってはsudoを頭に
付すことの連続があり、煩わしい場合は
$ sudo su –
というコマンドでrootとしてのログイン状態になり
プロンプトを切り替えておけるので、sudoが省けますが
セキュリティに厳密な方はそれが気に入らないようです。
簡便性か強固なセキュリティか・・・悩ましいところですね。

ディフォルトではないrootのパスワードを設定すると
rootアカウントのロックが解除されrootでのログインが
可能になるという手もあります。
rootのロック解除によりデスクトップ環境においても
rootでログインできるようにすることができますが、
どんどんセキュリティが甘くなりますので
止めておきましょうね。w
安易に試されては困るのでやり方を載せるのはやめて
おきます。。ってあちこちに書いてありますけど。(笑

ちなみにroot権限で実行するためのsudoを使えるユーザーの
登録ですが、最初はインストール時に作成したユーザーのみが
登録されます。(システムログも登録されてます。)
何かの理由で追加したい場合は
/etc/pam.d/su

auth required pam_wheel.so group=XXX
とし
XXXグループに追加したいユーザーを登録しておきます。
拙生はサーバーもパソも追加はしておらず、rootのパスワードも
設定しておりませんので比較的セキュアです。(笑

Windows10では
スタートを右クリック→コンピュータの設定から
ローカル ユーザーとグループ→ユーザー を辿り
Administratorをダブルクリック でプロパティの
アカウントを無効にする のチェックを外せば
Administratorでログインできるようになりますが
こちらもまったくお薦めしません。
おっとこっちはやり方書いちゃいました。^^;;;

■ セキュアOSの所以

万が一感染した場合でも、情報が持ち出されたり、他の
コンピュータへの攻撃の踏み台になったりしにくいような
機能は他にも入っています。
Windowsにこのような仕組みがあるかは知りませんが
ubuntuにはセキュアOSとしての機能としてAppArmorが
2008年から採用されています。
AppArmorは詳細を説明しないと異論が噴出しそうですが、
3日書い続けて説明しきれそうにないのであえて簡単に。(笑

簡単説明
AppArmorにはプロファイルと呼ばれるアプリケーションに
適用される設定があり、プロファイルに従ってアクセスを
アプリごとに制限できる仕組みなのです。

これでも難しいというかたのために。。。

簡単説明その2
AppArmorはソフトウェアが本来の動きをしない場合に
動作をさせない機能と言えます。
例えばブラウザからパスワードを格納してあるファイルに
アクセスしようとする、とか画像ファイルを開こうとすると
メールを送信しようとする等々。。。

サーバーのCentOSにはSELinuxという強固な機能が
ディフォルトで採用されますが、後述する理由により
外してしまいます。

■ AppArmor VS SELinux

Linux派のかたにはAppArmorとSELinuxはどっちが
セキュリティは高いの?などという質問も受けます。
同じLinuxでもRedHat系ではセキュアOSとしての機能は
SELinuxを採用しています。
このSELinuxは確かにセキュアなのですが、ディフォルトで
全てのアプリにアクセス制御が掛かっており、アプリごとの
制限という点では、拙生の頭では概念モデルが複雑すぎて
理解しきれない部分があり、非常に扱いにくいものであり
サーバーのCentOSからはその機能を外してしまい
他の手立てでセキュリティを確保しています。
もちろんSELinuxを完全理解し使いこなしている方も
大勢いらっしゃると思いますが、拙生は設定ならできるけど
採用したいアプリの中でなにをやっても使えないものが
いくつかあり、解決は無理ということです。

SELinuxは全てに対するアクセス制限を必要な分だけ緩める。
AppArmorはインターネットに繋がるようなアプリは制限が
ディオルとで掛かっているが、プロファイルが用意されて
いないアプリはプロファイルを自身で設定(簡単です)して
必要な分を絞めてゆく。。。。って感じかな。

何にでも言えることですが、利便性・簡便性を追求すると
セキュリティレベルが下がります。
セキュリティレベルのみを追求すると実に使い勝手の
悪いものになってしまいます。
究極の話をするとネットワークに繋げなければ格段に
セキュリティは強固になりますが、ネットありきの
現状では使い物にならなくなってしまいます。

拙生はAppArmorディフォルトで最小必要源と思われる
アプリにはが制限が掛かっており、後から必要になったものを
簡単に制御対象にできるので、折り合いがつくところの
ちょうど良いと立ち位置と考えます。
Linuxカーネルに取り込んでもらえればありがたいのですが、
SELinux派の猛反発にあっているようで難しそうですね。。。

おっと、またもや長文になっちまいましたので本日はここまで。

HOME

おすすめ