Linux 防火墙iptables 禁止某些 IP访问

方法一,过滤一些IP访问本服务器

要封停一个IP,使用下面这条命令:

 代码如下 复制代码

iptables -I INPUT -s ***.***.***.*** -j DROP

要解封一个IP,使用下面这条命令:

 

 代码如下 复制代码
iptables -D INPUT -s ***.***.***.*** -j DROP

参数-I是表示Insert(添加),-D表示Delete(删除)。后面跟的是规则,INPUT表示入站,***.***.***.***表示要封停的IP,DROP表示放弃连接。

此外,还可以使用下面的命令来查看当前的IP规则表:

 代码如下 复制代码

iptables -list

比如现在要将123.44.55.66这个IP封杀,就输入:

 代码如下 复制代码

iptables -I INPUT -s 123.44.55.66 -j DROP

要解封则将-I换成-D即可,前提是iptables已经有这条记录。如果要想清空封掉的IP地址,可以输入:

 代码如下 复制代码

iptables -flush

要添加IP段到封停列表中使用下面的命令:

 代码如下 复制代码

iptables -I INPUT -s 121.0.0.0/8 -j DROP

其实也就是将单个IP封停的IP部分换成了Linux的IP段表达式。关于IP段表达式网上有很多详细解说的,这里就不提了。

方法二,使用脚本来进行屏蔽

1.先下载ip地址文件

我们先到IPdeny下载以国家代码编制好的ip地址列表,比如下载cn.zone:

wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone

现在有了国家的所有IP地址,要想屏蔽这些 IP 就很容易了,直接写个脚本逐行读取cn.zone文件并加入到iptables中:

iptables屏蔽某个国家ip段

 代码如下 复制代码

#!/bin/bash
# Block traffic from a specific country
# written by blog.slogra.com

COUNTRY = "cn"
IPTABLES = /sbin/iptables
EGREP = /bin/egrep

if [ "$(id -u)" != "0" ]; then
   echo "you must be root" 1>&2
   exit 1
fi

resetrules() {
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
}

resetrules

for c in $COUNTRY
do
        country_file = $c.zone

        IPS = $($EGREP -v "^#|^$" $country_file)
        for ip in $IPS
        do
           echo "blocking $ip"
           $IPTABLES -A INPUT -s $ip -j DROP
        done
done

exit 0

方法三,上面两个实例都可以但都不简明,下面我来介绍一下

在iptables中,添加两个常用的IP段,其他网段的数据包都DROP了,而不是REJECT(REJECT还要发送ICMP回应包给连接方)。

 代码如下 复制代码
 
# iptables -A INPUT -p tcp --dport 22 -s 120.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 183.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP

测试:

在另外一个机子连接这个VPS,数据包被成功DROP了。

 代码如下 复制代码

root@293621:~# iptables -vL
Chain INPUT (policy ACCEPT 36 packets, 6257 bytes)
pkts bytes target prot opt in out source destination
222 16280 ACCEPT tcp -- any any 120.0.0.0/8 anywhere tcp dpt:ssh
0 0 ACCEPT tcp -- any any 183.0.0.0/8 anywhere tcp dpt:ssh
4 240 DROP tcp -- any any anywhere anywhere tcp dpt:ssh

又一次体会到iptables的威力,看来这块的内容,得找个时间好好加强下,好用啊

时间: 2024-07-30 03:39:08

Linux 防火墙iptables 禁止某些 IP访问的相关文章

Linux服务器如何静禁止某些IP访问?

问题描述 Linux服务器如何静禁止某些IP访问? Linux服务器通过命令式的方式的如何禁止某些IP的访问?求详细指导 解决方案 请参考http://dengqsintyt.iteye.com/blog/2018005 解决方案二: 那我要封杀115.239.212.1到255写法:iptables -I INPUT -s 115.239.212.0/255 -j DROP 是不是这样写哦? 解决方案三: iptables 光写命令可能没有保存吧,需要写成sh脚本,然后启动后自动执行.

Linux防火墙iptables简明教程

  前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔除了许多冗余的内容,提取出尽量多的精华部分成文,和大家共同学习,本文涉及的内容包括如下 Linux防火墙iptables简明教程 1.安装iptables 2.查看现有的iptables规则 3.删除某iptables规则 4.清除现有iptables规则 5.创建规则 6.设置开机启动 7.保

Linux防火墙Iptables新手教程(非常的详细)

首先我们要弄明白,防火墙将怎么对待 这些数据包.这些数据包会经过一些相应的规则链,比如要进入你的计算机的数据包会首先进入INPUT链,从我们的计算机发出的数据包会经过 OUTPUT链,如果一台计算机做一个网络的网关(处于内网和外网两个网络连接的两台计算机,这两台计算机之间相互通讯的数据包会经过这台计算机,这台计 算机即相当于一个路由器),可能 会有很多数据经过这台计算机,那么这些数据包必经FORWARD链,FORWARD链即数据转发链.明白了这些"链"的概念我们才能进一步学习使用 ip

关于Linux防火墙'iptables'的面试问答

Nishita Agarwal是Tecmint的用户,她将分享关于她刚刚经历的一家公司(印度的一家私人公司Pune)的面试经验.在面试中她被问及许多不同的问题,但她是iptables方面的专家,因此她想分享这些关于iptables的问题和相应的答案给那些以后可能会进行相关面试的人. Linux防火墙Iptables面试问题 所有的问题和相应的答案都基于Nishita Agarwal的记忆并经过了重写. "嗨,朋友!我叫Nishita Agarwal.我已经取得了理学学士学位,我的专业集中在UNI

Nginx如何配置禁止通过IP访问

生产环境,今天无意中用IP访问了一下,发现竟然可以访问到,有一个域名被做为了默认域名.网上找了一下资料,Nginx可以设置禁止通过IP访问的. 在任一有效的Nginx配置文件中加上以下一段 # forbidden use ip address access server { listen 80 default_server; server_name _; return 444; } 其实思路很简单,就是用IP访问的时候,返回444错误. 本文出自 "吖吖個呸" 博客,请务必保留此出处h

Nginx中禁止使用IP访问网站的配置实例_nginx

国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 如下的配置项,可以设置允许使用I

dedecms 不让跳转到index与禁止指定IP访问功能

编辑打开include/channelunit.func.php教程页面 查找 $reurl = $typedir.'/'.$defaultname; 替换成 $reurl = $typedir.'/';...   后台没有禁止指定ip访问的功能,不过我们可以通过apche服务器的.htaccess配置文件进行控制,通过htaccess文件,可以帮我们实现:网页301重定向.自定义404错误页面.改变文件扩展名.允许/阻止特定的用户或者目录的访问.禁止目录列表.配置默认文档等功能. 在这里主要讲

如何禁止特定IP访问Oracle数据库

如何禁止特定IP访问Oracle数据库通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段在sqlnet.ora中增加如下部分  tcp.validnode_checking=yes        #允许访问的IP  tcp.invited_nodes=(ip1,ip2--)        #禁止访问的IP  tcp.excluded_nodes=(ip1,

Linux防火墙Iptables如何设置只允许特定ip访问某端口

Linux防火墙Iptable如何设置只允许某个ip访问80端口,只允许特定ip访问某端口?参考下面命令,只允许46.166.150.22访问本机的80端口.如果要设置其他ip或端口,改改即可. iptables -I INPUT -p TCP --dport 80 -j DROP iptables -I INPUT -s 46.166.150.22 -p TCP --dport 80 -j ACCEPT 在root用户下执行上面2行命令后,重启iptables, service iptable