Linux/Unix環境ソースの漏洩防止、漏洩防止の究極のソリューション


会社が開発したソフトウェア製品、企業情報の核心データは、もちろん従業員が勝手に配布することを望んでいないが、従業員のネットの自由を制限しすぎると反感を買う.本稿では、従業員のネットワークを自由にしながら、会社のコードとデータを保護するための適切な方法を紹介します.
説明:以下の手順で、すべての操作がrootユーザーによって実行されることを特に説明しません.
ステップ1:サーバポートを制限します.
ファイアウォールを設定し、開発機の場合はサービスを開く必要があるポートのみを公開します.sshd(22)およびftp(20,21)ポートのみがオンになります.iptabalesの構成例は次のとおりです.
[root@tp~]#iptables-P INPUT DROP#デフォルトではすべての通信が禁止されています[root@tp~]#iptables-P OUTPUT DROP#デフォルト通信一切禁止
sshdおよびftpサービスを許可します.
[root@vmleman ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT [root@vmleman ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT [root@vmleman ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT [root@vmleman ~]# iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT [root@vmleman ~]# iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT [root@vmleman ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
loopbackの許可(ローカルアクセスでソフトウェアテストを行うことができます)
[root@vmleman ~]# iptables -A INPUT -i lo -p all -j ACCEPT [root@vmleman ~]# iptables -A OUTPUT -o lo -p all -j ACCEPT
ステップ2:システムsftp機能を無効にする:
/etc/ssh/sshd_configでは、次の行を見つけてコメントします.
#Subsystem      sftp    /usr/libexec/openssh/sftp-server

これで、ユーザーはsftpでファイルを転送できません.この構成は再起動してから有効になります.
ステップ3:ftpファイル転送ポリシーを構成する:
いかなるシステムも外部とコミュニケーションする必要があり、完全に独立したシステムは意味がなく、このステップはこの特殊なチャネルを実現し、コンパイルされた実行可能なファイルなどの特殊なファイルの転送を許可します.vsftpd(プロファイル:/etc/vsftp/vsftpd.conf)を例に、ftpサーバアクセスポリシー構成について説明します.1)vsftpdプロファイルの変更は以下の通りです.
# local_enable=YES  (          ftp   )  
anonymous_enable=YES (        ,vsftpd     )

2)匿名ユーザホームとそのサブディレクトリが一般ユーザに対して書き込み権限がないことを確認する.匿名ユーザーが存在するディレクトリ(/var/ftp/)は、外部環境に相当する誰でもアクセスできるようになりました.そのため、一般ユーザーの書き込みは許可されません.そうしないと、データが送信されます.
[rhel5@vmleman ftp]$ ls -ld `find/var/ftp/` drwxr-xr-x 3 root root 4096 2011-09-08/var/ftp/drwxr-xr-x 2 root root 4096 2007-12-13/var/ftp/pub
CentOSシリーズのデフォルトは書き込み権限がなく、基本的に変更する必要はありません.
ステップ4:転送ファイルチェックスクリプトを作成します.
このスクリプトは、主に転送されたファイルをチェックするために使用されます.このスクリプトはrootのみが実行できるように設定されており、他のユーザーには権限がありません.
[root@vmleman~]#ls-l/root/bin合計8-rwx------1 root root 575 09-04 15:04 chkcp.sh
ここのchkcp.shは、任意の言語、またはCを使用できるshellスクリプトの例であり、実行可能なファイルのみが送信できることを確認します.
#/bin/bash
export LANG=en_US
if [ $# != 2 ]; then
  echo "usage: chkcp.sh <srcfile> <dstfile>";
  exit
fi
filetype=`file ${1} `  #      
  allow=`echo ${filetype%:.*} |grep "executable.*object module"`  #     AIX XCOFF     
if [ -z "$allow" ]; then
allow=`echo ${filetype%:.*} |grep ELF`  #     Linux ELF     
  if [ -z "$allow" ]; then
    echo deny ${1}  #        
    exit;
  fi
fi
cp -f ${1} ${2}  #           
if [ "$?" == "0" ]; then
  echo "${1} copyed."
fi

ステップ5:sudoユーザーを設定します.
以前は匿名のユーザホーム(/var/ftp/)は一般ユーザには書き込み不可であったため、一般ユーザは直接ファイルを転送することができなかった.しかし、sudoコマンドを使用して、3番目のステップのrootユーザーの送信スクリプト(chkcp.sh)を呼び出すことができます.これにより、ファイルをコピーすることができますが、ファイルがコピーされる前に、私たちのプリセットスクリプトの検査を経なければなりません.要求に合わないファイルは送信できません.敏感なデータの漏洩に対する防護をある程度実現した.ルールの構成は次のとおりです.1)sudoersファイルの書き込み権限を追加します.
[root@vmleman bin]# chmod u+w/etc/sudoers
2)ファイルの末尾に次の内容を追加します.
User_Alias CHKCPOUT = rhel5, sips
CHKCPOUT       ALL=NOPASSWD: /root/bin/chkcp.sh

