Linux実習Ex-No.00

 

概要

  • 2年ぶりにLinux実習をやってみる
  • 難易度は当然上げる
  • systemdを出来る限り活用していく
  • 自分のまとめも兼ねる

 

実施する理由

大学1年の時にLinux実習 を授業でやってはや2年。
コンテナやsystemdと言った新しい技術が主流となっていったので自分のまとめとしての意味も持たせて記録する。
しかし、そのままやったのでは古すぎたり不要な部分も多いので一部条件を変更して行う。

レギュレーション

基本的には2018/02/17時点でのLinux実習 の内容の6-14回を用いる。
以下にその文章を引用する。

第6回  http (Apache)  2017年5月25日
WWWとは何か。その歴史と意義を述べよ。
html、http、httpsとは何か。
httpサーバプログラムには幾つもの種類がある。列挙してそれぞれの特徴を述べよ。
他のhttpサーバと比較してApacheの特徴を述べよ。
Apacheの設定をした上で、自分のサーバに世間に公開して恥ずかしくない画像入りのWWWページを作成し、公開せよ。
(著作権や肖像権を侵害しないように。写真は自分で撮影すると良い。人物を撮影したり写真を公開したりする時は本人の了解を得てから。)
関係する次のファイルの書式と意味を説明せよ。
/etc/apache2/conf/httpd.conf, /var/log/apache2/access_log
refererとは何か。refererが作られた目的は何か。refererにはどのようなセキュリティ上の問題があるか。
user agentとは何か。
refererとuser agentはどのファイルに記録されるか。
Linuxを起動した時にApacheが自動的に稼働するようにせよ。
/etc/apache2/conf/にある設定ファイルを変更し、適切かつ好みの設定にせよ。
自分で作成したページを、https(443/tcp)でも公開せよ。

ヒント iptables、ip6tablesの設定変更も必要

第7回  smtp (postfix)  2017年6月1日
MTAとは何か。役割と意義を述べよ。
MTAとMUAとMSAの違いを述べよ。
sendmail、qmail、postfixその他幾つものMTAがあるが、それぞれの特徴と違いを述べよ。
postfixを適切に設定せよ。postfixを稼働させ、メールが正しく送受信できることを確かめよ。
SMTP認証を利用できるように設定せよ。
25/tcp, 465/tcp, 587/tcpをどのように使い分けるか。
メールをやり取りすると、/var/log/maillogには何が記録されるか。実例を示して書式を説明せよ。
smtpで応答に用いられる3桁の数字は何か。特に百の位の意味を説明せよ。
自分宛のメールをサーバに残し、かつ電話機にも転送したいとする。どのように設定すればよいか。
TLSが使用できるようにpostfixを設定せよ。
MTAでの主な迷惑メール対策(SPF、Greylisting、アドレス検証、Greet pause、その他)について説明せよ。そして実際に作動させてみよ。

ヒント https://www.rfc-editor.org/rfc.html

第8回  DNS (BIND)  2017年6月8日
DNSとは何か。DNSの必要性と仕組みを説明せよ。
世界中どこからでも検索することを可能にした方法を詳しく説明せよ。
BIND、djbdns、PowerDNSなど幾つかのDNSデーモンがあるが、それぞれの特徴と違いを述べよ。
先ずキャッシュサーバを運用せよ。その際、再帰的名前解決を提供する範囲を実習室内に制限せよ。そして/etc/resolv.confを書き換え、自分のnamedを利用せよ。ただし、NetworkManagerを使用しているとresolv.confが破壊されてしまうので、NetworkManagerを抹消すると良い。
再帰的名前解決を無制限に提供すること(オープンキャッシュ)は何が問題か。
キャッシュ汚染とは何か。何が問題か。
DNSSECとは何か。必要性と仕組みを説明せよ。
キャッシュサーバでDNSSECを有効にする設定をせよ。
自分のドメイン名を決めよ。ここでは仮にhoge.elec.e.yamagata-u.ac.jp.であるとして説明する。
named.confと順引用設定ファイルを編集し、自分のドメインhoge.elec.e.yamagata-u.ac.jp.を運用せよ。
メールをID@hoge.elec.e.yamagata-u.ac.jpで受け取れるようにせよ。
WWWページをhttp://www.hoge.elec.e.yamagata-u.ac.jp/で見えるようにせよ。
サーバを起動した時、自動的にnamedが動くようにするにはどうしたら良いか。
「SOA」「A」「PTR」「MX」「NS」「CNAME」「AAAA」「TXT」の各レコードの意味は何か。実例を示して書式も説明せよ。
SPFを登録せよ。
逆引(IPアドレス→FQDNの変換)の仕組みを説明せよ。

