tcp_wrapper:tcp包装器
对基于tcp协议开发并提供服务的应用程序,提供的一层访问控制工具;
基于库调用实现其功能:
libwrap
判断服务是否能够由tcp_wrapper进行访问控制:
(1) 动态编译:ldd命令;
ldd `which vsftpd`查看是否有vsftpd的共享库命令。libwrap.so.0 => /lib/libwrap.so.0
(2) 静态编译:strings命令查看应用程序文件,其结果中如果出现
hosts.allow
hosts.deny
在配置文件在为各服务分别定义访问控制规则实现访问控制:
/etc/hosts.allow
/etc/hosts.deny
注意优先级 首先检查/etc/hosts.allow ,若这里允许则直接通过,
若不允许,再看/etc/hosts.deny 这里若没定义则通过。若定义不允许则不通过
配置文件语法:
daemon_list: client_list [:options]
daemon_list:
应用程序的文件名称,而非服务名;
这里可用 rpm -ql 服务名
例如 rpm -ql vsftpd
看到有个/usr/sbin/vsftpd,这个路径把vsftpd当作应用daemon_list
应用程序文件名称列表,彼此间使用逗号分隔;
例如:sshd, vsftpd:
ALL表示所有服务;
client_list:
IP地址;
主机名;
网络地址:必须使用完整格式的掩码,不使用前缀格式掩码;所以类似于172.16.0.0/16不合法;
简短格式的网络地址:例如172.16. 表示 172.16.0.0/255.255.0.0 完整格式的掩码
ALL:所有主机;
KNOWN:
UNKNOWN
PARANOID
例如:vsftpd服务不允许172.16.100.1访问
EXCEPT: 除了
hosts.allow
vsftpd: 172.16. EXCEPT 172.16.100.0/255.255.255.0 EXCEPT 172.16.100.1 //只允许172.168.100.0/24 中的172.16.100.1 和 在172.168.0.0/24这个且不包含172.16.100.0/24的网络。
[:options] 注意前面有个:
deny: 拒绝,主要用于hosts.allow文件中
实现了反作用,不允许前面所说的主机访问服务。
allow:允许,用于hosts.deny文件,实现allow的功能
实现了反作用,允许前面所说的主机访问服务。
spawn: 启动额外应用程序:
vsftpd: ALL :spawn /bin/echo `date` login attempt from %c to %s, %d >> /var/log/vsftpd.deny.log //启动echo命令将登陆失败的用户记录在那个文件中。
%c: client ip
%s: server ip
%d: daemon name
练习:控制192.168.0.110主机上telnet服务仅允许192.168.0.0网络中的主机访问,但不包括192.168.1.0/255.255.255.0中的主机;对所有正常登录的主机都记录于/var/log/telnet.allow.log中;所有未授权访问尝试都记录于/var/log/telnet.deny.log中;
首先启动telnet服务。在centos 6中启动telnet
若安装完成,vim /etc/xinetd.d/telnet 将disable = no
然后重新启动xinetd
service xinetd restart 这时候可以用ss -tnl查看23端口是否已经开启。
这是在centos 7上启动telnet。
1. CentOS7.0 telnet-server 启动的问题。
①、先检查CentOS7是否已经安装以下两个安装包:telnet-server、xinetd。命令如下:
[root@master ~]# yum install telnet-server
[root@master ~]# yum install telnet
[root@master ~]# yum install xinetd
安装完成后,将xinetd服务加入开机自启动:
systemctl enable xinetd.service
将telnet服务加入开机自启动:
systemctl enable telnet.socket
最后,启动以上两个服务即可:
systemctl start telnet.socket
systemctl start xinetd(或service xinetd start)
在/etc/hosts.allow 中输入
in.telnetd:192.168. EXCEPT 192.168.1.0/255.255.255.0 :spawn /bin/echo `date` login scuccess connect from %c to %s, %d >> /var/log/telnet.allow.log //注意空格
在/etc/hosts.deny 中输入
in.telnetd:ALL:spawn /bin/echo `date` login fail connnect from %c to %s,%d >> /var/log/telnet.deny.log
如此便完成任务