ここでrhel 5とsipsはchkcpの呼び出しを許可する.shファイルのユーザー名リストを転送し、自分で変更することができます.追加されていないユーザはchkcpを呼び出すことができない.shなので、ファイルを転送できません.3)リカバリ権限:
[root@vmleman ~]# chmod u-w/etc/sudoers
4)検証結果:rhel 5などのsudo構成の一般ユーザーに切り替え、sudo-l表示権限を実行します.
[rhel5@vmleman ~]$ sudo -l User rhel5 may run the following commands on this host: (root) NOPASSWD:/root/bin/chkcp.sh
chkcpを使うことができますshがファイルをコピーしました.
[rhel5@vmleman ~]$/root/bin/chkcp.sh a.out rhel5.a.out -bash:/root/bin/chkcp.sh:権限が足りない[rhel5@vmleman ~]$ sudo/root/bin/chkcp.sh a.out rhel5.a.out a.out copyed. [rhel5@vmleman ~]$ sudo/root/bin/chkcp.sh a.c rhel5.a.c deny a.c [rhel5@vmleman~]$ls-l/var/ftp/pub/合計24-rwxr-xr-x 1 root root 9860 09-04 15:30 rhel 5.a.out drwxr-xr-x 2 root root 4096 09-04 14:15 ss
実行可能なa.outファイルのみがコピーされ、ソースファイルが拒否されたことを確認します.
ステップ6:ftpファイル転送ポリシーを構成する:
外部ファイルをサーバに転送する必要がある場合もあります.この場合、ファイルタイプのチェックは不要ですが、厳密なセキュリティチャネルを構成する必要があります.1)匿名ユーザホームの下にuploadディレクトリを作成し、所有者がftpに変更する
[root@vmleman ~]# mkdir/var/ftp/upload [root@vmleman ~]# chown ftp/var/ftp/upload/
2)vsftpdを配置する.conf、匿名ユーザー権限の追加
anon_upload_enable=YES  
anon_mkdir_write_enable=YES  
anon_other_write_enable=YES  
anon_umask=022

umaskの設定は、他のユーザーが書き込み可能なディレクトリの作成を防止し、セキュリティ・ホールを発生させるためです.
これにより、ftpでファイルをuploadディレクトリの下に置き、システムにログインしてから、このディレクトリの下からコンテンツをコピーすることができます.
最後のステップ:ftpファイル転送時にportモードを使用する従業員に伝えます.
これまでは、機密文書の流出を基本的に防止してきた.しかし、一般的に、ユーザーはSecureCRTやPuttyなどの他のソフトウェアを使用してサーバにログインし、catコマンドでファイルを画面に印刷し、その内容をコピーすることができます.ユーザーがSecureCRTのスクリーンキャッシュを十分に大きく設定すれば、一度に多くのファイルコンテンツをコピーすることができます.この問題を解決するには、ユーザがスクリーンコンテンツを大量にコピーすることを防止するプライベートSSHクライアント41 puttyが必要である.
41 puttyの使い方については、41 puttyの使用説明を参照してください.