www.smiyasaka.com は、 2019 年2月から SSL 化し 通信を暗号化した方式で発信をしています。

CentOS 6 SELinux のアクセス制限を
有効にした時の追加設定

-------------------------------------------------------------------------

SELinux を enforcing(アクセス制限を有効)にすると SELinux のポリシーとし規定され た制御条件に従ってアクセス制御が実施され、ポリシーに違反したアクションは拒否され エラーになりログが出力されます。
SELinux の制御を有効にすると外部からのアクセスに対するファイル改竄等に対する防御 が向上するので私のサーバ機も SELinux 有効で稼働させています。


-------------------------------------------------------------------------

1. ここで念のため SELinux の状態確認をして置きます。

  コマンドは、
getenforce です。

  Permissive <---- アクセス制御が無効(エラーログは出力)になっています。

  に成っているはずです。

2. SELinux の各種設定するコマンド(semanage)が標準ではインストールされていません。

semanage コマンドは、下記パッケージ policycoreutils-python に含まれているので yum コマンドでインストールします。


  
yum -y install policycoreutils-python

  下記の様に表示し、完了します。

------------------------------------------------------------------------
  インストール:
  policycoreutils-python.x86_64 0:2.0.83-30.1.el6_8

  依存性関連をインストールしました:
   audit-libs-python.x86_64 0:2.4.5-6.el6
   libsemanage-python.x86_64 0:2.0.43-5.1.el6
   setools-libs.x86_64 0:3.3.7-4.el6
   setools-libs-python.x86_64 0:3.3.7-4.el6

(時間がかかる しばらく待つ)

  完了しました!
----------------------------------------------------------------------

2. SELinux が有効としている ssh の Portを下記コマンドで確認します。

  
semanage port -l| grep ssh

  ssh_port_t      tcp  22

4. SELinux に Port 2222 を semanage コマンドで追加します。

  
semanage port -a -t ssh_port_t -p tcp 2222

  再度、SELinux が有効としている ssh の Portを確認します。

  
semanage port -l| grep ssh

    
(時間がかかる しばらく待つ)

  ssh_port_t      tcp  2222, 22

  Port 2222 が追加されています。

 ※ 参考情報 ※ 使わなくなった22番ポートを削除しようとしても、システムに標準で
定義されているため、削除はできないようです。

5. FFFTP、apache、ftp が SELinux 有効下で使用できるかの確認

 5-1 FFFTP の Port 確認

   下記コマンドを入力します。


    
semanage port -l| grep ftp

  ftp_data_port_t     tcp   20
  ftp_port_t       tcp   21, 989, 990
  ftp_port_t       udp   989, 990
  tftp_port_t      udp   69


    上記の通り Port 21 が有効になっています。

 5-2 apache Port 確認
    下記コマンドを入力します。

  semanage port -l| grep http

  http_cache_port_t      tcp  8080, 8118, 8123, 10001-10010
  http_cache_port_t      udp  3130
  http_port_t            tcp  80, 81, 443, 488, 8008,……
  pegasus_http_port_t    tcp  5988
  pegasus_https_port_t   tcp  5989

    上記の通り port 80 が有効になっています。

 5-3 apache ドキュメントルートの確認

apache HTTPサーバーでのドキュメントルートはデフォルトで /var/www/html/ に設定されています。
ドキュメントルートが、/var/www/html/ の場合は、このままでOKです。


    
ls -dZ /var/www/html/

 drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

 5-4 このままでは、外部(ftp, FFFTP)から /home と /var をアクセスできないので
アクセスできるように変更します。
   方法は、二つあります。


  
方法 1 SELinux を一時的に現在の状態を Enforcing から Permissive に変更する。

    コマンド getenforce で現在の状態を確認します。

    Enforcing

    この状態をコマンド
setenforce 0 で Permissive に変更します。

    コマンド
getenforce で状態を確認します。

    Permissive に成っているはずです。これで、アクセスが可能になります。

    元の状態に戻すには、コマンド
setenforce 1 で行います。

  
方法 2 SELinux の設定を変えてアクセス可能にする。

    ftp 関連の初期状態の確認 : コマンド
getsebool -a | grep ftp で行います。


 allow_ftpd_anon_write --> off
 allow_ftpd_full_access --> off <--- 変更箇所は、ここです
 allow_ftpd_use_cifs --> off
 allow_ftpd_use_nfs --> off
 ftp_home_dir --> off
 ftpd_connect_db --> off
 ftpd_use_fusefs --> off
 ftpd_use_passive_mode --> off
 httpd_enable_ftp_server --> off
 tftp_anon_write --> off
 tftp_use_cifs --> off
 tftp_use_nfs --> off


設定値の変更は、下記コマンドで行います。

setsebool -P allow_ftpd_full_access 1 <---- 1 or on

変更には、チョット時間がかかります。

変更されたか確認します。


getsebool allow_ftpd_full_access

allow_ftpd_full_access --> on <---- デフォルト値 off が on になりました。

これで、FFFTP でフルアクセスできるようになり、ftp でのデータ転送も受付さ
れるようになりました。
但し、サーバ運用時は、フルアクセス禁止にしておく事を進めます。


フルアクセスを禁止するコマンドは、下記の通りです。

setsebool -P allow_ftpd_full_access 0 <---- ftpd_full_access の欄が
off になります。

私は、方法 1 でサーバにアクセスする時に一時的に変更して運用しています。

6. ここで SELinux 有効( Enforcing )で Tera Term, FFFTP にログインできる事を確
認します。SELinux を制御有効にして再起動します。
( FFFTPの確認の前に FTPサーバをインストールしておいてください。)
なお、allow_ftpd_full_access --> off は、 on にしておきます。


setsebool -P allow_ftpd_full_access 1 <---- off ⇒ on
vi /etc/sysconfig/selinux ----> permissive ⇒ enforcing に変更する。
reboot

再起動したら Tera Term が Port 2222 でログインできるかと FFFTP でサーバ機の ファイルが見られるかを確認します。


7. SELinux を有効にした時の apache2 のポリシー設定

apache2 のポリシー設定については、「CentOS-7-x86_64-DVD.iso インストールとサ
ーバ構築」の「10-2. SELinux を有効にした時の apache2 のポリシー設定」で詳細
を解説しています。