ヒント http://www.root-servers.org/
caching-nameserverが入っていない場合は、最初にapt-getでインストールすると良い。

第9回  ssh  2017年6月15日
sshとは何か。使用目的、特徴、意義を述べよ。
次のコマンドの使用方法を第5回と同様に詳しく説明せよ。
ssh, slogin, scp, sftp, ssh-keygen

共通鍵暗号と公開鍵暗号を比較し、両者の特徴と違いを述べよ。
sshは共通鍵によって暗号化通信を行なっている。共通鍵を安全に生成(交換)する方法を説明せよ。
公開鍵認証の原理を説明せよ。
公開鍵認証とパスワード認証を比較し、両者の利点と欠点を述べよ。
RSA鍵、DSA鍵、ECDSA鍵、ED25519鍵の数学的な原理を説明せよ。
ED25519鍵を作成し、秘密鍵を自分のサーバに置け。公開鍵を自分以外の全てのサーバに置き、ssh2のED25519鍵認証で自分以外のサーバにログインできるようにせよ。
sshのポートフォワード機能とは何か。原理と使い方を説明せよ。
sshのポートフォワードを通してXを使い、別のサーバで実行したプログラムのウインドウを手元に開け。
sftpを用いてファイル転送をしてみよ。また、scpを用いてファイル転送をしてみよ。

第10回  時刻  2017年6月22日
atとは何か。
atの使用方法を第5回と同様に詳しく説明せよ。
cronとは何か。
cronの使用方法を第5回と同様に詳しく説明せよ。
NTPとは何か。
ntpd、ntpdateの使用方法を第5回と同様に詳しく説明せよ。
/sbin/clockは何のためにあるか。また、clockの使用方法を同様に説明せよ。
ntp.elec.e.yamagata-u.ac.jp.を参照してサーバの時刻を常に自動的に合わせるように設定せよ。
明日の午前4時ちょうどに自動的にメールを送れ。(メールの宛先は実習室の扉に貼ってある)
西暦14292年7月6日は何曜日か。求めた方法も記せ。

ヒント http://www.ntp.org/

第11回  デーモン  2017年6月29日
ポートとは何か。
デーモンとは何か。
ランレベルとは何か。
inetdやxinetdの目的と役割は何か。
tcpdの目的と役割は何か。
インストール済のその他全てのデーモンの名前と目的と役割を調べ、ポート番号およびプロトコルと共に一覧表にせよ。
次のコマンドの使用方法を第5回と同様に詳しく説明せよ。
netstat, telnet, chkconfig

qpopperまたはdovecotを適切に設定(TLSによる暗号化を含む)し、pop3またはimapでメールを取得できるようにせよ。
/etc/hosts.allowと/etc/hosts.denyの書式を説明せよ。
/etc/hosts.allowと/etc/hosts.denyを設定し、実際どのようにtcpdが働くかを実験せよ。
tcpdで禁止したアクセスがあるとログにはどのように記録が残るか。許可したアクセスの場合はどうか。実例を示して説明せよ。
/etc/rc.d/以下のファイルが各ランレベル毎の自動起動に使われる仕組みを説明せよ。
停止しても支障のないデーモンを全て止め、CPUとメモリの無駄遣いを減らして高速化せよ。

第12回  起動とファイルシステム  2017年7月6日
initとは何か。
grubの役割は何か。grubの使い方を説明せよ。起動時に任意のランレベルを指定するにはどうしたら良いか。
/etc/fstab、/etc/mtabの役割と書式を説明せよ。
upstartの仕組みと、/etc/init/*の役割・書式を説明せよ。
/etc/sysconfig/以下の各ファイルの役割を個別に説明せよ。
マウントとは何か。
DVDやUSBメモリを入れると自動的にマウントされる仕組みを説明せよ。
Linuxで使われているファイルシステムについて説明せよ。
ext2とext3とext4の違いは何か。
シングルユーザモードとは何か。
インストール用DVDで起動し、fsckでハードディスクの検査を行え。
(ヒント CTRL+ALT+F2でシェルを出す)
rwでマウントされているディスクにfsckをかけるのは問題がある。何故か。
/bin/syncの役割は何か。
ハードディスクを増設する手順を具体的に説明せよ。
中身を移し替えてハードディスクを交換する手順を具体的に説明せよ。

第13回  パケットフィルタ  2017年7月13日
IPとは何か。IPアドレスとは何か。
CIDRによるIPアドレス表記方法を説明せよ。
TCPとは何か。UDPとは何か。ICMPとは何か。TCPとUDPはどのように使い分けるべきか。
TCPにはどのようなフラグがあるか。また、ICMPの種類と役割を説明せよ。
パケットとは何か。
パケットフィルタとは何か。何のために必要か。
次のコマンドの使用方法を第4回と同様に詳しく説明せよ。
iptables, iptables-save, iptables-restore
ip6tables, ip6tables-save, ip6tables-restore

iptablesのモジュール「icmp」「tcp」「udp」「state」「recent」の使用方法を説明せよ。
パブリックIPv4アドレスとは何か。プライベートIPv4アドレスとは何か。
(プライベートIPv4アドレスの変形で、ラージスケールNAT用のIPv4アドレスもある)
パケットフィルタは必要なパケットのみを通し、残りは全て捨てるように設定すべきである。icmpは何を通せば良いか。tcpは何を通せば良いか。udpは何を通せば良いか。一覧表を作り、個々の理由も記せ。
そのルールをiptablesとip6tablesの書式で書け。
そのルールを実際に設定し、ログをとれ。(iptables-ipv6をインストールする必要あり)
起動時に自動的にパケットフィルタを有効にするためにはどうすれば良いか。
5日間以上パケットフィルタのログをとり、世界からどのような不正なパケットが来たかを報告せよ。また、個々の不正なパケットが発せられた理由を推理せよ。
侵入者はほとんどの場合、既知のセキュリティホールを突いて侵入して来る。今年報告された深刻なセキュリティホールを調べてみよ。
セキュリティホールの情報は、報告された直後に知る必要がある。どうすれば素早く知ることができるか。
セキュリティホールが報告された。さてどうすべきか。

第14回  IPv6  2017年7月20日
IPv6とは何か。IPv4とは何か。IPv6は何故必要か。
IPv6に盛り込まれた新機能は何か。
IPv6アドレスの構造と表記方法を説明せよ。
IPv6アドレスと経路が自動的に設定される仕組みを説明せよ。
http://www.kame.net を表示してみよ。IPv6で通信しているかどうかは「DANCING KAME」で確かめること ができる。
IPv6で外の世界にping6をかけてみよ。traceroute6で経路を確認せよ。
namedにIPv6アドレスを設定せよ。
namedがIPv6で通信できるように設定せよ。
ApacheがIPv6で通信できるように設定せよ。
PostfixとSylpheedがIPv6を使用するように設定せよ。そして送受信したメールのヘッダでIPv6が使用されたことを確認せよ。
sshを使ってIPv6で他のサーバから自分のサーバにログインせよ。
その他全ての通信でもIPv6を優先して使用するように設定せよ。

以上引用。原文そのまま

しかし、今回は検証サーバ上に構成する都合上ローカルアドレスで行う必要があるためそれに関連する一部の条件は変更する。
また、 systemd,firewalld,SELinux,systemd-nspawnを用いるためinit,iptables関連については読み替える。
用いるディストリはFedora27を使う。
これらをまとめると

  • ディストリ:Fedora27
  • SELinuxはEnconfig
  • ネットワークもsystemd
  • できるだけ各コンテナに分けて分離する。
  • firewalldを活用する。
  • Linux実習をしていた時の気持ちを思い出す。

と言ったことを軸にして構築する。
次回はFedora 27 serverを最小構成でインストールが完了した状態から行っていく。

 

 

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください