32度超。きょうは投了。
本でも読んで過ごします。。
最高気温は 33.8度 だったとか。明日は外出の予定があるんですが、 相変わらず暑そうです。
久しぶりに広告をいくつか張り直してみました。
収入にはほとんどなってないんですけど、 それでも年間で10,000円くらいにはなってます。 このレンタルサーバの会費が出るくらい。ありがたいものです。
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" の 両方が点滅するので中を開けてみると、 ビデオカードのヒートシンクが触れないほど熱くなってました。
これから夏を乗り切れるんだろうか。。
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
うまくできたら設定を保存します。 /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
}}