2.2. セキュリティ

LANがインターネットに接続している場合、外部からの不法な侵入に備えておく必要があります。また、LAN内においても、システム管理者以外のユーザがroot権限を取得できることは好ましくありません。ここではセキュリティについてのヒントを示します。セキュリティ一般については/usr/doc/JF/Security-HOWTO.txt.gz を参照してください。

shadow パスワード

特に、どんな形態であれインターネットに接続する場合、自分の環境を守るだけでなく外のネットワークへ迷惑をかけないためにも、セキュリティーには十分に気をつけておく必要があります。 Vine Linux では、インストール時にMD5パスワードとシャドーパスワードの使用を選択できるようになっています。システムのパスワードシステムを shadow パスワードにするには、root ユーザで次のようにします。詳しくは man 5 shadowman pwconv, /usr/doc/JF/Shadow-Password-HOWTO.txt.gz などを参照してください。

# /usr/sbin/pwconv
          

pwconvを実行すると、/etc/passwdのパスワードフィールドが x になり、暗号化されたパスワードが保護されます。また、暗号化されたパスワードは/etc/shadowに書き込まれますが、一般ユーザからは読めないようになっているので比較的安全です。

# cd /etc
# ls -l *passwd* *shadow*
-rw-r--r--   1 root     root          777 Jan 30 13:05 /etc/passwd
# /usr/sbin/pwconv
# ls -l *passwd* *shadow*
-rw-r--r--   1 root     root          738 Jan 30 13:05 /etc/passwd
-r--------   1 root     root          587 Jan 30 13:05 /etc/shadow
          

shadow パスワードを使うと認証が必要な一部のアプリケーションがうまく動作しない場合があるようです。しかし、標準でインストールされるアプリケーションの多く(telnet, ftpなど)は shadow パスワードに対応しています。shadow化をやめるには /usr/sbin/pwunconvを実行します。

PAMを使ったセキュリティ

Vine LinuxではPAM(Pluggable Authentication Modules)を使ってsuなどの特定のコマンドに対してセキュリティを強化することができます。ここでは、良く使われる方法をいくつか紹介します。PAMの詳?戮蓮?/usr/doc/pam-0.72/html/pam.html を参照して下さい。

○ suの制限

システム管理を行うには、suコマンドを用います。一般ユーザに suコマンドを利用させないようにするには、まず、システム管理者を /etc/groupの wheelに追加します。次に、/etc/pam.d/su に以下を追加します。

auth       required     /lib/security/pam_wheel.so debug group=wheel
                

こうすると、/etc/groupの wheelに登録されたユーザしか suコマンドを実行することができなくなります。

リモートからアクセスしているユーザにsuコマンドを利用させないようにするには、以下を追加します。

auth       required     /lib/security/pam_securetty.so
                
shutdownの制限

サーバなどは shutdownコマンドを一般ユーザに実行されては困ります。そこで、shutdownコマンドを行えるユーザを制限することができます。/etc/shutdown.allow というファイルを作ると、そこに記述されたユーザがログインしているときだけ、shutdownコマンドを実行することができます。

	$ cat /etc/shutdown.allow 
	user1
	user2
	user3
                
ファイアウォール(防火壁)とフィルタリング

LANを外部からの侵入から守るためにファイアウォール(防火壁)を構築することができます。設定方法は /usr/doc/JF/Firewall-HOWTO.txt.gz 書かれています。ファイアウォールを構築すると、LANの内側と外側では直接アクセスすることはできなくなります、しかし、IPフィルタリングを行うことで、特定の機能だけを残すことができます。設定方法は/usr/doc/JF/ipchains-mini-HOWTO.txt.gz を参照してください。

tcp_wrapperによるアクセス制限

簡単なアクセス制限の方法として、tcp_wrapper(tcpd)があります。/etc/inetd.conf をみると様々なサービスが、/usr/sbin/tcpdによって実行されていることがわかります。tcpdデーモンは接続要求があるとそのホストをチェックし、アクセスを許可するかしないかを判断します。このアクセス許可と拒否はそれぞれ/etc/hosts.allow/etc/hosts.deny に設定されます。

例えば、原則として外部からの接続は拒否し、自分のドメイン(192.168.0.0)からのアクセスのみ許可するには、/etc/hosts.denyと/etc/hosts.allowに以下のように記述します。

$ cat /etc/hosts.deny
ALL: ALL

$ cat /etc/hosts.allow
ALL: 192.168.0.0/255.255.255.0
          

もし、一部のホスト(例えばvinelinux.orgドメインのホスト)からはアクセスを許可したい場合は、そのホストを/etc/hosts.allowに記述します。

ALL: LOCAL
sshd: .vinelinux.org
          

詳細はman hosts.allow, jman hosts_optionsを参照して下さい。