在生产服务器中经常要做一些安全设置,其中限制IP登录可能是最常用也是最有用的一种方法了。
主要有四种方法:
tcp_wrappers
ssh
iptables
PAM
先说一下结论:
tcp_wrappers和iptables只能限制IP
ssh和PAM可以限制IP+限制某用户
如果只想限制IP,可能用tcp_wrappers是最方便的,但是用防火墙限制是最安全的
如果想限制IP+限制某用户登录,直接ssh里限制是最方便的,也可以防火墙+ssh来限制
只限制IP的话,大家都知道,我这里主要是讲限制IP+用户的方法。
一、SSH的方法
在/etc/ssh/sshd_config中添加AllowUsers、AllowGroups、DenyUsers、DenyGroups。
AllowUsers:允许某个用户、某些用户能登录,其它都不能登录
AllowGroups:允许某个组、某些组能登录,其它都不能登录
DenyUsers:拒绝某个用户、某些用户登录,其它都能登录
DenyGroups:拒绝某个组、某些组登录,其它都能登录
例子:
AllowUsers oracle@192.168.0.3
允许来自于192.168.0.3的用户oracle登录本机,其它都不允许
AllowUsers oracle@192.168.3.*
允许来自于192.168.0网段的用户oracle登录本机,其它都不允许
AllowUsers root oracle@192.168.3.5
允许所有网段的root用户和来自于192.168.3.5的用户oracle登录本机,其它都不允许
DenyUsers root admin
#拒绝root admin帐户通过SSH登录本机
用户和IP之间可以自由组合。
二、PAM方法
首先编辑/etc/pam.d/sshd,加入如下内容
account required pam_access.so
然后编辑/etc/security/access.conf
在尾行加入一行
-:snmp:ALL EXCEPT 192.168.1.
“-”的表示拒绝
“snmp”是用户名,
“ALL”是所有,
“EXCEPT 192.168.1.”意思是排除192.168.1这个网段,需要注意的是192.168.1. 最后的这个“.”
整句的意思就是:拒绝所有的IP使用snmp来登录,但是192.168.1.段的可以登录
也可以写一个具体IP,如:
-:snmp:ALL EXCEPT 192.168.1.122
这个就是只允许192.168.1.122的IP登录snmp用户
还可以写成类似这样的:(一般写成这样,上面那个不能限制通过其它用户登录)
+:snmp:192.168.1.122 先允许
-:ALL EXCEPT root:ALL 再拒绝所有,保留root用户能登录
access.conf文件里自带了很多例子