CodeGym /コース /Docker SELF /ファイアウォール、SELinux、基本的なACLルールの設定

ファイアウォール、SELinux、基本的なACLルールの設定

Docker SELF
レベル 5 , レッスン 5
使用可能

1. ステップ1:ファイアウォールのインストールと設定

やあ!今日は実践的な練習をして、Linuxセキュリティについて学んだことを活かしてみようと思うよ。ファイアウォールを設定して、SELinuxの動作を確認し、アクセス制御リスト(ACL)を使った権限管理の使いやすさを検証してみる。このレクチャーは「トレーニンググラウンド」だね。さあ、管理者の「セキュリティ肩章」を装着して始めよう!

みんなもう知ってると思うけど、良いファイアウォールは出入り口に立つ警備員みたいなもんだよね。誰を通して誰をストップするかを決めるのさ。まずは、SSHとHTTPサービスだけにアクセスを制限することでシステムの保護を設定しよう。

UFWの操作

  1. UFWの状態を確認。 インストールされてない?じゃあ、インストールしよう!

    # UFWのチェック
    sudo ufw status
  2. もしコマンドが「ファイアウォールは無効です」って言ってたら、それを修正しなくちゃ。

  3. UFWをインストールして起動する。

    # 必要に応じてインストール
    sudo apt install ufw
    
    # ファイアウォールを有効化
    sudo ufw enable
  4. アクセスを設定する。 SSH(ポート22)とHTTP(ポート80)のみ許可して、それ以外はブロックしたいよね。ロジックは簡単:サーバーは誰でも歓迎の3つ星ホテルじゃないんだ。

    # SSHを許可
    sudo ufw allow 22
    
    # HTTPを許可
    sudo ufw allow 80
    
    # 設定を確認
    sudo ufw status
  5. 確認: 設定後、以下のような出力が見えるはずだよ:

    Status: active
    To                         Action      From
    --                         ------      ----
    22                         ALLOW       Anywhere
    80                         ALLOW       Anywhere
    

もしiptablesを使っているなら、設定はちょっと複雑だけど、ロジックは同じ:SSHとHTTPのルールを作成して、他は全部ブロックするのさ。


2. 手順 2: SELinuxの操作

SELinuxはサーバーのファイルやユーザーの動作を監視する厳しい先生みたいなものだね。そのモットーは「信用するけど確認する」。SELinuxを有効にして、その動作を確認しよう。

SELinuxを有効にする

  1. 現在の状態を確認:

    # SELinuxが有効かを確認
    sestatus

    状態がdisabledと表示される場合、設定ファイルを使って有効にする必要がある。

  2. 設定を通じてSELinuxを有効にする:

    SELinux設定ファイルのパスは/etc/selinux/configだ。テキストエディタ(例えばnano)で開いてみよう。

    sudo nano /etc/selinux/config
    

    この行を探してみて:

    SELINUX=disabled
    

    これを次の内容に置き換えよう:

    SELINUX=enforcing
    

    変更を保存して、システムを再起動することで変更を適用しよう:

    sudo reboot
    
  3. 再起動後の確認:

    サーバーが起動したら、もう一度SELinuxの状態を確認:

    getenforce
    

    システムがEnforcingと応答したら、おめでとう!セキュリティはしっかり守られているよ!


SELinuxとウェブサーバーの例

たとえば、/var/www/htmlディレクトリにファイルを保存しているウェブサーバーがあるとしよう。SELinuxがどのようにこれを保護しているか確認してみよう。

  1. ファイルのコンテキストを確認: SELinuxはアクセス管理のためにコンテキストを使用するよ。/var/www/htmlディレクトリのコンテキストを確認してみよう。

    ls -Z /var/www/html
    

    出力例:

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

    何かが間違っている場合、一時的にコンテキストを変更できる:

    sudo chcon -t httpd_sys_content_t /var/www/html
    
  2. ウェブサーバーの動作確認: コンテキストを設定した後、サーバーが動作しているか、アクセスエラーがないか確認しよう。


3. ステップ3: ACLを使用したアクセス権管理

ACL(Access Control List)は「追加の鍵」のようなもので、アクセスを管理します。標準の権限rwxが制限する場合、ACLは特定のユーザーに対して細かなアクセス設定が可能です。

テスト用ディレクトリを作成

project_dirというディレクトリを作成し、user1user2の2人のユーザー向けにアクセスを設定しましょう。

  1. ディレクトリを作成:

    sudo mkdir /project_dir
    
  2. アクセス権を設定:

    user1には完全なアクセス権を許可し、user2には読み取り専用のアクセス権を与えます:

    # user1に完全アクセスを許可
    sudo setfacl -m u:user1:rwx /project_dir
    
    # user2には読み取り専用を設定
    sudo setfacl -m u:user2:r-- /project_dir
  3. ACLを確認:

    # 現在の権限を確認
    getfacl /project_dir

    出力に設定内容が表示されるはずです:

    # file: /project_dir
    user::rwx
    user:user1:rwx
    user:user2:r--
  4. デフォルト権限の設定:

    ディレクトリ内の新しいファイルが自動的にACL権限を継承するように、デフォルトを設定します:

    sudo setfacl -d -m u:user1:rwx /project_dir
    sudo setfacl -d -m u:user2:r-- /project_dir
    

4. 最終構成の確認

  1. ファイアウォール:

    • SSHとHTTPポートが利用可能であり、他はブロックされていることを確認する。SSH接続でサーバーに接続し、ブラウザでウェブサイトを開いてみて。
  2. SELinux:

    • SELinuxが正しくアクセス制限をしていることを確認するためにファイルのコンテキストをチェックしてみて。
  3. ACL:

    • user1user2でログインして、/project_dirディレクトリ内のファイルを読み書きできるか試してみて。

実践課題

  1. SSHとHTTPアクセスのみ許可するようにファイアウォールを設定して。
  2. enforcingモードでSELinuxを有効にして、ウェブサーバーが正しく動作することを確認して。
  3. /project_dirディレクトリのACLを設定して、user1には完全なアクセス権を与え、user2には読み取り権限だけを与えて。
  4. whoコマンドを使用してシステム上のアクティブなユーザーを確認して。

これらの練習問題は、知識を深め、実際のシナリオで適用する方法を理解するのに役立つよ。そして覚えておいて:Linuxのセキュリティは設定だけじゃなく、細部への注意を払い続けることが重要だよ。頑張ってね!

1
アンケート/クイズ
Linuxでのユーザー管理、レベル 5、レッスン 5
使用不可
Linuxでのユーザー管理
Linuxでのユーザー管理
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION