Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

ラベル セキュリティ の投稿を表示しています。 すべての投稿を表示
ラベル セキュリティ の投稿を表示しています。 すべての投稿を表示

2010年1月3日日曜日

mysqlのセキュリティ設定 このエントリーを含むはてなブックマーク

mysqlサーバをインストールするときに注意すべきセキュリティのチェックポイントをまとめる(Mysql 5.1のリファレンスマニュアルなどを参考にした)。

  1. (初期状態で既にユーザが存在するので)パスワードが登録されていない全ユーザにパスワードを登録する。
  2. パスワードを入力するときは、出きるだけコマンド中に入れるのではなく、pオプションを使う。
  3. コマンド履歴は~/.mysql_hisotryに保存されているので、定期的に削除する。例えば、~/.bash_logoutにログアウトする度にこのファイルを削除するように記述する。
  4. 匿名ユーザは削除する。
  5. 特権を与えたら、flash pribileges;を実行するのを忘れない。
  6. mysqlサーバを実行するユーザのログインシェルを/sbin/nologinに変更する。また所属グループもrootやwheelなどになっていないことを確認する。rootで実行しないこと。
  7. テーブルへのシンボリック リンクをサポートしない。(これは --skip-symbolic-links オプションで無効にできる)。
  8. mysqlサーバ実行する Unix アカウントだけに、データベース ディレクトリ(--datadir=/var/lib/mysqlなど)の読み取り権限と書き込み権限があることを確認する。

2010年1月2日土曜日

パケット転送を停止する。 このエントリーを含むはてなブックマーク

サーバをルータなどとして使っていない場合、パケット転送は不要なので(もし有効にしていたら)停止する。そのために、起動時に読み込まれるスクリプト/etc/rc.d/rc.localに以下を記述する。

echo -n "Disabling packet forwarding..."
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "done"

もし有効にしたいならば、0を1にする。

ファイアーフォールの設定を確認する このエントリーを含むはてなブックマーク

すべてのチェインを確認するには

# iptables -L

個別のチェインを確認するには(例:OUTPUT)

# iptables -L OUTPUT

リモートサイトからのpingに応答しない。 このエントリーを含むはてなブックマーク

# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

送信元アドレス検証 このエントリーを含むはてなブックマーク

リモートホストがパケットを偽装して、ローカルホストになりすますのを防ぐには(CentOS)

/etc/sysctl.confのnet.ipv4.conf.all.rp_filterの値が1になっていれば、機能が有効になっているが、そうでないならば、以下の設定を追加する(デフォルトでは有効になっていた)。

システム起動時に読み込まれるファイル/etc/rc.d/rc.localに以下を記述する。

echo -n "Enabling source address verification..."
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo "done"

2009年7月5日日曜日

TCPWrapperによるアクセス制御 このエントリーを含むはてなブックマーク

@ITの「連載:止められない基幹業務サーバの管理対策」の「第3回 サービスをセキュアにするための利用制限〜TCP Wrapperによるサービスのアクセス制限〜」は参考になるので、メモしておく。

2009年2月18日水曜日

cronのアクセス制御 このエントリーを含むはてなブックマーク

本記事では、定期的にプログラムを実行するcronのアクセス制御について説明する。

アクセス制御

まず、crontabはrootしか編集できないようになっているかパーミッションを確認する。そして、cron.allowとcron.denyにそれぞれcronの使用を許可するユーザと禁止するユーザを書き込む。

例えば、goo1とgoo2ユーザだけにcronを許可して、それ以外のユーザには許可しない場合は次のように編集する。

# /etc/cron.allow
goo1
goo2
# /etc/cron.deny
ALL

2009年2月17日火曜日

ログアウト処理 このエントリーを含むはてなブックマーク

本記事では、ユーザがログアウトした際に実行する処理についてまとめる。

bashを使っている場合、ホームディレクトリに.bash_logoutというファイルがある(なければ作成する)。このファイルには、ログアウトした際に、実行する処理を記述する。 bashのコマンド履歴および端末の画面をクリアするには

# ~/.bash_logout
history -c
/usr/bin/clear
と書いておけば良い。ちなみに、ログインする際に、実行する処理は.bash_loginに書く。

2009年2月12日木曜日

suコマンドの制限 このエントリーを含むはてなブックマーク

本記事では、CentOS5.2でsuコマンドを実行できるユーザを制限する方法をまとめる。他のユーザのパスワードを知っていたとしても(不正に知りえた情報かもしれないので)、誰でもsuを実行できることは危険である。したがって、suを実行できるユーザの制限をする。

設定

/etc/login.defsに次の1行を追加する(<---この設定は、最近は不要らしい。pam_wheel.so を使う場合は、SU_WHEEL_ONLY の設定は不要より)。

SU_WHEEL_ONLY yes
これは、wheelグループに所属するユーザだけsu権限が得られることを意味している。

さらに、/etc/pam.d/suで次の箇所

# Uncomment the following line to require a user to be in the "wheel" group.
#auth            required        pam_wheel.so use_uid
をコメントアウトして、
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid
のように変更する。 これで、ユーザがwheelグループに所属している場合だけsuの実行権限が与えられる。 ちなみに、よく似た行があるので別の箇所をコメントアウトしないように注意する。

次に、あるユーザhogeをwheelグループに所属させたいときは、

# usermod -G wheel hoge
を実行すれば良い。

sudoの利用

ここでは、ユーザにsudoの実行権限を与える方法を説明する。

sudoを使うと、別のユーザとしてコマンドを実行することができる。 suではrootパスワードを入力してroot権限を取得する必要があったが、 rootパスワードを入力するリスクを回避するためなどの理由で、sudoが使われることがある。

sudoはsuとは異なり、rootパスワードは必要とされない。現在のアカウントのパスワードを 入力して、本人確認が取れればroot権限でコマンドを実行できる。 もちろん、sudoの実行権限の与えられるユーザは十分信頼できることが前提である。

ユーザhogeにsudoの実行権限を与える方法は、まずhogeをwheelグループに所属させて、次にwheelグループに所属するユーザにsudoの実行権限を与えることで実現する。sudoの権限を設定するファイルは/etc/sudoersであるが、これは直に編集するのでなくvisudoという専用のツールで編集する。

# visudo 
で編集モードに入る。次の行
#%wheel ALL=(ALL) ALL
を探して、コメントを外せば良い。

sudoを使うことで、rootパスワードをユーザに知らせることなくroot権限を与えることができるようになるというメリットはある。また、sudoで実行したコマンドの履歴は保存される。しかし、rootパスワードなしで一般ユーザがroot権限を取得できるということはセキュリティ上あまり好ましくないので、これはデメリットでもある。ゆえに、sudoを利用する場合は、それが本当に必要なのかどうかを十分検討する必要がある。

参考サイト

2009年2月11日水曜日

sshサーバの設定 このエントリーを含むはてなブックマーク

この概要は表示できません。投稿を閲覧するには ここをクリック してください。

grubにパスワードを設定する このエントリーを含むはてなブックマーク

本記事では、linux(主にUbuntu)でgrubパスワードを設定する方法をまとめる。grubをパスワードで保護する理由は、シングルユーザモードへのアクセスを防ぐことなどが挙げられる。シングルユーザモードで起動すると、パスワードなしでrootとしてログインできるからです。他の理由は、参考サイトの"Biosとブートローダのセキュリティ"に簡潔にまとめられています。

設定ファイルの編集

Ubuntuの場合、設定ファイルは/boot/grub/menu.lstである(他のLinuxでは/boot/grub/grub.confなど)。 以下のようにパスワードを設定する箇所がある。

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
# e.g. password topsecret
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

password   hogehoge
という具合で、hogehogeというパスワードを設定する1行を挿入すれば良い。 このファイルはパーミッションでroot権限を持つユーザだけが閲覧できるように しておけば、直にパスワードを書き込んでも良いかもしれない。 さらに安全にしたいならば暗号化すれば良い。

パスワードの暗号化

grubコマンドを実行してgrub シェルを起動する。

$ grub
プロンプトが現れるまで、少し時間がかかるかもしれない。

md5cryptで暗号化する。

> md5crypt
Password: hogehoge
Encrypted: 暗号化されたパスワード
暗号化されたパスワードをコピーして、先ほどの設定ファイルで 直にパスワードを書いていた行の代わりに
password   --md5  暗号化されたパスワード
を挿入する。

参考サイト

2008年12月27日土曜日

Webブラウザのセキュリティを検査する。 このエントリーを含むはてなブックマーク

本記事では、Webブラウザのセキュリティに問題がないか検査する方法をまとめる。今回はITコンサルタント会社のscanit社が提供しているブラウザの安全性をオンラインで検査するサービスBrowser Security Testを利用する。

(注意)筆者はscanit社とは一切関係がありません。本記事はBrowser Security Testの簡単な説明をまとめていますが、正確性や安全性を保証するものではありません。利用の結果生じた損害について、一切責任を負いません。

注意事項を確認する。

ブラウザを立ち上げてBrowser Security Testに訪れる。次の注意事項が書かれています。

Careful! The test will try to crash your browser! Close all other browser windows before starting and bookmark this page. If your browser crashes during the test, restart it and return to this page. It will show which vulnerability crashed your browser and offer you to continue the test or view the results.

(訳:注意してください!このテストはあなたのブラウザをクラッシュさせようと試みるものです!テストを開始する前にブラウザの他のすべてのウィンドウを閉じてから、このページをブックマークしてください。テストの最中にブラウザがクラッシュしたら、ブラウザを再び立ち上げてこのページを訪れてください。すると、クラッシュした理由(脆弱性)が表示されるでしょう。そして、テストを続行するか結果を見るか尋ねます。)

下の写真のモザイクがほどこされた部分に、自分のOSやブラウザの情報が表示されていると思います。

テスト方法の選択

ラジオボタンでテスト方法を3種類のうちから1つ選択します。

テスト方法:

  1. Only test for bugs specific to my type of browser(訳:自分のブラウザに合ったテストだけ行う)
  2. Run all available tests(訳:利用できるすべてのテストを行う)
  3. Choose individual tests(訳:個別にテストを選択する)

以下では、2番目の「Run all available tests」を選択した場合を説明します。 ラジオボタンで選択した後に、熊のマークでStart the testと書かれた部分をクリックすると検査が始まります。

テスト中の注意事項

テストの進捗状況がレベルメータで表示されます。

