* 暑すぎ [#cfe10f54]
32度超。きょうは投了。
本でも読んで過ごします。。
最高気温は 33.8度 だったとか。明日は外出の予定があるんですが、
相変わらず暑そうです。
* 広告 [#z8a27167]
久しぶりに広告をいくつか張り直してみました。
収入にはほとんどなってないんですけど、
それでも年間で10,000円くらいにはなってます。
このレンタルサーバの会費が出るくらい。ありがたいものです。
* Gentoo [#vb2ad4b2]
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
}}
* 熱暴走 [#lb689c25]
ビデオカードが熱暴走。
キーボードの "Caps Lock" と "Scroll Lock" の
両方が点滅するので中を開けてみると、
ビデオカードのヒートシンクが触れないほど熱くなってました。
これから夏を乗り切れるんだろうか。。
* iptables [#ve340165]
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
...
}}
参考にしたのは下記のサイトです。
- http://d.hatena.ne.jp/hirose31/20050920/1127208718 (ひ)さん
まずは iptables を emerge します。
#pre{{
e8400 ~ # emerge -av iptables
}}
iptables に対応するように kernel を作り直します。
これが kernel を更新しようというきっかけでした。
iptables のために必要なモジュールは次の箇所です。
- Networking ---> Networking options
-- Network packet filtering framework (Netfilter)
--- Core Netfilter Configuration ---> Netfilter Xtables support (required for ip_tables)
--- IP: Netfilter Configuration
"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
+ iptables -F
+ iptables -X ssh_block
+ iptables -X ssh
+ iptables -N ssh_block
+ iptables -N ssh
+ 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: '
+ iptables -A ssh_block -j DROP
+ iptables -A ssh -p tcp '!' --syn -m state --state ESTABLISHED,RELATED -j ACCEPT
+ iptables -A ssh -p tcp --syn -m recent --name ssh_block --update --seconds 86400 -j REJECT
+ iptables -A ssh -p tcp --syn -m recent --name ssh_conn --rcheck --seconds 60 --hitcount 5 -j ssh_block
+ iptables -A ssh -p tcp --syn -m recent --name ssh_conn --set
+ 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,R
ST,ACK/SYN recent: UPDATE seconds: 86400 name: ssh_block side: source
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,R
ST,ACK/SYN recent: CHECK seconds: 60 hit_count: 5 name: ssh_conn side: source
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
}}
----
#comment