2018 年度 OSS リテラシー 3 : 第 8 回 サーバセットアップ
はじめに
本演習ではサーバとして VMware 上の仮想マシンを用いる. 仮想マシンは既に Debian GNU/Linux 9 の基本インストールが終了しているので, ラズパイで行ってきたのと同様な各種設定を行うことにする.
なお, 仮想マシンの IP, ユーザ名などは演習時間中に周知する.
仮想マシンへのログイン
演習で周知された IP, ユーザ名, パスワードを用いて仮想マシンへログインせよ. 演習室の Windows の putty を用いること.
基本セットアップ
sudo コマンドをインストールする前に root 権限を使う場合は,
$ su
として, root ユーザに切り替えること. 途中でパスワードが聞かれるが, そこでは自分のパスワードでなく root のパスワードを入力すること.
ホスト名の変更
まずは現在のホスト名を表示する.
# hostname jxxxx
以下のように変更する. ここで<学生生番号>は適宜修正すること.
# hostnamectl set-hostname <学生番号> # hostname <学生番号>
このままでは後にワーニングが出ることがある. /etc/hosts 内の jxxxx を学生番号に修正すること.
# vi /etc/hosts 127.0.0.1 localhost 127.0.0.1 <学生番号>.epi.it.matsue-ct.jp <学生番号> (この行を修正)
パッケージの更新
パッケージの更新の際に使うリポジトリは既に /etc/apt/sources.list に記述されており, それを変更する必要はない. 以下のように update & upgrade を行うこと.
# apt-get update 無視:1 http://ftp.jp.debian.org/debian stretch InRelease 取得:2 http://ftp.jp.debian.org/debian stretch-updates InRelease [91.0 kB] ヒット:3 http://ftp.jp.debian.org/debian stretch Release ヒット:4 http://security.debian.org/debian-security stretch/updates InRelease 91.0 kB を 0秒 で取得しました (175 kB/s) パッケージリストを読み込んでいます... 完了 # apt-get upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 アップグレードパッケージを検出しています... 完了 以下のパッケージは保留されます: linux-image-amd64 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。
ネットワークの設定: 固定 IP の利用
設定ファイル /etc/network/interfaces を設定する. 利用する IP は 10.176.0.0/24 とする. IP の最後の 8 byte は自分のラズパイの番号 (101~150) と同じにする.
# cd /etc/network # cp interfaces interfaces.bk (バックアップ作成) # vi interfaces # The primary network interface allow-hotplug ens192 #iface ens192 inet dhcp iface ens192 inet static address 10.176.0.xxx (xxx は自分のラズパイ番号とする) netmask 255.255.255.0 gateway 10.176.0.254 dns-nameservers 10.0.0.7 10.0.0.1
設定が終わったら再起動して設定を有効にする.
# reboot
再起動後に再度サーバへ ssh でログインする.
時刻の設定
Linux のシステム時刻には, ハードウェアクロックとシステムクロックの 2 つがある.
- ハードウェアクロック
- マザーボード上の IC によって提供される時計. マザーボード上の電池はこのためにある.
- 電源を落としても時刻は進む.
- RTC(Real Time Clock)とも呼ばれる.
- システムクロック
- Linux カーネルの内部に存在している時計.
- 起動時に一度だけハードウェア・クロックを参照し, システム・クロックを設定する.
- 時刻は 1970/01/01T00:00:00 からの経過時間として保持される.
ラズパイはハードウェアクロックを持たなかったが, 仮想サーバにはハードウェアクロックが存在する.
$ su # hwclock 2018-12-04 09:17:57.213243+0900
systemdに導入された timdatectl コマンドでシステム時刻の各種表示形式を確認することができる. Local time は日本時間, Universal time は世界標準時である. ここでポイントは "Network time on" と "NTP synchronized" で, ネットワーク経由で時刻合わせをしていることがわかる.
# timedatectl status Local time: 火 2018-12-04 09:18:29 JST Universal time: 火 2018-12-04 00:18:29 UTC RTC time: 火 2018-12-04 00:18:29 Time zone: Asia/Tokyo (JST, +0900) Network time on: yes NTP synchronized: yes RTC in local TZ: no
学内の NTP サーバを使うように設定してみよ.
# vi /etc/systemd/timesyncd.conf [Time] NTP=ntp.matsue-ct.jp (ホスト名の設定) FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org (コメントアウト外す) # reboot
再起動後, 再び systemctl を用いて, NTP サーバとして ntp.matsue-ct.jp が 用いられていることを確認する (ログの部分に着目せよ).
$ systemctl status systemd-timesyncd.service ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor pres Drop-In: /lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Tue 2018-12-04 09:20:39 JST; 21s ago Docs: man:systemd-timesyncd.service(8) Main PID: 473 (systemd-timesyn) Status: "Synchronized to time server 10.0.10.6:123 (ntp.matsue-ct.jp)." Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─473 /lib/systemd/systemd-timesyncd
ユーザ管理
自分自身と教員のユーザアカウントを作成し, 両名を sudo コマンドで管理者 権限を使えるように設定する.
以下の例では自分自信のアカウント名は hogehoge としているが, 適宜希望アカウント名で置き換えること. ラズパイのユーザ名と同じにしておくのが良いだろう.
なお標準的な Linux コマンドの解説は, 例えば LPI-Japan「Linux 標準教科書」 を参照のこと.
自分のユーザアカウントの作成
まずは root のパスワードを変更する.
$ su # passwd 新しい UNIX パスワードを入力してください: (キーボード入力しても何も表示されない) 新しい UNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました # exit $
現在のアカウント名を確認してみよう. 現在のユーザが jxxxx であることが確認できる.
$ whoami jxxxx
自分のユーザアカウントを adduser コマンドで作成する. 以下ではアカウント名を hogehoge としているが, 各自の好きな文字列で置き換えること (学籍番号は使わない). ターミナルを起動し, adduser コマンドでユーザを作成する. 途中で名前や部屋番号など 聞かれるが, フルネームのみ真面目に入力すれば良い.
$ su # adduser hogehoge (hogehoge の部分は適宜変更すること) ユーザ `hogehoge' を追加しています... 新しいグループ `hogehoge' (1001) を追加しています... 新しいユーザ `hogehoge' (1001) をグループ `hogehoge' として追加しています... ホームディレクトリ `/home/hogehoge' を作成しています... `/etc/skel' からファイルをコピーしています... 新しい UNIX パスワードを入力してください: 新しい UNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました hogehoge のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: SUGIYAMA Ko-ichiro (自分の名前を入れる) 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n]
教員のユーザアカウントの作成
教員のユーザアカウント (sugiyama) を作成する. ここではパスワードを設定しないので, --disabled-password オプションを付けて adduser コマンドを実行する. フルネームには SUGIYAMA Ko-ichiro と入れること.
# adduser --disabled-password sugiyama ユーザ `sugiyama' を追加しています... 新しいグループ `sugiyama' (1002) を追加しています... 新しいユーザ `sugiyama' (1002) をグループ `sugiyama' として追加しています... ホームディレクトリ `/home/sugiyama' を作成しています... `/etc/skel' からファイルをコピーしています... sugiyama のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: SUGIYAMA Ko-ichiro 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n] Y
グループの設定
新規作成したユーザ hogehoge と sugiyama をグループ netdev と sudo に加えておく.
# usermod -G netdev,sudo hogehoge # usermod -G netdev,sudo sugiyama
確認として, /etc/group の中身を確認する.
# grep netdev /etc/group netdev:x:108:jxxxx,hogehoge,sugiyama # grep sudo /etc/group sudo:x:27:sugiyama,hogehoge
管理者権限の設定
Linux で管理者権限を用いる時は, root でログインするのではなく, sudo コマンドを用いるのが一般的である. ラズパイと同様に sudo を使って管理者権限を使えるようにする.
# apt-get update ...略... # apt-get install sudo ...略...
今回は新たに作成した自分のアカウントと教員のユーザアカウントについて sudo の設定を行う. sudo コマンドの設定ファイル (/etc/sudoers) を確認すると, sudo グループに属するユーザは管理者権限を行使できるようになっていることがわかる. 先頭の "%" はグループを意味するので, 以下の例の "%sudo" は "sudo グループに属するユーザ" という意味である. すなわち, デフォルトで sudo グループに属するユーザは管理者権限を使えるようになっている.
# cat /etc/sudoers (...中略...) # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL (...後略...) # exit $ exit (ログアウト)
なお今回はパスワードなしで sudo 権限を使えるようにする必要がない.
再ログインと sudo の確認
再度仮想マシンにログインをする. ログインする際はユーザ hogehoge を使うこと.
前節で hogehoge と sugiyama を sudo グループに追加したので, 実は彼らは管理者権限を使うことができるようになっている. 確認を行うために, まずは, su コマンドを使って新たに作成したユーザ hogehoge にログインし, sudo -s コマンドを実行する. プロンプトが $ から # へ変わることを確認する. sudo コマンドを初めて実行するときは, 管理者権限を使う心得が表示されるので, 心に刻むこと.
hogehoge$ whoami (現在のユーザを確認) hogehoge hogehoge$ sudo -s (hogehoge から管理者に移行) あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] hogehoge のパスワード: # (管理者権限となったのでプロンプトが # に変わる) # exit (管理者から hogehoge へ移行) $ exit (ログアウト)
ssh の設定
次に, 公開鍵認証による ssh 接続を許可する. sshd_config の中の "PubkeyAuthentication yes" と書かれた行のコメントアウトを外す. 設定を変更した後は必ず SSH サーバを再起動すること.
$ sudo -s [sudo] hogehoge のパスワード: # vi /etc/ssh/sshd_config ...(略)... PubkeyAuthentication yes (コメントアウトを外す) #PubkeyAuthentication yes # /etc/init.d/ssh restart (SSH サーバの再起動) [ ok ] Restarting ssh (via systemctl): ssh.service. # exit $
リモートアクセス (公開鍵認証): sky サーバ => 仮想マシン
自分のアカウントの設定
まず, 仮想マシンからサーバ sky.epi.it.matsue-ct.jp にログインする. サーバと仮想マシンの区別をするために, サーバのコマンドプロンプト ($, #) の 前にホスト名 (sky) を付けていることに注意せよ.
$ ssh -l jxxxx sky.epi.it.matsue-ct.jp The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. sky$ sky$
既にサーバ上で ssh 公開鍵を作成したので, それを仮想マシンにもコピーする. 公開鍵をコピーするために ssh-copy-id コマンドを実行する.
sky$ ssh-copy-id hogehoge@XX.XX.XX.XX (仮想マシンの IP) ECDSA key fingerprint is 4f:aa:eb:69:d0:29:42:32:d4:75:6d:4b:3c:ce:9b:a6. aAre you sure you want to continue connecting (yes/no)? yes (yes 入力) /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys hogehoge@10.176.0.151's password: (仮想マシンのパスワード入力) Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'hogehoge@10.176.0.151'" and check to make sure that only the key(s) you wanted were added.
テスト接続を行う. 公開鍵認証が優先されるので, パスフレーズの入力が求められる.
sky$ ssh -l hogehoge XX.XX.XX.XX Enter passphrase for key '/home/hogehoge/.ssh/id_rsa': (パスフレーズの入力) Linux iotex 4.9.0-7-amd64 #1 SMP Debian 4.9.110-3+deb9u2 (2018-08-13) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Dec 4 09:55:39 2018 from 10.163.64.125 $ exit (仮想マシンからログアウト) sky$
教員のアカウントの設定
教員のアカウントで, サーバから仮想マシンにログインできるようにする. 以下で行う手順 (1), (2) は ssh-copy-id コマンドの内部で実際に行なわれている処理である (ssh-key-copy コマンドが使えないから).
1) サーバ上の公開鍵を転送.
sky$ scp /home/sugiyama/sugiyama-id_rsa.pub hogehoge@XX.XXX.XXX.XXX:~/ sky$ exit (サーバからログアウト) $ (仮想マシンに移動)
2) 仮想マシンにおいて教員の公開鍵を設定する. 転送した公開鍵を手動で ~sugiyama/.ssh/authorized_keys に保存する. ファイル/ディレクトリの所有者とパーミッションを適切に設定すること.
$ sudo -s # cd /home/sugiyama # mkdir .ssh # chmod 700 .ssh/ (パーミッション変更) # chown sugiyama.sugiyama .ssh/ (所有者・所有グループ変更) # ls -ld .ssh/ (確認) drwx------ 2 sugiyama sugiyama 4096 11月 1 00:23 .ssh/ # mv /home/hogehoge/sugiyama-id_rsa.pub .ssh/authorized_keys # chmod 600 .ssh/authorized_keys # chown sugiyama.sugiyama .ssh/authorized_keys # ls -l .ssh/authorized_keys -rw------- 1 sugiyama sugiyama 394 12月 4 10:09 .ssh/authorized_keys
メール
メールサーバの設定
MTA (Mail Transfer Agent) として postfix, sendmail, qmail が有名であるが, 今回は外部からのメール受信を行わないので高機能な MTA は必要ない. Debian のデフォルトの MTA である exim を用いることにする. mailutils パッケージをインストールすると, それが依存する exim 関連のパッケージも一緒にインストールされている.
# apt-get update ...(略)... # apt-get upgrade ...(略)... # apt-get install mailutils ...(略)...
外部へメールを送るための設定を行う. メールの送信には高専のメールサーバ (red.matsue-ct.jp) をリレーする. 外部からのメールは受信しないことにする.
# dpkg-reconfigure exim4-config
dpkg-reconfigure コマンドを実行すると, ターミナル上にグラフィカルな設定画面が表示される. タブを押すと <了解> <取消> を選択することができる.
- メール設定のタイプ: スマートホストでメール送信; SMTP または fetchmail で受診する
- メールは全て高専のメールサーバ (スマートホスト) に送信するので. 仮想マシンから高専の外部のサーバへ SMTP できない.
- システムメール名: iot-XX (各仮想マシンのホスト名)
- デフォルトのホスト名のまま変更しなくて良い. 後ほど書き換えを有効にする.
- 入力側 SMTP 接続をリスンする IP アドレス: 127.0.0.1
- 外部からのメールを受信しない. 127.0.0.1 はローカルホストを意味する IP.
- メールを受け取るその他の宛先: (空欄)
- 外部からのメールを受信しないので, 設定する必要がない.
- メールをリレーするマシン: (空欄)
- ほかのホスト向けのスマートホストにする必要がない
- スマートホスト: red.matsue-ct.jp
- 送信するメールでローカルメール名を隠しますか? : はい
- 表示するローカルユーザのドメイン名: epi.it.matsue-ct.jp
- epi.it.matsue-ct.jp は情報工学科杉山研究室のサブドメイン.
- これを有効にしないと, スマートホスト (red.matsue-ct.jp) が受信を拒否する.
- DNS クエリの数を最小限にとどめますか? : いいえ
- インターネットに常時接続しているので.
- ローカルメールの配送方法: /var/mail 内の mbox 形式
- 設定を小さなファイルに分割しますか? : いいえ
root などのシステム宛てメールの転送設定
システムが発送する root 宛てのメールの宛先を自分自身に変更しておく. 意味としては, ":" の前に書かれているユーザ宛てのメールを ":" の後ろに書かれているユーザに送る, である.
# vi /etc/aliases # /etc/aliases mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: xxxx@matsue-ct.jp (この行を書き換える. 自分自身のメールアドレスに)
設定を有効にするには, newaliases コマンドを実行する必要がある.
# newaliases
自分宛てのメールの転送設定
自分宛てのメールを転送する場合は, ホームディレクトリに .forward ファイルを置く.
# exit $ vi ~/.forward xxxx@matsue-ct.jp (自分自身のメールアドレスを 1 行だけ書く) $ chmod 600 ~/.forward
ローカルメールの送受信確認
ローカルメール配送の確認を行う. まずは mail コマンドを使って /etc/aliases の内容が反映されているか確認する. 以下のメールが自分のメールボックスに配送されることを確認すること.
$ echo "本文1" | mail -s "タイトル1" root $ echo "本文2" | mail -s "タイトル2" webmaster $ echo "本文3" | mail -s "タイトル3" postmaster $ echo "本文4" | mail -s "タイトル4" hogehoge
セキュリティ対策
不要なポートを閉じる
開いているポートを確認するには, netstat コマンドや nmap コマンドを用いる. なお, nmap コマンドはクラッキングの前段階として行われることが多いので, 無用の誤解を与えないために localhost 以外のホストに対して実行しないこと.
netstat -ntl コマンドを実行する. 以下の例では, 22 番ポート (SSH) が全ての IP アドレス (0.0.0.0) に対して開いており, 25 番ポート (SMTP) が自分 (127.0.0.1) に対してのみ 開かれていることがわかる. また IPv6 で 22 番ポート (SSH) が全ての IP アドレス (0.0.0.0) に対して開かれていることがわかる.
$ netstat -ntl 稼働中のインターネット接続 (サーバのみ) Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN
ssh の設定の修正
ssh でパスワードによる認証を無効にし, 公開鍵認証のみをサポートする.
$ sudo -s # vi /etc/ssh/sshd_config # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes (変更前) PasswordAuthentication no (変更後, yes -> no にすること)
設定を変更したら ssh サーバを再起動する.
# /etc/init.d/ssh restart [ ok ] Restarting ssh (via systemctl): ssh.service. # exit $ exit
確認を行う. サーバにログインしてから仮想マシンに対して ssh コマンドを実行する.
sky:~$ ssh -l hogehoge XX.XX.XX.XX (仮想マシンのユーザ名と IP を使うこと) Enter passphrase for key '/home/hogehoge/.ssh/id_rsa': (パスフレーズ入力) ...(略)... $ (仮想マシンに再度ログイン) $ exit (仮想マシンからサーバへ) sky$
TCP Wrapper によるアクセス制限
TCP Wrapper を用いて ssh 接続を許可するホストを限定する. 設定ファイルは /etc/hosts.allow と /etc/hosts.deny の 2 つである. 動作としては /etc/hosts.allow に書かれたアクセスルールが最初に適用され, 次に /etc/hosts.deny に書かれたアクセスルールが適用される.
まず, /etc/hosts.allow において, サーバ sky.epi.it.matsue-ct.jp (10.100.100.1) のみに SSH アクセスの許可を出すことにする.
$ sudo -s # vi /etc/hosts.allow sshd: 10.100.100.1 (末尾に追記)
書式としては, コロンの前にデーモン名 (SSH ならば sshd (ssh daemon)),
コロンの後ろにホスト名である. ホスト名には .matsue-ct.jp のように,
matsue-ct.jp のドメインを持つ全てのホスト, という書き方もできる.
[注: 書式的にはドメインで書いても良いはずだが, IP で指定しないとうまく動かなかった]
次に, /etc/hosts.deny において, 全てのホストからの接続を禁止する 設定を行う. ALL: ALL とすると, 外部の全てのホストから, 全てのデーモン (ポート) へのアクセスを拒否することとなる.
# vi /etc/hosts.deny ALL: ALL (末尾に追記)
TCP wrapper は再起動は必要なく, 編集したファイルの内容は直ちに適用される.
以上の設定で, sky.epi.it.matsue-ct.jp 以外は仮想マシンのどのポートにもアクセスできなくなったはずである. 動作確認として, 友人の仮想マシンに SSH 接続してみよ. 正しく設定されていれば, 以下のように Connection がリセットされ, SSH 接続できないことがわかる.
$ ssh -l pi XX.XX.XX.XX (友人の仮想マシンの IP) ssh_exchange_identification: read: Connection reset by peer
さらに確認として, サーバからは仮想マシンに対して ssh 接続できることを確かめる.
sky:~$ ssh -l hogehoge XX.XX.XX.XX (自分の仮想マシンの IP) Enter passphrase for key '/home/jxxxx/.ssh/id_rsa': (パスフレーズ入力) ...(略)...
$ (仮想マシンに再度ログイン) $ exit (仮想マシンからサーバへ) sky$
フィルタリング : fail2ban (iptables)
本演習では iptables のフロントエンドとして実装されたソフトウェア fail2ban を用いる. iptables を直接設定するのは初心者には難しいためである.
fail2ban はログを監視し, 特定のパターンに引っかかる動作が記録されたらファイヤウォールに動的にルールを追加して, 通信をブロックする. 例えば ssh のブルトフォース攻撃 (パスワード総当たり攻撃) のように, 頻繁にアクセス & ログイン失敗を繰り返すホストからのアクセスを切断する.
まず, iptables の現在の設定を確認する. すでに fail2ban をインストールしているので, fail2ban のエントリも存在する.
$ sudo -s # apt-get update ....(略)... # apt-get install fail2ban ....(略)... # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain f2b-sshd (0 references) target prot opt source destination RETURN all -- anywhere anywhere
fail2ban の設定ファイルは /etc/fail2ban/jail.conf および /etc/fail2ban/jail.d/defaults-debian.conf である. 各ポートに対して /etc/fail2ban/filter.d/ 以下にフィルタが用意されている. デフォルトの設定では ssh のみ監視が有効にされている. 本演習のラズパイでは ssh 以外に外部からアクセス可能なポートを開けていないので, ssh 以外のフィルタを有効にする必要はない.
sshd が監視対象となっていることは, 以下のコマンドを実行すれば確かめられる.
# fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd
[参考] ban された時の動作
fail2ban をインストールしたので, ssh で何度もパスワード入力を誤ると ban される (以下のように ssh コネクションが切られる). デフォルトでは 10 分間接続不可となる.
sky$ ssh XX.XX.XX.XX ssh: connect to host 10.138.64.109 port 22: Connection refused
ラズパイで ssh アクセスで ban された IP を確認するためには以下のようにする.
# fail2ban-client status sshd Status for the jail: sshd |- filter | |- File list: /var/log/auth.log | |- Currently failed: 0 | `- Total failed: 6 `- action |- Currently banned: 1 | `- IP list: 10.164.1.197 `- Total banned: 1
ban された IP を解除するには以下のようにコマンドをうつ.
# fail2ban-client set sshd unbanip XX.XX.XX.XX (ban された IP)
不要なユーザのアカウントのロック
ユーザーアカウントをロックすると, そのアカウントは使用不可の状態になりログインすらできなくなる. ユーザ jxxxx はもはや必要ないので, このアカウントをロックする.
$ sudo -s # passwd -l jxxxx passwd: パスワード期限切れ情報を変更しました # exit $ su jxxxx (ユーザ jxxxx にスイッチ) パスワード: su: 認証失敗
なお, パスワードロックを外す場合は, $ passwd -u jxxxx とすればよい.
Web サーバのインストール
Web サーバとして Apache2 を利用する. 以下のように apache2 パッケージをデフォルト設定で Web サーバが起動する.
$ sudo -s # apt-get update # apt-get install apache2
課題
- http://10.176.0.XXX (XXX は自分の仮想マシンの IP) にブラウザでアクセスしてみよ.
ブラウザで表示されるページは /var/www/html/ 以下におかれている.
/var/www/html に適当な HTML ファイルを追加設置し, ブラウザからそれにアクセスしてみよ.
- ブラウザで HTML ファイルを表示し, そのスナップショットを wbt に提出せよ.
- 教員がチェックスクリプトを実行する. そのチェックに必ず合格すること.
- 設定が終わり次第, 教員にチェックスクリプト実行を依頼すること.