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」内を指すようにすると、一括コピーできて
便利です。