1. ステップ1:ファイアウォールのインストールと設定
やあ!今日は実践的な練習をして、Linuxセキュリティについて学んだことを活かしてみようと思うよ。ファイアウォールを設定して、SELinuxの動作を確認し、アクセス制御リスト(ACL)を使った権限管理の使いやすさを検証してみる。このレクチャーは「トレーニンググラウンド」だね。さあ、管理者の「セキュリティ肩章」を装着して始めよう!
みんなもう知ってると思うけど、良いファイアウォールは出入り口に立つ警備員みたいなもんだよね。誰を通して誰をストップするかを決めるのさ。まずは、SSHとHTTPサービスだけにアクセスを制限することでシステムの保護を設定しよう。
UFWの操作
UFWの状態を確認。 インストールされてない?じゃあ、インストールしよう!
# UFWのチェック sudo ufw statusUFWをインストールして起動する。
# 必要に応じてインストール sudo apt install ufw # ファイアウォールを有効化 sudo ufw enableアクセスを設定する。 SSH(ポート22)とHTTP(ポート80)のみ許可して、それ以外はブロックしたいよね。ロジックは簡単:サーバーは誰でも歓迎の3つ星ホテルじゃないんだ。
# SSHを許可 sudo ufw allow 22 # HTTPを許可 sudo ufw allow 80 # 設定を確認 sudo ufw status確認: 設定後、以下のような出力が見えるはずだよ:
Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere
もしコマンドが「ファイアウォールは無効です」って言ってたら、それを修正しなくちゃ。
もしiptablesを使っているなら、設定はちょっと複雑だけど、ロジックは同じ:SSHとHTTPのルールを作成して、他は全部ブロックするのさ。
2. 手順 2: SELinuxの操作
SELinuxはサーバーのファイルやユーザーの動作を監視する厳しい先生みたいなものだね。そのモットーは「信用するけど確認する」。SELinuxを有効にして、その動作を確認しよう。
SELinuxを有効にする
現在の状態を確認:
# SELinuxが有効かを確認 sestatus状態が
disabledと表示される場合、設定ファイルを使って有効にする必要がある。設定を通じてSELinuxを有効にする:
SELinux設定ファイルのパスは
/etc/selinux/configだ。テキストエディタ(例えばnano)で開いてみよう。sudo nano /etc/selinux/configこの行を探してみて:
SELINUX=disabledこれを次の内容に置き換えよう:
SELINUX=enforcing変更を保存して、システムを再起動することで変更を適用しよう:
sudo reboot再起動後の確認:
サーバーが起動したら、もう一度SELinuxの状態を確認:
getenforceシステムがEnforcingと応答したら、おめでとう!セキュリティはしっかり守られているよ!
SELinuxとウェブサーバーの例
たとえば、/var/www/htmlディレクトリにファイルを保存しているウェブサーバーがあるとしよう。SELinuxがどのようにこれを保護しているか確認してみよう。
ファイルのコンテキストを確認: 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ウェブサーバーの動作確認: コンテキストを設定した後、サーバーが動作しているか、アクセスエラーがないか確認しよう。
3. ステップ3: ACLを使用したアクセス権管理
ACL(Access Control List)は「追加の鍵」のようなもので、アクセスを管理します。標準の権限rwxが制限する場合、ACLは特定のユーザーに対して細かなアクセス設定が可能です。
テスト用ディレクトリを作成
project_dirというディレクトリを作成し、user1とuser2の2人のユーザー向けにアクセスを設定しましょう。
ディレクトリを作成:
sudo mkdir /project_dirアクセス権を設定:
user1には完全なアクセス権を許可し、user2には読み取り専用のアクセス権を与えます:# user1に完全アクセスを許可 sudo setfacl -m u:user1:rwx /project_dir # user2には読み取り専用を設定 sudo setfacl -m u:user2:r-- /project_dirACLを確認:
# 現在の権限を確認 getfacl /project_dir出力に設定内容が表示されるはずです:
# file: /project_dir user::rwx user:user1:rwx user:user2:r--デフォルト権限の設定:
ディレクトリ内の新しいファイルが自動的にACL権限を継承するように、デフォルトを設定します:
sudo setfacl -d -m u:user1:rwx /project_dir sudo setfacl -d -m u:user2:r-- /project_dir
4. 最終構成の確認
ファイアウォール:
- SSHとHTTPポートが利用可能であり、他はブロックされていることを確認する。SSH接続でサーバーに接続し、ブラウザでウェブサイトを開いてみて。
SELinux:
- SELinuxが正しくアクセス制限をしていることを確認するためにファイルのコンテキストをチェックしてみて。
ACL:
user1とuser2でログインして、/project_dirディレクトリ内のファイルを読み書きできるか試してみて。
実践課題
- SSHとHTTPアクセスのみ許可するようにファイアウォールを設定して。
enforcingモードでSELinuxを有効にして、ウェブサーバーが正しく動作することを確認して。/project_dirディレクトリのACLを設定して、user1には完全なアクセス権を与え、user2には読み取り権限だけを与えて。whoコマンドを使用してシステム上のアクティブなユーザーを確認して。
これらの練習問題は、知識を深め、実際のシナリオで適用する方法を理解するのに役立つよ。そして覚えておいて:Linuxのセキュリティは設定だけじゃなく、細部への注意を払い続けることが重要だよ。頑張ってね!
GO TO FULL VERSION