Glide Note

glidenote's blog

/etc/hosts.deny, missing newline or line too long

普段iptablesとTCP Wrapperrでアクセス制限をかけているんですが、hosts.denyの設定見直しをしていて、 /var/log/secureに下記のようなログが吐かれて動作していないサーバがあったのでメモ

1
sshd[20929]: warning: /etc/hosts.deny, line 0: missing newline or line too long

/etc/hosts.denyの設定

問題のhosts.denyは下記のような設定で一見問題が無さそうに見える

1
ALL : ALL

機能しなかった原因

原因は下記の通り、設定行に改行コードが含まれていないことが原因でした

ホストアクセスファイルの最後の行が、改行マーク([Enter]キーを 押して出るマーク)でなければ、そのファイル内の最後の規則は、失敗してエラーが /var/log/messages又は/var/log/secureに ログされます。これは、規則の行が逆スラッシュを使用することなく、複数行に跨ぐ場合にも 同様の問題となります。以下の例では、以上のどちらかの状況による規則違反のログメッセージ の関連する部分を表示しています:

修正後の/etc/hosts.deny

下記のように改行を入れて

1
2
ALL : ALL

としたらちゃんと動作してくれました。調べていたら改行コードがLFでない場合でも発生するようです。

Comments