Debian Stretch ufwによるiptables設定

Debianのiptables-persistentの実体がnetfilter-persistentというsystemdのserviceになったのでserviceコマンドによる管理に移行したのだが、どうもちゃんと動いていない。ログを見ると、時折、netfilter-persistentの起動時のip6tablesのルール読み込みでエラーで実行できていないことがある。そうなると、サービスがオフにされて、次に再起動したときにはIPv4のルールまで読み込まれないという情けないことになる。いろいろ調べても同じようなトラブルに困ってる人はいるものの、単純なシェルスクリプトであるが故に解決できた人を見つけられなかった。

このままでは危険極まりないので、もともとあんまり使い勝手のいいわけではないiptables-persistentをこの際見限って、最近台頭してきたユーザーフレンドリーなiptablesフロントエンドであるufw(Uncomplicated FireWall)に移行することにした。

さて、まずはiptables-persistentをアンインストール。すると、netfilter-persistentをapt autocleanで除去する様に言われるので、これも実行する。iptablesのフロントエンドがなくなってまっさらになったところで、念のため一度再起動してiptablesに(sshguardを除いて)何もルールが登録されていない状態にしたら、ufwパッケージをインストールする。

apt-get install ufw

さて、設定は簡単(sudoで管理者権限で実行すること)。まずはデフォルトで全接続を禁止にしておく。

ufw default deny

で、必要なサービスについてポートを開けていく。特にsshについては必ず開けておかないとufwを有効にした時にssh接続できなくなるので注意。ufwはプロファイルが存在するアプリケーションについてはアプリ名を指定するだけで必要なポートを全部開けてくれる。このサーバーはOpenSSHとWWWとPostfixを動かしてるので、これらを指定する。

ufw allow OpenSSH

ufw allow WWW

ufw allow Postfix

avahiによるmDNSの名前解決をしているので、以下も指定。

ufw allow Bonjour

プロファイルがあるアプリについては指定するだけでIPv4とIPv6の両方のルールが自動的に登録されるので便利。

transmission-daemonのウェブ設定インターフェースもローカルネットワークからだけアクセスできるようにマニュアルで登録する。こいつはIPv4でしかアクセスできないので、明示的にIPv4でのルールを登録する。

ufw allow proto tcp from 192.168.xxx.0/24 to any port 9091

以上、設定が完了したら、ufwを有効にする。

ufw enable

sshによる接続がぶった切られるかもしれないよという警告が出るが、ちゃんと許可してあるのでそのまま実行する。

再起動しても正しく設定がされていることをiptables/ip6tables –listで確認しておこう。

「Debian Stretch ufwによるiptables設定」への1件のフィードバック

  1. ufwはどうやらログをdmesgにも出すらしく、dmesgでブート時の出力をチェックしようと思ったらufwのログだらけで何も見れなくなってしまっていた。

    sudo dmesg | grep -v UFW

    でUFWからのログを除外して表示すればいいのだが、はっきり言ってうざすぎるのでとりあえずファイヤーウォールが希望通り問題なく動いている様なのでログ出力そのものを抑制する。

    sudo ufw logging off

    これでUFWからのログが出力されなくなる。再起動してもこの状態は継続されるのでdmesgを見たいだけ見て確認。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください