您的位置:首页 > 运维架构 > Linux

Linux防火墙规则-Iptables

2020-01-15 12:04 691 查看

Iptables规则

iptables防火墙

一、防火墙的功能

1、过滤数据包

2、进行地址转换

3、实现QoS功能

4.链接跟踪

二、iptables的结构

1、表(-t)

raw表:做链接跟踪(OUTPUT,PREROUTING)

filter表:实现数据包过滤功能(INPUT,OUTPUT,FORWARD)

nat表:实现地址转换(源地址转换、目标地址转换、端口转换)(PREROUTING,POSTROUTING,OUTPUT) prerouting postrouting

mangle表:给数据做标记,实现QoS功能(INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING)

2、链

INPUT:处理进入防火墙的数据包(目标地址是防火墙)

OUTPUT:处理从防火墙出去的数据包(源地址是防火墙的数据包)

FORWARD:处理由防火墙转发的数据包

PREROUTING:进行目标地址转换(在路由前处理)

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 -P INPUT DROP

# iptables -A INPUT -s 172.16.0.220 -p icmp -j ACCEPT

# iptables -A INPUT -s 0.0.0.0/0 -p icmp -j DROP

3、iptables的操作命令

-A 添加规则

-D 删除规则

-R 替换规则

-N 新建规则链

-L 列出防火墙规则

-I 插入规则

-F 清空标准规则链

-X 删除自定义链

-Z 计数器清零

-P 设置默认规则

-E 重命名规则链

例:设置允许环回地址127.0.0.1进行所有的数据通信

设置允许172.16.0.254进行ssh链接

设置进入防火墙数据包的默认规则为DROP

在第二条规则的前面插入一条规则,允许进行web访问

# iptables -P INPUT DROP

# iptables -t filter -A INPUT -s 127.0.0.1 -j ACCEPT

# iptables -A INPUT -s 172.16.0.254 -p tcp --dport 22 -j ACCEPT

# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT

4、常见匹配项

-s 指定源地址

-d 指定目标地址

--sport 指定源端口

--dport 指定目标端口

-p 指定协议

-i 指定进入的网卡

-o 指定出去的网卡

5、跳转处理方法

ACCEPT 允许通过

DROP 丢弃数据包

REJECT 退回数据包

SNAT 源地址转换

DNAT 目标地址转换

MASQUERADE 自动匹配地址

REDIRECT 端口重定向

例:设置服务器拒绝从接口eth0、源地址为172.16.0.220进行web连接

# iptables -A INPUT -i eth0 -s 172.16.0.220 -p tcp --dport 80 -j DROP

6、保存防火墙设置

# service iptables save \\将防火墙规则保存到/etc/sysconfig/iptables

# iptables-save > /iptables/server \\保存防火墙到指定的文件

# iptables-restore < /iptables/server \\从指定的文件中恢复防火墙

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

# iptables -F

# iptables -Z

# iptables -A INPUT -s 127.0.0.1 -j ACCEPT

# iptables -A INPUT -s 172.16.0.0/16 -p icmp -j ACCEPT

# iptables -A INPUT -s 172.16.0.0/16 -p tcp --dport 20:22 -j ACCEPT 或者

# iptables -A INPUT -s 172.16.0.0/16 -p tcp -m multiport --dport 20,21,22 -j ACCEPT

# iptables -P INPUT DROP

练习:设置服务器的防火墙,要求满足如下要求

(1)、允许任何地址进行web访问

# iptables -t filter -A INPUT 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT

(2)、只允许从172.16.0.220进行ssh连接

# iptables -t filter -A INPUT 172.16.0.220 -p tcp --dport 22 -j ACCEPT

(3)、允许从172.16.0.0/16进行ping连通性测试

#iptables -t filter -A INPUT 172.16.0.0/16 -p icmp -j ACCEPT

(4)、允许本机环回地址进行通信

#iptables -t filter -A INPUT 127.0.0.1 -j ACCEPT

(5)、拒绝其它任何地址访问

#iptables -t filter -A INPUT 0.0.0.0/0 -j DROP

7、iptables扩展

(1)多端口扩展

-m multiport --dport 23,25,80

(2)状态扩展

NEW,ESTABLISHED,INVALID,RELATED

-m state --state NEW

(3)多地址匹配

-m iprange --src-range 172.16.0.100-172.16.0.200

-m iprange --dst-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

(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 --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.10.10 -p tcp --dport 80 -j DNAT 192.168.10.100

/proc/net/nf_conntrack 连接跟踪表

9、raw表控制连接跟踪

# iptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK

# iptables -t raw -A PREROUTING -m tcp --dport 80 -j NOTRACK

# iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED,UNTRACKED -j ACCEPT

10、使用mangle表给数据包加标记(实现策略路由)

# iptables -t mangle -A FORWARD -m iprange --src-range 192.168.10.1-192.168.10.100 -p tcp -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 --src-range 192.168.10.101-192.168.10.200 -p tcp -j MARK --set-mark 20

# ip rule add from all fwmark 20 table 20

# ip route add default via 10.0.10.10 dev eth0 table 20

实验:

(1)使用一台机器做服务器,包括web服务和ftp服务

(2)要求这台服务器能够正常上网

(3)但是对访问本机的web服务和ftp服务不进行连接跟踪

(4)允许 环回地址进行网络测试

(5)要求能进行ping测试和ssh连接,除此以外拒绝所有其它访问

# service httpd start

# service vsftpd start

# iptables -P INPUT DROP

# iptables -A INPUT -s 127.0.0.1 -j ACCEPT

# iptables -A INPUT -p icmp -j ACCEPT

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# iptables -t raw -A PREROUTING -p tcp -m multiport --dport 21,80 -j NOTRACK

# iptables -t raw -A OUTPUT -p tcp -m multiport --sport 21,80 -j NOTRACK

# iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED,UNTRACKED -j ACCEPT

 

  • 点赞
  • 收藏
  • 分享
  • 文章举报
小志1989 发布了38 篇原创文章 · 获赞 3 · 访问量 846 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: