利用sqlnet.ora限制IP访问,sqlnet.oraip访问
在遭遇了上次进程数超值,随后找了个方法,在DB上限制IP访问;
http://blog.csdn.net/jacson_bai/article/details/18097805
ENV:
IP:10.244.170.221
Oracle DB:11.2.0.3
实现功能:
1.只允许某几个IP访问数据库
2.除了某几个IP,其他都可访问
实现功能1的方法
[oracle@ora11g]cd /oracle/11204/db_1/network/admin
新建sqlnet.ora文件,添加2个主要参数
[oracle@ora11g admin]$ cat sqlnet.ora
TCP.VALIDNODE_CHECKING=yes
TCP.INVITED_NODES=(10.244.170.221,127.0.0.1)
这里可以加入IP地址,IP段等
实现功能2的方法:
[oracle@ora11g]cd /oracle/11204/db_1/network/admin
新建sqlnet.ora文件,添加2个主要参数
[oracle@ora11g admin]$ cat sqlnet.ora
TCP.VALIDNODE_CHECKING=yes
TCP.EXCLUDED_NODES=(10.248.170.*)
这里可以加入IP地址,IP段等
这些做完了,重启监听,测试
备注:
在sqlnet.ora中实现:
通过在sqlnet.ora文件中增加下列记录来实现
[sql] view plaincopyprint?
tcp.validnode_checking = yes
tcp.invited_nodes = (hostname1, hostname2,ip1,ip2)
tcp.excluded_nodes = (10.103.11.17,hostname1,hostname2)
tcp.validnode_checking = yes
tcp.invited_nodes = (hostname1, hostname2,ip1,ip2)
tcp.excluded_nodes = (10.103.11.17,hostname1,hostname2)
当使用invited_nodes时,则所有没有包含在invited_nodes值中的IP或主机将无法通过Oracel Net连接到数据库。而如果使用excluded_nodes时,除了excluded_nodes值中列出的IP和主机不可访问之外,其余的节点都可以访问数据库。通常情况下,更倾向于使用excluded_nodes参数。
如果你能获取捣乱来源的IP,那么可以利用网站程序自带的IP禁止将其IP ban掉,或者如果你的服务器支持PHp,那么可以使用以下代码实现对固定IP的限制访问。
<?php
if($_SERVER['REMOTE_ADDR'] == "192.168.1.123"){
exit();
}
?>
这个代码有个缺陷,就是每次都需要在网页上添加IP,对于要限制的IP地址比较多的时候,就比较繁琐。那么可以使用以下代码减轻你的网站负担。
<?php
$banned = file("ban_ip_list.dat");
if(in_array($_SERVER['REMOTE_ADDR'], $banned)){
echo "你的IP属于被禁止访问列表。如果问题请与站长联系。";
exit();
}
?>
这样只需要在ban_ip_list.dat里面每行添加一个IP就可以实现IP禁止了。
如果网站不支持PHP或者需要禁止的IP特别多,那么我们可以利用.htaccess来实现限制效果。
Order Deny,Allow
Deny from xxx.xxx.xxx.xxx
Deny from xxx.xxx.xxx