Linxu下tcp wrappers实现ssh的IP访问限制

阅读更多
一、目的:通过系统自带的tcp wrappers实现ssh的访问限制
二、实现方式:
第1种方法:通过sshd本身服务实现

a、首先在服务器上,分别执行如下命令:

[root@redhat1 home]# rpm -qf /lib64/libwrap.so.0
tcp_wrappers-7.6-40.7.el5
//检查是否安装了tcp wrappers

[root@redhat1 home]# ldd /usr/sbin/sshd | grep libwrap.so
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00002ba28edcc000)
确认ssh服务器是否支持tcp wrappers,如果能够打印出来上述信息,那么可用此方法实现,否则可查看
root@redhat1 home]# ldd /usr/sbin/xinetd | grep libwrap.so
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00002ba28edcc000)
如果有信息输出,则可按照第二种方法实现

b、在/etc/hosts.allow中加入以下信息,代表允许访问的IP
sshd:192.168.1.*:allow
c、在/etc/hosts.deny中加入以下信息,代表不允许访问的IP
sshd: all

注:这两个配置文件发生冲突时,以hosts.allow为准

修改完成,断开连接后即时生效。


第2种方法:通过xinetd启动SSH服务

在xinetd中管理ssh服务,并实现ssh的访问控制,首先要按照第一种方法配置hosts.allow和hosts.deny,并且检查是否安装tcp wrappers,以及xinetd服务是否支持tcp wrappers,然后按照以下步骤配置即可。

a、首先在/etc/xinetd.d目录下建立文件ssh,包含下面这些内容。

service ssh  {         
    socket_type     = stream        
    protocol        = tcp       
    wait            = no        
    user            = root    
    server          = /usr/sbin/sshd    
    server_args     = -i   
    log_on_success  += DURATION    
    disable         = no }
注意log_on_success参数允许使用"+="这样的赋值方式,表示在原有默认值的基础上添加,而不是推倒重来。类似地,也可以使用"-="在默认值的基础上减去一些值。参数的默认值通常在/etc/xinetd.conf中设置。

b、停用SSH守护进程,让xinetd接管22端口

[root@redhat1 home]# /etc/init.d/ssh stop

重新启动xinetd使配置生效。
[root@redhat1 home]# /etc/init.d/xinetd restart 

运行netstat -tulnp命令查看22端口的情况,发现xinetd已经顺利接管了SSH通信端口。
[root@redhat1 home]# netstat -tulnp | grep 22        
tcp   0  0 0.0.0.0:22  0.0.0.0:*  LISTEN  8356/xinetd

c、将ssh服务自启动去掉,chkconfig sshd off




通过以上两种方式,都可以实现ssh的访问限制,第一种方法相对简单些。

你可能感兴趣的:(CentOS,redhat,ssh)