※このページの情報はVineLinux2.6時代のものなので、情報が古い可能性があります。
/etc/hostsファイルにLANのPCを登録する。
LANにapple,orange,lemonの端末が3台ある場合とする。
192.168.0.2 apple apple |
/etc/sysconfig/networkファイルにネットワークの設定をする。
ホスト名がapple、ドメイン名がfruit.comの場合、以下の記述を追加する。
#HOSTNAME=localhost.localdomain <== コメントアウトする |
viの設定ファイル(~/.exrc)を作成する。
set number <== 行番号表示 set tabstop=4 <== タブ表示文字数 set shiftwidth=4 <== [CTRL]-[d]、[CTRL]-[u]、>>、<<などで移動する文字数を設定 |
ログオン時にkonが起動するようにする。
if [ $TERM = linux ]; then |
lsコマンドのエイリアスを設定する。
alias ll='ls -la --color=auto' alias la='ls -a --color=auto' |
コマンドラインでviによる編集をすることができるようにする。
set -o vi |
プロンプトにカレントディレクトリを表示するため以下のように設定を変更する。
PS1="[\u@\h \W]\\$
" <== カレントディレクトリを表示 PS1="[\u@\h \w]\\$ " <== カレントディレクトリをフルパスで表示 |
ファイル作成時のデフォルトパーミッションを変更するために以下の記述を追加する。
umask 027 <== otherのパーミッションを全て削除するためのマスク |
/etc/hosts.denyファイルの設定のほうが/etc/hosts.allowファイルの設定よりも優先されるので、
まず/etc/hosts.denyファイルで全てのホストからのアクセスを拒否し、
その後に/etc/hosts.allowファイルでアクセスを許可するホストを設定する。
/etc/hosts.denyファイルにアクセスを拒否するホストを記述する。
ALL: ALL <== 全てのホストからのアクセスを拒否 |
/etc/hosts.allowファイルにアクセスを許可するホストを記述する。
ALL: localhost <== localhostからのアクセスを許可する
ALL: 192.168.0.0/255.255.255.0 <== LAN内のホスト(192.168.0.0/255.255.255.0)からのアクセスを許可 |
Linuxではrootのパスワードを知っていればどのユーザでもsuによってrootになることができるが、
wheelグループに属したユーザのみsuでrootになることを許可する。
/etc/login.defsファイルに以下の記述を追加する。
SU_WHEEL_ONLY yes |
次に、suを可能にしたいユーザをwheelグループに追加する。
/etc/groupのグループIDが10のwheelグループに追加するのではなく、
グループIDが0のrootグループに追加することに注意。
/etc/groupファイルに以下の記述を追加する。
ここではユーザfooを追加するとする。
root:x:0:root,foo <== ユーザfooをrootグループに追加 |
VineLinuxではさらにShadow Suiteを再インストールする必要がある。
FTPサイト(ftp://ftp.ists.pwr.wroc.pl/linux/shadow/)から最新のソース(shadow-20000902.tar.gz)をダウンロードする。
/usr/srcなどでファイルを展開し、再インストールする。
$ tar xvzf shadow-20000902.tar.gz |
sambaのRPMファイルをFTPサイト(ftp://ftp.jaist.ac.jp/pub/os/linux/Vine/)
からダウンロードし、
rpmコマンドを使用してインストールする。
# rpm -ivh samba-2.0.10_ja_1.2-0vl1.i386.rpm |
/etc/inetd.confファイルにsmbd(ファイル共有デーモン)とnmbd(ネームサービスデーモン)の設定を追加する。
netbios-ssn
stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd |
SWATを使用するための設定を行う。
/etc/inetd.confファイルに以下の設定を追加する。
# swat stream tcp nowait.400 root /usr/sbin/tcpd
swat <== コメントにする swat stream tcp nowait.400 root /usr/sbin/swat swat |
inetd.confを読み込ませるために以下のコマンドを実行する。
# killall -HUP inetd |
mksmbpasswd.shでsmbのアカウントを作成する。
# cat /etc/passwd | /usr/bin/mksmbpasswd.sh > /etc/smbpasswd |
「smbpasswd」コマンドを使い、samba用のパスワードを設定する。
自分のsamba用パスワードを変更する。
# smbpasswd |
ユーザfooのsamba用パスワードを変更する。
# smbpasswd foo |
/shareディレクトリにguestユーザとして書き込み可でアクセスできるように設定を行う。
/etc/smb.confに以下の内容を追加する。
[share] |
serviceコマンドを使用して、sambaの設定を読み込ませる。
# service smb start <== sambaが停止している時 |
VNCをFTPサイトからダウンロードし、rpmコマンドを使用してインストールする。
# rpm -ivh vnc-server-3.3.3r2-18.3.i386.rpm |
VNCをインストールし、起動時にGNOMEが起動するように~/.vnc/xstartupファイルを設定する。
#xrdb $HOME/.Xresources
<== コメントにする |
apacheのRPMファイルをFTPサイト(ftp://ftp.jaist.ac.jp/pub/os/linux/Vine/)からダウンロードし、
rpmコマンドを使用してインストールする。
# rpm -ivh apache-1.3.24-0vl1.i386.rpm |
/etc/passwdの設定を変更する。
ftpユーザのホームディレクトリを変更する。
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin <== これを変更 ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin <== これに変更 |
/etc/proftpd.confにアクセス制限の設定をする。
#ServerName "ProFTPD Basic Configuration" <== デフォルトの設定をコメントアウト |
/etc/inetd.confに以下の内容を追加する。
ftp stream tcp nowait root /usr/sbin/tcpd in.proftpd |
インターネットからFTPによるアクセスを可能にするために、/etc/hosts.allowにin.proftpdへのアクセス許可を記述する。
以下の記述を追加する。
in.proftpd: ALL |
chkconfigからの起動を削除する。
# chkconfig --del proftpd |
稼動中のproftpd停止し、inetdを再起動する。
# killall -HUP inetd |
不要なポートを塞ぐために、開いているポートをチェックするNmapを導入する。
最新版のRPMファイルをNmapのサイトからダウンロードする。
rpmコマンドを使用してインストールする。
# rpm -ivh nmap-3.00-1.i386.rpm |
開いているポートをチェックする。
# nmap localhost |
開いているポートが表示されるので、可能な方法(/etc/inetd.confファイルからコメントアウト、chkconfigコマンドを用いる )
でサービスを停止しポートを閉じる。
ホストベース認証によるログインはSSHをインストールすればすぐに使用することができるが、
パスワードがわかれば誰でもログインができてしまうためユーザベース(RSA)認証によるログインのみ許可する。
/etc/ssh/sshd_configファイルの設定を変更する。
RSAAuthenticationについてはデフォルトでyesになっているので、
PasswordAuthenticationについて設定を変更する。
#PasswordAuthentication yes <== デフォルト設定 PasswordAuthentication no <== パスワード認証を許可しない |
sshdを再起動する。
# killall -HUP sshd |
/etc/ntp.confファイルにNTPサーバを記述する。
NTPサーバのアドレスは
http://yotaro.bird.to/feedback/misc/NTP_list.html
などで得ることができる。
#restrict default noquery notrust nomodify <== コメントアウト
|
マシンのUTC時刻がNTPサーバに対して数分以上ずれているとNTPが動作しないため、
NTPを動作させる前に時刻の同期を取る。
# ntpdate clock.nc.fukuoka-u.ac.jp |
NTPデーモンの起動(再起動)を行う。
# service ntpd restart |
起動時に常にNTPが動作するようにする。
# chkconfig --level 2345 ntpd on |
NTPによる時刻の自動調整の様子を確認する。
# ntpq -p |
NTPの設定などに関してはJFのドキュメントなどを参照。
ntpdateを実行するシェルスクリプトをcrondに実行させることにより時刻を修正する。
crondが実行するシェルスクリプト(/root/shell/ntpdate.sh)を作成する。
/usr/sbin/ntpdate clock.nc.fukuoka-u.ac.jp >> /var/log/crond.ntp
2>&1 <== ntpdateを実行 /usr/sbin/hwclock --systohc >> /var/log/crond.clock 2>&1 <== ハードウェアクロックを設定 /usr/sbin/hwclock --show >> /var/log/crond.clock 2>&1 <== ハードウェアクロックをログ出力 |
作成したシェルスクリプトに実行権限を与える。
# cd /root/shell # chmod ug+x ntpdate.sh |
rootのcrontabを編集する。
# crontab -e |
以下の内容を追加することにより、毎日午前0時にntpdateが実行され時刻が修正される。
0 0 * * * /root/shell/ntpdate.sh |
また、/etc/cron.daily/以下にntpdateを実行するシェルスクリプト(ntpdate.sh)を置くことにより、
crondに毎日決まった時間に実行させることもできる。
sudoの設定は/etc/sudoersに記述されるが、設定にはvisudoコマンドを使用する。
# visudo |
以下の記述を追加する。
foo ALL=(ALL) ALL <== fooユーザに全てのコマンドを許可する |
/etc/sudoersの各フィールドの説明などについてはBash
Homepage内のsudoインストール・設定のページを参照。
sudoインストール・設定のページはSolaris用の説明だが、設定の際には参考になる。
libsafeによるバッファオーバフローの防止設定を行う。
RPMファイルをAvaya Labs Research - Projects: Libsafeからダウンロードしrpmコマンドによりインストールする。
# rpm -ivh libsafe-2.0-16.i386.rpm |
インターネットサービスデーモンが起動するよりも前に環境変数LD_PRELOADをセットし、libsafeが読み込まれるように設定する。
/etc/rc.d/init.d/functionsに以下の記述を追加する。
LD_PRELOAD=/lib/libsafe.so.2 <== 環境変数LD_PRELOADを設定する export LD_PRELOAD <== 環境変数をエクスポートする |
設定を行ったらマシンを再起動する。
# shutdown -r now |
サンプルプログラムを実行するために、/root/.bash_profileにてlibsafe.so.2を環境変数に追加する。
export LD_PRELOAD=/lib/libsafe.so.2 |
サンプルプログラムを実行して動作を確認する。
# cd /usr/doc/libsafe-2.0/exploits <== ディレクトリを移動する # ./t1 <== サンプルプログラムを実行 |
オーバーフローを検出してプログラムが強制終了し、/var/log/secureにログが出力される。
セキュリティスキャナであるNessusを用いてセキュリティのチェックを行う。
Nessusプロジェクトのサイトからnessus-installer.shをダウンロードし、Nessusをインストールする。
# sh nessus-installer.sh |
対話型のインストーラが起動するので、必要に応じて質問に答えていくとNessusがインストールされる。
NessusをGUI環境で使用するためにはgtk1.2以降とNmapが必要になるので
インストールされていなければインストールする。
また、OpenSSLはNessusとNessusdの間の通信を安全にし、SSLを使うポートの監査にも使われる。
なくても動作するが、できればインストールしておく。
Nessusは専用のユーザを使用するため、nessus-adduserを用いてNessus用ユーザの設定を行う。
# nessus-adduser <== /usr/local/sbin/nessus-adduserにある Login : foo <== fooユーザを設定する |
最後にUser rulesとしてNessus用ユーザに与える権限を設定する。
User rules ---------- accept 192.168.0.0/24 <== 192.168.0.0/24のテストを許可する default deny <== それ以外は禁止する |
最後に[Ctrl] + [D]を押すと確認画面が出るので、OKなら[y]を入力して答える。
Nessusを使用するには、まずサーバであるnessusdを起動する。
# nessusd -D |
Nessusを起動する。
$ nessus & |
Nessusが起動すると初期画面が表示されるがこの状態ではまだNessusを利用できない。
Nessusd Hostは、Nessusdが稼動しているホスト、つまりクライアントが現在接続しているサイト名が入る。
設定したユーザ及びパスワードを入力しNessusにログインする。
NessusについてはnessusやNessusを利用した総合セキュリティチェックなどが参考になる。
postfixはインストールされているので、自動起動の設定を行えば使用できるようになる。
# chkconfig --level 2345 postfix on |
動作設定を行うために、/etc/postfix/main.cfを変更する。
myhostname = apple.hogehoge.plala.jp <== ホスト名 mydomain = hogehoge.plala.jp <== ドメイン名 myorigin = $mydomain <== メールの送信元 inet_interfaces = all <== メール受信インタフェース mydestination = $myhostname, localhost.$mydomain, $mydomain <== 最終目的地 mynetworks_style = host <== メールリレー許可クライアント |
postfixを再起動する。
# service postfix restart |
rootのメールを一般ユーザで受信できるようにエイリアスを設定する。
root: foo |
エイリアスを有効にする。
# newaliases |
安定した動作実績を持つバージョン2.2をFTPサイト(ftp://ftp.stanford.edu/general/security-tools/swatch/)
からダウンロードし、適当なディレクトリで展開する。
# gzip -dc swatch-2.2.tar.gz | tar xvf - # cd swatch-2.2/ |
インストールを実行する前にMTAやコマンドのパスを修正しておく。
MTAとwriteのパスを実態に合わせるため、sw_actions_plを修正する。
$MAILER = "/usr/sbin/sendmail"; $WRITE = "/usr/bin/write"; |
tailのパスと標準ログファイルのパスを実態に合わせるため、swatch.plを修正する。
$TAIL = "/usr/bin/tail -f"; $DEF_INPUT = "$TAIL /var/log/messages"; |
install.shを実行する。
# ./install.sh |
インストールが開始され、最初の質問であるswatchのインストール先を/usr/local/binに指定し、
6番目の質問であるperlライブラリを実態(/usr/lib/perl5)に合わせる。
swatchの設定ファイル(/root/.swatchrc)を用意し、必要に応じて設定。
以下に例を載せる。
また、
How to build Internet Server with Linux: swatchのインストールと運用
などのページが参考になる。
/su\[/ echo=bold,bell,mail /invalid/ echo,mail /refuse/ mail /file system full/ echo |
swatchを自動起動するための設定を/etc/rc.d/rc.localに記述する。
/usr/local/bin/swatch -c /root/.swatchrc -t /var/log/messages
& /usr/local/bin/swatch -c /root/.swatchrc -t /var/log/secure & |
ログのローテート時にswatchも再起動するようにする。
/etc/cron.daily/logrotateを以下のように設定する。
killall tail <== tailをkill sleep 2 /usr/sbin/logrotate /etc/logrotate.conf <== 元からある設定 /usr/local/bin/swatch -c /root/.swatchrc -t /var/log/messages & <== swatchを再起動 /usr/local/bin/swatch -c /root/.swatchrc -t /var/log/secure & <== swatchを再起動 |
クラッカーなどによるファイルの改ざんを検出するためにTripwireを導入する。
Tripwire.org - Home of the
Tripwire Open Source Projectよりバイナリパッケージをダウンロードし、
md5sumを使用してダウンロードしたパッケージが改ざんされていないかどうか確認する。
# md5sum tripwire-2.3-47.i386.tar.gz |
MD5によるシグネチャをダウンロードページに記載されている値と比較して同じであることを確かめる。
改ざんチェックをしたパッケージを展開し、インストールする。
# gunzip tripwire-2.3-47.i386.tar.gz |
パッケージインストール後にキーを生成する。
# cd /etc/tripwire # sh ./twinstall.sh |
インストールシェル実行後に何度かパスフレーズの入力を求められるので、
必要に応じてパスフレーズを入力する。
twcfg.txtに基本事項を設定する。
変更項目のみ以下に記述する。
SYSLOGREPORTING =true SMTPHOST =localhost SMTPPORT =25 |
twcfg.txtを編集した場合には、暗号化されたtw.cfgを再作成する必要がある。
# twadmin -m F -S site.key /etc/tripwire/twcfg.txt |
要求されたパスフレーズを入力すると暗号化されたtw.cfgが作成される。
Tripwireがモニタリングするシステムに関して、twpol.txtを編集しデータベースとして格納するプロパティを作成する。
twpol.txtを編集したらtw.polを作成し、データベースを作る。
# twadmin --create-polfile /etc/tripwire/twpol.txt |
要求されたパスフレーズを入力するとポリシーファイルtw.polファイルが更新される。
Tripwireに--initオプションをつけて実行し、データベースを構築する。
# tripwire --init |
要求されたパスフレーズを入力するとデータベースの更新が開始され、
存在していないファイルなどに対してエラーが出力される。
エラーが出力されたらtwpol.txtを編集し直してtw.polを再作成し、再度データベースを作成する。
Tripwire毎日一回を定期的に実行するために/etc/cron.daily/tripwire-check作成し自動実行させる。
#!/bin/sh HOST_NAME=`uname -n` if [ ! -e /var/lib/tripwire/${HOST_NAME}.twd ] ; then echo "**** Tripwire database for ${$HOST_NAME} not found. ****" else test -f /etc/tripwire/tw.cfg && /usr/sbin/tripwire --check -M fi |
NFSを使用してネットワーク上にあるLinuxとディレクトリを共有する。
NFSサーバ:192.168.0.3
NFSクライアント:192.168.0.4
とする。
NFSサーバ側にて/etc/exportsファイルを編集する。
マウントを許可するディレクトリ名 マウントを許可するホスト名(読み書きを許可) /mnt/share 192.168.0.4(rw) |
/etc/exportsファイルを編集したらnfsdを再起動する。
# /etc/rc.d/init.d/nfs restart |
NFSクライアント側からNFSサーバへ側で設定されたディレクトリをマウントする。
マウント先ホスト名:マウント先ディレクトリ名 マウントポイント #mount 192.168.0.3:/mnt/share /mnt/nfsdir |