* 暑すぎ [#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

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS