Linux使用iptables设置黑白名单使用ipset工具

1,下面我先说下iptables的基本配置规则,然后再说ipset
以下使用C7 x86_64为实验环境
CentOS7默认的防火墙不是iptables,而是firewalle.
如果你没有安装iptables的话,你可以使用以下命令进行安装
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
上面的意思是先屏蔽掉原有的firewall防火墙,下面我们就开始安装iptables,至于为什么要安装IPtables我就不讲了
yum install iptables iptables-services -y

设置规则
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP

其他规则设定
#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ... -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ... -j DROP

#保存上述规则
service iptables save
开启iptables服务
#注册iptables服务
#相当于以前的chkconfig iptables on
systemctl enable iptables.service
#开启服务
systemctl start iptables.service
#查看状态
systemctl status iptables.service

2,现在我们介绍ipset
ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则。而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.官网:http://ipset.netfilter.org/

ipset的安装
首先先安装依赖
yum provides ‘*/applydeltarpm‘
yum install deltarpm -y
yum install ipset -y
创建一个ipset
ipset create xxx hash:net (也可以是hash:ip ,这指的是单个ip,xxx是ipset名称)
ipset默认可以存储65536个元素,使用maxelem指定数量
ipset create blacklist hash:net maxelem 1000000 #黑名单
ipset create whitelist hash:net maxelem 1000000 #白名单
查看已创建的ipset
ipset list
在创建的黑名单中添加一个ip
ipset add blacklist 192.168.4.175
删除黑名单ip
ipset del blacklist 192.168.4.175
创建防火墙规则,与此同时,allset这个IP集里的ip都无法访问80端口(如:CC×××可用)
iptables -I INPUT -m set --match-set blacklist src -p tcp -j DROP
iptables -I INPUT -m set --match-set whitelist src -p tcp -j DROP
iptables -I INPUT -m set --match-set setname src -p tcp --destination-port 80 -j DROP
service iptables save
将ipset规则保存到文件
ipset save blacklist -f blacklist.txt
ipset save whitelist -f whitelist.txt
删除ipset
ipset destroy blacklist
ipset destroy whitelist
导入ipset规则
ipset restore -f blacklist.txt
ipset restore -f whitelist.txt
备注:ipset的一个优势是集合可以动态的修改,即使ipset的iptables规则目前已经启动,新加的入ipset的ip也生效

3,应用场景

例:某服务器被CC×××,经过抓包或者一序列手段发现有一批IP是源×××ip,因此我们需要封掉这些IP,如果用iptables一条一条加就麻烦些了。
#对TIME_WAIT的外部ip以及此对ip出现的次数经行求重排序。
netstat -ptan | grep TIME_WAIT | awk ‘{print $5}‘ | awk -F: ‘{print $1}‘ |sort |uniq -c | sort -n -r
#tcpdump 抓取100个包,访问本机80的ip进行求重排序 只显示前20个,数量多的ip可能为×××源IP,我们需要封掉它
tcpdump -tnn dst port 80 -c 100 | awk -F"." ‘{print $1"."$2"."$3"."$4}‘ | sort | uniq -c | sort -n -r |head -20
#新建一个setname.txt文件,以如下格式加入这些ip (有多少个ip就多少行)
vim setname.txt
  add setname xxx.xxx.xxx.xxx
#导入setname.txt文件到ipset集
ipset restore -f setname.txt
#查看是否导入成功 (成功的话会发现一个新ipset名为 sername,且Members里就是那些×××IP)
ipset list
#建立一条iptables规则,拦截这些×××ip访问服务器80,也可以直接禁止这些ip的所有访问
iptables -I INPUT -m set --match-set setname src -p tcp --destination-port 80 -j DROP

原文地址:http://blog.51cto.com/13718210/2153464

时间: 2024-10-25 12:19:44

Linux使用iptables设置黑白名单使用ipset工具的相关文章

?TOM企业邮箱如何设置黑白名单

很多企业都存在这样的困扰,在处理工作中,邮箱中总会出现垃圾邮件,每次整理起来超闹心,然后大家慢慢使用企业邮箱,而非个人邮箱,企业邮箱的稳定性要高于个人邮箱,而TOM企业邮箱则是企业邮箱品牌中的大牌,是满可靠的,小编使用TOM企业邮箱2年多了,至今很正常~那么今天给大家分享一下如何设置黑白名单,让你的办公更加高效,更加轻松,让你远离烦恼. 首先打开浏览器进入TOM企业邮箱, 输入自己的账号.密码,点击登录. 进入企业邮箱后,点击左上角设置按钮 如下图,你就可以设置黑白名单了所谓黑名单就是被拒绝接受

Linux ssh,sftp,scp使用方法,以及怎样设置黑白名单

远程登录操作步骤 要求,两个客户端必须联网    ssh+空格+要连接的用户名+@+用户IP地址 如果对方端口不是默认值(22) ssh+空格+要连接的用户名+@+用户IP地址 + -p + 端口号 (注意p是小写) 更改ssh链接端口方法 vi /etc/ssh/sshd_config 进入端口更改界面更改端口号Port 22 (22是系统默认值,更改的值必须大于1024),并把端口号那一行的注释标识符“#”去掉.保存退出 service sshd restart 重启sshd端口 vi /e

iptables详解(9):iptables的黑白名单机制

注意:在参照本文进行iptables实验时,请务必在个人的测试机上进行,因为如果iptables规则设置不当,有可能使你无法连接到远程主机中. 前文中一直在强调一个概念:报文在经过iptables的链时,会匹配链中的规则,遇到匹配的规则时,就执行对应的动作,如果链中的规则都无法匹配到当前报文,则使用链的默认策略(默认动作),链的默认策略通常设置为ACCEPT或者DROP. 那么,当链的默认策略设置为ACCEPT时,如果对应的链中没有配置任何规则,就表示接受所有的报文,如果对应的链中存在规则,但是

Linux中iptables设置详细(转)

无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵... 以下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务器也够用了: 1.首先介绍一下指令和相关配置文件启动指令:service iptables start   重启指令:service iptables restart   关闭指令:service iptables stop     然后是相关配置:/etc/sysconfig/iptables  

Linux中iptables设置详细

自己的示例: -A INPUT -s 192.168.28.68 -p tcp --dport 1000 -j ACCEPT 对内网中的172.168.xx.xx 开放1000这个端口 无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵... 一下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务器也够用了: 1.首先介绍一下指令和相关配置文件 启动指令:service iptables start 重启指令

Linux防火墙Iptables设置

http://www.zrblog.net/7027.html http://www.2cto.com/Article/201309/245198.html http://blog.163.com/dk_linux/blog/static/203226166201261323349658/ http://blog.chinaunix.net/uid-26495963-id-3279216.html 如何从客户端判断远程linux服务器的某个端口已经打开 telnet ip 端口举例:telnet

Linux中如何设置java环境变量

这里介绍Linux下如何设置java环境变量. 工具/原料 Linux java环境变量 方法/步骤 1 查看java的安装路径   查看java执行路径   配置java环境变量   java的安装路径和执行路径   注意这里的JAVA_HOME后面一定要带上bin路径,路径设置完成一定要用 export输出,注意export单词不要写错了   设置环境变量后使用java的v参数测试,还是失败,因为没有执行source命令   环境变量修改后执行source命令,使得配置生效   运行sour

Linux之Iptables总结及应用

Linux之Iptables总结及应用 一.防火墙.Iptables简介 1.防火墙是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP.数据进行检测.常见的有三.四层的防火墙,叫网络层的防火墙(这层对源地址和目标地址进行检测),还有7层防火墙,其实是代理层的网关(对源端口或者目标端口,源地址或者目标地址进行检查). 2.

Linux防火墙iptables/netfilter(二)

上一篇文章我们说了一些iptables/netfilter的基础知识,本文我们来介绍一下iptables的规则编写.Iptables的规则可以概括的分为两个方面:1.报文的匹配条件:2.匹配到后的处理动作.其中匹配条件分为基本匹配条件和扩展匹配条件,处理动作分为内建处理机制和自定义处理机制.这里需要注意的一点是,自定义处理机制(自定义链)不在内核中所以报文是不会经过自定义链的,它只能被内建机制引用即当做处理的子目标. Iptables说白了就是一个规则管理工具,用于生成.检查和自动实现规则.规则