Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
BLOGTIMES
» ArchiveList (Tag for "iptables" )
«Prev || 1 · 2 · | Next»
2017/02/07

ping は帰って来るのに No route to host ?

networking  iptables 

サーバに ssh 接続しようとしたら、見慣れない No route to host が。

$ ssh hoge.example.com ssh: connect to host hoge.example.com port 22: No route to host

サーバが落ちていたり、パケットがフィルタされている場合には Connection timed outConnection refused が出ることはよくありますが、No route to host というのは初めてです。
もっと謎挙動なのはこのサーバに対する ping は通ってしまうということ。まったく状況が飲み込めません

原因は結局 iptables

いろいろ悩みましたが、みんな同じ所でハマるようで、これの発生原因は iptables の一番最後に鎮座している以下の行。

-j REJECT --reject-with icmp-host-prohibited

REJECT のタイプが icmp-host-prohibited の場合には No route to host と表示されるようです。
iptables の man を確認してみると REJECT とした場合のデフォルトのタイプは icmp-port-unreachable となっているので、このタイプの場合には ssh は Connection refused と表示を行うようです。

Man page of iptables-extensions

指定できるタイプは icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited, icmp-host-prohibited, icmp-admin-prohibited (*) である。指定したタイプの適切な ICMP エラーメッセージを返す (icmp-port-unreachable がデフォルトである)

    at 21:01 |
    2015/09/05

    iptables のルールを1つだけ削除する

    iptables 

    iptables でルールを削除したいときには以下のように -F を使うと HOGE から一括で削除をすることができますが、今回はたくさんルールが登録されているチェインから1つだけ削除したい場合のやりかたがパッと出てこなくて困ったので、後学のためにメモ。

    iptables -F HOGE

    例えばこんな感じのチェインがあったとして、この 192.168.20.0/24 に対する DROP を取り除きたいとします。

    # iptables -L -v -n Chain INPUT (policy ACCEPT 35G packets, 4199G bytes) pkts bytes target prot opt in out source destination 4985K 1437M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 795 44504 DROP all -- * * 192.168.10.0/24 0.0.0.0/0 0 0 DROP all -- * * 192.168.20.0/24 0.0.0.0/0 0 0 DROP all -- * * 192.168.30.0/24 0.0.0.0/0

    そんなときにはオプションに --line-numbers を加えると num が表示されるので、あとはこの番号で削除してやればOKです。

    # iptables -L -v -n --line-numbers Chain INPUT (policy ACCEPT 35G packets, 4199G bytes) num pkts bytes target prot opt in out source destination 1 4987K 1437M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 795 44504 DROP all -- * * 192.168.10.0/24 0.0.0.0/0 3 0 0 DROP all -- * * 192.168.20.0/24 0.0.0.0/0 4 0 0 DROP all -- * * 192.168.30.0/24 0.0.0.0/0 # iptables -D INPUT 3

      at 06:36 |
      2014/05/01

      iptables を使った Heartbleed 攻撃検知

      iptables 

      OpenSSL で見つかった Heartbleed Bug 問題は既に対策済の人も多いと思います。
      この問題の怖いところはログに攻撃の痕跡が残らないことなのですが、F-Secure のブログで iptables を使った攻撃検知のやり方が紹介されていたのでメモ。

      エフセキュアブログ : Openssl Heartbleed 攻撃の検知について

      iptables log rules
      iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j LOG --log-prefix "BLOCKED: HEARTBEAT"

      iptables block rules
      iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP

      CentOS 5.x では動かないので注意

      ちなみにこの方法は CentOS 5.x 系では動かないようで、下記のようなエラーが出てしまいました。CentOS 6.x では普通に設定できました。

      iptables v1.3.8: Couldn't load match `u32':/lib/iptables/libipt_u32.so: cannot open shared object file: No such file or directory

        at 18:14 |
        2013/10/01

        LPI-Japan が Linux セキュリティ標準教科書を公開

        systemmanagemant  linux  iptables  reference 
        Linuxセキュリティ標準教科書

        これまでにもLinux 標準教科書などを公開している LPI-Japan が新たに Linuxセキュリティ標準教科書(Ver1.0.0) を公開しました。

        目次を眺めてみると慣れないと(というか、原理を理解しないと)使うのが難しい iptables や SELinux、ACL、OpenSSH などが網羅されているようです。Linux 標準教科書などと同じく、CC ライセンスなので PDF 版や EPUB 版は無償でダウンロードして読むことが可能になっています。基本的な事柄ばかりですが Linux を使って公にサービスを運用している場合には一度目を通しておいて損はなさそうです。

        LPI-Japan、「Linuxセキュリティ標準教科書」を公開、無償での配布を開始 ~最低限必要となるセキュリティの知識を体系的に学びたい方に最適な教科書~|Linux技術者認定機関 LPI-Japan [エルピーアイジャパン]

        「Linuxセキュリティ標準教科書」はLinuxにおけるセキュリティを学習・再認識するために最低限必要となる知識を体系的にまとめた内容となっています。LPI-Japanでは、本教材の無償提供により教育機関や企業研修でのOSS/Linuxにおけるセキュリティ教育の質向上の一助となることを目的としています。

          at 20:35 |
          2013/07/29

          iptables でフィルタがどれくらい使われているのか確認する

          iptables 

          サーバの iptables にはスパマーが来るたびに日々ルールを追加しているのですが、ルールは日々溜まっていく一方なので、古いルールで現在有効に作用していないフィルタを見つけて削除したいと思い、何か良い方法がないかと思って調べてみたら、iptables にはパケットカウントの機能があることが分かったのでメモ。つまり、いちいち syslog に吐いたりしなくてもフィルタに該当したパケット数がとれくらいあったかが分かるというわけです。

          やり方は簡単で -v オプションをつけるだけ。先頭のカラムにパケット数とバイト数が表示されるようになります。
          ちなみに -Z オプションをつけることで、パケットカウントをリセットすることもできました。

          # iptables -L -v Chain INPUT (policy ACCEPT 35G packets, 4196G bytes) pkts bytes target prot opt in out source destination 1189K 342M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED 0 0 ACCEPT all -- any any hoge.example.net/24 anywhere 0 0 ACCEPT all -- any any fuga.example.net/24 anywhere 227 11756 ACCEPT all -- any any piyo.example.net/24 anywhere 75853 4134K SPAMFILTER tcp -- any any anywhere anywhere state NEW 107 6328 ssh tcp -- any any anywhere anywhere tcp dpt:ssh

            at 19:39 |
            2013/04/12

            続・iptablesでポートマッピング

            iptables 

            iptables を使ったポートマッピングは以前にもやりましたが、今回はローカルで起動しているサービスのポートを読み替えます。具体的には下図のように、Client からサーバの :80 にアクセスすると、そのリクエストが :8080 で待ち受けているサービスに転送されることです。

            ┌───────────┐ │ Client │ │ 192.168.100.2 │ └───────────┘    │192.168.100.0/24 ┌─ :80 ────────── :8080 ───┐ │ │ ↑(httpd) │ │ └ - - - - - - - - - - - -┘ │ │ Server 192.168.100.1 │ └────────────────────┘

            そもそも、なんでこんな事やりたかったのかと言うと、1023番以下のポート番号は特権ポートなので、Linux 上では root で起動するか、もしくは setcap コマンド*1で CAP_NET_BIND_SERVICE ケーパビリティを付与してやる必要があります。今回はサービスを root にしたり、ケーパビリティを付与したくなかったので、 iptables を使ってポートを読み替えることにしました。

            ポートを読み替えるだけなので、最初に REDIRECT を試してみたのですが、なぜか上手く動作せず。

            iptables -t nat -A PREROUTING -d 192.168.100.1 -p tcp --dport 80 -j REDIRECT --to-port 8080

            仕方がないので、下記のように DNAT を使ってみると、目的を達することができました。

            iptables -t nat -A PREROUTING -d 192.168.100.1 -p tcp --dport 80 -j DNAT --to-destination :8080

            自分の中ではちょっとやってることに違いが見いだせないのですが、この2つのコマンドの意味は微妙に異なるようです。


            at 18:48 |
            2011/01/17

            iptablesのnatででftpのPASVモードを通す

            ftp  iptables 

            以前にiptablesでNATを組んでいたんですが、なぜかFTPのパッシブモード(PASV)が通らなくて困ってしまいました。デバッグモードで通信を眺めてみるとコントロールコネクションは開くのですが、データコネクションが開かないようです。これはどうもNATの設定が怪しいとしか思えないので、いろいろググって調べてみたところ、ちょうど下記のエントリを見つけました。この手順に従って2つのモジュールをロードしたところ正常に通信できるようになりました。

            iptablesでftpを通す

            iptablesでFTPを通すには20番ポートと21番ポートをあけるだけではpassive modeのFTPはうまく通してくれません。ip_conntrack_ftpとip_nat_ftp二つのモージュールをロードする必要があります。(ip_nat_ftpは必須ではないかも・・・)
            [root@www etc]# modprobe ip_conntrack_ftp [root@www etc]# modprobe ip_nat_ftp

            さらに設定が消えないようにに下記の定義を追加しました。

            /etc/sysconfig/iptables-config

            IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"

            考えたらFTPは相手先にIPやポートを直接通知しちゃうので、その部分を強制的に書き換えてあげる必要があるんですね。
            このあたりの事情はiptablesチュートリアルの「複雑なプロトコルとコネクション追跡」あたりを読むとよくわかります。


              at 11:25 |
              2009/08/21

              iptablesでポートマッピング

              iptables 

              久しぶりにiptablesでNATの設定をしたらハマってしまったので、忘れないうちにメモ。
              こんなネットワークがあり、ServerAの8080で待ち受けているサービスを、Clientから使いたいという状況でした。

              ┌───────────┐ │ ServerA │ │ 192.168.200.2:8080 │ └───────────┘    │    │192.168.200.0/24    │ ┌eth1(192.168.200.1) ─┐ │ServerB │ └eth0(192.168.100.1) ─┘    │    │192.168.100.0/24    │ ┌───────────┐ │Client │ │ 192.168.100.0/24 │ └───────────┘

              以下、作業メモ

              [iptablesでポートマッピング の続きを読む]

                at 22:04 |
                2006/04/23

                堪忍袋の緒は切れるためにある

                DoS  iptables 

                あまりにも露骨なトラックバックSPAMが多いので、かなり腹が立ってきました。これらは自分が改造しているNP_TrackbackとNP_Blacklistの活躍ですべて防ぎきっているのですが、こういうことがあると本当に自分でこれらのソフトウェアをメンテナンスしていて良かったと思います。

                ちなみに標的になるエントリは決まっていて「サイバーエージェントのGoogle八分」と「トラックバックspamツールの言い訳」の2つ。どちらもトラックバックSEO関連の話題なんですが、内容はどちらもトラックバック/SEOスパム批判です。そんなエントリにに堂々とspamを行う行為にはもはや話し合いの余地はないように感じます。堪忍袋の緒は切れるためにあるわけなので、怒りを行動で示すことにします。

                まず下記のコマンドにて自分のサーバを防御の後、DNSBLに登録

                iptables -A INPUT -j DROP -s ###.###.###.###/28

                ひとまずはこれで大丈夫でしょう。

                [堪忍袋の緒は切れるためにある の続きを読む]

                  at 21:10 |
                  2005/12/16

                  自分のサーバを「第666プロテクト」?

                  iptables  evangelion 

                  昨日brutessh対策はバシバシ変なアクセスを叩き落としてくれていて、かなりいい感じに動作しています。

                  この防御方法は一度発動すると一定時間はアクセス不能になるので、その動作がふと「第666プロテクト」*1みたいだなぁと思ったので、このiptablesの設定スクリプトを666protect.shをという名前にしてみました。

                  さらにそれをちょっと自己主張してみようかと、メッセンジャーの状態に「666 Protect !」とネタを仕込んでみたら反響ありすぎでした。みんなネタに食いつきすぎです*2

                  [自分のサーバを「第666プロテクト」? の続きを読む]
                  • *1: エヴァの作中に出てくるMAGIというスーパーコンピュータのアンチクラッキングプログラム。このプログラムを展開すると62時間にわたって外部からのクラッキングを無効化にできる。
                  • *2: エヴァはいまだに健在なんだということがよくわかりました。

                  at 21:01 |
                  «Prev || 1 · 2 · | Next»
                  » ArchiveList (Tag for "iptables" )