设为首页 收藏本站
查看: 309|回复: 0

[经验分享] iptables基本规则的设定

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-2-11 16:20:30 | 显示全部楼层 |阅读模式
注释:文章中fg:为示例 红色标记的为命令
Linux防火墙包含了2个部分,分别是存在于内核空间的(netfilter)和用户空间的(iptasbles);而iptables可以定义规则如:
filter:防火墙的核心所在,实现包过滤功能
nat:实现地址转换,(如:IP、PORT)
mangle:实现数据包的修改操作,如打标记、修改TTL等
raw:对数据包进行状态跟踪,不是很常用,不做过多解释
而它们的优先顺序为:   RAW--MANGLE--NAT--FILTER

在iptables中定义的防火墙规则要被传入到内核中的netfilterft才能生效;而在定义防火墙规则的时候一般有两种模式:一种是比较严格的,只允许匹配规则中定义的规则的数据包通过,而其余的数据包则全部阻止;另一种是比较宽松的,只阻止匹配规则中定义的规则的数据包,而其余的数据包则全部允许通过。而在企业应用中,一般情况下是使用的第一种,根据自己业务的需要只允许通过对应的数据包。


命令使用格式:
iptables命令语法格式: iptables [-t 表名] 管理选项[链名] [条件匹配] [-j 目标动作或跳转]
注释: -t: 默认没有指定表是filter表,当然也可以指定mangle、nat、raw



管理选项:
   -A:在规则尾部追加一条规则
   -I [n]:在链的第一条或指定序号插入规则
   -D [n]:删除指定序号的规则
   -R [n]:修改指定序号的规则
   -P:为规则链设置默认策略    fg:将INPUT链的默认策略改为DROP;iptables -t filter -p INPUT DROP
   -N:新创建一条自定义链
   -E:重命名自定义链名
   -L:查看链中的所有规则,默认不指定链名是filter
   -n:以数字形式显示IP、PORT,不会反向解析IP地址
   -x:精确显示数据包大小,不做单位换算
   -v:显示详细信息
   --line-numbers:查看规则时显示规则序号
   -X:删除用户自定义的空链
   -Z:清空计数器
       每条规则都会有两条计数器:
       1、记录本条规则所匹配到的包的个数
       2、记录匹配到本条规则的包的大小之和
   -F:清空指定表中的所有规则
   重启防火墙服务时,规则会被清空我们可以使用命令来保存到一个文件中,这样再重启防火墙时,会自动加载文件中保存的规则;文件默认路径:/etc/sysconfig/iptables

[iyunv@localhost~]# serviceiptables save


另一种方法可以把防火墙规则保存到一个指定的文件中,可以自己手动的导入规则,如下:
   [iyunv@localhost~]# iptables-save/root/iptables        #将防火墙规则保存到/root/iptables文件中
   [iyunv@localhost~]# iptables-resstore< /root/iptables  #将防火墙规则从/root/iptables文件中导入


条件匹配:
   -s|--src|-source:[!] IP/NETWORK:源地址或网络    注:叹号表示取反
   -d|--dst|--destination:[!] IP/NETWORK:目标地址或网络
   -p:{tcp|udp|icmp}:指定协议类型
   -i:input interface:指定数据包的进入接口
   -o:output interface:指定数据包的外出接口
fg:禁止172.16.1.0/24的网络远程ssh连接172.16.14.1主机
   iptables -AINPUT -s 172.16.1.0/24 -d 172.16.14.1 -p tcp --dport 22 -j DROP
扩展匹配:要使用"-m扩展名称"来引用,而每个扩展模块一般都会有自己特有的专用选项,在这些选项中,有些是必备的;
隐含扩展:
-t:tcp    --sport(源端口)    --dport(目标端口)    --syn SYN标志位为1
   --tcp-flags    SYN  ACK  RST  FIN   ALL代表所有标志位为1  NONE代表所有标志位为0
fg:允许访问172.16.14.1主机的WEB服务
   iptables -AINPUT -d 172.16.14.1 -p tcp --dport 80 -j ACCEPT
   iptables -AOUTPUT -s 172.16.14.1 -p tcp --sport 80 -j ACCEPT
-t: udp    --sport(源端口)    --dport(目标端口)
fg:本机DNS服务器,要为本地客户端做递归查询,iptables的INPUT、OUTPUT默认为DROP,本机地址:172.16.14.1
   允许客户端查询:
   iptables -AINPUT -d 172.16.14.1 -p udp --dport 53 -j ACCEPT
   iptables -AOUTPUT -s 172.16.14.1 -p udp --sport 53 -j ACCEPT
   本机做递归查询:
   iptables -AINPUT -s 172.16.14.1 -p udp --dport 53 -j ACCEPT
   iptables -AOUTPUT -d 172.16.14.1 -p udp --sport 53 -j ACCEPT
-p icmp    --icmp-type  类型:请求为:8  响应为:0
fg:本机地址为:172.16.14.1,能Ping172.16.0.0/16网络中的所有主机
   iptables -AOUTPUT -s 172.16.14.1 -d 172.16.0.0/16 -p icmp --icmp-type 8 -j ACCEPT
   iptables -AINPUT -d 172.16.14.1 -s 172.16.0.0/16 -p icmp --icmp-type 0 -j ACCEPT
显式扩展:
-m state --state
   NEW:已经或将启动新的连接
   ESTABLISHED:已建立的连接
   RELATED:正在启动新连接
   INVALID:非法或无法识别的
fg:本机地址:172.16.4.1,允许所有地址访问本机的ftp服务;
注:确定ftp模块被装载 lsmod | grep nf_conntrack_ftp如果没有被装载使用modprobe装载模块:modprobe nf_conntrack_ftp
   iptables -AINPUT -d 172.16.14.1 -p tcp --dport 21 -m state --state NEW -j ACCEPT
   iptables -AINPUT -d 172.16.14.1 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
   iptables -AOUTPUT -s 172.16.14.1 -m state --state ESTABLISHED,RELATED -j ACCEPT
-m multiport:可以指定15个离散端口   
   --source-ports:源端口
   --destination-ports:目标端口
   --ports:指定端口
fg:本机地址:172.16.14.1,开放本机端口21、22、80
   iptables -AINPUT -d 172.16.14.1 -p tcp -m multiport --destination-ports 21,22,80 -m state--state NEW -j ACCEPT
-m iprange   
   --src-range:源端口范围
   --dst-range:目标端口范围
fg:本机地址:172.16.14.1,拒绝172.16.1.10-172.16.1.100这些IP访问本机的ssh
   iptables -AINPUT -m iprange --src-range 172.16.1.10-172.16.10.100 -d 172.16.14.1 -p tcp--dport 22 -j DROP
-m limit   
   --limitn/{second/minute/hour}:指定时间内的请求速率"n"为速率,后面为时间分别为:秒、分、时   
   --limit-burst[n]:在同一时间内允许通过的请求"n"为数字,不指定默认为5
fg:本机地址:172.16.14.1,允许172.16.0.0/16网络ping本机,但限制每分钟请求不能超过20,每次并发不能超过6个
   iptables -AINPUT -s 172.16.0.0/16 -d 172.16.14.1 -p icmp --icmp-type 8 -m limit --limit20/min --limit-burst 6 -j ACCEPT
   iptables -AOUTPUT -s 172.16.14.1 -d 172.16.0.0/16 -p icmp --icmp-type 0 -j ACCEPT
connlimit
   --connlimit-above[num]


-m string
   --string"":过滤指定的字符串
   --algo{bm|kmp}:过虑指定的算法
fg:本机地址:172.16.14.1,过滤访问本机网页包含"hello"字符串的页面
   iptables -AINPUT  -d 172.16.14.1 -p tcp --sport 80 -m string--string "hello" --algo kmp -j REJECT
-m time
   --datestart    --datestop:指定起始日期
   --timestart    --timestop:指定开始和结束时间
   --weekdays:周可以指定每周几,周一到周日可以使用"1-7"   
   --monthdays:月可以指定每个月的哪几天
fg:在工作时间,即周一到周五的9:30-18:00,开放本机的ftp服务给172.16.0.0/16网络中的主机访问,本机地址172.16.14.1;数据下载请求的次数每分钟不得超过5个
   iptables -AINPUT -s 172.16.0.0/16 -d 172.16.14.1 -p tcp --dport 21 -m time --weekdaysMon,Tue,Wed,Thu,Fri --timestart 09:30 --timestop 18:00 -j ACCEPT
   iptables -AINPUT -s 172.16.0.0/16 -d 172.16.14.1 -p tcp -m state --state RELATED -m limit--limit 5/min -j ACCEPT
fg:开放本机的ssh服务给172.16.1.1-172.16.1.100中的主机访问本机,本机地址:172.16.14.1,新请求建立的速率一分钟不得超过2个;仅允许响应报文通过其服务端口离开本机
   iptables -AINPUT -m iprange --src-range 172.16.1.1-172.16.1.100 -m limit --limit 2/min -ptcp --dport 22 -d 172.16.100.1 -i eth0 -m state --state NEW -j ACCEPT
fg:拒绝TCP标志位全部为1及全部为0的报文访问本机,我们新建一个自定义链
   iptables -Nclean_in
   iptables -Aclean_in -p tcp --tcp-flags ALL ALL -j DROP
   iptables -Aclean_in -p tcp --tcp-flags ALL NONE -j DROP
   iptables -Aclean_in -d 172.16.100.1 -j RETURN
   iptables -IINPUT 1 -d 172.16.100.1 -j clean_in


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-42376-1-1.html 上篇帖子: Linux系统搭建DHCP服务器 下篇帖子: Rootkit之ntrootkit的配置使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表