眞鍋 Key Result(3/6~3/10) - careerbeat/dit-ehime GitHub Wiki

3/6

3/7

3/8

3/9

3/6

Key Result 1

ジョブスケジューリングによる自動化

cron

  • スケジュールを定義したコマンドを定期的に実行するプログラム(デーモン)
  • スケジュール管理のデーモンcrondとスケジュールを編集するcrontabコマンドで構成

crontabコマンド

crontab [オプション]

ex)crontabファイルの編集

# crontab -e
minute hour day month week command の形式で書く(* は全ての値に合致)

atコマンド

at [オプション]

1回だけジョブ実行するコマンドで、対話形式でコマンドを指定する

アクセス制御

  • cronコマンドは/etc/cron.allowファイルと/etc/cron.denyファイルでユーザー名を指定してアクセス制御を行う
  • atコマンドは/etc/at.allowファイルと/etc/at.denyファイルでユーザー名を指定してアクセス制御を行う

ローカライゼーションと国際化

ローカライゼーション

  • 言語、日付、通貨単位などを国や地域に合わせること(それらの表記規則=ロケール)
  • ロケールは環境変数で設定されている
  • localeコマンドで現在のロケールの設定を確認する
locale [オプション] ユーザー名

文字コード

  • コンピュータ上で文字を利用するために各文字に割り当てたバイトコード
  • iconvコマンドで文字コードを変換できる
iconv [オプション] [ファイル名]

タイムゾーン

  • 地域ごとに区分された標準時間帯
  • /etc/localtimeへのコピーかシンボリックリンクの作成で設定できる
  • tzselectコマンドでも一覧から表示される情報をもとにタイムゾーンを設定できる
  • tzconfigコマンドでも/etc/localtimeと/etc/timezoneの値をまとめて変更することでタイムゾーンを設定できる

システム時刻の維持

ハードウェアクロックとシステムクロック(Linuxの2種類の時計)

  • ハードウェアクロック:ハードウェアとして内蔵された時計(電源OFFでも動作) ‐ システムクロック:メモリ上で動作する時計(電源ONのみ動作)、dateコマンドで参照

システムクロックとハードウェアクロックの修正

  • システムクロックを修正するためにはdateコマンドを使用する
date [MMDDhhmmCCYY.ss]
  • ハードウェアクロックを修正するためにはhwclockコマンドを使用する
hwclock [オプション]

NTPによる時刻設定

  • NTPは正確な時刻を取得するためにはインターネットなどのIPネットワーク経由でクロック同期を行うプロトコル
  • ntpdateコマンドを使用してNTPサーバから正確な時刻情報を取得する
ntpdate NTPサーバ名
  • 自組織内でNTPサーバーを構築する場合は/etc/ntp.confで設定を行い、下記コマンドでデーモンを起動させる
/etc/init.d/ntpd start

3/7

Key Result 1

システムのログ

syslog

  • Linuxで発生する各種イベントをログファイルに出力したりコンソールに出力するプログラム
  • syslogdというデーモンにより実行される
  • 他のプログラムからのメッセージを受信して、出力元や優先度に従って分類を行って、syslogで定義した出力先に送信する

syslogの設定

  • /etc/syslog.confファイルで設定を行う(CentOS6以降ではrsyslogが採用されている場合があり、その場合は/etc/rsyslog.conf で設定を行う)
[syslog.confの書式]
ファシリティ. プライオリティ アクション
  • ファシリティ:ログの種別(メッセージの出力元)のこと
  • プライオリティ:メッセージの優先度のこと(emergが最も高く、debugが最も低い)
  • アクション:メッセージの出力先を指定する

loggerコマンド

‐ ログメッセージを生成して、syslog.confの設定ファイルが正しく設定されたのかを確認できる

logger [-p ファシリティ. プライオリティ] [-t タグ] メッセージ

syslogの一元管理

  • 複数のLinuxマシンを運用する場合、syslogは1つのLinuxマシンに集中管理させることが一般的
  • syslog.confファイルで、syslogを管理するサーバをログの出力先として設定する

ログファイルの種類

ログファイル名 概要
/var/log/messages 一般的なシステム関連のメッセージ
/var/log/secure セキュリティに関するメッセージ
/var/log/cron 定期的に実行される処理結果に関するメッセージ
/var/log/maillog メールに関するメッセージ
/var/log/spooler 印刷に関するメッセージ
/var/log/boot.log OS起動時に関するメッセージ

ログファイルの確認コマンド

  • moreコマンド:1行目から全て確認できる
  • tailコマンド:末尾10行を確認できる
  • tail -fコマンド:リアルタイムで確認できる
  • grepコマンド:指定したキーワードを含むものを確認する
  • lastコマンド:/var/log/wtmpのログファイルを確認する
  • lastlogコマンド:/var/log/lastlogのログファイルを確認する

ログファイルのローテーション機能

  • 古くなったログを切り分けて、1つのログファイルのサイズが大きくなることを防ぐ
  • logrotateユーティリティによって提供
  • /etc/logrotate.confで設定を行う

メール転送エージェント(MTA)の基本

MTAとは

  • 電子メールを配信/転送するプログラム(メールサーバ) ‐ クライアントが使用するメーラはMUA(Mail User Agent)
  • 過去の標準はsedmailだったが、セキュリティや性能面から利用者が減っている
  • postfixはsendmailとの互換性を保ちながらセキュリティが強化されている

MTAの起動

  • MTAは25番ポートを使用する
sendmailの起動:/etc/init.d/sendmail start
postfixの起動:/etc/init.d/postfix start

メールの送信及び受信メールの確認

  • コマンドラインで行う場合は、mailコマンドを使用する
[メールの送信]
mail -s 題名 宛先ユーザー名 or 宛先メールアドレス
[受信メールの確認]
引数なしでmailコマンドを実行する

メールの転送

  • 方法①:/etc/aliasesに下記の書式で記述(/etc/aliasesを変更したら、newaliasesコマンドで有効化)
転送元ユーザー: 転送先ユーザー
  • 方法②:ホームディレクトリ下の~.forwardに転送先アドレスを設定する

送信待ちメール、受信待ちメール

  • 送信待ちメールはメールキュー(/var/spool/mqueue)に蓄えられる(mailqコマンドで確認できる)
  • 受信待ちメールは/var/spool/mailに保存される

プリンターと印刷の管理

CUPS(Common Unix Printing System)とは

  • 多くのLinuxディストリビューションで採用されているプリンタ印刷のためのシステム
  • ネットワーク上のプリンタをサポートする印刷プロトコルとしてIPPを採用
  • AdobeのPPD形式ファイル(テキスト)でデバイスドライバの設定が可能
  • Webブラウザで設定が可能
  • 複数のプリンタを1台に見せかける機能をサポート
  • /etc/cupsディレクトリに情報が格納されている
  • 設定は上記ディレクトリ下の/etc/cups/cupsd.confを編集するか、WebブラウザでCUPSの設定ページにアクセスして編集することで行う
[CUPSサービスの起動]
/etc/init.d/cups start

印刷関連のコマンド

  • lprコマンド:指定したファイルや標準入力をプリントキューに送る
lpr オプション ファイル名
  • lpq コマンド:プリンタキューに登録されている印刷ジョブを確認する
lpq オプション ユーザー名 ジョブ番号
  • lprmコマンド:プリンタキューにある印刷ジョブを削除する
lprm オプション ジョブ番号

3/8

Key Result 1

インターネットプロトコルの基礎

TCP/IPプロトコル

  • インターネット通信・イントラネット通信において最も利用されている通信プロトコル
  • 複数のプロトコルからなる(中心はTCP/IP、他にICMP,UDP,HTTPなど)
  • 階層モデルは4階層で構成(アプリケーション層、トランスポート層、インターネット層、ネットワークインターフェース層)
階層名 役割 プロトコル例
アプリケーション層 アプリケーションごとの固有の規定 HTTP,FTP,SMTP,SSHなど
トランスポート層 ノード間(端末)のデータ転送の信頼性を確保するための規定 TCP,UDP
インターネット層 ネットワーク間のエンドツーエンドの通信のための規定 IP,ARP,ICMPなど
ネットワークインターフェース層 直接的に接続されたノード間の通信のための規定 Etherbet,PPPなど
  • 上記4階層によって送信の際にはカプセル化(プロトコルのヘッダの付加)、受信の際には非カプセル化を行ってデータの送受信を行う

IP(Internet Protocol)

  • 論理アドレス(IPアドレス)を各ノードに割り当てて各ノードを識別する
  • IPアドレスの宛先情報についてはIPヘッダに含まれる
  • IPヘッダのフォーマットは20バイト(最大60バイト)のサイズで、フラグやプロトコル、送信元・宛先IPアドレスなどの情報が含まれる
  • IPには下記のような特徴がある
特徴 概要
コネクションレス型通信 事前にコンピュータ間でコネクションを確立しないでいきなりデータ伝送をはじめる
ベストエフォート型通信 最善の努力(ベストエフォート)は尽くすが、必ずしも十分な品質は保証しない
階層型アドレッシング IPアドレスはネットワーク部とホスト部の2階層で構成される

TCP(Transmission Control Protocol)

  • 信頼性の高い通信を実現するために使用されるプロトコル
  • ポート番号(コンピュータが通信を行うために通信先のアプリケーションを特定するための番号)を指定して信頼性のある通信を実現する
  • ポート番号には下記の種類がある
タイプ 範囲 概要
ウェルノウンポート番号 0~1023 サーバのアプリケーションに割り当てられる
登録済みポート番号 1024~49151 独自に作成したアプリケーションに割り当てられる
ダイナミックポート番号 49152~65535 クライアント側のアプリケーションに自動的に割り当てられる

UDP(User Datagram Protocol)

  • TCPと比べて信頼性が高くはないが、速さやリアルタイム性を求める通信に使用されるプロトコル
  • コネクションレス型のプロトコルで信頼性は高くないが高速な通信ができる
  • リアルタイム性のあるデータ(音声・映像など)、複数人への同じデータ、信頼性が必要ない少量のデータを転送するのに用いる

ICMP(Internet Control Message Protocol)

  • IPプロトコルの「エラー通知」や「制御メッセージ」を転送するためのプロトコル ‐ ICMPメッセージは大きく2種類ある
  • Query:あるノードから特定のノードに対する通信状態を確認
  • Error:ノード間の通信で経路途中でパケットが廃棄されたりした場合に原因を送信元のノードにエラー通知

IPv4アドレス

  • IPアドレスは、インターネットやLANなどのIPネットワークに接続されたコンピュータなどに割り振られる32ビットの識別番号
  • Windowsの場合、ipconfigコマンドでIPアドレスの確認を行える
  • IPv4アドレスはネットワーク部とホスト部から構成され、その範囲の違いによって5つのクラスに分類される
クラス アドレス範囲 定義 用途
クラスA 0.0.0.0 ~ 127.255.255.255 ネットワーク部 (8bit) ホスト部 (24bit ) 大規模ネットワークでの使用
クラスB 128.0.0.0 ~ 191.255.255.255 ネットワーク部 (16bit) ホスト部 (16bit) 中規模ネットワークでの使用
クラスC 192.0.0.0 ~ 223.255.255.255 ネットワーク部 (24bit) ホスト部 (8bit) 小規模ネットワークでの使用
クラスD 224.0.0.0 ~ 239.255.255.255 下位28bitがマルチキャストグループID マルチキャスト用のアドレス
クラスE 240.0.0.0 ~ 255.255.255.255 現在、割り当てが定義されていない 実験用のアドレス
  • IPv4アドレスには、インターネットに接続された機器に一意に割り当てられるグローバルIPアドレスと会社や家庭などの組織内(ローカル)で一意に割り当てられるプライベートIPアドレスがある
  • VLSM(Variable Length Subnet Mask)という技術を用いて、1つのIPネットワークをサブネットに分割できる
  • CIDR(Classless InterDomain Routing)という技術を用いて、IPネットワークの経路情報を集約する際にクラスの概念をなくせる
  • サブネット部が全て0bitのネットワークをゼロサブネットという

IPv6アドレス

  • 世界的に利用者が急増したことでIPv4アドレスが枯渇した問題を解決するために開発された128ビットの識別番号
  • 事実上無制限にIPアドレスをデバイスに割り当てられる
  • 自動設定機能により自動で割り当てられる
  • 階層構造が厳密で、より効率的な経路集約を実現されルータの負荷が軽減されている
  • 簡素なヘッダにより、パケット転送の際のルーティング処理による負荷が軽減される ‐ Mobile IPv6により移動通信中でも同一のIPアドレスを使用して通信を途切れなく通信できる ‐ IPsecの実装が必須であり、実装させたい場合は、特別な機器を必要せずIPsecを実装できる(セキュアなインターネット)
  • IPv4アドレスが「.」区切りなのに対して、「:」区切り
  • プレフィックスとインターフェースIDで構成
  • 3つのタイプがある
