- blogs:
- cles::blog
ping は帰って来るのに No route to host ?
networking iptablesサーバに ssh 接続しようとしたら、見慣れない No route to host が。
サーバが落ちていたり、パケットがフィルタされている場合には Connection timed out や Connection refused が出ることはよくありますが、No route to host というのは初めてです。
もっと謎挙動なのはこのサーバに対する ping は通ってしまうということ。まったく状況が飲み込めません。
† 原因は結局 iptables
いろいろ悩みましたが、みんな同じ所でハマるようで、これの発生原因は iptables の一番最後に鎮座している以下の行。
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 がデフォルトである)
iptables のルールを1つだけ削除する
iptablesiptables でルールを削除したいときには以下のように -F を使うと HOGE から一括で削除をすることができますが、今回はたくさんルールが登録されているチェインから1つだけ削除したい場合のやりかたがパッと出てこなくて困ったので、後学のためにメモ。
例えばこんな感じのチェインがあったとして、この 192.168.20.0/24 に対する DROP を取り除きたいとします。
そんなときにはオプションに --line-numbers を加えると num が表示されるので、あとはこの番号で削除してやればOKです。
iptables を使った Heartbleed 攻撃検知
iptablesOpenSSL で見つかった 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 では普通に設定できました。
LPI-Japan が Linux セキュリティ標準教科書を公開
systemmanagemant linux iptables referenceこれまでにもLinux 標準教科書などを公開している LPI-Japan が新たに Linuxセキュリティ標準教科書(Ver1.0.0) を公開しました。
目次を眺めてみると慣れないと(というか、原理を理解しないと)使うのが難しい iptables や SELinux、ACL、OpenSSH などが網羅されているようです。Linux 標準教科書などと同じく、CC ライセンスなので PDF 版や EPUB 版は無償でダウンロードして読むことが可能になっています。基本的な事柄ばかりですが Linux を使って公にサービスを運用している場合には一度目を通しておいて損はなさそうです。
「Linuxセキュリティ標準教科書」はLinuxにおけるセキュリティを学習・再認識するために最低限必要となる知識を体系的にまとめた内容となっています。LPI-Japanでは、本教材の無償提供により教育機関や企業研修でのOSS/Linuxにおけるセキュリティ教育の質向上の一助となることを目的としています。
iptables でフィルタがどれくらい使われているのか確認する
iptablesサーバの iptables にはスパマーが来るたびに日々ルールを追加しているのですが、ルールは日々溜まっていく一方なので、古いルールで現在有効に作用していないフィルタを見つけて削除したいと思い、何か良い方法がないかと思って調べてみたら、iptables にはパケットカウントの機能があることが分かったのでメモ。つまり、いちいち syslog に吐いたりしなくてもフィルタに該当したパケット数がとれくらいあったかが分かるというわけです。
やり方は簡単で -v オプションをつけるだけ。先頭のカラムにパケット数とバイト数が表示されるようになります。
ちなみに -Z オプションをつけることで、パケットカウントをリセットすることもできました。
続・iptablesでポートマッピング
iptablesiptables を使ったポートマッピングは以前にもやりましたが、今回はローカルで起動しているサービスのポートを読み替えます。具体的には下図のように、Client からサーバの :80 にアクセスすると、そのリクエストが :8080 で待ち受けているサービスに転送されることです。
そもそも、なんでこんな事やりたかったのかと言うと、1023番以下のポート番号は特権ポートなので、Linux 上では root で起動するか、もしくは setcap コマンド*1で CAP_NET_BIND_SERVICE ケーパビリティを付与してやる必要があります。今回はサービスを root にしたり、ケーパビリティを付与したくなかったので、 iptables を使ってポートを読み替えることにしました。
ポートを読み替えるだけなので、最初に REDIRECT を試してみたのですが、なぜか上手く動作せず。
仕方がないので、下記のように DNAT を使ってみると、目的を達することができました。
自分の中ではちょっとやってることに違いが見いだせないのですが、この2つのコマンドの意味は微妙に異なるようです。
iptablesのnatででftpのPASVモードを通す
ftp iptables以前にiptablesでNATを組んでいたんですが、なぜかFTPのパッシブモード(PASV)が通らなくて困ってしまいました。デバッグモードで通信を眺めてみるとコントロールコネクションは開くのですが、データコネクションが開かないようです。これはどうもNATの設定が怪しいとしか思えないので、いろいろググって調べてみたところ、ちょうど下記のエントリを見つけました。この手順に従って2つのモジュールをロードしたところ正常に通信できるようになりました。
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
考えたらFTPは相手先にIPやポートを直接通知しちゃうので、その部分を強制的に書き換えてあげる必要があるんですね。
このあたりの事情はiptablesチュートリアルの「複雑なプロトコルとコネクション追跡」あたりを読むとよくわかります。
iptablesでポートマッピング
iptables久しぶりにiptablesでNATの設定をしたらハマってしまったので、忘れないうちにメモ。
こんなネットワークがあり、ServerAの8080で待ち受けているサービスを、Clientから使いたいという状況でした。
以下、作業メモ
[iptablesでポートマッピング の続きを読む]堪忍袋の緒は切れるためにある
DoS iptablesあまりにも露骨なトラックバックSPAMが多いので、かなり腹が立ってきました。これらは自分が改造しているNP_TrackbackとNP_Blacklistの活躍ですべて防ぎきっているのですが、こういうことがあると本当に自分でこれらのソフトウェアをメンテナンスしていて良かったと思います。
ちなみに標的になるエントリは決まっていて「サイバーエージェントのGoogle八分」と「トラックバックspamツールの言い訳」の2つ。どちらもトラックバックとSEO関連の話題なんですが、内容はどちらもトラックバック/SEOスパム批判です。そんなエントリにに堂々とspamを行う行為にはもはや話し合いの余地はないように感じます。堪忍袋の緒は切れるためにあるわけなので、怒りを行動で示すことにします。
まず下記のコマンドにて自分のサーバを防御の後、DNSBLに登録。
ひとまずはこれで大丈夫でしょう。
[堪忍袋の緒は切れるためにある の続きを読む]自分のサーバを「第666プロテクト」?
iptables evangelion昨日brutessh対策はバシバシ変なアクセスを叩き落としてくれていて、かなりいい感じに動作しています。
この防御方法は一度発動すると一定時間はアクセス不能になるので、その動作がふと「第666プロテクト」*1みたいだなぁと思ったので、このiptablesの設定スクリプトを666protect.shをという名前にしてみました。
さらにそれをちょっと自己主張してみようかと、メッセンジャーの状態に「666 Protect !」とネタを仕込んでみたら反響ありすぎでした。みんなネタに食いつきすぎです*2。
[自分のサーバを「第666プロテクト」? の続きを読む]- *1: エヴァの作中に出てくるMAGIというスーパーコンピュータのアンチクラッキングプログラム。このプログラムを展開すると62時間にわたって外部からのクラッキングを無効化にできる。
- *2: エヴァはいまだに健在なんだということがよくわかりました。
- ゆうちょ銀行届出印廃止
- ゆうちょの副印鑑が廃止されてた
- ttclock windows11
- ElevenClock で Windows11 のタスクバーの時計に秒を表示させる
- pressurepaj
- Emscripten を CentOS 7 で試す
- シャープの空気清浄加湿器の... (1)
- SMARTEK デジタル温湿度計 (1)
2 . Word で数式がグレーアウトされていて挿入できないときは(15133)
3 . awk で指定した n カラム目以降を出力する(11738)
4 . アーロンチェアのポスチャーフィットを修理(11427)
5 . Windows 10 で勝手にログアウトされないようにする(9724)
- Academic[574]
- Book[155]
- Diary[522]
- Disaster[101]
- Foodlogue[1425]
- Game[284]
- Goods[805]
- Healthcare[341]
- Hobby[32]
- IT[1195]
- Military[343]
- misc.[1271]
- Mobile[510]
- Music[38]
- Neta[106]
- News[94]
- Photo[391]
- RealEstate[120]
- Security[1178]
- SEO Contest[36]
- Software[634]
- Tips[1886]
- Travelogue[1238]
- Web[675]
- Work[193]