http://www.linux.or.jp/ * DNS (Domain Name Service) -インストールのチェック -- rpm -q bind bind-utils bind-config bind-libs bind-chroot TLD (トップレベルドメイン, Top Level Domain) ルートDNS もっとも上位にあるDNSサーバー群 ドメインのTLDを検索する ホスト名やドメイン名の最後には必ず「.(ピリオド)」をつける 例:www.example.jp. 正引きの場合、「.」はDNSサーバー上ではルートDNSのTLDを表しています。 逆引きの場合、「.」は「in-addr-arpa」という名前になり、逆引きゾーンファイル内のTLDを表しています。 例:192.168.1.1 は逆引きゾーンファイルでは「1.1.168.192.in-addr.arpa IN PTR www.example.jp.」と 左右を逆に記述することになる。 $TTL 86400 @ IN SOA @ root ( 42 1D ) IN NS @ IN A 127.0.0.1 IN AAAA ::1 -$TTL --TimeToLive の略で、DNSサーバーから問い合わせたデータの有効期限を表している。 --「86400」は秒数で、データの有効期限が1日であることを表している。 -SOA --Start of Authority の略で、指定されたホストのrootがこのゾーンファイルの権限を持っている、という宣言。 --@ は、自ドメイン名に置き換わる。(example.jp.) --SOA の次は「DNSサーバーのホスト名」「ホスト名のルートメールアドレス」がくる。 --本来ならば、「root@www.example.jp.」だが@はすでに予約されているので、「.」で表す。 --- @ IN SOA www.example.jp. root.www.example.jp. -ゾーンファイルの説明 --ドメインのシリアルナンバー --ドメインをリフレッシュする間隔 --メーン検索のリトライをするまでの時間 --ドメインの最長有効時間 --ドメインデータの最小有効時間 ---20060404 -ホスト名→IPアドレス -- <ホスト名> IN A -- A アドレス -- NS ネームサーバー --- ネームサーバーはどれか、という問いかけ -- MX メールサーバー --- 数字は優先順位 -- CNAME ホスト名の別名 -- AAAA IPv6 を利用してIPアドレスを指定する -逆引き -- MX 削除 -- A レコードを PTR レコードに置換して、ホスト名とIPアドレスを逆に記述。 $TTL 86400 @ IN SOA www.example.jp. root.www.example.jp. ( 20060404 1D ) IN NS www.example.jp. IN MX www.example.jp. www IN A 192.168.1.1 fedora IN CANEAME www www IN A 192.168.1.1 1 IN PTR www.example.jp. ---- named-checkzone <ゾーン名> <ゾーンファイル名> named-checkconf example.jp.rev example.zone.rev named-checkzone example.jp ???.zone *** named.conf controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; zone "." IN { type hint; file "named.ca"; }; // この間にある部分の記述を削除 include "/etc/rndc.key"; zone "???.zone" IN { type master; file "???.zone"; }; zone "???.zone.rev" IN { type master; file "???.zone.rev"; }; named-checkconf named.conf ''/etc/resolve.conf'' nameserver 127.0.0.1 ''/etc/host.conf'' order hosts, bind service named start nslookup www.yahoo.co.jp host 192.168.1.1 ---- controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; include "/etc/rndc.key"; // LAN 内のホスト範囲を「inside」として定義(内部向け) acl inside { 192.168.1.0/24; 127.0.0.1; } // inside から参照できるゾーンを記述 view "inside" { match-clients { inside; }; recursion yes; 一致しないゾーンは別のviewセクションへ振り分ける zone "." IN { type hint; file "named.ca"; }; zone "example.jp" { type maseter; file "/var/named/data/example.zone"; }; zone "example.zone.rev" { type master; file "/var/named/data/example.zone.rev"; }; }; // 外部からのアクセスはすべて「outside」として定義 view "outside" { match-clients { any; }; zone "." IN { type hint; file "named.ca"; }; zone "example.jp" { type master; file "/var/named/data/example.zone.out"; }; }; ---- *** セカンダリDNS プライマリ側には記述しないこと。 zone "example.zone" IN { type slave; file "<コピーするゾーンファイル名>"; // プライマリDNSのIPアドレス masters { 192.168.1.1; }; }; *** 逆引きゾーンファイル 外向けの場合 Aレコードで、サブクラスの範囲を指定する。 その後、サブネットの末尾になる値のみを指定し、ホスト名と対応させる。 IN A 255.255.255.248 1 IN PTR test.example.jp. * メールサーバー MTA (Mail Transfer Agent) メールを送信するサーバー POP3/IMAP メールを受信するサーバー ** 設定例 ''/etc/postfix/main.cf'' /etc/postfix/main.cf.default MTA MUA MDA +ホスト名の設定 ++ FQDNで記述する myhostname = www.example.jp +ドメイン名の設定 ++ホスト名を省略し、ドメイン名のみを記述する mydomain = example.jp +送信元アドレス形式の設定 ++@ の後ろの部分 myorigin = $mydomain +メールの受信インタフェースの設定 ++localhost +++ローカルホストにアカウントのあるユーザーにのみメールを配送し、外部から送信されてきたメールは一切無視する +++LAN内だけでのメール送受信ならこれでよい ++$myhostname +++複数のメールサーバーがシステムにあり、インタフェースを切り替えながら、特定のドメインやホストに対するメールのみを受信する ++all +++送られてきたメールはすべてのインタフェースを用いてメールを受信する inet_interfaces = all +受信するメールアドレスの指定 ++$myhostname +++複数のメールサーバーがある場合に使用する +++$myorigin の送信するアドレスにも注意する ++localhost.$mydomain +++メールサーバー内部から外部を経由した配信 +++例えばユーザーからrootへのメール ++localhost +++内部でのメール配信 mydestination = localhost.$mydomain, localhost, $mydomain +利用できるホストの制限 ++mynetwork_style default ++LAN内のプライベートIPアドレスを持ったホストのみに制限する mynetworks = 192.168.1.0/24, 127.0.0.0/8 *** mailaliases 特定のメールアドレスを別のメールアドレスに転送する機能 ''/etc/aliases'' 左側にあるメールアドレス宛に届いたメールを、右側にあるユーザーの元に転送する。 root向けのメールの設定 - #root: marc + root: user alias_maps = hash:/etc/aliases に関連 上記のデータベースの更新 newaliases ---- 設定ファイルのチェック postfix check プロセスの確認 ps ax | grep sendmail /usr/libexec/postfix/master pickup qmgr *** メール送信テスト +mailが届くかどうか確認する ++myorigin ++mailalias mail user Subject: test mail This is test. Cc: echo hello | mail -s Test user メール送信状況の確認 mailq 強制終了 postfix abort *** abuseチェック -Mail relay testing --http://www.abuse.net/relay.html ** POP3/IMAPサーバー Dovecot ''/etc/dovecot.conf'' - protocols = imap imaps pop3 pop3s + protocols = imap * FTPサーバー vsftpd /var/ftp/pub anonymous anonymous_enable=NO ホームディレクトリにアクセス ** FTP専用サーバー +FTP専用グループの作成 ++ groupadd ftponly ++ /etc/group ftponly:x:505:ftpuser, admin ++ /etc/passwd +++ /sbin/nologin … シェルのログインを禁止する +++ /var/ftp/pub … ホームディレクトリの変更 ftpuser:x:501:501::/var/ftp/pub:/sbin/nologin +FTPディレクトリの修正 ++chgrp ftponly pub +++ftponly に所有グループを変更する ++chmod 775 +++所有グループのユーザーが書き込めるようにパーミッションを変更する local_umask=077 *** ユーザーの接続拒否 ''/etc/vsftpd/ftpusers'' 拒否する場合は以下のファイルに追記 ''/etc/vsftpd/user_list'' ログファイル ''/var/log/xferlog''