こちらも LPIC 202 を受ける前の走り書き(個人的なメモ用)
試験範囲が、Linux 自体というよりも、Linux上でよく利用される各種サーバー用ソフトウェアの基本概念と設定ファイルがメインの内容となります。
ドメインネームシステム
BIND: Berkeley Internet Name Daemon, Linux で標準的に利用されている DNSソフトウェア。バージョン番号をつけて、BIND9 のように呼ばれることも多い。
デーモン名: named
設定ファイル: /etc/named.conf
named-checkzone: BINDのゾーンファイルの構文や整合性をチェックするコマンド
rdnc: remote name daemon control、 コマンドとして利用され、named の設定や管理をリモートまたはローカル環境から行う。
書式: rndc [option] subcommand
rdnc には restart というオプションはなし。
TSIG: Transaction Signature
共通鍵と一方向性ハッシュ関数を利用した、クライアント認証 の仕組み。
DNSSEC: DNS Security Extensions
デジタル署名による、DNSデータの完全性と、サーバの正当性を確保する技術。デジタル署名技術であるため、公開鍵暗号を利用。ゾーン情報の署名、鍵の署名それぞれん鍵がある:
- ZSK: Zone Signing Key … ゾーンに署名
- KSK: Key Signing Key … ゾーンに署名をした鍵自体に署名
DANE: DNS-based Authentication of Named Entities
DNSSEC の技術を応用した認証の仕組み。 HTTPS関係の認証手続き、 X.509に関連。
dnssec-keygen コマンド
TSIG, DNSSEC それぞれの鍵を生成
- -a: 暗号化アルゴリズムの指定
- -b: 暗号化鍵のビット長を指定
- -n: 鍵のタイプを指定。 ZONE | HOST
dnssec-signzone コマンド
ゾーンファイルへの署名を行う
Web サービス
Apache
Apache の設定ファイルは httpd.conf。 保存されているディレクトリはOSによる:
- Debian系: /etc/apache2/apache2.conf
- RedHat系: /etc/httpd/conf/httpd.conf
httpd.conf の設定項目(一部):
- MaxRequestWorkers: httpd子プロセスの最大数を規制。(=同時にさばけるリクエスト数)
- MaxKeepAliveRequests: Keep alive有効時に1セッションで受け付けるリクエストの最大数を設定
- AuthType: BASICまたは、ダイジェスト認証を指定
- LogFormat: アクセスログの書式とその名前を指定
- KeepAliveTimeout: KeepAlive 時の最大待ち時間を指定
- TImeout: リクエスト処理の最大時間を指定
- HostnameLookups: ログ記録時のDNSの逆引き機能の有効/無効 切り替え
- Require: 認証対象とするユーザまたはグループを指定する
- AuthUserFile: 認証のために生成したパスワードファイルを指定する
- TraceEnable: HTTPプロトコルのTRACEメソッドの有効/無効 切り替え
- ServerTokens: レスポンスヘッダに含める情報の設定
Require ディレクティブは、コンテキストによって意味が変わるので注意。
apachectl(RedHat系)または、apachectl2(Debian系)コマンドで利用できるサブコマンド:
- start
- stop
- restart
- graceful
- configtest
※ halt のような停止用サブコマンドはないため注意
AllowOverride ディレクティブに渡せるパラメータ:
- All
- None
- Limit
- AuthConfig
Apache のユーザ認証は、BASIC認証(基本認証)とダイジェスト認証。
apachectl configtest コマンドで httpd.conf の構文チェック。Debian 系だと apache2ctl コマンドの場合も。
Aliasディレクティブは、サーバサイドでの処理を行い、反対に、Redirectディレクティブは、クライアントサイドで処理が行われる。
apxs コマンド: Apacheの動的モジュールのコンパイルとインストールを行う。(APache eXtenSion tool の略)
SNI: Server Name Indication、SSL/TLSの拡張仕様の一つでクライアントがアクセスしたいホスト名を伝えることで名前ベースのバーチャルホストに対応ができる。
SSL を利用する際の認証関係ファイルの種類:
- .csr: Certificate Signing Request
- .crt: Certificate file
OpenSSL を利用する流れ:
- 秘密鍵の作成 -> openssl genrsa
- CSR の発行 -> openssl req
- 認証局への CSR の提出
- 秘密鍵、中間CA証明書、サーバ証明書を適切なディレクトリに設置
- Webサーバ側で SSL/TLS の利用設定を行う
httpd.conf でSSLEngineディレクティブを利用できるコンテキストは、「サーバ設定ファイル」、「バーチャルホスト」の2パターン
-> SSLの証明書はサーバのFQDN単位で発行されるため、特定のロケーションのみSSLを適用するような運用は不可
Apache での SSL/TLS 設定は ssl.conf で行う。
主なディレクティブ:
- SSLCertificateKeyFIle: サーバ秘密鍵ファイルを指定
- SSLCertificateFile: サーバ証明書のファイルを指定(サーバ証明書・中間CA証明書はまとめる)
- SSLProtocol: サーバで利用可能なSSLプロトコルの指定
- SSLEngine: SSL 機能の有効/無効の切り替え
- SSKVerifyClient: クライアント認証の設定
OpenSSL では、自己認証局の構築で以下のスクリプトを利用することができる:
- CA.sh: シェルスクリプト
- CA.pl: パールスクリプト。 OpenSSL 1.1.0〜利用されている
Nginx
設定ファイル: /etc/nginx/nginx.conf
設定ファイルの再読み込み: nginx -s reload
設定ファイルの構文チェック: nginx -t
nginx.conf のディレクティブ(一部):
- proxy_set_header: プロキシ先に送られるリクエストヘッダフィールドの追加、再定義
- proxy_pass_header: プロキシからクライアントまで通過させるヘッダフィールド指定
Squid
設定ファイル: /etc/squid/squid.conf
設定ファイルでは、ACL: Access Control List で、アクセス制御の対象を定義できる。
書式: acl <acl_name> <acl_type> string|”file_name”
aclタイプが、 “url_regex” を使い、ファイルに記述された内容と URL のマッチングを評価できる。|
e.g., acl blacklist url_regex “/path/to/blacklist”
aclタイプ “proxy_auth” は、ユーザ認証を行う際に使用する。
http_accessキーワードと共に、定義した ACL を用いて、アクセス許可 or 拒否の設定を行う
書式: http_access deny|allow [!]acl_name
※ “!” は、ACL定義の反転
squid.conf でアクセス制御の対象となっていない通信については、最終行の http_access 文の許可 or 拒否 の反対の処理となる。
デフォルトでは上の通りの処理だが、わかりにくいため、最終行に http_access deny|allow all のような行を入れると良い。
http_access で設定した条件は上から順に処理され、マッチした条件で処理され、以降の条件評価は行われない。
squid.conf の設定項目(一部):
- auth_param: ユーザ認証のための認証方式や認証プログラムを指定
ファイル共有
Samba
Samba とは、Windows ネットワークに関連するサービスやプロトコルの実装。色々な機能が搭載されていてわかりづらい。(具体的には、12のサービスと12のプロトコルが含まれる)
SMB: Server Message Block、Windowsで使われるファイル共有プロトコルのこと。
ただし、Linux の世界から見たときには、CIFSや、SMB/CIFS のように呼ばれることもある。この辺りは、Windows と Linux の変遷が相まって、だいぶわかりにくい。
大雑把には、ファイルサーバ、プリンタサーバに加えて、Windows ドメインコントローラや Active Directory ドメインコントローラ の機能を一まとめにしたソフトウェアスイートとして捉えるのが良い?
設定ファイル: /etc/samba/smb.conf
/etc/samba/smb.conf の設定項目(一部):
- comment: ブラウジングした際に表示される説明の指定
- browsable: ブラウジングの際の表示/非表示設定。(非表示でもアクセスは可)
- encrypt passwords: 暗号化されたパスワードの使用を指定
- wins server: ネットワーク上のWINSサーバを指定
- wins support: SambaサーバをWINSサーバとして動作させる
- netbios name: Sambaサーバ自体のNetBIOS名指定
smb.conf のセクション定義の際に、 [share$] のように共有名の末尾に “$” をつけることによって、ブラウジング時に非表示にできる。
[print$] は、予約された共有名で、Windowsにプリンタドライバを自動ダウンロードさせることができる。 -> この共有名は、Windows にハードコーディングされており変更は不可。
/etc/samba/smb.conf の更新反映は Samba の再起動が必要。
Samba は複数のデーモンで構成される。主要なものは、smbd、nmbd、winbindd。
smbcontrol コマンド
主要な Samba デーモンにメッセージを送る。対象は、smbd, nmbd, winbindd, all の4つのみ。
winbidd デーモンにより Winbind機能が提供される。 これは、Windowsドメインのユーザ情報からLinuxユーザを自動的作成し、WindowsユーザのSID: Security Identifier をLinuxユーザのUID/GIDにマッピングする。Linux側でWindows Samba用のユーザの手動作成が不要となる。
Samba における、Windowsネットワーク上のホストの名前解決(NetBIOS名とIPアドレスの対応づけ)は、バージョンによってそれぞれ:
- Samba3: WINSサーバ、解決できれければ、lmhostsファイル(以下参照)が参照される
- Samba4: DNS (WINSサーバもサポート)
lmhosts ファイルは、Windowsネットワーク上でのホストのNetBIOS名とIPアドレスの名前解決のために利用される。設置場所は、/etc/samba/lmhosts。また、LAN Manager Hosts の略。
Samba4 での管理用コマンドは、 samba-tool で、主要なサブコマンドが以下:
- dns: DNS の管理
- domain: ドメインの管理
- testparm: 設定ファイルの構文チェック
- user: ユーザの管理
Samba では、パスワードの暗号化の方法が違うため /etc/passwd や /etc/shadow を使っての認証を行うことはできない。つまり、Samba用のユーザが存在する必要がある。
Samba用のユーザ作成には、Linuxユーザが存在することが前提となる。
smbclient コマンド
他のSambaサーバやWindowsマシンの共有リソースにアクセスする際に使用。
Sambaには、Windowsクライアントにプリンタドライバがインストールされていない場合、ドライバをダウンロードさせる機能がある。その場合の情報は[print$]セクションに設定する。
Samba4をADドメインコントローラとして稼働する際は、 “samba” デーモンを起動する。
-> Samba3では、smbd, nmbd, winbindd の3つで構成されていた。
smbstatus コマンド: Sambaサーバへの接続状況を表示
nmblookup コマンド: NetBIOS 名の問い合わせや、IP アドレスへの変換、それらの表示を行う。
NFS
NFS: Network File System、Linuxで利用されているファイル共有システム。サーバからエクスポートするディレクトリの設定は、 /etc/exports に記述する。
NFS のマウント形式には以下の2種類がある:
- ソフトマウント: トラブル発生時にエラーを出しプログラムを終了する
- ハードマウント: NFSサーバの応答があるまで、再試行し続ける
showmount コマンド: NFSサーバのマウント情報を表示する
- オプションなし: NFSサーバのディレクトリをマウントしているNFSクライアントの表示
- -a オプション: NFSサーバのディレクトリと、それをマウントしているNFSクライアントの表示 (クライアント側で使用)
- -e オプション: NFSサーバがエクスポートしているディレクトリを表示 (サーバ側で使用)
exportfs コマンド: NFSサーバ上で現在エクスポートしているディレクトリを表示する。
設定ファイルは、 /etc/exports で、変更を反映させるには、”exports -r” や “/etc/init.d/nfs reload” を実行する。
/etc/exports のエントリにオプションとして fsid=0 とすることで、疑似ファイルシステムを使って、複数のファイルシステムをクライアント側から1つのツリーとしてマウントできる。
ネットワーククライアント管理
DHCP
DHCP: Dynamic Host Configuration Protocol, IP アドレスをホストに対して動的に割り当てるサービス。
NIS: Network Information Service、主にUNIX系のOSで利用されている、ネットワーク上の端末をまとめて管理する仕組み (Windows でいうところの Active Directory のようなサービス)
dhcpd デーモン: ISC(Internet Software Consortium) DHCP のサーバデーモン
dhcpd デーモンの設定ファイルは、 /etc/dhcpd.conf
/etc/dhcpd.conf の設定項目(一部):
- option routers: デフォルトゲートウェイの指定
- option domain-name: ドメイン名の指定
- option broadcast-address: ブロードキャストアドレスの指定
- option subnet-mask: サブネットマスクの指定
- option nis-servers: NISサーバの指定
- option nis-domain: NISドメイン名の指定
- option ntp-servers: NTPサーバの指定
- option netbios-name-server: WINSサーバの指定 (winsではないので注意)
- max-lease-time: ipアドレスなどの最大貸出時間
dhcrelay デーモン: Linuxマシンで DHCPリレーエージェントを運用する場合に使用
DHCPクライアントのデーモン:
- dhcpcd
- dhclient
RA: Router Advertisement(ルータ広告)とは、IPv6ネットワークにおいて、ルータが端末にアドレス情報やネットワーク設定などを自動的に設定する機能のこと。
機能的にはDHCPに似ている。
LDAP
LDAP: Lightweight Directory Access Service, それ自体はディレクトリサービスへアクセスするためのプロトコル。Open LDAP や Active Directory などのソフトウェアで利用される。
DIT: Directory Information Tree, LDAP で管理される木構造のデータ。
dn: Distinguished Name, DIT の中から一意に識別されるための名前。
“dn: uid=kazuki,ou=Sales,dc=kazuki-maehara,dc=com” のように記述される。
white pages schema: ホワイトページ(個人別電話帳)とも呼ばれる、一般的には、規定のオブジェクトクラス inetOrgPerson が利用される。
SASL: Simple Authentication and Security Layer、認証に関する取り決め。認証の仕組みに関するものであって認証の対象データに関するものではない。
OID: Obejct IDentifier、オブジェクトに対して設定される一意な識別番号で、IANA: Internet Assigned Numbers Authority によって管理されている。
X.500: ディレクトリサービスの国際規格で、DAP(Directory Access Protocol)が定義されている。LDAPはDAPの軽量化バージョン。
OpenLDAP
設定ファイルは、 slapd.conf
slapd.conf のディレクティブ(一部):
- access: エントリや属性に対するアクセス制御の設定
- include: 使用するスキーマファイルを指定
OpenLDAPは、バージョン2.3以降、LDAPを使った動的な設定方法に変更された。(テキストベースの設定方法も選択可)。この動的な設定方法は slapd-config と呼ばれ、デフォルトでは、 /usr/local/etc/openldap/slapd.d 以下に設定データがLDIFファイルで(テキストデータとして)格納される。なお、slapd-config で使用されるディレクティブには、”olc” というプレフィックスがよくついているが、”OpenLDAP Configuration” のこと。
slapd-config のディレクティブ(一部):
- olcLogLevel: syslog に出力するログレベルを指定
- olcSuffix: ディレクトリのトップになるDNを指定
- olcAttributeTypes: 属性型を定義
- olcDatabase: バックエンドデータベースの指定
- olcBackend: バックエンドを指定
LDIF: LDAP Data Interchange Format, LDAPサーバにデータを登録したり、内容を変更したりする際に使用されるフォーマット。実態としては、UTF-8のテキストファイル。
DIT: Directory Information Tree、エントリ間の関係をを表す木構造のこと。
slaptest コマンドで、OpenLDAPの設定ファイル slapd.conf の構文チェックが行える。
slapindex コマンドは、slapd.conf の設定に基づき、ディレクトリ情報のインデックスを作成する。
-> インデックスの作成により、エントリの検索が高速になる。
PAM
PAM: Pluggable Authentication Modules, アプリケーションのユーザ認証を行う仕組み。
設定ファイルは、 /etc/pam.d ディレクトリにプログラムごとに作成されるか、存在しなければ、 /etc/pam.conf ファイルが使用される。
PAMの設定ファイルの書式:
module_type control_flag module_path [module_options]
SSSD: System Security Services Daemon、リモートにある認証システム(LDAPやActiveDirectoryなど)へのアクセスをクライアントシステムに提供する。リモートにある認証システムから得た情報をキャッシュすることで機能を実現している。
PAMの設定におけるモジュールタイプは以下4つ:
- auth: パスワードを使用してユーザ認証
- account: ユーザアカウントの有効性確認
- password: パスワードの設定や変更
- session: 認証前後に行う処理の指定
電子メールサービス
MRA: Mail Retrieval Agent、POP3やIMAPなどのメールの受信用プロトコルを扱うソフトウェアで、配信されたメールに対しリモートからアクセスできる環境を提供する機能を持つ。 e.g., dovecat
MDA: Mail Delivery Agent、Postfix や sendmailなどのMTA(Message Transfer Agent)が受信したメールをそれぞれのユーザに配信するソフトウェア。 e.g., procmail
メール関係の well known ports:
- POP3: 110
- IMAP: 143
- POP3S: 995
- IMAPS: 993
Postfixの設定ファイルは、2種類あり、それぞれ
- /etc/postfix/master.cf -> postfix を構成しているデーモンの設定用
- /etc/postfix/main.cf -> メール機能まわりの設定
Postfix の main.cf における主な設定項目:
- mailbox_command: MDA の実行ファイルを指定
- sender_canonical_maps: 送信者アドレスの書き換え
- mydestination: 指定したドメイン名宛のメールを受信した場合に、ローカル配送を行うよう設定
- relayhost: メールの中継先SMTPサーバを指定する
- mynetworks: リレーを許可するクライアント(送信元)を指定する
- transport_maps: メールリレーの設定情報ファイルを指定する
Postfix を chroot jail の設定で起動させるには、master.cf で設定を行う必要がある。
Postfix の設定ファイルの構文チェックは “postfix check” で行い、設定ファイルの内容確認は “postconf” で行う。
Postfix は、バージョン2.3未満と2.3以降でTLSの設定項目が変更となっているため注意。
なお、/etc/postfix/main.cf, /etc/postfix/master.cf 共に設定が必要
SMTP の応答コード(2xx系):
- 220:サービス準備完了
- 221:サービスを閉じる
- 250:要求処理の完了
RBL: Real-time Blackhole List、有害なメール送信元のブラックリストで、DNSを利用してリストへの登録有無を確認する。DNSへ問い合わせし、NXDOMAINが返されればブラックリストには登録されていないことが確認できる。
postconf コマンド
Postfixの設定内容を確認する。 -n オプションでデフォルト値から変更されている設定項目のみ表示。
Dovecot: よく利用されているMRA。 Maildir/mbox共に対応。
設定ファイルは、 /etc/dovecot/dovecot.conf 及び /etc/dovecot/conf.d/*.conf
doveadm コマンドには、Dovecot を起動や再起動するサブコマンドはないので注意。
Dovecot の主な設定項目:
- mail_location: メールデータの保存方式と保存場所を設定
- mechanisms: 認証方式を指定する
- mail_max_userip_connections: 同一IP/ユーザから接続できる最大の数を指定
Courier-IMAP: MRA の一種。 Dovecot とは違い、Maildir 形式のみをサポート。
Sieve: 電子メールのフィルタリング用のプログラミング言語。 “sieve” とは英語で「ふるい」のこと。https://dictionary.cambridge.org/dictionary/english/sieve
Sieve の構文は、「コントロール」、「テスト」、「アクション」の3つの要素で構成される。
Sieve のコマンドでメール配信の拒絶を行うのは “reject”
システムセキュリティ
fail2ban: ログファイルを監視し、設定に基づいて iptables の設定を書き換えることでアクセス遮断を行うような IPS(Intrusion Prevention System)。
フィルタとアクションを組み合わせたものを jail と呼ぶ。
OpenVAS: Open Vulnerability Assessment Scanner、セキュリティの脆弱性をネットワーク経由でチェックするツール。 定義されたたスクリプトに基づいてNVT(Network Vulnerability Test)を実行する。
iptables: パケットフィルタリングやNAT(Network Address Translation)の設定を行うコマンド。
iptables のアクション SNAT と MASQUERADE は、似たような動作をするが、SNAT は固定IPアドレスの場合、 MASQUERADE は、動的なIP設定の場合に利用する。 MASQUERADE は、都度 送信インターフェースのIPアドレスを確認するため、その分だけオーバーヘッドあり。
OpenVPN のメイン設定ファイル、/etc/openvpn/server.conf
セキュリティ関連情報を提供している代表的な組織:
- CERT: Computer Emergency Response Team、コンピューターへの不正アクセスや脆弱性などのコンピュータセキュリティインシデントに対応する活動を行う組織。技術支援も行なっている。
- JPCERT: Japan Computer Emergency Response Team、上記、CERTの日本版、情報セキュリティ対策活動の向上に取り組んでいる民間の非営利団体(一般社団法人)。技術支援も行なっている。
- CIAC: Computer Incident Advisory Capability、セキュリティインシデントに関する報告を行なっている期間。the United States Department of Energy(米エネルギー省)が運営母体。
- Bugtraq: コンピュータセキュリティに関するメーリングリスト。脆弱性に関する情報がメイン。
Tripwire: ファイルの改ざんを検知するためのセキュリティツール(IDS)
/etc/ftpusers -> FTPサーバにログインを許可しないユーザを記述するファイル
nc や telnet コマンドでリモートホストへのテキストベースのコマンド送信が可能。テキストベースで通信が行われるプロトコル(SMTP や POP3)を通じてコマンドを手動で送信できる。
Snort: ネットワーク上のパケットを監視するオープンソースの IDS: Intrusion Detection System の一種。不審なパケットの検出を行う。
routed: ルーティング機能を提供するデーモン。RIP: Routing Information Protocol をサポートし、動的にルーティングテーブルの更新を行う。
-> ルータなど通信機器間で経路情報を交換し、最短経路を得る
コメント