« wheel グループに所属するユーザーが "sudo" コマンドを使用できるようにする / CentOS 6.5 (64-bit) | トップページ | NTP クライアントの設定 / CentOS 6.5 (64-bit) »

TCP Wrapper によるアクセス制御 / CentOS 6.5 (64-bit)

TCP Wrapper によるアクセス制御 / CentOS 6.5 (64-bit)

ライブラリ "libwrap" を含んだサービスは TCP Wrapper でアクセス制御ができます。アクセス制御は /etc/hosts.allow と /etc/hosts.deny を参照して行います。
iptables と TCP Wrapper を併用した場合、先に iptables が評価された後に TCP Wrapper の評価が行われます。



【インストール】

■ インターネット経由でインストール

[root@sv1 ~]# yum -y install tcp_wrappers
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.fairway.ne.jp
 * extras: mirror.fairway.ne.jp
 * updates: mirror.fairway.ne.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tcp_wrappers.x86_64 0:7.6-57.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================
 Package                      Arch                   Version                       Repository            Size
==============================================================================================================
Installing:
 tcp_wrappers                 x86_64                 7.6-57.el6                    base                  61 k

Transaction Summary
==============================================================================================================
Install       1 Package(s)

Total download size: 61 k
Installed size: 146 k
Downloading Packages:
tcp_wrappers-7.6-57.el6.x86_64.rpm                                                     |  61 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : tcp_wrappers-7.6-57.el6.x86_64                                                             1/1
  Verifying  : tcp_wrappers-7.6-57.el6.x86_64                                                             1/1

Installed:
  tcp_wrappers.x86_64 0:7.6-57.el6

Complete!
[root@sv1 ~]#


■ インストール DVD(ISO イメージファイル)からインストール(※事前にこの処理をする必要あり)

[root@sv1 ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@sv1 ~]# yum --disablerepo=\* --enablerepo=centos-dvd -y install tcp_wrappers
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
centos-dvd                                                                             | 4.0 kB     00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tcp_wrappers.x86_64 0:7.6-57.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================
 Package                      Arch                   Version                       Repository            Size
==============================================================================================================
Installing:
 tcp_wrappers                 x86_64                 7.6-57.el6                    centos-dvd            61 k

Transaction Summary
==============================================================================================================
Install       1 Package(s)

Total download size: 61 k
Installed size: 146 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : tcp_wrappers-7.6-57.el6.x86_64                                                             1/1
  Verifying  : tcp_wrappers-7.6-57.el6.x86_64                                                             1/1

Installed:
  tcp_wrappers.x86_64 0:7.6-57.el6

Complete!
[root@sv1 ~]# umount /mnt
[root@sv1 ~]#




【関係するファイル】

■ /etc/hosts.allow : アクセスを許可するための情報 / 最初はコメントだけで何も定義されていない

#
# hosts.allow   This file contains access rules which are used to
#               allow or deny connections to network services that
#               either use the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#


■ /etc/hosts.deny : アクセスを拒否するための情報 / 最初はコメントだけで何も定義されていない

#
# hosts.deny    This file contains access rules which are used to
#               deny connections to network services that either use
#               the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               The rules in this file can also be set up in
#               /etc/hosts.allow with a 'deny' option instead.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#


■ /var/log/secure : アクセスログを出力

Dec 28 18:45:56 sv1 sshd[1677]: pam_unix(sshd:session): session opened for user testuser by (uid=0)
Dec 28 18:45:59 sv1 sshd[1681]: Received disconnect from 192.168.154.21: 11: disconnected by user
Dec 28 18:45:59 sv1 sshd[1677]: pam_unix(sshd:session): session closed for user testuser
Dec 28 18:46:02 sv1 unix_chkpwd[1699]: password check failed for user (testuser)
Dec 28 18:46:02 sv1 sshd[1697]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= 
rhost=192.168.154.21  user=testuser
Dec 28 18:46:03 sv1 sshd[1697]: Failed password for testuser from 192.168.154.21 port 52884 ssh2
Dec 28 18:46:09 sv1 sshd[1697]: Accepted password for testuser from 192.168.154.21 port 52884 ssh2
Dec 28 18:46:10 sv1 sshd[1697]: pam_unix(sshd:session): session opened for user testuser by (uid=0)
Dec 28 18:46:10 sv1 sshd[1702]: Received disconnect from 192.168.154.21: 11: disconnected by user
Dec 28 18:46:10 sv1 sshd[1697]: pam_unix(sshd:session): session closed for user testuser
[root@sv1 ~]#




【オペレーション】

■ ライブラリ "libwrap" を含むかどうかの確認 : 含まれている場合

[root@sv1 ~]# ldd /usr/sbin/sshd | grep libwrap
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3d02501000)
[root@sv1 ~]#


■ ライブラリ "libwrap" を含むかどうかの確認 : 含まれていない場合

[root@sv1 ~]# ldd /usr/sbin/postfix | grep libwrap
[root@sv1 ~]#


■ 評価順序
次の順序で評価します。
1./etc/hosts.allow を先頭から解釈し、記述したルールに一致したらその時点でアクセスを許可。以降の記述は無視。
2./etc/hosts.deny を先頭から解釈し、記述したルールに一致したらその時点でアクセスを拒否。以降の記述は無視。
3.アクセスを許可。

■ ルールの書式
"サービス"と"アクセスを「許可」または「拒否」するアドレス(ドメイン名を含む)"の組み合わせ

service : ip address | domain


・ /etc/hosts.allow : すべてアドレスやドメインに対してアクセスを許可

ALL : ALL


・ /etc/hosts.allow : すべての exam.local(eaxm.local , sample.exam.local 等)ドメインからのアクセスを許可

ALL : .exam.local
または
ALL : *.exam.local


・ 192.168.1.1 から SSH 接続を許可

sshd : 192.168.1.1


・ 192.168.1.* から SSH 接続を許可

sshd : 192.168.1.


・ /etc/hosts.deny : すべてアドレスドメインに対してアクセスを拒否(TCP Wrapper を使用する場合、この記述は最後の行として必須の条件)

ALL : ALL




【確認】

■ /etc/hosts.allow の内容

#
# hosts.allow   This file contains access rules which are used to
#               allow or deny connections to network services that
#               either use the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
sshd : 192.168.1.21


■ /etc/hosts.deny の内容

#
# hosts.deny    This file contains access rules which are used to
#               deny connections to network services that either use
#               the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               The rules in this file can also be set up in
#               /etc/hosts.allow with a 'deny' option instead.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
ALL : ALL


■ 192.168.1.21 から接続した場合 → 許可

[workuser@vm001 ~]$ ssh 192.168.154.11 -l testuser
testuser@192.168.154.11's password:
Last login: Thu Dec 26 23:22:36 2013 from 192.168.154.134
[testuser@sv1 ~]$


■ 192.168.1.22 から接続した場合 → 拒否

[workuser@vm001 ~]$ ssh 192.168.154.11 -l testuser
ssh_exchange_identification: Connection closed by remote host
[workuser@vm001 ~]$

« wheel グループに所属するユーザーが "sudo" コマンドを使用できるようにする / CentOS 6.5 (64-bit) | トップページ | NTP クライアントの設定 / CentOS 6.5 (64-bit) »

Linux」カテゴリの記事