/tmpを実行不可にする

/tmpを実行不可としてマウントすることによりセキュリティを強化します。

セキュリティの厳しい多くの環境では、/tmpから実行可能ファイルが実行されることを防ぐために、/tmpディレクトリーをnoexecフラグをオンにしてマウントする必要があります。ただし、/tmpが実行不可能な場合、テンポラリー・ファイルを保存するファイル・システムの場所がJNAにないため、JNAを起動できず、Cassandraデータベースを起動できません。

/tmpディレクトリーが存在しない場合、Cassandra system.logにエラーが発生する場合があります。エラーを表示するには、以下のように入力します。
tail -3 /var/log/cassandra/system.log
エラーは以下のようになります。
ERROR main 2015-12-18 09:57:00,879 CassandraDaemon.java:213 - JNA failing to initialize properly.Use -Dcassandra.boot_without_jna=true to bootstrap even so.
INFO Thread-2 2015-12-18 09:57:00,880 DseDaemon.java:418 - DSE shutting down...
INFO Thread-2 2015-12-18 09:57:00,881 PluginManager.java:103 - All plugins are stopped.

手順

/tmpを実行不可能かつアクセス可能にするには、以下のようにします。

  1. DataStax Enterpriseが実行中であることを確認します。
    service dse status
    dseは実行されています
  2. /tmpディレクトリーのマウント方法を確認します。
    mount | grep /tmp
    結果:
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=3668992k)
  3. DataStax Enterpriseを停止します。
    service dse stop
  4. DataStax Enterpriseが実行中でないことを確認します。
    service dse status
    結果:
    dseは実行されていません
  5. /tmpを実行不可として再マウントします。
    mount -o remount,noexec /tmp
  6. /tmpディレクトリーが実行不可としてマウントされていることを確認します。
    mount | grep /tmp
    結果:
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3668992k)
  7. cassandra-env.shファイルで、アクセス可能な/tmpディレクトリーに以下の行を追加します。
    JVM_OPTS="$JVM_OPTS -Djna.tmpdir=/tmp/directory/you/have/exec/access/to
  8. DataStax Enterpriseを再起動します。