Linuxをインストールして最初にやること

※わたしのポリシーとして、Linuxインストール後にまっさきに
 やることについて挙げておきます。もちろん、みなさんに強制
 するものではまったくありません。

・SetUID/SetGIDファイルの初期状態を保存
・ログイン時の初期設定の変更(~/.bashrc//etc/skel/.bashrc)
・一般ユーザのホーム位置を変更(/etc/default/useradd)
・Shadowの確認(pwconv/grpconv)
・ネットワークカードの動作の確認と状態保存(ifconfig -a)
・ネットワークの確認と状態保存(netstat -r/netstat -a)
・ホスト名・ドメイン名の確認(/etc/HOSTNAME)
・ホスト名一覧の作成(/etc/hosts/lmhosts)
・アクセス制御(/etc/inetd.conf/hosts.allow/hosts.deny/inetd.conf)
・リモートからのSSHによるrootログインを禁止
・「/etc」のバックアップをとっておく


【SetUID/SetGIDファイルの状態を保存】
rootで立上げて、以下を実行しておきます。
# cd
# find / -type f -perm -04000 -ls > setuid.txt
# chmod 600 setuid.txt
# find / -type f -perm 02000 -ls > setgid.txt
# chmod 600 setgid.txt
※HDD内をすべて検索するので、時間がかかります。

こうしておくと、以後の運用でSetUID/SetGIDされたファイルが
増えた場合、すぐにわかるので便利です。

【操作例】
# find / -type f -perm -04000 -ls > setuid_20010531.txt
# diff setuid.txt setuid_20010531.txt | more



【ログイン時の初期設定の変更】
わたしは、ファイルの一覧をみるのに、いつも「ll」
(英小文字のエル2つ)でやっています。「ls -lsa」と
同じになりますが、単純なほうがよいので、こうしています。

また、ログオン時に「NUM」キーをONにもしたいので、
「setleds +num」を自動実行するようにしています。

※rootの環境設定
$ su - (←rootになって作業する)
# cd
# vi .bashrc
真中あたりを、以下の通り修正します。
----------------------------------------
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ..='cd ..'
alias ll='ls -l'
alias la='ls -aF'

alias ls='ls -NF'
alias ll='ls -lsa' (←追加)
setleds +num (←追加)
----------------------------------------
「:wq!」で保存終了します。

これでファイル一覧が「ll」で、
ログオン時にNUMキーが有効になります。


【一般ユーザのホーム位置を変更】
・ユーザのディレクトリを「/home」から「/home/users」に変更します。
 理由:/home以下にはhttpやftp関連のディレクトリもありますが、
    ユーザのホームディレクトリだけを1つのディレクトリに
    まとめたいからです。こうすることにより一括で登録ユーザ
    だけを簡単にバックアップできます。
    もちろん/home以下をまるごとバックアップする人は不要ですが。


# cd /etc/default
# vi useradd
----------------------------------------
# useradd defaults file
GROUP=100
HOME=/home/users (←ここを変更)
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
----------------------------------------
「:wq!」で保存終了します。

これで、以後のユーザのホームディレクトリは
「/home/users/...」となります。
バックアップをとるには、bak_usersというディレクトリを作り
「cp /home/users/* /home/bak_users/.」とすれば良いです。
ただし「/home/bak_users」の属性はrootで700にしておいてください。
# chown root.root /home/bak_users
# chmod 700 /home/bak_users


・以後追加されるユーザに、先のrootと同じ環境設定をします。
 要は、「ヒナ型」に登録してしまうということです。
# cd /etc/skel
# vi .bashrc
(先のrootと同じように設定)
----------------------------------------
alias cp='cp -i'
alias mv='mv -i'
alias ..='cd ..'
alias ll='ls -l'
alias la='ls -aF'

alias ls='ls -NF'
alias ll='ls -lsa' (←追加)
setleds +num (←追加)
----------------------------------------
「:wq!」で保存終了します。

【Shadowの確認】
【パスワードファイルを暗号化する】(shadow化)
# pwconv
(暗号解除は「pwunconv」)

【グループファイルを暗号化する】(shadow化)
# grpconv
(暗号解除は「grpunconv」)


その後、一般ユーザを登録するのですが、その前に各ユーザが
所属するグループを一通り設定しておきます。
# groupadd (グループ名)

その後、ユーザを登録していきます。
# useradd -g (グループ名) (ユーザID名)
# passwd (ユーザID名)    ←パスワードを設定。

※テキストファイルから一括で登録する方法もあります。
 (newusers コマンドを参照してください)

※一人が複数のグループに所属するときは、
 まずメインで所属するグループをuseradd -g で
 指定しておき、あとで「/etc/group」ファイルを修正します。
 複数指定はカンマ(,)で区切って指定します。

# vi /etc/group (例)
----------------------------------------
daigo:x:501:n-ogino,m-watanabe
system:x:502:
eigyo:x:503:n-ogino,m-watanabe
koji:x:504:n-ogino,m-watanabe
keiri:x:505:n-ogino,m-watanabe
manager:x:506:
nogroup:x:507:
----------------------------------------
「:wq!」で保存終了します。

上の例ですと、ユーザ「m-watanabe」がグループ「system」にメイン
グループで所属していた場合、同時に「daigo」「eigyo」「koji」「keiri」
というグループにも所属することになります。

グループ単位で共有するディレクトリが
必要なときは、ここで作成します。
# mkdir /home/users/(共有ディレクトリ名)
# chmod 770 /home/users/(共有ディレクトリ名)
# chgrp (グループ名) /home/users/(共有ディレクトリ名)

全員で共有するときは、以下のようにします。
# mkdir /home/users/(共有ディレクトリ名)
# chmod 777 /home/users/(共有ディレクトリ名)
※ただし、セキュリティ的には おすすめできません。


【ネットワークの設定と保存(例)】

※わたしの場合、1万円で買った中古のマシンにLinuxを
 入れ、ファイヤーウォール兼プロキシサーバにしています。
 NIC(LANカード)は2枚さしています。
※NICの1枚目(eth0)はインターネット側、もう1枚(eth1)は
 内部LAN向けとなっています。

# ifconfig -a の表示例はこちら

状態の保存は
# cd
# ifconfig -a >ifconfig_20030224.txt
# chmod 600 ifconfig_20030224.txt


# netstat -r の表示例はこちら
2つのNICのうち、eth1はISAなので、手動で設定しています。

状態の保存は
# cd
# netstat -r > netstat_20030224.txt
# chmod 600 netstat_20030224.txt

# cat /etc/modules.conf の表示例はこちら


----------------------------------------
# cat /etc/HOSTNAME の表示例はこちら


# cat /etc/hosts の表示例はこちら


#cat /etc/lmhosts の表示例はこちら


# cat /etc/inetd.conf の表示例はこちら
(必要な行以外の先頭を「#」をつけてコメント化します)
※「/etc/inetd.conf」は原則として、すべてコメントにしちゃいます。
 後で各種サーバソフトをインストールしたときに、必要なもの
 のみONにします。


# cat /etc/hosts.allow の表示例はこちら


# cat /etc/hosts.deny の表示例はこちら


# cat /etc/resolv.conf の表示例はこちら


# cat /etc/host.conf の表示例はこちら



【リモートからのSSHによるrootログインを禁止】
「/etc/pam.d/sshd/sshd_config」を編集します。

# cd  /etc/pam.d/sshd
# vi  sshd_config  (←「ssh_config」ではないので注意。「d」があります!)

編集画面になるので、18行目あたりにある、

PermitRootLogin  yes

という記述を

PermitRootLogin  no

というように変更します。
「:wq!」で保存終了します。

この後、「sshd」を再起動します。

# /etc/rc.d/init.d/sshd  restart
これで、リモートから直接rootでログインすることは
できなくなります。このような時は、小文字のエル(-l)オプションを使い、

# ssh (相手のIPまたはホスト名)  -l (一般ユーザ名)

でログイン後、「su」または「su -」コマンドでrootになってください。
(「su -」だと、環境・メール等を含めて完全に相手マシンの
rootになれます。)




【「/etc」のバックアップをとっておく】

※「/etc」のバックアップを「/home」に取っておくようにします。
 重要なファイルなので、定期的にバックアップするようにします。
 万一、システムの再インストールすることになった場合でも、
 「/home」をフォーマットしなければ、参考情報として使えます。
# cd /home
# mkdir bak_etc
# chmod 700 bak_etc
# cp -rf /etc/* /home/bak_etc/.

※各種サーバの設定ファイルなどは、極力「/etc」に置き、
 インストールした場所(「/usr/local/......」など)に置く設定ファイルは、
 リンクファイルとして「/etc」内を指すようにすると、一括コピーできて
 便利です。