と言っても特に何かしたとかは無かったり。
- sshのポートを変えた
- iptablesを設定した
- logwatchを導入した
- pacoを導入した
sshのポート変更
セキュリティ的にはsshを公開鍵認証にしておくだけで基本大丈夫だとは思うのですが、アタックされることには変わりなく気持ち悪い物は気持ち悪いので一応変えておきました。
iptablesの設定
何処でも見かける設定ですが以下のような基準でiptablesを設定するスクリプトを組みました。
- 内から外への通信以外は拒否
- ただし内から外への通信の応答は通す
- SSH用の穴は用意する
iptables-init.sh
#!/bin/sh
# ルールクリア
iptables -F
iptables -X
# 内から外への通信以外は破棄
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# ループバックは全て許可
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# プライベートネットワークなんて無かったんや…
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 127.16.0.0/12 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
# SSH用の穴
iptables -A INPUT -p tcp --dport {SSHのポート} -j ACCEPT
# 内から外への通信の応答は通す
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
logwatchの導入
ログも監視しないと意味ないのでlogwatchなるログを定期的に(デフォルトはcron.dailyを利用した毎日)メールで知らせるプログラムを導入してみました。yumで入れるとバージョンが結構古かったりするのでsourceforgeから落としてインストールしました。rpmで入れるとデフォルトの設定ファイルが/usr/share/logwatch/default.conf以下となるようです。/etc/logwatch/conf以下に設定ファイルを置くと設定を上書きするようです。
とりあえずSSHのログとDiskスペースのログを監視するようにしました。デフォルトではService = Allで全部を監視するようにしてその後除外を設定しているのでその設定をコメントアウトしてSSHのログとDiskスペースのログに決め打ちしました。
/usr/share/logwatch/default.conf/logwatch.conf
#Service = All
#Service = "-zz-network"
#Service = "-zz-sys"
#Service = "-eximstats"
/etc/logwatch/conf/logwatch.conf
MailTo = 送信先メールアドレス
MailFrom = 送信元メールアドレス
Service = sshd
Service = zz-disk_space
rpmで入れているならばおそらく/etc/cron.daily/0logwatchにlogwatchスクリプトへのシンボリックリンクが貼られているので毎日定期的に実行されメールが届くようになるハズです。ただしデフォルトでは前日のログを送信する設定(Range = yesterday)になっていてログが記録されていなければ送信されません。
pacoの導入
pacoはmake installしたソフトを管理するものです。yumなどのパッケージ管理ソフトで管理されている以外のものについてもきちっと管理したい場合は導入するととても幸せになれそうです。
pacoのインストール自体はconfigure make make installで出来ます。またpaco自身をpacoで管理するためにmake installの後make logmeを実行します。これ以降make installするときはpaco -D make insatllというふうにすることでそのソフトをpacoの管理下に置いてくれます。
注意
pacoはデフォルトで/usr/local/bin以下にインストールされるのですがsudoで実行するとPATHが引き継がれずpacoが見つからないためmake logmeに失敗してしまいました。./configure prefix=/binなどインストール場所を設定してsudoでも実行出来るようにするか、sudo時の環境変数の引き継ぎをするなどして回避しましょう。
なおsudo時の環境変数の引き継ぎ方法は色々あるようです。
bashrcで設定
alias sudo="sudo env PATH=$PATH"
visudoで設定
Defaults:{run_user} !env_reset
or
Defaults env_keep+="PATH"
sudo -s で実行
次回は
Nginx+plackでなんか適当に外から見れる環境を作りたいかな。