アクセスコントロールをかけて、保護をしてやるとです。もっとも…うちでどんなんかけてるかは公開は出来ませんけどね。こういう機能を利用してますよ、ということで。
# emerge iptables # etc-update add iptables default
iptablesのコマンドをインストールして、起動時にiptablesが有効になるようにしてやるとですね。
iptablesにはいろんな機能がありますが、私は、ステートフルパケットフィルタってのを使用しています。SYNFloodとかを防止できるわけね。
例で、$trusthostっていうホストからのsshは透過して、それ以外のパケットアクセスがあったら、ログに出力してパケット落とした事を分かるようにします。
#新規接続におけるTCP SYN以外のパケットは落とす iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP #新規接続、接続済みのSSHで、$trusthostからのパケットは通す iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -s $trusthost --dport 22 -j ACCEPT #新規接続、接続済みのSSHで、$trusthostへのパケットは通す iptables -A OUTPUT -p tcp -s $myhost --sport 22 -d $trusthost -j ACCEPT #LOGGINGグループを新規定義 iptables -N LOGGING #limitに達した回数パケットがヒットした場合は、DROP:ってプレフィックスつけてログ出力の上でパケットをドロップ iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit iptables -A LOGGING -j DROP #INPUTルールに引っかからなかったらLOGGINGへ iptables -A INPUT -j LOGGING #OUTPUTルールに引っかからなかったらLOGGINGへ iptables -A OUTPUT -j LOGGING
どうでしょう。分かりました?他にもいろいろ組み合わせられますよ。DoS攻撃を封じるとか、QoSを設定してみるとか、いろいろできます。なお、iptablesルールは線形検索です。上から探して行って、ヒットしたルールがあると、そこで基本的にルール探索は終わり。パケットを通過するか落とすか決めて処理が終わります。なので、設定したつもりのルールが、動いていないような錯覚に陥る場合は、この辺を勘違いしている場合がおおい。また、よくヒットするルールを前に置いておかないと、通信速度が極端に低下しますから、ルールの設定には気をつけてね!!
# /etc/init.d/iptables stop
で、設定は通常保存されて、iptablesは停止します。ただし、iptables動かしたまま、設定だけ一時保存したい場合もありますよね。そういう場合は、
# /etc/init.d/iptables save
と打つと、保存されますよ。ご利用あれ
(This host) = https://femt.ddo.jp