「Quick Help」では、次の2つの注意事項が説明されています。簡単に訳しておきます。

  1. Help! My anti-virus says there is a virus! アンチウィルスソフトがウィルスを発見したと警告した場合: アンチウィルスソフトが正常に動作しているだけです。アンチウィルスソフトは、テストが試みている活動を検知して、それを警告しています。検知されたウィルスは、テストされているブラウザの脆弱性を利用する悪意のあるソフトウェアです。しかし、同じ脆弱性を利用していることを除いて、Browser Security Testとそのウィルスとはまったく関係がありません。このテストはトロヤの木馬をインストールしませんし、ウィルスを感染させようともしません。
  2. What do I do if my browser crashes? もしブラウザがクラッシュした場合: ブラウザを再び立ち上げてください。もしセッションを再開するか、あるいは新規セッションで開始するかブラウザに尋ねられたならば、「Start new session(新規セッションで始める)」あるいは「Start with blank page(白紙のページで始める)」を選択してください。Browser Testのホームページ(http://bcheck.scanit.be:80/bcheck/)を訪れてください。テストの中間結果が表示されます。そして、テストを継続することができます。

テスト結果

下のように検査項目ごとに結果が表示されます。緑色のチェックマークは、その検査が問題なかったことを表しているようです。そして、最後の行に「Congratulations! The test has found no vulnerabilities in your browser!(訳:おめでとうございます!あなたのブラウザにはいかなる脆弱性も見つけられませんでした。)」と書かれていたら、問題ないということでしょう。

2008年12月21日日曜日

ファイアーウォールを導入する。 このエントリーを含むはてなブックマーク

本記事では、ubuntu8.04にファイアーウォールを導入する方法をまとめます。

ポートを開いてサービスを提供する場合などに、そのポートからの不正アクセスを 防ぐためにファイアーウォールが必要になります。

そこでiptablesを用いるわけですが、デフォルトで設定が何もされていません。 firestarterというGUIによる設定ツールがあるので、これをsynapticからインストール して設定しました。

インストール後に実行してみると。。。

インストール後に、

$ gksudo firestarter &
で、起動する。最初はウィザードが立ち上がるので、質問に答える。

しかし、起動してみると次のようなエラーが出てしまう。 設定ファイルを少し修正する必要があるようです。

設定ファイルの修正

まず、firestarterを閉じます。スクリプトファイル

/etc/firestarter/firestarter.sh
をroot権限で編集します。emacsで編集する場合は次を実行します。
$ gksudo emacs /etc/firestarter/firestarter.sh
下の写真で赤丸で囲んであるところはデフォルトでMasと書かれていると思うので、そこを写真のようにinetと書きます。その後、この設定ファイルを保存して閉じます。

許可するホストの設定

基本的にはすべて拒否しておいて、個別的に許可するものを付け加えることにします。 「ポリシー」の「受信側のトラフィックのポリシー」にて、 localhost.localdomainの接続だけ許可しておきます。

ファイアーウォールを動作させる。

次の写真のようにファイアーフォールの状態が「無効です」と書かれていたら、 ファイアーウォールは動作していません。 赤丸で囲んだところ(「起動」と書かれている)をクリックして、ファイアーウォールを起動させます。

うまく起動すれば次の写真のように、ファイアーウォールの状態は「有効です」と表示される。 ファイアーウォールを停止させたいときは、赤丸で囲んだところ(「停止」と書かれている)をクリックします。

参照:

不要なポートが開いていないか確認する。 このエントリーを含むはてなブックマーク

本記事では、Ubuntu8.04で不要なポートが開いていないか確認する方法をまとめる。

Ubuntu 8.04では:デフォルトでポートはすべて閉じられているらしい。しかし、追加でアプリをインストールした場合に、ポートが開かれることがある(外部にサービスを提供するアプリなど)。firewallソフトのiptablesは何も設定されていない状態なので、気づかないうちにポートが開いたままになっていたら危険です。したがって、開いているポートがないかチェックする必要があります。そのために、nmapというアプリを使います。これはsynapticからインストールできます。

使い方

$ nmap localhost -sV
のように実行します。 (注意)このコマンドは他者のマシンに対して実行しないでください。 他者のマシンに不正アクセスを試みているとみなされるかもしれませんから。 あくまで、自分のマシンに対してチェックのためにだけ使用してください。

実行結果の例

2008年12月20日土曜日

マルウェア駆除ツールの導入 このエントリーを含むはてなブックマーク

本記事では、ubuntuにマルウェア駆除ツールchkrootkitとrootkit hunterを導入する方法と使い方をまとめる。

「ルートキット(rootkitあるいはroot kit)はコンピュータシステムへのアクセスを確保したあとで第三者(通常は侵入者)によって使用されるソフトウェアツールのセットである。」

from wikipedia
chkrootkitrootkit hunterは、さまざまな方法でシステムの整合性をチェックするツールです。それぞれsynapticからインストールできます。

使い方: chkrootkitはただコマンド名を打ち込むだけです。

$ chkrootkit

rootkit hunterはデータファイルを更新するために

$ rkhunter --update
を定期的に実行する必要があります。そして、チェックを実行するには次のようにします。
$rkhunter --check

参照:

2008年12月8日月曜日

暗号化ソフトGnuPGの導入 このエントリーを含むはてなブックマーク

本記事では、暗号化ソフトのGnuPGの導入と使い方をまとめる。

キーを生成する。

$ gpg --gen-key
対話的に質問がなされるので、答えていく。

鍵タイプの指定:RSA+ELGAMAL
有効期限:なし
個人情報:名前とメールアドレス
パスフレーズ:適当に設定

公開鍵の登録

次のコマンドで公開鍵をpublic.txtに書き出す。

$ gpg -o public.txt -a --export userid
PGP公開鍵サーバに先ほどの公開鍵を登録する。

公開鍵の登録

先ほどの、PGP公開鍵サーバから(登録したい人の)公開鍵を検索して取得する。

$ gpg --import public.txt

ファイルを暗号化・復号化する。

$ gpg -e before.txt
$ gpg -d after.txt.gpg

Enigmailのインストール

Thunderbirdでgnupgを使えるように、Enigmailをインストールする。synapticから enigmailとenigmail-locale-jaをインストールする。 参考サイト:MacOSXでGnuPGを使おう」、「GNU Privacy Guard講座

2008年11月21日金曜日

無料のウィルス対策ソフトを導入 このエントリーを含むはてなブックマーク

本記事では、Ubuntuへの無料のウィルス対策ソフトの導入と、使い方を簡単にまとめます。

今回、導入した対策ソフトは

の2つです。

ライセンスキー

Webサイトからユーザ登録をして、ライセンスキーを取得します。

パッケージ

AVGはここから、パッケージ(avg75fld-r51-a1243.i386.deb)をダウンロードする。 avast!はここから、パッケージ(avast4workstation_1.0.8-2_i386.deb)をダウンロードする。

インストール

AVGのインストール

$ dpkg -i   avg75fld-r51-a1243.i386.deb
avast!のインストール
$ dpkg -i   avast4workstation_1.0.8-2_i386.deb

実行

コマンドラインでも実行できるようですが、ここではguiで起動してみる。 root権限で実行する必要があるので、gksudoを使う。なければ、synapticでインストールする。 (注:ubuntuではrootでログインできない) AVGの起動

$ gksudo avggui &
avast!の起動
$ gksudo avastgui &

所感

データベースのアップデートに時間がかかる(といっても数分だが)。最初、アップデートできないのかと勘違いしていたが放置しているとアップデートできたので、早とちりしないように!

2008年11月17日月曜日

パスワードでコンピュータを保護する。 このエントリーを含むはてなブックマーク

本記事では、BIOSとブートローダのパスワードを設定することの意味についてまとめる。

BIOSとはコンピュータの電源を投入したときに、最初に立ち上がる小さなシステムです。BIOSが立ち上がると、各種デバイス・周辺機器を初期化して利用可能な状態にする。そして、OSを起動するためのソフトであるブートローダに処理が渡されます。

ブートローダパスワード

OSの立ち上げを行うプログラムがブートローダである。ブートローダにはパラメータを与えることで、例えばシングルユーザモードでシステムを立ち上げることができる。このモードではパワードなしでrootにログインできる。したがって、ブートローダの設定を行えないようにパスワードで保護する必要がある。

BIOSパスワード

デフォルトでは、BIOSはHDDにあるOSを起動するが、設定することでCD-ROM、FDDなどにあるシステムを起 動することもできる。すなわち、デバイスの優先順位を設定により変更できる。こういった設定を誰でもできないようにパスワードで保護することが必要であ る。なぜなら、外部デバイスから起動して、システムにレスキューモードやシングルモードで入り込まれる危険性があるからである。

注意: BIOSパスワードは、内臓バックアップ電池を取り外して数日放置しておけば解除されるようです。ですから、最終的にはハードウェアを容易に触られないように保管することが肝心です。

参考:「Red Hat Enterprise Linux4:セキュリティガイド

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

過去の記事

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。