阅读更多
一、目的:通过系统自带的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的访问限制,第一种方法相对简单些。