Iptables防火墙
1 位置
使用vim /usr/sysconfig/iptables
2 启动、关闭、保存
- service iptables stop
- service iptables start
- service iptables restart
- service iptables save
3 结构
iptables –> tables –> chains –>rules
3.1 iptables的表与链
iptables具有Filter,NAT,Mangle,Raw四种内建表
3.1.1 Filter表
filter表示iptables的默认表,它具有三种内建链:
- input chain - 处理来之外部的数据
- output chain - 处理向外发送的数据
forward chain- 将数据转发到本机的其它网卡上
3.1.2 NAT表
NAT有三种内建的链:
- prerouting - 处理刚到达本机并在路由转发前的数据包,它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
- postrouting - 处理即将离开本机数据包,它会转换数据包中的源目标IP地址(source ip address),通常SNAT(source NAT)
- output - 处理本机产生的数据包
3.1.3 Mangle表
Mangle表用于指定如何处理数据包,它能改变TCP头中的Qos位,Mangle表具有5个内建链
- prerouting
- output
- forward
- input
- postrouting
3.1.4 Raw表
raw表用户处理异常,它具有2个内建链
- prerouting chain
- output chain
3.2 Iptables规则(Rules)
- rules包括一个条件和一个目标(target)
- 如果满足条件就执行目标target中规则或者特定值
- 如果不满足条件,就判断下一条Rules
3.2.1 目标值
- accept - 允许防火墙接收数据包
- drop - 防火墙丢弃数据包
- queue - 防火墙将数据包移交到用户空间
- return - 防火墙停止执行当前链中的后续rules规则,并返回到调用链(the calling chain)
4 命令
#iptables -t filter -L 查看filter表
#iptables -t nat -L 查看nat表
#iptables -t mangel -L 查看mangel表
#iptables -t raw -L 查看Raw表
例如 以下例子表明在filter表的input链, forward链, output链中存在规则:
# iptables --list
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT)
num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
字段说明
num:编号
target:目标
prot:协议
source:数据包的源IP地址
destination:数据包的目标地址
4.1 清空所有的规则
#iptables –flush
4.2 追加命令
iptables -A命令追加新规则,其中-A表示append,一般而言最后一条规则用于丢弃(drop)所有数据包,并且使用-A参数添加新规则,那么就是无用的。
4.2.1 语法
iptables –A chain firewall-rule
- -A chain 指定要追加的规则的链
- firewall-rule 具体规则的参数
4.2.2 基本参数
用于描述数据包的协议,源地址、目的地址、允许经过的网络接口,以及如何处理这些数据包。
- 协议 –p (protocol)
如tcp,udp,icmp等,可以使用all来指定所有协议不指定-p参数,默认值是all,
可以使用协议名(tcp,udp),或者协议值(6代表tcp),映射关系可以查看/etc/protocols
- 源地址 –s (source)
指定数据包的源地址,参数可以使用IP地址、网络地址、主机名,不指定-s参数,就是代表所有地址。例如:-s 192.168.1.101 具体的IP地址
例如:-s 192.168.1.10/24 指定网络地址
- 目的地址 –d (destination)
指定目的地址,参数和-s相同 - 执行目标 –j (jump to target)
-j代表了当与规则(Rule)匹配时如何处理数据包,可能的值是accept、drop、queue、return,还可以指定其他链(chain)作为目标 - 输入接口 –i (input interface)
指定了要处理来自哪个接口的数据包,这些数据包进入input、forward、prepoute链,不指定将处理进入所有接口的数据包例如:-i eth0 指定了要处理eth0进入的数据
可以取反 !-i eth0,指eth0以外。
可以匹配 -i eth+ 指以eth开头的
- 输出接口 –o (out interface)
数据包有那个接口输出,类似于 –i - 源端口 –sport
例如 –sport 22例如 –sport 22:100指定端口范围
- 目的端口 –dport
类似于-sport - TCP标志
- ICMP类型
5 实例分析
例如:接收目标端口为22的数据包
iptables –A INPUT –i etho –p tcp –dprot 22 –j ACCEPT
例如:拒绝所有其他数据包
iptables –A INPUT –j DROP
6 修改默认策略
上例仅对接收的数据包进行过滤,而对于要发出的数据包却没有任何限制。
使用iptables –L查看防火墙配置时,发现所有的链旁边都有(policy ACCEPT)标注,这表明当前链的默认策略为ACCEPT
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP all -- anywhere anywhere Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这种情况下,如果没有明确添加DROP规则,那么默认情况下采用ACCEPT策略进行过滤。
6.1 添加DROP规则
iptables –A INPUT –j DROP
iptables –A OUTPUT –j DROP
iptables –A FORWARD –j DROP
6.2 SSH
允许接收远程主机的SSH请求
iptables –A INPUT –i eth0 –p tcp –dport 22 –m state --state NEW,ESTABLISHED –j ACCEPT
允许发送本地主机的SSH响应
iptables –A OUTPUT –o eth0 –p tcp –sport 22 –m state --state ESTABLISHED –j ACCEPT
注意这几个参数
- -m state:启用状态匹配模块(state matching module)
- -- state:状态匹配模块的参数,当ssh客户端第一个数据包到达服务器时,状态字段为NEW,建立连接后数据包的状态字段都是ESTABLISHED
6.3 HTTP
允许接收远程主机的http请求
iptables –A INPUT –i eth0 –p tcp --dport 80 –m state --state NEW ,ESTABLISHED –j ACCPET
允许发送本地主机的Http响应
iptables –A OUTPUT –i eth0 –p tcp -- sport 80 –m state --state ESTABLISHED -j ACCPET
6.4 完成的配置步骤
6.4.1 删除现有的规则
iptables -F
6.4.2 配置默认策略
iptables –P INPUT DROP iptables –P FORWARD DROP iptables –P OUTPUT DROP
6.4.3 允许远程主机进行SSH连接
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
6.4.4 允许本地主机进行SSH连接
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
6.4.5允许http请求
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
Iptables防火墙的更多相关文章
- CentOS系统配置 iptables防火墙
阿里云CentOS系统配置iptables防火墙 虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...
- 关闭SELinux和iptables防火墙
1.关闭SELinux: 编辑SELinux配置文件: [root@Redis selinux]# vim /etc/selinux/config 修改SELINUX配置项为disable SELIN ...
- CentOS 7.0,启用iptables防火墙
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...
- 编译内核实现iptables防火墙layer7应用层过滤 (三)
在前面的两篇文章中我们主要讲解了Linux防火墙iptables的原理及配置规则,想博友们也都知道iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以 ...
- [CentOs7]iptables防火墙安装与设置
摘要 CentOS 7.0默认使用的是firewall作为防火墙,如果改为iptables防火墙,如何操作? 关闭firewall: systemctl stop firewalld.service ...
- iptables防火墙作为基本需求的配置
企业中使用iptables防火墙:(一般不要在命令中输入规则) # Firewall configuration written by system-config-firewall# Manual c ...
- [moka同学摘录]iptables防火墙规则的添加、删除、修改、保存
文章来源:http://www.splaybow.com/post/iptables-rule-add-delete-modify-save.html 本文介绍iptables这个Linux下最强大的 ...
- linux 的iptables防火墙
.a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A ???.a看到的 symbolic符合名称都是 相应的, 包含的 .o文件.... linux 2.4内核中 ...
- 使用iptables防火墙限制web的访问PV
使用iptables防火墙限制web的访问PV #!/bin/bash while true;do awk '{print $1}' /tmp/test/access.log| grep -v &qu ...
- Netfilter/iptables防火墙
http://os.51cto.com/art/201107/273443.htm [51CTO独家特稿]Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免 ...
随机推荐
- 当session过期后自动跳转到登陆页而且会跳出iframe框架
写项目时在重定向后一直存在一个问题就是重定向后登陆页面会出现在跳出的子框架里.
- zju(6)中断控制实验
1.实验目的 1.学习和掌握Linux下中断驱动的写法: 二.实验内容 1.编写EduKit-IV实验箱Linux操作系统下按键key的驱动: 2.编写EduKit-IV实验箱Linux操作系统下按键 ...
- 实时输出TextField中内容
要想实时输出TextField中内容,要找到textField内容发现改变就会调用的函数,即 - (BOOL)textField:(UITextField *)textField shouldChan ...
- php实现实现代码多主从,切换,轮询,健康检查
现在很多框架现在都提供数据库读写分离,比如CI,TP,YII,一般使用正则表达书判断sql语句是读操作,还是写操作,但是有个缺点,没有给用主动判断,比如写入操作必须去立即读取主数据库的,如果不能立即判 ...
- ThinkPHP 3.2.3 视图模型的使用
ThinkPHP 3.2.3 试图模型的手册地址是:http://www.kancloud.cn/manual/thinkphp/1781 实例 需求:在博客列表页读取博客的(id.标题.摘要.发布时 ...
- Masonry学习分享
不完整目录 •UIScrollView 应用Masonry的正确用法 •tableHeaderView使用Masonry •同向文字显示优先级 1.基础篇 1.1基础使用 1.1.1运行效果 1.1. ...
- sql cross join table
A 表数据如下图所示 B表数据如下图所示
- centos7 systemctl命令
systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 实例: 启动nfs服务:systemctl start nfs-server.s ...
- Python基础一. 简介、变量、对象及引用
一.Python简介 Python是一门计算机编程语言,它是由荷兰人Guido van Rossum在1989年圣诞节期间为了打发无聊的圣诞节而编写的,作为ABC语言的继承 特性: 面向对象.解释型. ...
- MVC强类型视图、强类型HTML辅助方法
强类型视图: <table> <tr> <td>ID:</td><td><%: Model.Id %></td> & ...