セキュリティに配慮しつつ、外部から正常にアクセスできるようにします
「前回」に続いて「GMO VPSを契約してWordPressを安定動作させるまでのサーバ設定方法」第二弾。
このページではドメインとIPの関連付けを行うためにBINDを設定し、合わせて各種ネットワークの設定や脆弱性への対応も済ませます。
今回の解説で利用したVPSはこちら
目次
- BINDのインストールと設定
- ルートネームサーバの情報を取得
- 正引きのゾーンファイルの作成
- BINDの設定
- ドメインのレジストリ・レジストラの登録
- hostsファイルを編集
- ipv6を無効にする
- DNSクライアントを設定
- ネットワークの設定
- NTPサーバーの脆弱性に対応
BINDのインストールと設定
前回に続いてBIND DNSをインストールして名前解決できるようにします。
# yum install bind (省略) Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: bind x86_64 32:9.8.2-0.23.rc1.el6_5.1 updates 4.0 M Installing for dependencies: bind-libs x86_64 32:9.8.2-0.23.rc1.el6_5.1 updates 879 k portreserve x86_64 0.0.4-9.el6 base 23 k Transaction Summary ================================================================================ (省略)
ルートネームサーバの情報を取得
/etcディレクトリにルートネームサーバの情報をダウンロードしておきます。
# cd /etc # wget ftp://ftp.nic.ad.jp/internet/rs.internic.net/domain/named.cache # mv named.cache db.cache
正引きのゾーンファイルの作成
今回は便宜上ドメイン名を「example.com」、IPを「192.168.0.1」で設定します。
設定するのは以下のとおり。
ドメイン | IP | |
---|---|---|
プライマリネームサーバー | ns.example.com | 192.168.0.1 |
メールサーバ | mail.example.com | 192.168.0.1 |
web用エイリアス | www.example.com | 192.168.0.1 |
ftp用エイリアス | ftp.example.com | 192.168.0.1 |
ドメインを管理するレジストラにネームサーバの情報を登録しますが、「.com」などはプライマリネームサーバにくわえて、セカンダリネームサーバも設定する必要があります。
プライマリネームサーバはこのサーバが担当しますが、このままではセカンダリネームサーバの設定ができません。
そこでセカンダリネームサーバを「無料のセカンダリDNS マイハマネット」で代用します。
ありがたいことに無料で利用できます。
今回取得したマイハマネットのセカンダリネームサーバのドメインは以下のとおりです。
ドメイン | IP | |
---|---|---|
セカンダリネームサーバー1 | ns2.maihama-net.com | 198.104.58.211 |
セカンダリネームサーバー2 | ns3.maihama-net.com | 153.120.38.37 |
example.comの正引き用ファイルの作成
# vi /var/named/example.com.hosts
$ttl 38400 example.com. IN SOA ns.example.com. info.example.com. ( 2015012100 ; シリアル番号 10800 ; リフレッシュ間隔 3600 ; リトライ間隔 604800 ; ゾーンの有効期 38400 ) ; ネガティブキャッシュ有効期間 example.com. IN NS ns.example.com. ; このゾーンのプライマリマスタ example.com. IN NS ns2.maihama-net.com. ; マイハマnetのセカンダリマスタ example.com. IN NS ns3.maihama-net.com. ; マイハマnetのセカンダリマスタ example.com. IN MX 10 mail.example.com. ; メール用 ns.example.com. IN A 192.168.0.1 example.com. IN A 192.168.0.1 ns2.maihama-net.com. IN A 198.104.58.211 ns3.maihama-net.com. IN A 153.120.38.37 mail.example.com. IN A 192.168.0.1 www.example.com. IN CNAME example.com. ; web用エイリアス ftp.example.com. IN CNAME example.com. ; ftp用エイリアス
シリアル番号は「年+月+日+設定番号」で管理すると更新忘れが防げるのでお勧めです。
また、他にもドメインがある場合は同じようにドメイン名のhostsファイルを作成しておいてください。
逆引きの設定はGMO VPS契約時に設定したと思うので、ここでは省略します。設定していない場合はコントロールパネルから設定しておいてください。
BINDの設定
正引き用のファイルを作成したのでBINDで指定します。
# cp /etc/named.conf /etc/named.conf.org # vi /etc/named.conf
//ルートネームサーバのパス zone "." { type hint; file "/etc/db.cache"; }; acl my-network { # 問い合わせを許可するアドレスの指定 192.168.0.1; }; options { # キャッシュサーバの場合yes recursion yes ; # 定義したネットワークからのアクセスを許可 allow-query { localhost; my-network; }; # セカンダリネームサーバ用(マイハマネット用) allow-transfer { 153.120.38.37; 198.104.58.211; }; # IPV6の機能を停止 listen-on-v6 { none; }; # namedデーモンのワークディレクトリを指定 directory "/var/named"; # PIDファイルの指定 pid-file "/var/run/named/named.pid"; # キャッシュポイズニング対策でDNSSEC対応 dnssec-validation auto; }; zone "example.com" { type master; file "/var/named/example.com.hosts"; # optionsで拒否しているのでこのゾーンファイルに関しては外部からのアクセスを許可する設定 allow-query { any; }; allow-transfer { 153.120.38.37; 198.104.58.211; }; };
BINDのpid用ディレクトリを作成
オプションで指定したpidファイル用のディレクトリを作成
(カーネル2.4.xでは/var/run/named.pidが作れるので問題ないが、2.2.xだとpidが作れずエラーになるため)
# mkdir /var/run/named/ # chown named.named /var/run/named/
rndc用の共通鍵の作成
BIND付属のrndc-confgenコマンドで作成。
rndc-confgenについては詳しくはmanで見てもらうとして、以下のコマンドでは新規ファイルを鍵長512bitでランダムファイルで「/dev/urandom」を利用して作成しています。
# rndc-confgen -a -b 512 -r /dev/urandom
BINDの再起動
# /etc/init.d/named restart
BINDの自動起動設定
調べて3がONでないならonにする。
# chkconfig --list named # chkconfig named on
正しく起動しているかログの確認
# vi /var/log/messages
ドメインのレジストリ・レジストラの登録
ネームサーバの設定を移管する。
これはレジストラによって異なる。「ムームードメインの場合はこちら」で解説した通り。
自分で作ったプライマリネームサーバのIPとドメインを関連付け、合わせてセカンダリ用のマイハマnetのドメインも設定すること。
最終的には正しく名前解決できているかは「DNSの設定チェック」で調べることができる。
(初回に設定したばかりだと反映されていない場合があるので数日待つべし)
hostsファイルを編集
サーバ内では外部へ問い合わせる必要は無いのでhostsファイルを編集する。
(192.168.0.1の部分は自分のサーバのIPアドレスに。)
# vi /etc/hosts
127.0.0.1 localhost 192.168.0.1 example.com ns.example.com 2nd.example.com mail.example.com ftp.example.com
ipv6を無効にする
# vi /etc/modprobe.d/disable-ipv6.conf
alias net-pf-10 off alias ipv6 off
自動起動のチェック。3がonならoffにする。
# chkconfig --list ip6tables # chkconfig ip6tables off
ネットワークの再起動(サーバの再起動しないとダメな場合あり)
# service network restart
DNSクライアントを設定
# vi /etc/nsswitch.conf
hostsの項目を編集
hosts: files dns ↓ hosts: files nisplus nis dns
ネットワークの設定
# vi /etc/sysctl.conf
このファイルは値の後に#してコメントすると正常に設定されないので注意。 またアクティブ100程度の小規模サイトを想定しています。
# TIME_WAIT状態の軽減 # net.ipv4.tcp_tw_recycle = 1 携帯やロードバランサ導入時に問題になる可能性あり net.ipv4.tcp_tw_reuse = 1 # 30にしていたが、600位上でてるため更に半分の15秒に変更。 net.ipv4.tcp_fin_timeout = 15 # コネクションのタイムアウト時間の設定。デフォルト7200 net.ipv4.tcp_keepalive_time = 100 # 検査の回数。デフォルト9 net.ipv4.tcp_keepalive_probes = 2 # 次の検査を実行するときの待ち時間。デフォルト75 net.ipv4.tcp_keepalive_intvl = 3 # RFC1337に準拠させる。TIME_WAIT状態のときにRSTを受信した場合、TIME_WAIT期間の終了を待たずにそのソケットをクローズする net.ipv4.tcp_rfc1337 = 1 # nmapなどでuptime(システムの連続稼働時間)を探られるのを防ぐ。 net.ipv4.tcp_timestamps = 0 # ipv6を無効 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
以下はコメントアウト。
# Disable netfilter on bridges. net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 ↓ # Disable netfilter on bridges. # net.bridge.bridge-nf-call-ip6tables = 0 # net.bridge.bridge-nf-call-iptables = 0 # net.bridge.bridge-nf-call-arptables = 0
設定の反映。
# /sbin/sysctl -p
NTPサーバーの脆弱性に対応
詳しくは「NTPを利用したNTPリフレクション攻撃の概略と対策」をご覧ください。
# vi /etc/ntp.conf
NICT公開NTPサービスを利用する。
server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst ↓ # server 0.centos.pool.ntp.org iburst # server 1.centos.pool.ntp.org iburst # server 2.centos.pool.ntp.org iburst # server 3.centos.pool.ntp.org iburst server -4 ntp.nict.jp iburst server -4 ntp.nict.jp iburst server -4 ntp.nict.jp iburst
最終行に追加。
# NTP Dos攻撃対策 disable monitor
再起動して設定を反映。
# /etc/init.d/ntpd restart
今回の解説で利用したVPSはこちら
「GMOクラウドのVPS」
これでBINDとネットワーク関連の調整は完了です。
次は「iptablesの設定とログファイルのローテーション」です。
このページは大変おせわになってます。
ちょっと質問ですが、
# vi /etc/hosts でファイルを編集する中に「sukegra」ってあるのですが、
これは何のサーバーなんでしょうか?
↓
127.0.0.1 localhost
192.168.0.1 example.com sukegra ns.example.com 2nd.example.com mail.example.com http://ftp.example.com
失礼しました。
実際の設定ファイルからコピペしたもので、サーバの用の記述が残っていたようです。
sukegraは必要ありません。
了解いたしました。ありがとうございます。