Linuxセキュリティ設定のチュートリアル
Linuxは非常にセキュリティに強いOSですが、完全な安全性を確保するためには適切な設定が必要です。以下に基本的なセキュリティ設定の手順とスクリプト例を示します。
1. パスワード設定
パスワードの強度と有効期限を設定しましょう。以下のコマンドを使用します。
sudo passwd -x 90 root
sudo passwd -d username
-xオプションはパスワードの有効期限(日数)を設定します。-dオプションはパスワードを消去し、次回ログイン時に強制的にパスワードを変更させます。
2. SSHセキュリティ
SSHを使用して遠隔にアクセスする場合は、セキュリティのための設定を行いましょう。
sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
PermitRootLogin noはrootユーザーによるSSHログインを禁止します。PasswordAuthentication noはパスワード認証を使用してログインを禁止し、代わりに公開鍵認証を推奨します。
3. ファイアウォール設定
iptablesを使ってファイアウォールを設定しましょう。
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P INPUT DROP
-p tcp --dport 22はSSHポートを許可します。-p icmp --icmp-type echo-requestはICMP応答を制限して過度のリクエストを防止します。
4. ファイルアクセス制御
ACL(Access Control List)を使用してファイルやディレクトリへのアクセス制御を行いましょう。
sudo setfacl -m u:username:rwx /path/to/directory
sudo setfacl -x u:username /path/to/file
-mオプションはACLを設定します。-xオプションはACLの権限を除去します。
5. ユーザー管理
ユーザーアカウントを作成し、そのユーザーに特定の権限を与えてましょう。
sudo useradd username
sudo passwd username
sudo usermod -aG sudo username
-uオプションは新しいユーザーを追加します。-pオプションはパスワードを設定します。-aGオプションはユーザーにグループを追加します。
6. ログ監視
ログファイルを定期的にチェックして異常がないことを確認しましょう。以下はcronで每天ログファイルを監視するスクリプト例です。
#!/bin/bash
LOG_DIR="/var/log"
LOG_FILES=("auth.log" "syslog" "dmesg")
for LOG_FILE in ${LOG_FILES[@]}; do
grep -E "error|fail" ${LOG_DIR}/${LOG_FILE} >> /tmp/error_log.txt
done
mail -s "Error Log Alert" [email protected] < /tmp/error_log.txt
rm /tmp/error_log.txt
grepはログファイルから特定の文字列を検索します。mailコマンドを使用してエラーログをメールで送信します。
以上がLinuxセキュリティ設定の基本的な手順とスクリプト例です。これらの設定を適用することで、Linuxシステムの安全性を大幅に向上させることができます。