iptables的用法

功能
    过滤数据包
    地址转换
    端口转换
    QoS

硬件防火墙
软件防火墙

节点
数据包流向
    目标地址就是防火墙
    源地址就是防火墙
    经过防火墙

iptables的结构
    1.表(-t)处理顺序由高到低
        raw表:做链接跟踪(OUTPUT,PREROUTING)
        mangle表:给数据做标记,实现QoS功能(INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING)
        nat表:实现地址转换(源地址转换,目标地址转换,端口转换)(PREROUTING,POSTROUTING,OUTPUT)
        filter表:实现数据包过滤功能(INPUT,OUTPUT,FORWARD)
    2.链---描述数据的流向
    INPUT:处理进入防火墙的数据包(目标地址是防火墙)
    OUTPUT:处理从防火墙出去的数据包(源地址是防火墙的数据包)
    FORWARD:处理由防火墙转发的数据包
    PREEOUTING:进行目标地址转换(在路由前处理)
    POSTROUTING:进行源地址转换(在路由后处理)

iptables的基本语法
    iptables -t 表名 操作命令 链名 匹配规则 -j 跳转处理方法
    例:设置服务器拒绝源地址为172.16.0.220进行ping测试
    iptables -t filter -A INPUT -s 172.16.0.220 -p icmp -j DROP

例:设置服务器只允许源地址为172.16.0.220进行ping测试(先拒绝,后允许)
    # iptables -t filter -P INPUT DROP
    # iptables -t filter -A -s 172.16.0.220 -p icmp -j ACCEPT

iptables的操作命令
-A    添加规则
-D    删除规则
-R    替换规则
-N    新建规则链
-L    列出防火墙规则
-I    插入规则
-F    清空标准规则链
-Z    计算器清零
-X    删除自定义链
-P    设置默认规则
-E    重命名规则链

常见匹配项
-s    指定源地址
-d    指定目标地址
--sport    指定源端口
--dport    指定目标端口
-p    指定协议
-i    指定进入的网卡
-o    指定出去的网卡

跳转处理方法
ACCEPT    允许通过
DROP    丢弃数据包
REJECT    退回数据包
SNAT    源地址转换
DNAT    目标地址转换
MASQUERADE    自动匹配地址masquerade
REDIRECT    端口重定向

保存防火墙设置
service iptables save  将防火前辈个规则保存到/etc/sysconfig/iptables
iptables-save > /iptables  把设置重定向到某个文件
iptables-restore < /iptables  从某个文件恢复防火墙设置

练习:设置服务器防火墙只允许172.16.0.0/16的地址段进ping测试,ftp连接,ssh连接,所有其它的访问全部拒绝

设置服务器的防火墙,要求满足如下要求
1.允许任何地址进行web访问
2.只允许从172.16.0.220进行ssh连接
3.允许从172.16.0.0/16进行ping连通性测试
4.允许本机环回地址进行通信
5.决绝其他任何地址访问

iptables扩展
1.多端口扩展
-m multiport --dport 20,21,22
2.状态扩展
NEW,ESTABLISHED,INVALID(无效连接),RELATED(关联连接)
UNTRACKED(不进行跟踪)
-m state  --state NEW
建立关联连接时,要建立数据跟踪(加载跟踪模块)
modprobe nf_conntrack_ftp
modprobe -l | grep XXX

3.多地址匹配
-m iprange --src-range 172.16.0.100-172.16.0.200

练习:设置你的服务器拒绝10.0.0.x--->10.0.0.y之间的地址进行ping,x和y的差值在10之间

4.tcp标记扩展
--tcp-flags syn,ack,fin(同时检查) syn(只有它为1)

5.时间扩展
--timestart 08:30:00
--timestop  17:30:00
--datestart 2015/06/01
--datestop 2015/06/30
--monthdays 1,20
--weekdays 1,2,3,4,5

6.字符匹配扩展
-m string
-m string --algo(指定算法) kmp --string "sex" -j DROP

7.limit限制扩展
-m limit --limit 5/s(每秒5个包) --limit-burst 8(最大并发包) --- 当出现最大并发时,会用后续的时间进行补偿

8.nat表实现地址转换
#iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -j SNAT --to-source 192.168.1.201
#iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.0/16 -j MASQUERADE
#iptables -t nat -A PREROUTING -s 172.16.0.0/16 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -d 10.0.0.10(目的网关) -p tcp --dport 80 -j DNAT --to-destination 192.168.10.100

nat表的转换信息
cat /proc/net/nf_conntrack
/proc/sys/net/nf_conntrack_max
/proc/sys/net/netfilter/

9.raw表的连接控制跟踪
# iptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK(不跟踪)
#iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
#iptables -t filter -A INPUT -m state --state --state ESTABLISHED,RELATED,UNTRACKED -j ACCEPT

10.使用mangle表给数据包加标记
策略路由:根据不同的情况,选择不同的网关(如,选择电信还是联通)
#iptables -t mangle -A FORWARD -m iprange --srcrange 192.168.10.1-192.168.10.100 -p tcp --dport 80 -j MARK --set-mark 10
添加策略路由
#ip rule add from all fwmark 10 table 10
#ip route add default via 10.0.0.10 dev eth0 table 10

