暑すぎ

32度超。きょうは投了。

本でも読んで過ごします。。

最高気温は 33.8度 だったとか。明日は外出の予定があるんですが、 相変わらず暑そうです。

広告

久しぶりに広告をいくつか張り直してみました。

収入にはほとんどなってないんですけど、 それでも年間で10,000円くらいにはなってます。 このレンタルサーバの会費が出るくらい。ありがたいものです。

Gentoo

kernel を更新。やり方をすぐ忘れるのでメモ。

#pre{{ e8400 ~ # eselect kernel list Available kernel symlink targets:

 [1]   linux-2.6.23-gentoo-r9
 [2]   linux-2.6.24-gentoo-r8 *
 [3]   linux-2.6.25-gentoo-r6

e8400 ~ # eselect kernel set 3 e8400 ~ # eselect kernel list Available kernel symlink targets:

 [1]   linux-2.6.23-gentoo-r9
 [2]   linux-2.6.24-gentoo-r8
 [3]   linux-2.6.25-gentoo-r6 *

e8400 ~ # cd /usr/src/linux e8400 linux # make menuconfig ... e8400 linux # make ... e8400 linux # make modules_install install }}

あとは /boot/grub/menu.lst を修正。 /boot/vmlinuz から常に上げるようにすれば修正も不要ですが、なんとなく。

#pre{{ ... title=Gentoo Linux (2.6.25-gentoo-r6) root (hd0,0) kernel /boot/vmlinuz-2.6.25-gentoo-r6 root=/dev/sda3 ... }}

なぜか最近 splash.xpm.gz がなくなったので、コピー。

#pre{{ e8400 linux # cp /usr/share/grub/splash.xpm.gz /boot/grub/ }}

モジュールの rebuild も忘れずに。

#pre{{ e8400 linux # module-rebuild rebuild }}

再起動して完了。

#pre{{ sugimura@e8400 ~ $ uname -srmp Linux 2.6.25-gentoo-r6 x86_64 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz }}

熱暴走

ビデオカードが熱暴走。 キーボードの "Caps Lock" と "Scroll Lock" の 両方が点滅するので中を開けてみると、 ビデオカードのヒートシンクが触れないほど熱くなってました。

これから夏を乗り切れるんだろうか。。

iptables

sshd を上げているとブルートフォースアタックを食らうので、対策してみました。

#pre{{ Jul 10 00:28:26 e8400 sshd[13090]: Did not receive identification string from 211.169.249.241 Jul 10 00:33:44 e8400 sshd[13124]: Invalid user apple from 211.169.249.241 Jul 10 00:33:45 e8400 sshd[13132]: Invalid user brian from 211.169.249.241 Jul 10 00:33:46 e8400 sshd[13140]: Invalid user andrew from 211.169.249.241 ... }}

参考にしたのは下記のサイトです。

まずは iptables を emerge します。

#pre{{ e8400 ~ # emerge -av iptables }}

iptables に対応するように kernel を作り直します。 これが kernel を更新しようというきっかけでした。

iptables のために必要なモジュールは次の箇所です。

"match support" や "target support" になっているところが重要です。

kernel を作り直して再起動したら、 iptables を実行するためのスクリプトを書きます。

#pre{{ e8400 ~ # less iptables.sh

#!/bin/sh

# 定義をクリア iptables -F

# chain を削除 (初回はエラーになります) iptables -X ssh_block iptables -X ssh

# chain を作成 iptables -N ssh_block iptables -N ssh

# ssh は tcp/22 iptables -A INPUT -j ssh -p tcp --dport 22

# ログの定義 iptables -A ssh_block -m recent --name ssh_block --set -j LOG --log-level DEBUG --log-prefix "ssh_block: "

# この chain に来たらブロック iptables -A ssh_block -j DROP

# syn ではないときは ESTABLISHED か RELATED のときのみ許可 iptables -A ssh -p tcp ! --syn -m state --state ESTABLISHED,RELATED -j ACCEPT

# 一度攻撃者とみなされると1日(86400秒)は拒絶 iptables -A ssh -p tcp --syn -m recent --name ssh_block --update --seconds 86400 -j REJECT

# 60秒で5回接続してきたらブルートフォースアタックとみなす iptables -A ssh -p tcp --syn -m recent --name ssh_conn --rcheck --seconds 60 --hitcount 5 -j ssh_block

# syn パケットを記録 iptables -A ssh -p tcp --syn -m recent --name ssh_conn --set

iptables -A ssh -p tcp --syn -j ACCEPT }}

必要なカーネルモジュールがないときは

#pre{{ iptables: No chain/target/match by that name }}

このようなエラーになります。わかりにくいですが、地道にやり直します。

実行してエラーにならないことを確認します。

#pre{{ e8400 ~ # sh -x iptables.sh

  1. iptables -F
  2. iptables -X ssh_block
  3. iptables -X ssh
  4. iptables -N ssh_block
  5. iptables -N ssh
  6. iptables -A INPUT -j ssh -p tcp --dport 22
  7. iptables -A ssh_block -m recent --name ssh_block --set -j LOG --log-level DEBUG --log-prefix 'ssh_block: '
  8. iptables -A ssh_block -j DROP
  9. iptables -A ssh -p tcp '!' --syn -m state --state ESTABLISHED,RELATED -j ACCEPT
  10. iptables -A ssh -p tcp --syn -m recent --name ssh_block --update --seconds 86400 -j REJECT
  11. iptables -A ssh -p tcp --syn -m recent --name ssh_conn --rcheck --seconds 60 --hitcount 5 -j ssh_block
  12. iptables -A ssh -p tcp --syn -m recent --name ssh_conn --set
  13. iptables -A ssh -p tcp --syn -j ACCEPT }}

うまくできたら設定を保存します。 /var/lib/iptables/rules-save に書かれます。

#pre{{ e8400 ~ # /etc/init.d/iptables save

* Saving iptables state ...                                              [ ok ]

}}

起動スクリプトの動作確認をします。

まず停止。

#pre{{ e8400 ~ # /etc/init.d/iptables stop

* Saving iptables state ...                                              [ ok ]
* Stopping firewall ...                                                  [ ok ]

}}

定義が空になってます。

#pre{{ e8400 ~ # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination }}

起動。

#pre{{ e8400 ~ # /etc/init.d/iptables start

* Loading iptables state and starting firewall ...                       [ ok ]

}}

定義が入ってます。出力は改行しています。

#pre{{ e8400 ~ # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ssh tcp -- anywhere anywhere tcp dpt:ssh

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Chain ssh (1 references) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp flags:!FIN,SYN, RST,ACK/SYN state RELATED,ESTABLISHED REJECT tcp -- anywhere anywhere tcp flags:FIN,SYN, RST,ACK/SYN recent: UPDATE seconds: 86400 name: ssh_block side: source reject-with icmp-port-unreachable ssh_block tcp -- anywhere anywhere tcp flags:FIN,SYN, RST,ACK/SYN recent: CHECK seconds: 60 hit_count: 5 name: ssh_conn side: source

          tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,

RST,ACK/SYN recent: SET name: ssh_conn side: source ACCEPT tcp -- anywhere anywhere tcp flags:FIN,SYN, RST,ACK/SYN

Chain ssh_block (1 references) target prot opt source destination LOG all -- anywhere anywhere recent: SET name: ssh_block side: source LOG level debug prefix `ssh_block: ' DROP all -- anywhere anywhere }}

ここまで問題なければ、自動起動の設定をしておきます。

#pre{{ e8400 ~ # rc-update add iptables default

* iptables added to runlevel default

}}



トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-01-29 (土) 15:27:48