タイプ 通信対象 概要
ユニキャストアドレス 1対1 1つのインターフェースを特定
マルチキャストアドレス 1対グループ 複数のインターフェースに割り当て可能
エニーキャストアドレス 1対グループ内の1つ グループに属する1つのインターフェースにパケットが到達すると、それ以上は配送されない 
  • スコープ(パケットの到達範囲)によっても分類できる
スコープの種類 スコープ 説明
リンクローカル 同一セグメント 同一セグメント上の端末と通信する場合に使用するアドレス
サイトローカル 組織内ネットワーク IPv4のプライベートアドレスに相当
グローバル グローバルネットワーク IPv4のグローバルアドレスに相当

Linuxのネットワークコマンド

  • telnetコマンド:telnetプロトコルで宛先を指定して、ユーザ名やパスワード認証に成功すると相手機器にログインできる
  telnet IPアドレス ポート番号(省略すると23番ポート)
 
  • FTPコマンド:宛先ホストにFTP接続をしてファイル転送を行う
 ftp ホスト名(IPアドレス)
 

基本的なネットワーク構成

ネットワークサービスの起動と停止

・/etc/init.d/network status:ステータス確認
・/etc/init.d/network start:起動
・/etc/init.d/network stop:停止
・/etc/init.d/network restart:再起動

設定関連

・/etc/sysconfig/network:ネットワーク機能の有効化/無効化、ホスト名、デフォルトゲートウェイの設定
・/etc/sysconfig/network-scripts/ifcfg-eth0:ネットワークインターフェースの設定
・ifconfigコマンド:ネットワークインタフェースの状態表示及び一時的な設定
・ifup、ifdownコマンド:ネットワークインターフェースの起動・停止
・routeコマンド:Linuxマシンにおけるルーティングの設定

基本的なネットワークの問題解決

  • pingコマンド:ネットワーク上のホストが起動しているかどうか、IP通信ができているかどうかを調査
 ping [オプション] IPアドレスまたはホスト名
 
  • tracerouteコマンド:指定したホストまでのパケットが通過する経路を表示させる
 traceroute IPアドレスまたはホスト名
 

‐ tracepathコマンド:tracerouteコマンドと同様の機能に加えて、経路のMTU(ネットワーク上で1回の転送で送信できるデータの最大値)も調査

 tracepath IPアドレスまたはホスト名
 
  • hostコマンド:DNSサーバを使用して指定したホスト情報を検索する
  • hostnameコマンド:引数なしで現在のホスト名を表示、ホスト名を指定した場合はホスト名を変更する
  • netstatコマンド:TCP/IPの統計情報、接続状況、ルーティング情報などを調査

クライアント側のDNS設定

  • ホスト名の設定は下記で行う
 ・Red Hat系:/etc/sysconfig/network
 ・Debian系:/etc/hostname
 
  • 小規模ネットワークでは、DNSサーバを使わずにホスト名とIPアドレスの対応表(/etc/hosts)で名前解決できる
 IPアドレス ホスト名
 
  • DNSサーバやドメイン名の設定は、/etc/resolv.confで行う
 domain ホストが所属するドメイン名
 search ドメイン名の省略時に補完するドメイン名
 nameserver DNSサーバのIPアドレス
 
  • 名前解決の問い合わせを行う順番は/etc/nsswitch.confで定義
 [Linuxにおける名前解決]
 etc/hostsファイルでの問い合わせ(files)
 LDAPサーバへの問い合わせ(ldap)
 DNSサーバへの問い合わせ(dns)
 

DNSサーバ関連のコマンド

  • digコマンド:DNSサーバに対して問い合わせを行い、その応答結果を表示する
 dig オプション ドメイン名 or ホスト名 検索タイプ
 
  • whoisコマンド:調べたいドメイン名を指定して、whoisデータベースに問い合わせる

3/9

Key Result 1

セキュリティ管理業務の実施

サーバー運用のためのセキュリティの観点

  • パスワードの管理
  • ユーザーパスワードは定期的に変更(passwdコマンド)したり、有効期限を設定(chageコマンド)したりする
  • システムのポート情報、プロセス情報
  • 不要なポートが開いていないかどうかを確認する(netstatコマンド、lsofコマンド、nmapコマンド)
  • システムリソースの使用制限
  • 一人のユーザーに大量のリソースを使用されないように、各ユーザーが使用できるプロセス数などのリソースを制限する(ulimitコマンド)

一般ユーザーが管理業務を実施する

  • suコマンドで管理者ユーザーに切り替える
    → 一般ユーザーに管理者ユーザーを教えるのは好ましくない
  • sudoコマンドで管理者向けの一部のコマンド実行する
    visudoコマンドの実行で開かれる/etc/sudoersファイルに下記のようにユーザーが追加されていれば可能
 ユーザー名 ホスト名=(実行ユーザー名) コマンド
 
  • SUIDやSGIDの与えられたプログラムは一般ユーザーでも管理者権限で実行可能

ホストのセキュリティ設定

ログイン制御

  • Linuxにrootユーザーだけがログインできるようにしたい場合は、/etc/nologinファイルを作成する
  • メールサーバなど向けの専用ユーザーにシェルを実行させたくない場合は、ログインシェルを/sbin/nologinに変更する

スーパーサーバ

  • 以前は、ネットワーク通信をする各プログラムを起動してメモリ上に常駐させていた
    → 多くのCPUやメモリを消費することになりリソースの無駄使い
  • スーパーサーバーは、他のサーバプログラムに変わってサービス要求を監視して、接続確立時に本来のサーバプログラムに要求を引き渡す
    → りリソースを効率的に使用
  • inetdとxinetdがある
  • inetd:/etc/inetd.confファイルで設定、減税はほとんど使われていない
  • xinetd:多くのディストリビューションで使用、inetdの拡張版、/etc/xinetd.confファイルで設定

TCP Wrapper

  • 通信で使用するTCPポートを把握して、アクセス制御を行ったり、通信ログを保存するセキュリティソフトウェア
  • 外部からアクセスしてくるポートの細かい制限が可能
  • /etc/hosts.allowファイル(アクセス許可)と/etc/hosts.denyファイル(アクセス拒否)で設定を行う
  • /etc/hosts.allow → /etc/hosts.denyの順でチェックする(前者で合致すると後者は参照しない、両方に合致しないとアクセス許可)

暗号化によるデータの保護

データの暗号化方式

  • 共通鍵暗号方式:データの暗号化と復号に同じ鍵を使用
  • 公開鍵暗号方式:暗号化に公開鍵を使用して、復号に秘密鍵を使用

SSH(Secure SHell)

  • ネットワークに接続した機器を遠隔操作するために使用するアプリケーション層のプロトコル
  • telnetはパスワード情報を含め全てのデータが暗号化されないが、SSHはパスワード情報を含めて全てのデータが公開鍵で暗号化されて送信される
  • SSHは以下のように接続される
 SSH接続開始 → /etc/sshrc読み込み(共通) → ~/.ssh/.config読み込み(ユーザーごと) → SSH接続完了
 

SSHの鍵生成

  • ssh-keygenコマンドで公開鍵と秘密鍵のペアを作成する
  • 鍵生成の際は、下記の鍵の種類を指定する
  • RSA:電子署名と通信暗号化に利用可能、電子署名のサイズが長く暗号化強度が強い
  • DSA:電子署名にのみ利用可能、電子署名のサイズが短く暗号化強度が弱い

SSHのホストベース認証

  • SSHサーバに登録済みのホストからSSH通信があった場合、そのユーザーを信用して接続を許可する
  • SSHサーバとクライアントはユーザー認証を行わずホストの認証のみを行う

SSHエージェント

‐ 秘密鍵ファイルを使用する際にパスワード認証を不要にするデーモン(ssh-agent) ‐ クライアント側で稼働する

  • 秘密鍵をメモリ上に保存しておいて必要時に利用される

GnuPGによるファイル暗号化

  • SSHは通信の暗号化だが、GnuPGはファイルの暗号化と復号化が行える
  • 公開鍵暗号を使用してファイルの暗号化と復号化、電子署名を行う
  • gpgコマンドで鍵、失効証明書(パスフレーズ紛失時や忘れた時に鍵を無効化する)の作成を行う
⚠️ **GitHub.com Fallback** ⚠️