おととい、いい感じに合格したので、毎度おなじみでメモ公開です。
# ---------- 主題207:ドメインネームサーバ -------------------
前提知識
DNSサーバには2つの機能がある
キャッシュサーバ:ほかのDNSサーバに問い合わせる
コンテンツサーバ:自身が管理するドメイン情報を公開する
BINDの解決ログ出力先 :messages, syslog
DHCP機能付きDNS :dnsmasq
キャッシュ,コンテンツ:djbdns
↑+RDBバックエンド :PowerDNS
207.1 DNSサーバの基本的な設定 ★★★☆☆
+ /etc/named.conf(BINDの設定ファイル)
options内
- "directory" :作業ディレクトリ
- "version" :バージョンの問い合わせに対する回答
- recursion [yes|no] :再起問い合わせ
- forwarders :転送先DNSサーバ
- forward [first|onry] :失敗時自分で問い合わせをする|しない
- allow-query :問い合わせを許可するホスト
- allow-recursion :再帰も許可するホスト
- allow-transfer :ゾーン転送先ホスト(スレーブDNSを指定)
- blackhole :問い合わせを却下
acl :アクセス制御[IP|host]
controls :rndcを許可するホスト {inet 127.0.0 allow {lan;};};
include :外部ファイル読み込み "/etc/hoge"
zone :ゾーン(管理範囲)を定義
+ rndc(namedの設定管理をするコマンド)
status :表示
reload :ゾーン指定時は単独で再読み込み
halt :瞬殺停止
stop :更新を保存し停止
+ named-checkconf(named.confの構文チェック)
ゾーンの構文と整合性をチェックする
207.2 DNSゾーンの作成と保守 ★★★☆☆
+ 各レコードについて
SOA :ゾーン管理人や更新時間を定義
NS :ゾーン情報を管理するサーバー
MX :ゾーン管理宛のメールサーバー
A :ゾーン内の名前とIPを紐付け
CNAME:別名を記載
PTR :逆引き定義に仕様。 形式は[4.3.2.1.in-addr.arpa]
+ ゾーンファイルの書式
$ORIGIN example.com.
$TTL 3600
@ IN SOA <nameSRVのFQDN> <adminMail> (
2010020101; シリアル番号
3600; 更新タイミング
1200; リトライ間隔
1209600; 有効期間
900; ネガティブキャッシュのTTL
)
@ IN NS ns.example.com :名前解決ならこのドメイン
@ IN MX 10 mail.example.com :メールならこのドメイン
ns IN A 192.168///
mail
www
ftp IN CNAME www
優先度は低いほど高い
+ named-compilezone ゾーン名 ゾーンファイル名
-f 返還前ファイル形式
-F 返還後ファイル形式
-o 出力ファイル
+ masterfile-format
named.confに追記する事でテキスト形式で扱える
+ named-checkzone
整合性と構文チェック
207.3 DNSサーバを保護する ★★☆☆☆
+ /etc/named.conf
key "example.com" { Keyが必要
algorithm hmac-md5; =も"も不要
secret "xxxxxxx"; パラメータは"で囲む
+ DNSSEC: 公開鍵による署名で正当かつ無改ざんを保障
TSIG :共通秘密鍵による
chroot:パス変更によって、ハック時の被害を軽減
DANE :(DNS-based Authentication of Named Entities)
DNSSECを応用した認証
+ named(BINDのデーモン名)
-t:chrootのディレクトリ
-u:実行ユーザー
-g:実行グループ
+ dnssec-keygen(鍵を作成)
-a:アルゴリズム
-b:ビット長
-n TSIG:HOST DNSSEC:ZONE)
+ dnssec-signzone(ゾーンファイルへ署名)
# ---------- 主題208:HTTPサービス ---------------------------
208.1 Apacheの基本的な設定 ★★★★☆
/etc/httpd/conf/httpd.conf
/etc/apache2/apache2.conf
+ httpd.conf
基本設定
- Listen : リクエストを受けるIPアドレスとポート
- NameVirtualHost: バーチャルホスト時はListenの代わりにこっち
- User : 子プロセスの実行ユーザを指定
- Group : 子プロセスの実行グループを指定
- DocumentRoot : 公開する最上位のディレクトリ
- DirectoryIndex : インデックスとして返すファイル名
- Alias : アクセス先ディレクトリを、パスに参照させる
- UserDir : 一般ユーザの公開ディレクトリを指定
- ErrorDocument : エラー発生時の処理を指定(コードとファイル名)
ログ関連
- HostnameLookups :IP逆引きしてホスト名で記録するか
- LogFormat :アクセスログの書式 書式名
- CustomLog :ファイル名と上の定義
- ErrorLog :
- LogLevel :エラーログに残すログレベル
サーバ処理関連
- Timeout :
- KeepAlive :複数リクエストの受付するかの有無
- MaxKeepAliveRequests :最大リクエスト数を設定
- KeepAliveTimeout :次のリクエスト受けるまでの待ち時間
- StartServers :起動時の子プロセスの数
- MinSpareServers :待機子プロセスの最小数
- MaxSpareServers :待機子プロセスの最大数
- MaxRequestWorkers :生成される子プロセスの最大数
- MaxConnectionsPerChild:子プロセスが処理するリクエストの最大数
<Serverディレクティブ>
- ServerName :稼働しているホスト名とポートを指定
- ServerRoot :httpdの設定ファイル、ライブラリがあるベースディレクトリ
- ServerAdmin :管理者のメールアドレス
- ServerAlias :VitualHostでの別名
外部設定ファイル<Directory ディレクトリ名>
- AccessFileName: 外部設定ファイルを指定(デフォ.htaccess)
- AllowOverride : 外部ファイルがhttpd.confを上書く
(AuthConfig, Limit[アクセス制御], All, noneなど)
ユーザー認証<AuthNameディレクティブ>
- AuthType : Basic|Digest認証方式
- AuthName : 認可領域名。画面に表示される
- AuthUserFile : パスワードファイルを指定
- AuthGroupFile : グループファイルを指定
- Require : 認証対象とするuserやgroupを指定
アクセス制御<Requireディレクティブ>
mod_authz_coreで制御
- all granted : 全部許可
- all denied : 全部拒否
- env 環境変数 : 環境変数が設定されていれば許可 (Require env URL_OK)
- method http : 指定のhttpメソッドなら許可
- expr 評価 : 指定の表現で許可
mod_authz_hostで制御
- ip
- host
mod_authz_userで制御
- user
- group
- valid-user : 認証されたユーザー
<RequireAll><RequireAny><RequireNone>
# htpasswd [OPT] ファイル名 ユーザー名
-c パスワードファイルの作成
-D ユーザーを削除
# htdigest ファイル名 認可領域名 ユーザー名
-c パスワードファイルの作成
ダイジェスト認証の時はこれでユーザ管理を行う
# httpd(apachectlでも使える)
-l 静的モジュールの表示
-M 静的動的モジュールの表示
# apachectl, apache2ctl
start, stop, restart
graceful : 安全に再起動
configtest: 設定ファイルの構文チェック
+ モジュール
mod_auth_basic : BASIC認証のフロントエンド
mod_authz_host : ホストベースのアクセス認証
mod_access_compat : ホストベースのアクセス制御
mod_[ssl, perl, php]
+ その他
apxs
+ アクセスログとエラーログ
+ .htaccess
+ htgroup
+ httpd, apache2
208.2 HTTPS向けのApacheの設定 ★★★☆☆
# Tips
ブラウザ ルートCA照明:自身の公開鍵
サーバ側 中間CA証明書:自身の公開鍵
サーバ側 サーバ証明書:自身の公開鍵
ブラウザの秘密鍵で署名し、上位CAの公開鍵で署名を複合
秘密鍵の作成
# openssl genrsa [-out 出力ファイル名] [鍵長]
CSRの作成
# openssl req -new -key server.key -out server.csr
自己認証局でCSRに署名し、サーバ証明書の作成
openssl ca -out server.crt -infiles server.csr
# CA.pl, CA.sh newca
ssl.conf
- SSLCertificateKeyFile : サーバ秘密鍵
- SSLCertificateFile : サーバ証明書 (中間CAはここ)
- SSLVerifyClient : クライアント認証レベル
- SSLCACertificateFile : クライアント認証のCA証明書
- SSLCACertificatePath : CA証明書の置かれたディレクトリ
- SSLProtocol : 使用可能なSSLプロトコル
- SSLCipherSuite : 使用可能な暗号スイート
- SSLEngine : SSLの有効無効onoff
(ディレクトリ以外、かつポート番号を確認)
httpd.conf
セキュリティ関連
- ServerTokens :応答ヘッダに含める情報
- ServerSignature :エラーメッセージのフッター表示onoff
- TraceEnable :TRACEメソッドの使用onoff
SNI(Server Name Indication: クライアントから接続したいホストを提示)
208.3 キャッシュプロキシとしてのSquidの実装 ★★☆☆☆
+ squid.conf
- http_port : 使用するポート番号
- cache_dir : キャッシュディレクトリ
- cache_mem : 総メモリの最大量
- cache_log : キャッシュのログ
- ipchache_size : 名前解決のキャッシュ数
- acl : アクセスcontrolリスト
- http_access : allow|denyなどの制御
- auth_param : ユーザ認証方式の設定
- hierarchy_stoplist : キャッシュを使わない文字列
- maximum_object_size : キャッシュデータの最大サイズ
- minimum_object_size : キャッシュデータの最小サイズ
- maximum_object_size_in_memory:メモリにキャッシュされるry
- request_header_max_size: リクエストヘッダの
- request_body_max_size : リクエストボディの
+ acl
# acl acl名 aclタイプ 文字列|ファイル名
acl blacklist url_regex "/etc/squid/blacklist"
- src
- dst
- srcdomain
- dstdomain
- port : 宛先のポート番号
- arp
- proto : プロトコル
- method
- time
- url_regex
- uripath_regex
- proxy_auth
+ http_access
例
acl all src 0.0.0.0/0.0.0.0
acl localmembers src 192.168.10.0/255.255.255.0
acl SSL port 443
acl OK_port port 80 443
acl CONNECT method CONNECT
acl clients srcdomain test.com
acl eigyobi time MTWHF 09:00-18:00
http_access allow localmembers OK_port
http_access deny !OK_port
http_access deny CONNECT !SSL
http_access allow clients
http_access allow eigyobi
訳
・localmembers(192.168.10.0/24に属しているクライアント)からのOK_port(80,443)でのアクセスを許可(この条件は2つacl名が並んでいるため、AND条件となっています。)
・OK_port(ポート番号が80,443)以外へのアクセスを禁止
・CONNECTメソッド(プロキシにトンネリング通信を要求するメソッド)を使った通信をSSL(443)以外禁止
・client(ドメイン名がtest.com)からのアクセスを許可
・eigyobi(月曜日から金曜日の9:00から18:00)の間アクセスを許可
208.4 WebサーバおよびリバースプロキシとしてのNginxの実装 ★★☆☆☆
+ /etc/nginx/nginx.conf
http{} :httpサーバの設定
server{} :バーチャルホストの設定
location :リスクエストURIに対する設定
listen :リクエストを受けるIPとポート
server_name :バーチャルホスト名
index :インデックスとして返すファイル名
root :htmlの最上位ディレクトリ
proxy_pass :プロキシ先
proxy_set_header :プロキシ先へのリクエストヘッダの再定義
proxy_pass_header :プロキシ先からクライアントへ通貨を許可するヘッダ
fastcgi_pass :FastCGIサーバの指定
fastcgi_param :FastCGIサーバに渡すパラメータ
フォーマットサンプル
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://192.168.1.10/
proxy_set_header Host $host;
proxy_pass_header Server;
}
}
#---------- 主題209:ファイル共有 ---------------------------
209.1 Sambaサーバの設定
sambaとLinuxでユーザーとパスワードは連携されない
マスターブラウザはOSレベルの数字が大きいのがなれる
+ smbd :ファイル/プリンタの共有とユーザ認証
nmbd :NW内のPC一覧表示、WINSサーバ
winbindd :SambaからWindowsユーザの情報を利用可能にする
+ nmblookup(マスター/ホスト検索、NetBIOSの問い合わせ)
-M マスターブラウザの検索
-A IPを引数にMACアドレスやNetBIOSを表示
+ samba-tool (samba4から)
dns
domain
testparm
user
+ smbcontrol (smbd,nmbd,winbinddにメッセージ)
all smbd,nmbd,winbinddの全部にブロードキャスト
デーモンまたはPIDで指定のものだけ
# smbpasswd -d: 無効化、 -e: 有効化
# pdbedit -L: 一覧表示 (pdbeditはパス変更出来ない)
-a: 作成、 -x: 削除
# testparm (構文チェック)
+ smbstatus(smbに接続してるWindowsを確認する)
+ smbclient (Windowsの共有リソースにアクセス)
smbclient [OPT] //hostname/directory
-L [host] 指定したホストで利用可能なリソース表示
-N 認証を行わない
-U|--user= 接続ユーザーを指定
+ /etc/samba/smb.conf 全3セクション
[global] # パスワードに関る
username map = ファイル名 ユーザー名情報があるファイルの場所
guest account = ユーザ名 ゲストユーザーのユーザー名
map to guest = [Never|Bad User|Bad Password]認証できないときの挙動
passwd program = パスワード変更時に実行するプログラム
passwd chat = 上プログラム実行時の応答内容を指定
unix password sync = Linuxと同期するか
hide dot files = [.]から始まるファイルを隠すか
wins support = WINSサーバとして動作させるか
netbios name = NetBios名設定
Windowsとの接続に関わる
- security = 認証方法。 user|domain|ads
- passdb backend = 認証方式。 smbpasswdやldapsamなど
- realm = ADのドメイン名指定
- workgroup = ADドメインのNetBIOS名
[homes]
[printers]
path = [name] 共有ディレクトリのパス指定
printable = yes | print ok = yes
guest ok = yes | public = yes
writable = yes | read only = no write list
valid users=,区切り@でグループ指定。アクセス許可
force user= 所有
force group=所有
force directory mode = パーミッションデフォルトは0000
directory mask = パーミッションのマスク。0755がデフォ
forceはmode、通常はmask
+ /var/log/samba/
+ net
+ mount.cifs
209.2 NFSサーバの設定 ★★★☆☆
NFSサーバが公開したディレクトリを、NFSクライアントがマウントして利用
公開のことをエクスポートと呼ぶ
デーモン
mountd : クライアントに必要。マウントするためのデーモン
portmap : サーバとクライアント療法に必要。RPCをTCP/IPに変換
nfsd: サーバ側の設定。全バージョンで必要
rpc.idmapd: サーバとクライアント両方に必要。NFSv4の設定
rpc.mountd: サーバ側の設定。
+ /etc/exports
ro : 読み取り専用
rw : 読み書き可能
no_root_squash : rootのリクエストをroot権限で実行
root_squash : rootのリクエストを匿名権限で実行
all_squash : 全てのリクエストを匿名権限で実行
sync : サーバーとクライアントの書き込みを同期
fsid : fsid=0でルートディレクトリ化(NFSv4のみ)
root権限でアクセスするのはセキュリティ上好ましくない。
[Dir] [IPRange] [Option]
/share *(ro) lpic(rw,no_root_squash)
+ showmount (公開してるディレクトリをマウントしてるクライアントを調べる)
-a ホスト名とディレクトリを表示
-e [srv]でエクスポートしてるディレクトリを表示
+ rpcinfo(稼動しているRPCサービスを確認)
# mount -t nfs -o [OPTION] nfsserver:/dir /mnt
nolock :ロックしない
soft :応答がないとタイムアウトで終了
retrans :softの再試行回数を指定
hard :応答があるまで再接続する
intr :割り込み受付
rsize :読み取りのブロックサイズ(byte単位)
wsize :書き込みのブロックサイズ(byte単位)
+ exportfs(exportsの設定を反映)
-a 全部のディレクトリ
-r 全部のディレクトリを再エクスポート
-u ディレクトリをアンエクスポート
-v 詳細情報表示
+ nfsstat(NFSの統計情報を確認)
+ /proc/mounts
+ /etc/fstab
+ mountd
+ portmapper
---------- 主題210:ネットワーククライアントの管理 ---------
210.1 DHCPの設定 ★★☆☆☆
+ dhcpd, dhclient
+ dhcpd.conf
- option domain-name :ドメイン名;
- option domain-name-servers :IPアドレス,;
- option routers :でふぉげのIPアドレス;
- option subnet-mask :サブネットマスク
- option broadcast-address :ブロキャスアドレス
- option ntp-servers :NTP
- option nis-domain :NISドメイン
- option nis-servers :NISサーバ
- option net-bios-name-servers:WINSサーバ(NetBIOS)
- default-lease-time :デフォの貸し出し期限
- max-lease-time :最大の貸し出し期限
- range :貸し出すIPのレンジ
- fixed-address :割り当て時の固定IPを
- hardware ethernet :クライアント特定のMACアドレス
- allow unknown-clients :知らないMACアドレスを許可
- deny unknown-clients :許可しない
+ dhcpd.leases
+ syslog や systemd のジャーナル内の DHCP のログメッセージ
+ arp
ルータ広告をするもの
+ radvd
+ radvd.conf
+ dhcrelay リレーエージェント
210.2 PAM認証 ★★★☆☆
+ sssd.conf(System Security Service Daemon)
LDAPやADの認証記録をキャッシュする
→オフラインでも認証できる
+ /etc/pam.d (ある場合/etc/pam.confが無視される)
モジュールタイプ コントロール モジュール 引数
+ モジュールタイプ
auth : パスワードを使いユーザ認証
account : アカウントが有効かチェック
password : パスワードの設定/変更
session : 認証前後の処理を指定(ログ記録など)
+ PAM コントロール
+ requisite :失敗時即終了
+ required :失敗時、requiredを実行し拒否
+ sufficient :requiredが全部成功時、許可する
+ optional :成功失敗を問わずモジュールの実行を続ける
+ PAMモジュール
+ pam_unix : 通常のパスワード認証
+ pam_cracklib :パスワードの書式制限
+ pam_limits :ユーザー利用のリソース制限
+ pam_listfile :ファイルを使いプログラムのアクセス制御
+ pam_sss :SSSD認証
- pam_console :端末からログイン時に管理権限を一部委譲
- pam_deny :認証を全て拒否
- pam_env :環境変数設定
- pam_ldap :LDAP認証
- pam_nologin :一般ユーザーのログイン拒否(etc/nologin)
- pam_securetty :rootログイン可能な端末設定(etc/securetty)
- pam_warn :ログを記録
- pam_wheel :root権限アクセスをwheelグループのメンバに制限
+ nsswitch.conf
+ 210.3 LDAPクライアントの利用方法 ★★☆☆☆
+ ldappasswd
+ ldapsearch
-d 識別名で検索開始位置
-L :LDIFv1形式で表示
-LL :LDIFv1形式でかつ※なしで表示
-LLL :LDIFv1形式でかつコメントとLDAPバージョンの表記なし
+ ldapadd
-h 接続先ホスト
-x 簡易認証
-D 識別名
-W 対話的入力
-w password
-f LDIFファイル指定
+ ldapdelete
210.4 OpenLDAPサーバの設定 ★★★★☆
LDAP: 読み込み検索に最適化された、X500をベースとしたDAPの軽量化
DIT : Directory Information Tree。LDAPの階層構造。RDNとDNがある
LDAPの階層構造について
- objectClass : オブジェクトクラス
- dn :DistinguishedName
- c :Country
- cn :CommonName
- dc :DomainComponent
- mail :MailAddress
- o :Organization
- ou :PrganizationalUnit
- sn :SurName
- uid :
- telephoneNumber
- uidNumber
# slapadd (エントリーの追加)
-l LDIFファイルを追加
# slapcat (DBからデータをLDIFとして出力)
# slaptest
# slapindex (slapd.confよりインデックスを作成)
-v 詳細情報
-d デバッグレベル
-f ファイル名
-c エラー時も処理を継続
-n slapd.confにあるDB番号に接続
-d DNでDBを指定して接続
+ slapd.conf
グローバルセクション
argsfile :起動用コマンドがあるファイルを指定
pidfile :PIDを格納するファイル指定
include :設定ファイルの場所
logfile :ログの出力先
loglevel :ログのレベル
idletimeout :クライアント接続を切断する秒数
timelimit :検索要求の応答に使う秒数
データベースセクション
database : バックエンドのDBの種類
suffix : ディレクトリのトップとなるDN
rootdn : DB管理者のDN
rootpw : DB管理者のパスワード
index : 属性と、作成するインデックスの種類
directory : DBファイルを格納するディレクトリ
アクセスディレクティブ(アクセス制御)
access to [アクセス対象]
by [要求者] [アクセス権]
アクセス対象:*, dn=, attrs=, filter=
要求者:*, anonymous, users, self, dn=
アクセス権:none, auth, compare, search, read, write
初期状態:全ユーザがReadのみ。アンマッチはアクセス拒否
# slapd
-4,-6 : 使用するプロトコル
-d N : デバッグレベル
-f Na : 設定ファイル
-u,-g :起動ユーザーグループ
-r :ルートディレクトリ
スキーマ
スキーマファイルは予め用意された、オブジェクトクラスや属性定義ファイル
core.schema :cn,ouなどの基本属性
cosine.schema :X500で定義された属性
inetorgperson.schema :inetOrgPersonなどを定義
nis.schema :NIS関連のオブジェクトクラスを定義
オブジェクトクラス
エントリには必ず人るの構造型クラスが適用
エントリには複数の補助型クラスが適用できる
抽象型クラスは他のオブジェクトクラスを定義する基底クラス
ABSTRACT :基底
STRUCTUAL:人組織を現す
AUXILIARY:補助型クラス
OID
IANAによって管理される
オブジェクトクラスや属性に一意に割り当てられてる
スキーマの拡張にはIANAからOIDをもらう必要がある
+ slapd-config
olcLogLevel:N :cn=config
olcInclude:NAME :cn=include
olcAttributeTypes :cn=schema
olcObjectClass :cn=schema
olcBackend=type :colBackendConfig(bdb,config,ldap,ldif,passwd)
+ LDIF
LDAPの情報をUTF-8で記載。バイナリはBase64エンコード
空白で複数エントリで属性::属性値の記述
dn:対象エントリの識別
changetype:変更種別
add,del,modrdn
modify: add delete,replace
+ /var/lib/ldap/*
+ loglevel
# ---------- 主題211:電子メールサービス ---------------------
211.1 電子メールサーバの使用 ★★★★☆
+ postfix
start : 起動
stop : 終了
abort : 強制終了
flush : キューを消化
reload : 設定のリロード
check : 設定の構文チェック
+ postconf -n デフォから変更されたものだけ表示
+ postqueue -p キューを表示
-f 送信
+ postsuper -d キュー削除
+ main.cf
myhostname = 自サーバのホスト名
mydomain = ドメイン名
myorigin = @以降のドメイン名
inet_interfaces = メールを受け取るIF
mydestination = ローカル配送のドメイン
mynetworks = リレーを許可するクライアント
mail_spool_directory = スプールディレクトリ
home_mailbox = ユーザのホームディレクトリ以下のスプール
mailbox_command = ローカル配送のプログラム指定
disable_vrfy_command = SMTPのVRFYを無効にするか
- # でコメント行
- $設定項目で他の値を参照
- ,で複数記述
- 改行してスペースで、前行の継続として扱える
+ postfix TLS
master.cf内 smtps ;コメント解除
main.cf smtpd_use_tls ;yes TLS有効化
smtpd_enforce_tls ;yes TLS強制
smtpd_tls_cert_level ;may[任意],encrypt[強制]
smtpd_tls_cert_file ;証明書ファイル
smtpd_tls_CAfile ;CA証明書ファイル
smtpd_tls_key_file ;秘密鍵ファイル
+ /etc/aliases
アカウント: 受け取りユーザ名,受け取りユーザ名
- admin: /ファイルパス
- admin: |/usr/local/bin/example
- admin: user@domain 転送
- admin: :include:/Path Path記載の内容を別名として読む
+ /etc/postfix/*
+ /var/spool/postfix
+ Sendmailエミュレーション層のコマンド
-bp キュー表示 mailq
-q 即送信
+ /var/log/のメール関連のログ
211.2 電子メール配信を管理する ★★☆☆☆
+ Control
if 条件分岐
require 拡張機能指定
stop 処理停止
+ Test
address
header
size
allof
anyof
not
true
false
+ Action
keep でふぉ。メッセージを保管
redirect アドレスに転送
discard 破棄
reject 配信拒否
vacation 自動返信
211.3 メールボックスアクセスを管理する ★★☆☆☆
SSL = yes
ssl_key = </Path
ssl_cert = </Path
Courier-IMAP
+ /etc/dovecot/
+ doveconf
-n デフォルト以外を表示
-c 設定ファイルを指定
+ dovecot.conf
mail_location
mechanisms
listen
protocols
verbose_proctitle = yes
+ doveadm
reload
stop
mailbox
pw
who
# ---------- 主題212:システムのセキュリティ -----------------
212.1 ルータを構成する ★★★☆☆
+ /proc/sys/net/ipv4
+ /proc/sys/net/ipv6/
+ /etc/services
+ iptables
+ ip6tables
-F 全削除
-X 空のユーザ独自チェインを削除
-D 1個ずつ削除
-A 追加
-P デフォのポリシー設定
-N New (書き換え系はPre|Postが接頭語)
-s 送信元
--sport
-d 送信先
--dport
-p tcp,icmp,allなど
-i 受信IF
-o 送信IF
-j 適用するアクション
+ ACCEPT
+ DROP 破棄
+ REJECT 破棄(通知あり)
+ MASQUERADE
+ SNAT
+ LOG
iptables-save > iptables.backup
iptables-restore < iptables.backup
212.2 FTPサーバの保護 ★★☆☆☆
+ proftpd.conf
+ pure-ftpd.conf
-E 匿名のログイン禁止
-e 匿名のみログイン許可
-i 匿名のアップロード禁止
+ vsftpd.conf
anonymous_enable=yes|no 匿名ログイン
anon_upload_enable=yes|no 匿名アップロード
ftp_username=ftp 匿名ユーザー名
接続要求を
サーバ :アクティブモード
クライアント:パッシブモード
+ /etc/ftpusers
改行単位の列挙型
212.3 セキュアシェル (SSH) ★★★★☆
+ ssh
Protocol
PermitRootLogin
PermitEmptyPasswords
PubkeyAuthentication
PasswordAuthentication
X11Forwarding
AllowUsers
AllowGroups
DenyUsers
DenyGroups
+ 秘密鍵:公開鍵のファイル組み合わせ
identity :identity.pub クライアント Ver1
id_dsa :id_dsa.pub クライアント Ver2
ssh_host_key :ssh_host_key.pub サーバ Ver1
ssh_host_dsa_key:ssh_host_dsa_key.pub サーバ Ver2
known_host クライアント→サーバでの、サーバの公開鍵
authlyzedkeys サーバ→クライアントでの、クライアントの公開鍵
212.4 セキュリティ業務 ★★★☆☆
+ 機関
CERT セキュリティインシデントと技術支援
JPCERT
CIAC セキュリティインシデントの報告
Bugtraq バグ情報を公開するML
+ Tripwire(改ざん検知)
File Type/Size
Owner User/Group Permit
Date Access/Update
Block Link/Hash/iNodeNo
+ fail2ban (ログ監視IP遮断[いわゆるIPS])
jail: ログファイル監視、指定文字列と回数でアクション
/etc/fail2ban
fail2ban.conf, jail.conf, filter.d/, jail.d/
212.5 OpenVPN ★★☆☆☆
# TIPS - OpenVPNのクライアント同士の通信について
基本はサーバ-クライアント間のみ。しかしpushでルートを伝達できたりする
クライアントに利用可能なネットワークを伝達する事ができる
サーバ側の設定に client-to-client ディレクティブが必要
+ openvpn (/etc/openvpn/server.conf)
nobind :クライアント側ポート自動割り当て
status :記載したファイルに、接続中クライアントとルーティングを記載
仮想ネットワーク tun tap
使用ポート: 1194
-------------------------------------------------------------------------