iptables防火墙相关知识

网络基础
TCP/IP模型:

应用层=传输层=网络层=数据链里层=物理层

数据封装:

MAC帧头+IP报头+TCP/UDP报头===HTTP请求

数据帧

TCP/UDP报头:

随机产生一个大于1024的端口

目的端口:80

IP报头:

源IP地址

目的IP地址

MAC帧头:

源MAC地址

目的MAC地址

端口号Port:
  作用:标识不同应用程序

数字:0—65535,小于1024端口为著名端口

常用端口:

  • View Code
    ARP-----Address Resolution Protocol 地址解析协议

作用:根据已知的IP地址获取对应的MAC地址

Linux iptables 
  作用:

进行数据过滤:入方向,出方向,转发穿过服务器的

为数据打标记

网络地址转换

Linux防火墙

内核集成的模块netfilter

iptables工具:实现添加,删除,修改,查看防火墙规则

钩子函数,用来钩数据的

input:处理进来的数据

output:处理出去的数据

forward:处理转发的数据

prerouting:截获路由前的操作,数据处理没进网卡前

postrouting:截获路由后的操作,数据处理完了,从网卡流出去后

五条链

存规则的:INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

iptables四表:

filter(实现实现数据过滤):INPUT,OUTPUT,FORWARD

nat (实现实现网络地址转换,换ip的):PREROUTING,OUTPUT,POSTROUTING

mangle(为数据打标记):INPUT,FORWARD,OUTPUT,PREROUTING,POSTROUTING

raw(数据跟踪的)PREROUTING,OUTPUT

iptables工具的使用

iptales

命令command

查看类:

-L:显示指定表中得规则

-n:以数字的格式显示IP及端口号

-v:显示规则相关的详细信息

-x:显示计数器显示精确的数字

–line-numbers:显示规则的号码

-t:

:指定表名,默认为filter表

iptables -nL --line-numbers -v

管理规则
1)添加规则

-A:追加一条规则,添加到链的尾部

-I CHAI【number】:插入一条规则,插入为CHAIN的第number条;number不写表示插入到第一条。-I INPUT

2)删除规则

-D CHAIN【number】:删除指定链的第number条规则

3)修改规则

-R CHAIN【number】:替换指定的规则

4)清空所有规则

-F CHAIN

5)修改链的默认规则

-P CHAIN <处理方法>

规则的匹配标准
1)源IP地址

-s address

! -s 192.168.1.1

-s 192.168.1.0/24

2)目的IP地址

-d address

!-d 10.1.1.1

-d 10.1.1.0/24

3)协议

-p tcp -sport port1[:port2]

-p tcp --dport port1[:port2]

-p udp --sport port1[:port2]

-p udp --dport port1[:port2]

-p icmp

–icmp-type 8 echo-request

–icmp-type 0  echo-reply

4)匹配数据包进行的网卡接口

-i eth0

5)匹配数据包流出的网卡接口

-o eth1

数据包的处理行为 -j target

ACCEPT  允许

REJECT  拒绝

DROP   丢弃

LOG    记录日志

先堵后通

主机IP是192.168.150.163d

实例1:允许客户端访问SSH服务 -P(修改某一条链的默认规则)

[root@node1 ~]# iptables -P INPUT DROP
[root@node1 ~]# iptables -P OUTPUT DROP
[root@node1 ~]# iptables -P FORWARD DROP

[root@node1 ~]# iptables -A INPUT -s 192.168.122.1 -d 192.168.122.135 -p tcp --dport 22 -j ACCEPT
[root@node1 ~]# iptables -A OUTPUT -s 192.168.122.135 -d 192.168.122.1 -p tcp --sport 22 -j ACCEPT

实例2:允许所有客户端访问web服务器

[root@node1 ~]# iptables -I INPUT -d 192.168.122.135 -p tcp --dport 80 -j ACCEPT
[root@node1 ~]# iptables -I OUTPUT -s 192.168.122.135 -p tcp --sport 80 -j ACCEPT

实例3:允许客户端10.1.2.101 ping服务器

[root@node1 ~]# iptables -A INPUT -s 192.168.122.1 -d 192.168.122.135 -p icmp --icmp-type 8 -j ACCEPT
[root@node1 ~]# iptables -A OUTPUT -s 192.168.122.135 -d 192.168.122.1 -p icmp --icmp-type 0 -j ACCEPT

实例4:允许服务器ping其他主机

[root@node1 ~]# iptables -A OUTPUT -s 192.168.122.135 -p icmp --icmp-type 8 -j ACCEPT
[root@node1 ~]# iptables -A INPUT -d 192.168.122.1 -p icmp --icmp-type 0 -j ACCEPT

实例5:允许服务器ping本机

[root@node1~]# iptables -A INPUT -i lo -j ACCEPT

[root@node1~]# iptables -A OUTPUT -o lo ACCEPT

实例6:允许DNS服务器解析所有主机名

[root@node1~]# iptables -A INPUT -d 192.168.122.135 -p udp --dport 53 -j ACCEPT

[root@node1~]# iptables -A OUTPUT -s 192.168.122.135 -p udp --sport 53 -j ACCEPT

[root@node1~]# iptables -A INPUT -s 192.168.122.135 -p udp --dport 53 -j ACCEPT

[root@node1~]# iptables -A INPUT -d 192.168.122.135 -p udp --sport 53 -j ACCEPT

[root@node1~]# iptables -A INPUT -d 192.168.122.135 -p tcp --dport 53 -j ACCEPT

[root@node1~]# iptables -A OUTPUT -s 192.168.122.135 -p tcp -sport 53 -j ACCEPT

[root@node1~]# iptables -A INPUT -s 192.168.122.135 -p tcp --dport 53 -j ACCEPT

[root@node1~]# iptables -A OUTPUT -d 192.168.122.135 -p tcp --sport 53 -j ACCEPT

保存防火墙规则

Centos 6:

[root@node1~]# service iptables save

iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]

Centos 7:

[root@node1~]# iptables-save > /iptables.rule

恢复规则

[root@node1~]# iptables-restore < /iptables.rule

实例7:删除规则

[root@node1~]# iptables -D INPUT 3

实例8:修改规则

[root@node1~]# iptables -R INPUT 7 -d 192.168.122.135 -p icmp --icmp-type 0 -j ACCEPT

iptables模块
1、multiport 离散多端口

-m multiport

–sports port1,port2,port3

–dports port1,port2,port3

[root@node01 ~]# iptables -I INPUT -s 192.168.122.1 -d 192.168.122.135 -p tcp -m multiport --dports 80,139,445,22 -j ACCEPT

2、iprange

-m iprange

–src-range IP1[-IP2] 连续写多个连续的源ip

–dst-range IP1[-IP2] 连续写多个连续的目的ip

[root@node01 ~]# iptables -A INPUT -m iprange --src-range 192.168.1.1-192.168.1.10 -d 192.168.122.135 -p tcp --dport 80 -j ACCEPT

常说的加入白名单

3、state 状态,用连接的状态进行数据过滤

-m state --state <状态> 决定什么样状态接收,什么样状态拒绝,像ftp根据端口放行就很麻烦,使用-m state --state模块就简单很多

state状态:

NEW状态

针对某个服务的首次访问

ESTABLISHED状态

1、某服务的后续所有访问状态

2、表示服务器的响应数据

RELATED状态

相关联的连接,给ftp用的。比如ftp服务器,只有命令连接完成,才能进行建立数据连接

ftp两种工作模式

主动连接:

20/tcp:数据连接

21/tcp:命令连接

当客户端向服务端通过21端口建立命令连接,命令连接就是传输命令的,像get,put等,命令连接创建好后会通过20号端口主动向客户端建立数据连接

被动连接:

当客户端访问ftp服务器时候,通过21号端口建立命令连接后,ftp服务器会在本地随机产生一个大于1024的随机端口,完了告诉客户端,客户端在通过那个随机端口建立数据连接

INVALID状态

无效的连接

1、就不用每条都写OUTPUT的规则了,有一条ESTABLISHED就能全部能出去(响应)OUTPUT

[root@node01 ~]# iptables -I OUTPUT -s 192.168.122.135 -m state --state ESTABLISHED -j ACCEPT

2、保证首次访问和后续的所有访问都可以正常

[root@node01 ~]# iptables -I INPUT -d 192.168.122.135 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@node01 ~]# iptables -I INPUT -d 192.168.122.135 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

实例:允许ftp服务的访问

首先要卸载ip_nat_ftp和ip_conntrack_ftp

[root@node01 ~]# yum install -y iptables-services

vim /etc/sysconfig/iptables-config

IPTABLES_MODULES=“ip_nat_ftp ip_conntrack_ftp”

systemctl restart iptables

[root@node01 ~]# iptables -I INPUT -d 192.168.122.135 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@node01 ~]# iptables -I INPUT 2 -d 192.168.122.135 -m state --state RELATED,ESTABLISHED -j ACCEPT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值