CentOS

SSH設定 Windowsからscp、sftpを使用する(WinSCP)

2008-08-17 CentOS

今日で夏の連休も最終日・・・
当初の予定では、この連休の間にWordPressの設置くらいまでもっていきたかったのだが
11日、12日は知り合いの会社で、お手伝い件、PHPの勉強ということで消費し
13日からとっつき始めたものの、SELinuxの壁に挫折し、1から再開・・・
ということで、思った以上にすすんでいない。
でも、確実に実はついてきていると思って先に進もう。
今度は、ファイルの転送を暗号化するscpやsftpをWindowsで使う設定をしてみた。
利用したクライアントソフトは、WinSCPを利用
#インストールの際に言語を日本語にしておくと、日本語になるのはありがたい。
WinSCPログイン
ホスト名、ポート番号、ユーザー名、秘密鍵はPuTTYで作成したものを使用
あとはログインを行うだけ。
PuTTYと同じように初回接続時には、鍵の関係の警告がでるが問題ないので、「はい」を選択。
あとは、GUIでファイルの転送をおこなうだけ。
特に、つまるようなことはなにもなかった。

SSH設定 CentOSで鍵セットの作成

2008-08-16 CentOS

WindowsでPuTTYを使って鍵セットの作成はできたが、公開鍵をサーバーにコピーする際に、公開鍵のファイルがサーバーになかったことで、ちょっとドギマギした。
CentOS側で一度でも作成していればOKのようだったので、CentOS側での鍵セットの作り方も覚書。
鍵セットの作成

DSA暗号を使用した鍵セットの作成

コマンド: ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/poeyang/.ssh/id_dsa):
 ファイル名を変更するか聞かれているようだが、特に指定がなければエンターをおすだけでOK
Enter passphrase(empty for no passphrase):*******
   パスフレーズを入力
Enter same passphrase again:*******
   再入力
作成終了。
秘密鍵:id_dsa  公開鍵:id_dsa.pub

RSA暗号を使用した鍵セットの作成

 ssh-keygen -t rsa
*SSHv1用を作る場合は、rsa1
以下、DSAとほぼ同じ
秘密鍵:id_rsa  公開鍵:id_rsa.pub
*rsa1で作ると identity, identity.pubになる。

公開鍵の設置

CentOSの標準設定では、OpenSSHで使用する公開鍵は~/.ssh/以下にインストールする設定
公開鍵の保存ファイルは、authorized_keys
公開鍵を保存ファイルに保存
cat <公開鍵ファイル> >> authorized_keys
chmod 644 authorized_keys

公開鍵が保存されているディレクトリのアクセス件変更
chmod 755 /home/ユーザー名/.ssh

SSH設定 Windowsクライアント(PuTTY)

2008-08-16 CentOS

SSHでリモート接続を試すうえで、Windowsのクライアントからの接続をためす。
クライアントソフトはいろいろあるが、PuTTYがおすすめらしいので、落としてみた。
日本語パッチやらいろいろとセットになっているPuTTYごった煮があったので、こちらを使用。
キーセットの作成
 

PuTTYgenをつかって公開鍵と秘密鍵を作成してみる。
 画面から生成を押すと、乱数作成のためにマウスを動かせ!(結構面白い)
 バーがいっぱいになるまでマウスを動かしたら、下のような画面が登場。
PuTTYgen鍵の生成
 鍵のコメントが、鍵の名前になる。
 好きなパスフレーズを入れて、
 公開鍵の保存と、秘密鍵の保存を押せばOK

 
公開鍵をサーバーにコピー

①公開鍵のファイルをサーバーにコピーしてくる。
②公開鍵を変換する
  ssh-keygen -i -f <公開鍵ファイル名> >> <変換するファイル名>
  とりあえず、変換するファイル名はputty.pubとした。
③変換した公開鍵を使用するユーザーに保存(ここではpoeyangにしている)
 cat putty.pub >> /home/poeyang/.ssh/authorized_keys
 chmod 644 /home/ken/.ssh/authorized_keys

 * /home/ユーザー名/.ssh/authorized_keysは、CentOS側で公開鍵を作成したことがないと、存在しないので自分で作るか、一度CentOS側でも公開鍵を作っておく。

PuTTYで接続

PuTTYでの設定
○接続→SSH→認証
  「認証のためのプライベートキーファイル」で、先ほどの秘密鍵のファイルを選択
○ウィンドウ→変換
  「文字コードの設定」で、UTF-8を選ぶ(文字化け防止)
○セッション
  「ホスト名(またはIPアドレス)」接続するサーバーのIPかホスト名
  「ポート」 接続するポート (特に変更してないなら22)
  「プロトコル」 使用するプロトコル(SSHをつかうのでSSHを選択)
  「セッション一覧」で適当な名前を付けて、保存をしておくと次回以降便利!
開くを押して接続
 はじめて使用する鍵セットなので以下のような警告がでるが、想定の範囲内なので「はい」でいい。
PuTTYgen鍵の生成
login as: 
 が無事にでればOK、IDとPASSを入れて接続の確認。
 パスワードの入力は画面に表示されなくても入力されているので心配無用

  

(さらに…)

SSHの設定

2008-08-16 CentOS

今日も暑い。
こう暑いと、冷房嫌いでも、冷房をつけたくなるが、最近電気代が結構いっている事に気づいたので、裸族生活でもっぱらクーラーの使用は控えている。
昼間の使用はこんな連休くらいしかないので、深夜料金の安い時間帯別料金メニューを利用したいのだが、どうやって変更すればいいのかわからない・・・関西電力さんHPもっとわかりやすくしてくださいよ!
そんな電気代のかさむなかでも、やっぱりサーバーとしての運用を考えるからには、常時起動&外部接続は行いたいものだ。
ということで、SSHを利用して外部アクセスを行うために、SSHの設定を始めた。
SSHとは
 SSH(Secure SHell)は、リモートコンピューターとの通信を暗号化するためのプロトコル
 TELNETやFTPは暗号化されないので、情報漏洩の危険がある!
 SSHのバージョンは1と2があるが、1は脆弱性がみつかってるので2がよい!
OpenSSH
 CentOSでは、初期設定で、自動起動されている。
 サービス名:sshd
 opensssh-server(+openssh,openssl)がインストールされている。
OpenSSHの設定
設定ファイル: /etc/ssh/sshd_config

protocol 2
   SSHのバージョンを指定。2が推奨だが、どうしても1を使いたい場合は2,1と指定。
 
#ListenAddress 0.0.0.0  — IPv4を指定
#ListenAddress ::     — IPv6を指定
   デフォルトではコメントアウトされているので、両方からの接続OK
#PermitRootLogin yes
   rootユーザーのログインを許可。
   一般ユーザーでログインしてからsuでrootに切り替えてもいいのでコメントアウトを解除(#を削除)してyesをnoに変更
PasswordAuthentication yes
    公開キー暗号を利用した認証以外での認証を許可するかの設定(TELNETなど)
    許可しないので、noに変更
ログ関係
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
   ファシリティの設定。AUTHがOpenSSHの基本だが、AUTHPRIVに設定
#LogLevel INFO
   ログの出力レベル、とくに変更する必要はないだろう。

SELinux avcログからポリシーモジュール作成

2008-08-15 CentOS

サーバーとして運用しようとすると、SELinuxが、Enforcingでは接続できず、permissiveや、disabledだと接続できるという状態におちいった経験がある。
どうしても、できなくて、結局SELinuxを無効(Disabled)にして、使用してばかりだったが、どうやら、ポリシーモジュールなるものを作成すると簡単にできるらしい。
SELinuxのモードをpermissiveにして、監視ログをとり
そのログをつかってポリシーモジュールを作成してくれるaudit2allowというもの。
実際はまだつかってないが、難しいSELinuxの設定を簡略化できそうなので、覚書
avcログ

SELinuxのポリシールールに反する処理が実行された時に、警告ログがとられる。
 auditサービスが起動していれば(通常は起動してる)
 /var/log/audit/audit.log に記録される。
 起動していなかったら、/var/log/messageファイルに記録される。

avcログから、モジュールの作成(audit2allow)

① SELinuxの動作モードを permissive に変更
② SELinuxがEnforcingの時はできなかった作業を色々行う。
  できるだけ、いろんな作業を行ってログをためるのが良いらしい。
③ avcログから、必要な個所だけ抜粋したファイルを作成
  (抜粋しなくてもよい?とりあえず、ここでは抜粋したファイル/tmp/kansi.logとする)
④ audit2allowを実行
  audit2allow -M test < /tmp/kansi.log
#-M にはモジュールの名称を指定
⑤ test.teとtest.ppができていることを確認
 te – モジュールのソースコードにあたるファイル
 pp – teから作られたポリシーパッケージ
⑥ test.teを確認、編集
 test.teが期待どおりになっている確認。
 期待通りでなかったり、追加したいものがあれば修正
 # 修正した場合はモジュール(pp)を作り直す
 #  chekmodule -M -m -o test.mod test.te
 #  semodule_package -o testl.pp -m test.mod
⑦ ポリシーモジュールのインストール、確認、削除
 インストール
   semodule -i test.pp
 確認
   semodule -l
    testが追加されて入ればOK
 削除
   semodule -r test
    必要のないモジュールは削除(testを削除)

適用後、SELinuxをEnforecingに変更しても目的とするサービスが利用できれば成功!

SELinux 関連コマンド、コンテキストの書き換えとか

2008-08-15 CentOS

SELinuxは、調べても調べてもよくわからない。
あっているかわからないが、今後の作業で必要そうなものを
いったん覚書。
セキュリティコンテキスト関連

sestatus : SELinuxの状態表示
ps -Z -C <プロセス> : 
   稼働中のプロセスのセキュリティコンテキスト確認
id -Z : ログインシェルのセキュリティコンテキスト確認
ls -lZ <ファイル> :
   ファイルのコンテキストを表示
chcon [オプション] <コンテキスト> <ファイル>
   <ファイル>のコンテキストを<コンテキスト>に変更
chcon [オプション] –reference=<ファイルA> <ファイル>
   <ファイルA>と同じコンテキストを<ファイル>に適用
   オプション:
     -c: 変更が行われた時ファイル名を表示
     -h: シンボリックリンクに対して、リンク先のファイルでなくシンボリックリンクそのもののファイルコンテキストを設定
     -f: エラーメッセージの表示を最小限に
     -R: ディレクトリに対して再帰的にコンテキストを設定
     -v: 処理するファイル毎に診断メッセージ表示
cp –preserve=context <ファイル> <コピー先>
cp –preserve=all <ファイル> <コピー先>

  ファイルコピー時に、コンテキストもあわせてコピーする

アクセス制御ルール関連
パッケージ「setools」のインストール必須

seinfo : 現在適用されているポリシーの詳細情報
seserch <ルール> [オプション] [ポリシーファイル]
   アクセス制御ルールの調査
  ルール: –allow, –neverallow, –audit, –type, -a(all)
  オプション:
    -s: ルール適用元のタイプ名
     -t: ルール適用先のタイプ名
     -c: ルールに関連したオブジェクトのクラス名
     -p: ルールに規定されている操作許可
     -b: 論理パラメーターに関連したルール
     -C: 論理パラメータの状態によって変更になるルール
     -i: タイプの属性も合わせて検索 
     -n: タイプ名や属性名に正規表現を使わない(指定しないと正規表現によるマッチング検索)
     -l:ルールファイル内での行数
    例: sesearch –allow -n -s ftpd_t -t public_content_t

SELinuxの基礎?

2008-08-15 CentOS

SELinuxの基礎的な部分をまとめておこう。
以前、sambaがhttpがうまくいかなかった原因でもあるので
SELinuxについての覚書は役に立つかも・・・
SELinuxとは?

 Linuxのセキュリーティーを高める役割。
 SecureOSとかいうやつの一種らしい。
 細かなアクセス制御の一元管理が売り?

ポリシー
 一番大きなアクセス制御のルールをまとめたやつ。
 デフォルトはtargetedで、一番扱いやすいらしい。
 さらに強固なstrictや、mlsとかがあるらしい。細かな設定が必要になる。
セキュリティコンテキスト
 アクセス制御の情報が組み合わさっているもの。
 Ex) user_u:system_r:unconfined_t:SystemLow-SystemHigh
      ユーザー属性:ロール属性:タイプ(ドメイン属性):レベル
基本設定
 動作モード

enforcing – 有効 ルール違反はアクセス拒否
permissive – 有効 ルール違反は監視ログを残す。
disabled – 無効

起動時のモードの切り替え

設定ファイル(/etc/selinux/config)の
SELINUX=enforcing
を書き換える。

起動中の状態確認、切り替え

状態確認: 
 簡単表示: getenforce 
  詳細表示: sestatus
切り替え: 
permissive → enforcing: setenforce 1
enforcing → permissive: setenforce 0

メディアのマウント(DVD)

2008-08-15 CentOS

メディアをマウントするには
/mnt/下に適当なディレクトリ作成(/mnt/cdrom)
 

mkdir /mnt/cdrom


デバイス名 /dev/cdromを/mnt/cdrom にマウント

mount /dev/cdrom /mnt/cdrom
mount:ブロックデバイス /dev/cdromは書き込み禁止です。読み込み専用でマウントします。

メディアのアンマウト
 

umount /dev/cdrom

yum コマンドでパッケージ管理

2008-08-15 CentOS

パッケージの管理には、yumを使うと便利らしい。
yumとrpmコマンドとの違い

yum パッケージと依存関係にある別なパッケージが有無確認して、一緒にインストール
rpm パッケージと依存関係にある別なパッケージがインストールされていないと、インストールできない
だから、yumのほうが便利

よく使いそうなyumのコマンド
yum [オプション] <コマンド> [<パッケージ>]

<コマンド>
install パッケージのインストール <パッケージ必須>
update パッケージのアップデート
check-update アップデート必要なパッケージを調べる
remove  指定パッケージを削除(依存も一緒に削除)
list  指定パッケージのリスト
info 指定パッケージの情報
provides 指定パッケージに含まれファイル一覧
groupinstall(update,list,remove,info) グループを指定してインストール(アップデート、削除・・・)
localinstall(update) ローカルにあるパッケージでインストール(アップデート)

例: 
yum install dovecot
  dovecotをインストールするには、mysqlとperl-DBIが必要なので一緒にインストールされる。
yum remove mysql
 mysqlと依存関係にあるdovecotも一緒に削除される。
yum groupinstall “Mail Server”
  Mail Serverグループに含まれる、dovecot, sendmail-cf, mysql, perl-DBIの4つがインストールされる。
必須と、デフォルトのみインストールされるので、オプションパッケージが必要なら別途インストール必要
グループ名は英文、大文字小文字正確に、空白がある場合は引用符(””)で!

yumの定期実行設定

自動実行サービス名:yum-updatesd
デフォルトでランベル3,4,5で自動実行
サービスの設定ファイル:/etc/yum/yum-updetesd.conf

[main]
run_interval = 3600 —アップデートの有無チェック間隔(秒)
updaterefresh = 600 —アップデート情報の更新間隔の最小値(秒)
emit_via = dbus —- アップデートの通知メッセージ出力方法*1
dbus_listener = yes —アップデートのチェックをD-Bus経由で行うのか指定
do_update = no — アップデートを自動で行うか *2
do_download =no — ダウンロードを自動で行うか
do_download_deps = no — ダウンロードするパッケージの依存性をチェックするか

*1 通知メッセージの出力設定

D-Bus、Eメール、システムロガーが選択可能
dbus GUI環境で、pupletにメッセージを送る(デフォルト設定)(TEXT環境では、D-busは不適切)
email Eメールによる通知
>emit_via = email
>email_to = root — 送信先
>email_from = yum-updatesd —送信元
syslog システムロガーによる通知
>emit_via = syslog
>syslog_facility = DAEMON — ファシリティ
>syslog_level = WARN — レベル

*2 アップデートを自動で行うか
サーバー環境では、自動で行わないと現実的ではない!
それぞれyesに変更しないと、自分でアップデートの操作を行う必要が出てくる。

結局再インストール・・・

2008-08-15 CentOS

お盆の連休ですねぇ。もう気づいたら金曜日、あと休みも数日残すのみとなりました・・・
世間は、オリンピックでわしょ~いですが
そんななかで、がんばってCentOS使いになろう!
と意気込んではみたものの・・・
結果は、SELinuxの壁によって、あれこれいじってるうちに
接続が確認できていた、Httpもダメになり・・・
Sambaは接続はできてもなぜかフォルダ内のファイルが表示されなかったり・・・orz
というわけで、改めてごちゃごちゃやめて1からやり直しを強行することにした。
①インストール
とりあえず、グラフィカルモードで、基本設定でいく。

 -パーティションは自動設定(いちお、確認はチェックしておいた)
 -パッケージは全部基本設定
 -プロトコルも、SSHのみチェック
 -SELinuxもとりあえず。Enforcingで挑む!

②画面がおかしいよ!
以前もそうだったんだが、画面がおかしい。
とりあえず、ML115のVGAは1024*768まではサポートしてたはず!
でも、設定すると画面のした半分が完全におかしくなる・・・
(なんか壊れたディスプレイのような状態になる)
たしか、以前なんらかの設定ファイルをいじってなおしたようなぁ・・・
とりあえず、ネットでしらべて
CentOS5の解像度を変更する
を、見つけたので、

SubSection "Display"
Viewport 0 0
Depth 24
Modes "640*480"

を1024*768に変更して、再起動をしてみる。
無事成功!
GUIモードでは、あまり使わないでおこうと思ってはいるのだが
困った時は、GUIのほうが便利なことがおおいので画面はきっちり表示されるに限る!
とりあえず、これで初期設定は完了だ!
さぁ、再挑戦!

(さらに…)