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で確認しておこう。

WordPress BackWPup エラー

DebianのアップグレードでMySQLがMariaDBに更新されてから、WordPressのBackWPupプラグインでバックアップするたびにエラーが表示されるようになった。バックアップ自体は動いているようなのだが、気持ち悪い。

Cannot load from mysql.proc. The table is probably corrupted.

調べてみるとMySQLのバージョンが上がった時によく出るエラーらしい。内部のデータベースをMySQLのバージョンアップに合わせてアップグレードしないと出るのだそうだ。おそらくMariaDBの対応するMySQLバージョンがアップグレード前のMySQLのバージョンよりも進んでいるのだろう。というわけで、MySQLのお作法を調べると、コマンドラインからアップグレードが指示できるらしい。

mysql_upgrade -u root -p –force

MySQLのデータベースのrootパスワードを要求されるので入力するとデータベースのアップグレード作業が実行される。最後に作業ログを吐き出すのだが、書き出す権限がないと怒られる。大事なサーバーならsudoして作業したほうがいいかもしれない。まあ、自分サーバーなので気にしないことにする。

作業後はSQLサーバーを再起動させろということなので、えいやっとサーバーごと再起動。BackWPupもエラーを出さずにジョブ完了するようになった。