質問: `lastb`コマンドでログインに失敗した履歴を見てみると、rootだけで四万回くらいアクセスがありました。 サーバーへの負荷が心配なので対策をしたいと思っています。 アクセスの多かった怪しいIPはSSH接続出来ないように設定しようと思い、 参考サイト様:CentOS6、7でSSHのIP制限をする方法 をもとに`hosts.deny`に該当のIPを記述しました。 これだけで指定したIPからの攻撃によるサーバーへの負荷は下がるものなのでしょうか? 別の方は、参考サイト様:特定のIPからの通信を破棄 のように、iptablesにIPを記述して通信を破棄するという対策をされていました。 どちらもしておくべきなのか、片方でいいのか、影響範囲がわからないためご教授頂けますと幸いです。 どうぞよろしくお願い致します。
回答: `hosts.deny`はTCP Wrapperと言う**古い**仕組みでiptablesが無かった時代にTCP/IPをIPアドレスおよびサービス単位で制御する仕組みです。次の理由により**TCP Wrapperを使わずにiptablesのみで制御すること**をお勧めします。 * TCP Wrapperとiptablesの両方を設定するとアクセス制限の設定箇所が分散されるため、接続が許可/拒否のどちらかなのか判断がすぐにできなくなる。 * 設定ファイルが`hosts.deny`と`hosts.allow`の二つに分かれるため、一覧で確認しづらい。 * xinetd(古いLinuxではinetd)経由か、TCP Wrapperに対応したサービスソフトウェアしか対応できない。対応ソフトウェアであってもコンパイル時に無効にした場合や設定で無効にした場合は単に無視される。設定が有効かどうかは実際にアクセスしないとわからない。**sshdもコンパイル時に無効にした場合等は、設定しても制限がかからない!** * DROPではなくREJECTのため、サービスが存在することがわかる。 * allowを「アロー」、denyを「デニー」とか読む奴がいて、口頭だと何のことなのか混乱する。 `hosts.deny`は設定することよりもiptablesを設定してください。役割は同じであり、正しく設定してあれば、二重に設定しても安全性が増すわけではありません。あえて二重に設定する利点があるとすれば、設定や操作ミスなどでiptablesを無効にしてしまったときも、TCP Wrapper側で防ぐことができる程度です。 sshdに関するその他のセキュリティ設定については下の記事が参考になります。一読の上、可能な限り設定することをお勧めします。 そこそこセキュアなlinuxサーバーを作る - Qiita#sshd関連