|
SELinux を enforcing(アクセス制限を有効)にすると SELinux のポリシーとし規定された
制御条件に従ってアクセス制御が実施され、ポリシーに違反したアクションは拒否されエ
ラーになりログが出力されます。
SELinux の制御を有効にすると外部からのアクセスに対するファイル改竄等に対する防御
が向上するので私のサーバ機も SELinux 有効で稼働させています。
※※ 注意 ※※
システム構築中に直接 SELinux 設定ファイルを変更をしないようにしてください。
システムが再起動しなくなります。
SELinux のアクセス制限の解除は、コマンド setenforce 0 で簡単に行えます。
1. ここで念のため SELinux の状態確認をして置きます。
コマンドは、 getenforce です。
Enforcing <---- アクセス制御が有効になっています。
に成っているはずです。
私の場合、 Enforcing ままで設定作業をしています。
2. 不足パッケージのインストール
「ベース」と「その他の開発」・「ネットワークツール」を dnf groupinstall でインストールします。
※※ 注意 ※※
dnf -y update を先にすると Base のインストールがエラーになりますので注意してください。
つまり、カーネルのバージョンを先に最新バージョンにしないことです。)
dnf -y groupinstall "Base" "Additional Development"
groupinstall は、時間がかかるので、追加処理として update 後、シャットダウンするコマンドを追加して勝手に終了するのを待ちます。
dnf -y groupinstall ………… && dnf -y update && poweroff
3. 再起動後 ssh の Port を 22 → 2222 に変更します。
● ここでめんどくさい方の為、一工夫 ●
この時点で、SELinux : Enforcing ・ Tera Term の ssh Port : 22
のままでログインして下記の設定をコピペでするとコマンドの入力がミスがなしで簡単に設定できます。
私は、いつもこの方法で設定しています。
( 設定終了後、Port 2222 でログインできることは、確認してください。)
vi /etc/ssh/sshd_config
#Port 22 の # を削除して 22を追加して Port 2222 する。
sed での編集は、下記の様になります。
sed -i 's/#Port 22/ Port 2222/g' /etc/ssh/sshd_config
4. firewall に Port 2222 を追加します。
firewall-cmd --add-port=2222/tcp --permanent
success と表示したら OKです。次に上記コマンドを有効にします。
入力したコマンドを有効にするときには、必ず下記コマンドを入力し実行させる必要があります。
firewall-cmd --reload
success と表示したら OKです。
5. コマンド poweroff を入力して再起動します。
6. 再起動後リモート制御する PC の Tera Term から Port 2222 でログインします。
まだ、SELinux は、アクセス制御無効なので問題なくログインできるはずです。
Oracle Linux 8.X での追加項目
〇 SELinux の各種設定するコマンド( semanage )をインストールします。
semanage コマンドは、下記パッケージ policycoreutils-python-utils に含まれているので
dnf コマンドでインストールします。
CentOS8-Stream 20210416 以降のバージョンからは、インストール不要になっています。
dnf -y install policycoreutils-python-utils
下記の様に表示し、完了します。
------------------------------------------------------------------
checkpolicy-2.9-1.el8.x86_64
policycoreutils-python-utils-2.9-19.0.2.el8.noarch
python3-audit-3.0.7-2.el8.2.x86_64
python3-libsemanage-2.9-8.el8.x86_64
python3-policycoreutils-2.9-19.0.2.el8.noarch
python3-setools-4.3.0-3.el8.x86_64
完了しました!
------------------------------------------------------------------
7. SELinux が有効としている ssh の Portを下記コマンドで確認します。
semanage port -l| grep ssh
ssh_port_t tcp 22
8. 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番ポートを削除しようとしても、システムに標準で定義されているため、削除はできないようです。
9. FFFTP、apache、ftp が SELinux 有効下で使用できるかの確認
9-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 が有効になっています。
9-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, ……
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
上記の通り port 80 が有効になっています。
9-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/
9-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 で行います。
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off <---- 変更箇所は、ここです
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
設定値の変更は、下記コマンドで行います。
setsebool -P ftpd_full_access 1 <---- 1 or on
変更には、チョット時間がかかります。
変更されたか確認します。
getsebool ftpd_full_access
ftpd_full_access --> on <---- デフォルト値 off が on になりました。
これで、FFFTP でフルアクセスできるようになり、ftp でのデータ転送も受付さ
れるようになりました。
但し、サーバ運用時は、フルアクセス禁止にしておく事を進めます。
フルアクセスを禁止するコマンドは、下記の通りです。
setsebool -P ftpd_full_access 0 <---- ftpd_full_access の欄が off になります。
私は、方法 1 でサーバにアクセスする時に一時的に変更して運用しています。
10. ここで SELinux 有効( Enforcing )で Tera Term, FFFTP にログインできる事を確認します
SELinux を制御有効にして再起動します。
( FFFTP の確認の前に FTPサーバ[ proftpd or vsftpd ]をインストールしておいてください。)
なお、ftpd_full_access --> off は、on にしておきます。
setsebool -P ftpd_full_access 1 -- --> off ⇒ on
setenforce 1 -- --> permissive ⇒ enforcing に変更する。
reboot
再起動したら、SELinux 有効下で Tera Term が Port 2222 でログインできるかと
FFFTP でサーバ機のファイルが見られるかを確認します。
以上の設定で、私が構築しているサーバ機は、SELinux アクセス制御有効で動作しています。
11. 以上で SELinux の設定は、終わりです [ 3. 事前にダウンロードするファイル一覧と探し方 ] からの手順で設定してください
|