眞鍋 Key Result(3/6~3/10) - careerbeat/dit-ehime GitHub Wiki
- スケジュールを定義したコマンドを定期的に実行するプログラム(デーモン)
- スケジュール管理のデーモンcrondとスケジュールを編集するcrontabコマンドで構成
crontab [オプション]
ex)crontabファイルの編集
# crontab -e minute hour day month week command の形式で書く(* は全ての値に合致)
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の値をまとめて変更することでタイムゾーンを設定できる
- ハードウェアクロック:ハードウェアとして内蔵された時計(電源OFFでも動作) ‐ システムクロック:メモリ上で動作する時計(電源ONのみ動作)、dateコマンドで参照
- システムクロックを修正するためにはdateコマンドを使用する
date [MMDDhhmmCCYY.ss]
- ハードウェアクロックを修正するためにはhwclockコマンドを使用する
hwclock [オプション]
- NTPは正確な時刻を取得するためにはインターネットなどのIPネットワーク経由でクロック同期を行うプロトコル
- ntpdateコマンドを使用してNTPサーバから正確な時刻情報を取得する
ntpdate NTPサーバ名
- 自組織内でNTPサーバーを構築する場合は/etc/ntp.confで設定を行い、下記コマンドでデーモンを起動させる
/etc/init.d/ntpd start
- Linuxで発生する各種イベントをログファイルに出力したりコンソールに出力するプログラム
- syslogdというデーモンにより実行される
- 他のプログラムからのメッセージを受信して、出力元や優先度に従って分類を行って、syslogで定義した出力先に送信する
- /etc/syslog.confファイルで設定を行う(CentOS6以降ではrsyslogが採用されている場合があり、その場合は/etc/rsyslog.conf で設定を行う)
[syslog.confの書式] ファシリティ. プライオリティ アクション
- ファシリティ:ログの種別(メッセージの出力元)のこと
- プライオリティ:メッセージの優先度のこと(emergが最も高く、debugが最も低い)
- アクション:メッセージの出力先を指定する
‐ ログメッセージを生成して、syslog.confの設定ファイルが正しく設定されたのかを確認できる
logger [-p ファシリティ. プライオリティ] [-t タグ] メッセージ
- 複数の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で設定を行う
- 電子メールを配信/転送するプログラム(メールサーバ) ‐ クライアントが使用するメーラはMUA(Mail User Agent)
- 過去の標準はsedmailだったが、セキュリティや性能面から利用者が減っている
- postfixはsendmailとの互換性を保ちながらセキュリティが強化されている
- 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に保存される
- 多くの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 オプション ジョブ番号
- インターネット通信・イントラネット通信において最も利用されている通信プロトコル
- 複数のプロトコルからなる(中心はTCP/IP、他にICMP,UDP,HTTPなど)
- 階層モデルは4階層で構成(アプリケーション層、トランスポート層、インターネット層、ネットワークインターフェース層)
階層名 | 役割 | プロトコル例 |
---|---|---|
アプリケーション層 | アプリケーションごとの固有の規定 | HTTP,FTP,SMTP,SSHなど |
トランスポート層 | ノード間(端末)のデータ転送の信頼性を確保するための規定 | TCP,UDP |
インターネット層 | ネットワーク間のエンドツーエンドの通信のための規定 | IP,ARP,ICMPなど |
ネットワークインターフェース層 | 直接的に接続されたノード間の通信のための規定 | Etherbet,PPPなど |
- 上記4階層によって送信の際にはカプセル化(プロトコルのヘッダの付加)、受信の際には非カプセル化を行ってデータの送受信を行う
- 論理アドレス(IPアドレス)を各ノードに割り当てて各ノードを識別する
- IPアドレスの宛先情報についてはIPヘッダに含まれる
- IPヘッダのフォーマットは20バイト(最大60バイト)のサイズで、フラグやプロトコル、送信元・宛先IPアドレスなどの情報が含まれる
- IPには下記のような特徴がある
特徴 | 概要 |
---|---|
コネクションレス型通信 | 事前にコンピュータ間でコネクションを確立しないでいきなりデータ伝送をはじめる |
ベストエフォート型通信 | 最善の努力(ベストエフォート)は尽くすが、必ずしも十分な品質は保証しない |
階層型アドレッシング | IPアドレスはネットワーク部とホスト部の2階層で構成される |
- 信頼性の高い通信を実現するために使用されるプロトコル
- ポート番号(コンピュータが通信を行うために通信先のアプリケーションを特定するための番号)を指定して信頼性のある通信を実現する
- ポート番号には下記の種類がある
タイプ | 範囲 | 概要 |
---|---|---|
ウェルノウンポート番号 | 0~1023 | サーバのアプリケーションに割り当てられる |
登録済みポート番号 | 1024~49151 | 独自に作成したアプリケーションに割り当てられる |
ダイナミックポート番号 | 49152~65535 | クライアント側のアプリケーションに自動的に割り当てられる |
- TCPと比べて信頼性が高くはないが、速さやリアルタイム性を求める通信に使用されるプロトコル
- コネクションレス型のプロトコルで信頼性は高くないが高速な通信ができる
- リアルタイム性のあるデータ(音声・映像など)、複数人への同じデータ、信頼性が必要ない少量のデータを転送するのに用いる
- IPプロトコルの「エラー通知」や「制御メッセージ」を転送するためのプロトコル ‐ ICMPメッセージは大きく2種類ある
- Query:あるノードから特定のノードに対する通信状態を確認
- Error:ノード間の通信で経路途中でパケットが廃棄されたりした場合に原因を送信元のノードにエラー通知
- 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のネットワークをゼロサブネットという
- 世界的に利用者が急増したことでIPv4アドレスが枯渇した問題を解決するために開発された128ビットの識別番号
- 事実上無制限にIPアドレスをデバイスに割り当てられる
- 自動設定機能により自動で割り当てられる
- 階層構造が厳密で、より効率的な経路集約を実現されルータの負荷が軽減されている
- 簡素なヘッダにより、パケット転送の際のルーティング処理による負荷が軽減される ‐ Mobile IPv6により移動通信中でも同一のIPアドレスを使用して通信を途切れなく通信できる ‐ IPsecの実装が必須であり、実装させたい場合は、特別な機器を必要せずIPsecを実装できる(セキュアなインターネット)
- IPv4アドレスが「.」区切りなのに対して、「:」区切り
- プレフィックスとインターフェースIDで構成
- 3つのタイプがある
タイプ | 通信対象 | 概要 |
---|---|---|
ユニキャストアドレス | 1対1 | 1つのインターフェースを特定 |
マルチキャストアドレス | 1対グループ | 複数のインターフェースに割り当て可能 |
エニーキャストアドレス | 1対グループ内の1つ | グループに属する1つのインターフェースにパケットが到達すると、それ以上は配送されない |
- スコープ(パケットの到達範囲)によっても分類できる
スコープの種類 | スコープ | 説明 |
---|---|---|
リンクローカル | 同一セグメント | 同一セグメント上の端末と通信する場合に使用するアドレス |
サイトローカル | 組織内ネットワーク | IPv4のプライベートアドレスに相当 |
グローバル | グローバルネットワーク | IPv4のグローバルアドレスに相当 |
- 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の統計情報、接続状況、ルーティング情報などを調査
- ホスト名の設定は下記で行う
・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)
- digコマンド:DNSサーバに対して問い合わせを行い、その応答結果を表示する
dig オプション ドメイン名 or ホスト名 検索タイプ
- whoisコマンド:調べたいドメイン名を指定して、whoisデータベースに問い合わせる
- パスワードの管理
- ユーザーパスワードは定期的に変更(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ポートを把握して、アクセス制御を行ったり、通信ログを保存するセキュリティソフトウェア
- 外部からアクセスしてくるポートの細かい制限が可能
- /etc/hosts.allowファイル(アクセス許可)と/etc/hosts.denyファイル(アクセス拒否)で設定を行う
- /etc/hosts.allow → /etc/hosts.denyの順でチェックする(前者で合致すると後者は参照しない、両方に合致しないとアクセス許可)
- 共通鍵暗号方式:データの暗号化と復号に同じ鍵を使用
- 公開鍵暗号方式:暗号化に公開鍵を使用して、復号に秘密鍵を使用
- ネットワークに接続した機器を遠隔操作するために使用するアプリケーション層のプロトコル
- telnetはパスワード情報を含め全てのデータが暗号化されないが、SSHはパスワード情報を含めて全てのデータが公開鍵で暗号化されて送信される
- SSHは以下のように接続される
SSH接続開始 → /etc/sshrc読み込み(共通) → ~/.ssh/.config読み込み(ユーザーごと) → SSH接続完了
- ssh-keygenコマンドで公開鍵と秘密鍵のペアを作成する
- 鍵生成の際は、下記の鍵の種類を指定する
- RSA:電子署名と通信暗号化に利用可能、電子署名のサイズが長く暗号化強度が強い
- DSA:電子署名にのみ利用可能、電子署名のサイズが短く暗号化強度が弱い
- SSHサーバに登録済みのホストからSSH通信があった場合、そのユーザーを信用して接続を許可する
- SSHサーバとクライアントはユーザー認証を行わずホストの認証のみを行う
‐ 秘密鍵ファイルを使用する際にパスワード認証を不要にするデーモン(ssh-agent) ‐ クライアント側で稼働する
- 秘密鍵をメモリ上に保存しておいて必要時に利用される
- SSHは通信の暗号化だが、GnuPGはファイルの暗号化と復号化が行える
- 公開鍵暗号を使用してファイルの暗号化と復号化、電子署名を行う
- gpgコマンドで鍵、失効証明書(パスフレーズ紛失時や忘れた時に鍵を無効化する)の作成を行う