ホワイトロードLinuxの学習-Tcp_wrappers

学習TCP_WRAPPERS

A:なぜTCP_WRAPPERSを学びます

TCP_WRAPPERSシンプルなファイアウォールで、その完全な名前は次のようになります。伝送制御プロトコル(TCP)ラッパー 。
ユーザーが設定して管理するために、当社のサーバーにアクセスすることが私たちの携帯電話のブラックリストとホワイトリストの同等の、使いやすく、シンプルで便利な機能します。

1.1 TCP_WRAPPERS機能

1)これは、第4層、データリンク層では、サーバは最初のスクリーニング来院行うことができます作品
ライブラリファイルの形式のアクセス制御、それは特定のサービス接続状態のセキュリティチェックを持っている)2を
プロセスかどうか)3それは、ライブラリlibwrapをコンパイルし、コンパイル時にあるかどうかに応じて、受付制御TCP_WRAPPERS、

プロセス制御はTCP_WRAPPERSを実現することができるかどうかを判断する方法1.2

1)サービスの場所検索する
ように:我々は、sshとsshdサービス検診の両方た
ここに画像を挿入説明
ここに画像を挿入説明
コマンドSSHサービスが、/ usr / binに/ SSHに格納されて見ることができる
LDD sshコマンドによってチェックアウト2)とのsshdコマンドが含まれていますすべてのライブラリー
ここに画像を挿入説明
ここに画像を挿入説明
3)の内部の詳細内容は、私たちは図書館libwrap.soのかを調べるためにスクリーニングん
sshの
ここに画像を挿入説明
ライブラリlibwrap.so含まれていないのsshライブラリファイル、説明TCP_WRAPPERS管理なしのsshは
sshdは
ここに画像を挿入説明
、私たちが見ることができますsshdサービスがTCP_WRAPPERSによって管理されているように、sshdのライブラリファイルに、libwrapライブラリが含まれています。

第二に、使用TCP_WRAPPERS

2.1 TCP_WRAPPERS作品

ここに画像を挿入説明
原理说明:
1)TCP_Wrappers有一个TCP协议的守护进程tcpd。用户访问服务器后,会监控到用户的访问。
2)当用户开始访问服务器后tcpd进程会截取用户的请求,通过/etc/hosts.allow「白名单」文件来核实,用户是否允许访问,允许则放行。
3)在/etc/hosts.allow文件中没有记录的转到/etc/hosts.deny「黑名单」文件,检查到访用户是否在本文件中有记录,有则拒绝服务,没有则开始提供服务

配置文件:

文件 理解意义
/etc/hosts.allow 可以理解为电话的白名单,只要在名单上的都可以通过
/etc/hosts.deny 可以理解为电话的黑名单,只要在名单上的都拒绝服务
2.2 配置规则说明

语法规则

daemon_list : client_list [ : shell_command ]

daemon_list  
        单个应用程序的二进制文件名,而不是服务名,如果有多个,用逗号或空格分隔。
        如:sshd
        可以绑定服务地址,如,[email protected]:ALL
        ALL表示所有接受tcp_wrapper控制的服务程序
        支持通配符

client_list
        客户端列表
         基于单个IP地址:192.168.10.1 
         基于网段IP地址:192.168.1. 注意,192.168.1.0这个写法是错误的。
         基于主机名:www.hunk.tech .hunk.tech较少用
         基于网络/掩码:192.168.0.0/255.255.255.0
         基于net/prefixlen: 192.168.1.0/24(仅CentOS7)
         基于网络组(NIS 域):@mynetwork
         内置ACL:
            ALL 所有(进程或者主机)
            LOCAL 名称中不带点的主机
            KNOWN 可以解析的主机名
            UNKNOWN 无法解析的主机名
            PARANOID 正、反向查询不匹配或无法解析
        支持通配符

shell_command
        执行指令
        如:sshd:all:spawn echo "`date +%%F-%%T` from %a pid=%p to %s" >> /app/sshd.log

EXCEPT是排除的意思,一行规则里可以有多个,后面的是对前面的结果集进行排除。 
        vsftpd:172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
        匹配整个172.16网段,但是把172.16.100的网段排除,在排除172.16.100网段中又把172.16.100.1的IP给排除。

spawn 启动一个外部程序完成执行的操作,可以支持内置变量。内置变量请man ,找%的选项
        %a (%A) 客户端IP
        %c      客户端信息,可以是IP或主机名(如果能解析)
        %p      服务器进程信息 (PID)
        %s      连接的服务端的信息
        %%      当规则中包含%时,使用双%转义

twist 特殊扩展
以指定的命令执行,执行后立即结束该连接。需在spawn之后使用。
2.3 实验使用

2.2.1 实验环境搭建
三台测试机需要可以互相联网通信。


服务器
服务器名称:studyLinux
ip地址:192.168.1.105
··········································
客户机01
客户机名称:client01
IP地址:192.168.1.107
·········································
客户机02
客户机名称:test-linuxStudy
IP地址:192.168.1.109
·········································
服务器端配置规则
准入规则配置文件:/etc/hosts.allow
拒绝规则配置文件:/etc/hosts.deny


实验一:对所有用户开放并记录用户登陆信息到tcpwrappers.log日志中

配置:
在服务器192.168.1.105中使用vim打开文件/etc/hosts.allow文件。加入如下代码

# 允许所有用户使用sshd服务,记录用户的信息到日志/var/log/tcpwrappers.log
[email protected]:ALL:spawn echo "`date +%%FF %%T` from %a to %s" >> /var/log/tcpwappers.log

代码说明:spawn启用外部程序,这里使用了数据重定向,把数据写入自定义的日志文件tcpwrappers.log中,保存在/var/log/目录下
查看当前服务器中是否已经创建了tcpwrappers.log文件
ここに画像を挿入説明
ここに画像を挿入説明
客户端测试
客户端一:192.168.1.107测试
ここに画像を挿入説明
登陆完成可以正常访问
客户端二:192.168.1.109测试
ここに画像を挿入説明
测试服务器系统日志记录
ここに画像を挿入説明

实验二:仅仅允许192.168.1.109登陆,禁止其他设备登陆,并给禁用用户发出提示“禁止连接”

服务器端配置文件
/etc/hosts.allow文件配置
ここに画像を挿入説明
/etc/hosts.deny文件配置
ここに画像を挿入説明
测试机开始测试配置规则
客户机1:(192.168.1.107)----需要的结果是访问被拒绝
测试使用ssh访问192.168.1.105
ここに画像を挿入説明
拒绝规则生效
客户机2(192.168.1.109)—需要的结果是 可以登陆到服务器
ここに画像を挿入説明
总结
通过上面的两个例子我们可以看到。
1)TCP_Wrappers是通过服务在编译时是否编译进去了libwrap库来实现是否允许TCP_Wrappers安全管理控制的。
2)TCP_Wrappers的安全控制是通过,白名单:/etc/hosts.allow 和 黑名单:/etc/hosts.deny 一起来控制的
3)/etc/hosts.allow文件的优先级高于/etc/hosts.deny

三、生产场景中的应用

在实际生产中,通常都是不允许直接连接服务器,服务器通常会指定一个或一个网段的设备可以登陆。通常指定的是同一局域网中的设备。如下图
ここに画像を挿入説明
服务器(服务器1、服务器2)是不会接受外部网络的ssh服务的,它们只会接受内部网络的访问(堡垒机或跳板机)。其中堡垒机会接受远程的ssh访问。运维人员通常都是先登陆堡垒机,然后通过堡垒机登陆服务器,对服务器进行管理。

这样做的原因

私たちの現在のネットワーク環境、インターネットセキュリティの問題がより重要になって、それが他の誰かの暴力で破壊するためにいる可能性の高いサーバーで、サーバーへの必要なリモート接続として、SSHブルートフォースを受ける可能性が最も高いです。
lastb私たちは、コマンドを使用することができます
すべてのユーザー情報着陸システム障害:lastb役割をしています。これは、図示のように、すべてのユーザーのログイン失敗のための情報を記録は/ var / log / BTMPファイルを呼び出し
ここに画像を挿入説明
たときにコマンドを実行すると、エラーのシリーズを、それはあなたのサーバーは常に攻撃されている可能性があります。
我々は行う必要がある
のsshdのポートに変更する)1
無効すべての外部sshdサービス、使用中のネットワークアクセス、)2を
BTMPを解析するログ、シェルスクリプトを使用して)3、同じIPは、のログイン失敗(notty)を繰り返しました。これは、そのサービスの/etc/hosts.denyを拒否で書かれたIPアドレスです。その後、スクリプトは中断検査を行い、タイミングタスクを追加しました。
後で学びます

リリース7件のオリジナルの記事 ウォンの賞賛0 ビュー56

おすすめ

転載: blog.csdn.net/qq_33318382/article/details/104352516