カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

パケット受信制限 iptables

iptablesのlimitモジュールを使用してパケット受信に制限を持たせる。

モジュールがインストールされているかどうかは、/lib/iptables以下に「libipt_limit.so」があるかを確認してください。

例)新規接続のパケットに対して、10回までは無制限、それ以降は1分に1回ずつ応答する

iptables -A INPUT -p udp --dport 53 -m state --state NEW \
-m limit --limit 1/m --limit-burst 10 \
-j ACCEPT

オプションの説明

-A INPUT INPUTチェインに追加
-p udp プロトコルをudpに指定
–dport 53 ポートを指定
-m state –state NEW stateモジュールで新規接続を指定
-m limit limitモジュールを有効化
–limit 1/m limitを1分に1回に指定
–limit-burst 10 最初の10回までは無制限
-j ACCEPT ターゲットをACCEPTに
2,104 views

BINDのバージョンを隠ぺい

BINDが稼働しているサーバーに、以下のようなコマンドを実行するとBINDのバージョンが分かってしまいます。

$ dig @ネームサーバーのアドレス chaos txt version.bind

これを隠してしまうよう設定を変更しましょう。

まず設定前の状態を確認します。

$ dig @dns.example.jp chaos txt version.bind

; <<>> DiG 9.3.6-P2 <<>> @dns.example.jp chaos txt version.bind
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37859
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
version.bind.           0       CH      TXT     "9.2.4"

;; AUTHORITY SECTION:
version.bind.           0       CH      NS      version.bind.

;; Query time: 45 msec
;; SERVER: 192.168.1.0#53(192.168.1.0)
;; WHEN: Wed Dec  4 13:52:17 2013
;; MSG SIZE  rcvd: 62

ANSWER SECTIONにバージョンが返ってきてしまいます。
続きを読む…»

3,541 views

DNSサーバーをオープンリゾルバーにしない

今年に入って、DNSの再帰的な問い合わせを使ったDDos攻撃が報告されているようです。
DNSキャッシュサーバーとして運用している場合でも、制限を設けて適切に設定をしておかないと、
DDos攻撃の踏み台にされてしまいます。

詳しくはこちらのサイトを参考にしてください。
http://www.jpcert.or.jp/pr/2013/pr130002.html

管理しているサーバーがオープンリゾルバーになっていないかどうかを確認するサイトが開設されています。
http://www.openresolver.jp/

OSやBINDのバージョンによっても異なりますが、設定例をご紹介します。

まず、オープンリゾルバーになっていないかを確認します。
前述したオープンリゾルバー確認サイトも確認できますが、ここではコマンドラインで確認します。

$ wget -qO - http://www.openresolver.jp/cli/check.html

コマンドを実行すると結果が表示されます。

your remote ip: close 192.0.2.1(gw.example.com)
your use resolver: open 192.0.2.2(ns.example.com)

続きを読む…»

7,824 views

セカンダリDNSサーバーの設定

自前でセカンダリDNSサーバーを構築する際の設定例をご紹介します。

まずプライマリDNSサーバーの設定。
/etc/named.confでセカンダリを用意したいドメインのゾーン設定を修正します。

zone "example.jp" in {
    type master;
    file "example.jp";           //ゾーン設定ファイルを指定
    allow-transfer { 0.0.0.0; }; //セカンダリDNSサーバーのIPアドレス
};

allow-trasferでセカンダリDNSサーバーからのゾーン転送を許可する。※セキュリティ上必須

次にセカンダリDNSサーバーの設定をします。
/etc/named.conf

zone "example.jp" in {
    type slave;               //セカンダリなのでタイプをスレーブに指定
    file "slaves/example.jp"; //ゾーン設定ファイルを指定(省略可)
    masters { 0.0.0.0 };      //プライマリDNSサーバーのIPアドレス
};

それぞれnamedを再起動し設定完了。
ちなみに、ゾーン転送はTCP53ポートを使用するらしいのですが、UDPを解放しないとできなかった。
続きを読む…»

7,211 views

サーバーをプライベートネットワークで運用する場合の注意点

ブロードバンドルーターで静的IPマスカレードを使用し、サーバーをプライベートネットワークで運用する場合の注意点をご紹介。

サーバーをプライベートIPで運用する場合、内部での名前解決をしてあげないといけません。

内部からのドメイン名前解決は/etc/hostsファイルに以下のように記述
※ドメインがexample.jp、ルーターが192.168.100.1、サーバーがホストwwwの192.168.100.2とします。

192.168.100.2   www.example.jp

これを書いておかないとサーバー自身でも自サイトを見ることができません。
更に自サイト内でフルパス参照ができません。
※リンクでページを移動するだけなら可能(クライアントの名前解決によるため)

特に複数のウェブサーバーがあり、別のウェブサーバーからデータを
PHP等のプログラムを使って読み出そうとすると、名前解決できずにエラーになります。

他の事例としては、メールサーバーとウェブサーバーが同ネットワーク内に
別に存在する場合で、ウェブサーバーからフォーム等でメールを同ネットワーク内の
メールサーバーで受けているアドレスに送る場合にも注意が必要です。
続きを読む…»

4,648 views