#iptables -t mangle -A FORWARD -m iprange --srcrange 192.168.10.1-192.168.10.100 -p tcp --dport 80 -j MARK --set-mark 20
添加策略路由
#ip rule add from all fwmark 20 table 20
#ip route add default via 10.0.0.20 dev eth0 table 20

实验:
    1.使用一台机器做服务器,包括WEB服务和FTP服务
    2.要求这台服务器能够正常上网,但是对访问本机的WEB服务和FTP服务不进行连接跟踪
    3.要求能进行ping测试和ssh连接,除此以外拒绝所有其他访问
    4.允许回环地址进行网络测试

iptables -A INPUT -p tcp -m multiport --dport 21,22,80 -j ACCEPT
iptables -t raw -A OUTPUT -p tcp -m multiport --sport 21,80 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED,UNTRACKED -j NOTRACK
iptables -t raw -A PREROUTING -p tcp -m multiport --dport 21,80 -j NOTRACK
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED,UNTRACKED -j ACCEPT
iptables -A INPUT  -p icmp -j ACCEPT
iptables -P INPUT DROP

时间: 2024-10-08 18:03:59

iptables的用法的相关文章

Linux中iptables的用法

1 iptables iptables命令用于创建数据过滤与NAT规则,在iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个链. 1.1 iptables的控制类型 ACCEPT:允许通过 LOG:记录日志信息,然后传给下一条规则继续匹配. REJECT:拒绝通过,必要时给出提示. DROP:直接丢弃,不给出任何回应. 1.2 规则链 规则链依据处理数据包的位置不同而进行分类 PREROUTING:在进行路由选择前处理数据包. INPUT:处理入站的数据包. OUT

实现vsftp虚拟用户和iptables基本用法

1.搭建vsftpd服务器 1.安装vsftpd服务 [root@centos7 ~]#yum install -y vsftpd 2.启动服务 [root@centos7 ~]#systemctl start vsftpd [root@centos7 ~]#ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* LISTEN 0 5 192.168.122.1:53 *:*

防火墙及netfilter基础iptables基本用法

iptables firewall: 主机防火墙 网络防火墙 工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件. 网络防火墙: 专业的硬件防火墙: checkpoint,netscreen 主机: iptables: 程序 iptables:规则编写工具 netfilter: 网络过滤器, 内核中工作在TCP/IP网络协议栈上的框架: IDS:IntrusionDetecting System NIDS HIDS IPS:Intru

iptables的用法【笔记】

语法:iptables [-t table] {-A|-C|-D} chain rule-specification -t可用来指定表,默认为filter表,可用选项有: filter 默认使用的表,书写规划时,可不用指定,针对链INPUT,FORWARD,OUTPUT链有效 nat  主要用于做SNAT(源地址转换),DNAT(目标地址转换),针对链   PREROUTING,POSTROUTING和OUTPUT链,SNAT主要用于POSTROUTING,DNAT主要用于PREROUTING

转:db2 iptables相关用法(2)

Centos 6 iptables 配置 Ben 2011/12/24 [[email protected] ben.liu]# service iptables status Table: filter Chain INPUT (policy ACCEPT) num  target     prot opt source               destination 1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0      

转:db2 iptables相关用法

如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [[email protected] ~]# iptables -L -nChain INPUT (policy ACCEPT)target       prot opt source                 destination Chain FORWARD (policy ACCEPT)target       prot opt s

全面解析rhel6-防火墙iptables -- 基本用法

规则链解析链的用途:存放一条条防火墙规则链的分类依据:处理数据包的不同时机默认包括5种规则链 INPUT:处理入站数据包OUTPUT:处理出战数据包FORWARD:处理转发的数据包POSTROUTING:路由选择之后的处理PREROUTING:路由选择之前处理 表的用户:存放不通的规则链表的分类依据:防火墙规则的作用相似 raw表:确认是否对数据包进行状态跟踪mangle表:为数据包设置表及nat表:修改数据包的源/目标地址或端口filter表:确定是否放行该数据包 规则表之间的顺序 raw->

iptables设置用法

1.安装iptables防火墙 怎么知道系统是否安装了iptables?执行一下iptables -V,如果现实版本信息那说明已经安装了. 反之则需要安装,执行命令: yum install iptables 在linux中设置防火墙,以CentOS为例,打开iptables的配置文件: vim /etc/sysconfig/iptables 通过 /etc/init.d/iptables status 命令查询是否有打开80端口,如果没有可通过两种方式处理 1.修改vim /etc/sysco

vsftp基于mysql的虚拟用户,iptables的用法

vsftp基于mysql创建虚拟用户 1.首先安装环境 yum groupinstall -y "Development Tools" "Server PlatformDevelopment" yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp 下载最新的pam-mysql http://pam-mysql.sourceforge.net/ 编译安装pam-mysql tar x