.默认的四张表

1.filter:用于防火墙,默认有INPUT/OUTPUT/FORWARD三条链

2.nat:网络地址转换,PREROUTING/POSTROUTING/OUTPUT 三条链

3.mangle:流量×××,五条链

4.raw:确定是否对数据包进行状态跟踪

 

二.默认的五条规则链

1.INPUT:如果一个数据包的目的地址是LINUX本身,则进入INPUT

2.OUTPUT:源地址是LINUX本身

3.FORWARD:数据包从一块网卡接收,从另一块网卡发出,经过LINUX的包,进入这条链

4..PREROUTING路由前

5.POSTROUTING路由后

 

.编写规则

  类别       选项         用途

添加规则       -A        在链的末尾追加一条规则

              -I        在链的开头(或指定序号)插入一条规则

查看规则       -L      列出所有的规则条目

              -n        以数字形式显示地址,端口等信息

          --line-numbers    查看规则时,显示规则的序号

删除规则       -D        删除链内指定序号(或内容)的一条规则

              -F        清空所有规则

默认策略       -P        为指定的链设置默认规则

 

 

 

 

ACCEPT:允许通行/放行

DROP:直接丢弃,不给出任何回应

REJECT:拒绝通过,必要时会给出提示

LOG:记录日志,然后传给下一条规则

 

 

工具程序位置

-         /sbin/iptables

指令组成

- [ -t 表名 ] 选项 [ 链名 ] [ 链名 ] [ 条件 ] [  -j 目标操作 ]

 

Iptables –nL //查看规则,以数字形式显示

Iptables –t filter –L  //可直接写iptalbes –L  filter

Iptables –F   //清除规则

Iptables –L

Iptables –P INPUT DROP  //DROP 丢弃,不允许访问

Iptables –A INPUT –p tcp –dport 80 –jACCEPT   //追加tcp 80 端口 ACCEPT允许 –J跳转

Iptables –A INPUT –p tcp –dport 443 –jACCEPT

Iptables –A INPUT –s 192.168.10.3 –p tcp –-dport80 –j ACCEPT   //-s

Iptables –I INPUT 3 –S 192.168.1.1 –p –tcp  --doport 80 –j ACCERT 在第三行插入

Iptables –nL --line-numbers    //显示规则的序列号

Iptables –D INPUT 3 //删除第3排的规则

# watch –n 1 iptables –nvL //每隔一少钟刷新后面的命令

 

 

1.拒绝ping防火墙本身

# iptables -F

# iptables –A INPUT –p icmp –j DROP

2.ping linux IP地址

3.把防火墙规则再清空,把拒绝ICMP的目标规则改为REJECT,再次ping测试,看结果,

4.查看防火墙规则

#iptables –nvl

5.允许指定ip地址的主机ping防火墙

# iptables –I INPUT 1 –s 192.168.1.1 –picmp –j ACCEPT

6.查看防火墙规则,每个规则注说序号

# iptables –nL –-line-numbers

7.删除防火墙的INPUT链中第二条规则

# iptables –D INPUT 2

8.OUTPUT的默认规则改为DROP

# iptables –P OUTPUT DROP

9.清空OUTPUT这条规刚

# iptables –F OUTPUT

10.iptables –nvL  //匹配的条数

 

 

四,规则的基本匹配条件

       类别                     选项                                   用法

                            协义匹配                            -P协义名

通用匹配        地址匹配                            -s     源地址  -d  目标地址

                            接口匹配                            -i   收数据的网卡  -o  发数据的网卡

             

                            端口匹配                            --sport源端口  --dport 目标端口

隐含匹配              ICMP类型匹配                   --icmp-type    ICMP类型

                            TCP标记匹配                     --tcp-flags检查哪些位 哪些位被设置

 

 

1.      允许特定ip地址访问LINUX telnet服务

1# yum –y install telnet-server

 #service xinetd start

 #chkconfig telnet on

(2) # iptables –P INPUT DROP

(3) #iptables –A INPUT –s 192.168.1.1 –p tcp –-dport 23 –j ACCEPT

2.继续第一步,向INPUT链插入规则,第一条,从eth0网卡收到的、访问telnet服务的数据包,拒绝

# iptables –I INPUT –i eth0 p tcp –dport 23–j REJECT

 

.打开LINUX的路由功能(转发功能)

IS:中间系统路由器

ES:终端系统,主机系统

1.      临时打开路由功能

# echo 1 > /proc/sys/net/ipv4/ip_forward

# cat /proc/sys/net/ipv4/ip_ forward

 

2.      永久打开转发功能

# echo `echo 1 > /proc/sys/net/ipv4/ip_forward` >>/etc/rc.local

# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

:wq

Sysctl –q //马上生效

 

六.使用FORWARD

 

主机1                                 主机2                                 主机3

Eth0:192.1681.1                                                     eth0:192.168.2.1

                                Eth0:192.168.1.2

                                   Eth0:192.168.2.2

3.      拒绝192.168.195.0//24 网段访问192.168.194.024网段的telnet服务

4.      # iptables –A FORWARD –s192.168.195.0/24 –d 192.168.2.0/24 –p tcp –doprt 23 –i eth1 -0 eth0 –j REJECT

 

2.      拒绝SSH协议通过防火墙

3.      iptables –A FORWARD –p tcp –dport22 –j REJECT

4.      不是192.168.195.0/24 网段的主机访问SSH服务,可通过

# iptables –I FORWARD ! –s 192.168.195.0/24–p tcp –dport 22 –j ACCEPT

 

5.      防火墙拒绝icmp的请求

# iptables –A INPUT –p icmp –-icmp-typeecho-request –j REJECT .

 

6.      允许192.168.195.0/24网段进行PING

# iptables –I INPUT –s 192.168.195.0/24 –picpm –-icmp-type echo-request –j ACCEPT

 

7.      防火墙拒绝发送echo-reply

# iptables –A OUTPUT –p icmp –-icmp-typeecho-reply –j REJECT

 

8.      允许防火墙回应192.168.195.0/24网段的ping

# iptables –I OUTPUT –s 192.168.195.0/24 –picmp –icmp-type echo-reply –j ACCEPT

 

9.防火墙拒绝192.168.195.0/24对其进行TCP连接

检查SYN/ACK/RST/FIN四个位置,其中SYN被置位

# iptables –I INPUT –s 192.168.195.0/24 –ptcp –-tcp-flags SYN,ACK,RST,FIN SYN –j REJECT

# iptables –A INPUT –i eth1 –p tcp ! –-syn –jACCEPT

 

 

 

5.      主机1拼通主机3 主机3拼通主机1   主机2设置

# iptables –I FORWARD –s 192.168.2.0/24 –d192.168.1.0/24 –p icmp –j ACCEPT

# iptables –I FORWARD 2 –s 192.168.1.0/24 –d192.168.2.0/24 –p icmp –j ACCEPT

# iptables –I FORWARD –s 192.168.2.0/24 –d192.168.1.0/24 –i eth1 –o eth0 –p tcp –dport 22 –j ACCEPT

# iptables –I FORWARD –s 192.168.1.0/24 –d192.168.2.0/24 –i eth0 –o eth1 –p tcp –dport 22 –j ACCEPT

 

 

 

主机2设置 执行单向拼通主机1拼主机3

 #iptables –I FORWARD –s 192.168.1.0/24 –d 192.168.2.0/24 –p icmp –-icmp-typeecho-request –j ACCEPT

 

主机2设置

# iptables –I FORWARD –s 192.168.2..0/24 –d192..168.1.0./24 –p icmp  icmp-typeecho-reply –j ACCEPT

 

七.扩展匹配

类别                     选项                                          用法

                            状态匹配                            -mstate   --state 状态值

                            MAC地址匹配                    -mmac –-mac-source MAC地址

 

显示匹配              多端口匹配                         -mmultiport –-sports 源端口列表

                                                                      -mmultiport –-dports 目标端口列表

 

                            IP范围匹配                        -miprange –-src-range IP1-IP2

                                                                      -miprange –-dst-range IP1-IP2

根据MAC地址封锁主机

适用于交换网络,针对源MAC地址

-         不管其IP地址变成多少

-         # iptables –A INPUT –m mac –-mac–source 00:0C:29:34:45:25–j DROP

-         1、阻止MAC地址为XX:XX:XX:XX:XX:XX主机的所有通信:

-         iptables -AINPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP

-          

-         2、允许MAC地址为XX:XX:XX:XX:XX:XX主机访问22端口:

-         iptables -AINPUT -p tcp --destination-port 22 -m mac --mac-source XX:XX:XX:XX:XX:XX -jACCEPT

-         3、允许IP地址为192.168.1.21,MAC地址为XX:XX:XX:XX:XX:XX的主机通信,拒绝多有其他主机:

-         iptables -AINPUT -s 192.168.1.21 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT

-         iptables -PINPUT DROP

-         4、可以写脚本限制MAC:

-         iptables -PFORWARD DROP

-         for mac in$(cat ipaddressfile); do

-         iptables -AFORWARD -m mac --mac-source $mac -j ACCEPT

-         done 

-          

 

简化服务开启规则

条规则开放多个端口

比如Web FTP MailSSH等等

# iptables –A –INPUT –s 192.168.20.0/24 –p tcp –mmultiport --dport 20:22,25,80,110,143,16501:16800 –j ACCEPT

 

//2023的端口都需要拒统

# iptables –A INPUT –p tcp –dport 20:23 –j REJECT  

 

根据IP范围封锁主机

SSH登陆的IP范围控制

-允许从192.168.4.10-192.168.4.20登陆

-禁止从192.168.4.024网段其他的主机登陆

# iptables A INPUT –p tcp –dport 22 –m iprange –src-range192.168.4.10-192.168.4.20 –j ACCEPT

# iptables –A INPUT –p tcp –dport 22 –s 192.168.4.0/24 –jDROP

 

 

1.      网络连接的五种状态

NEW,请求建立连接的包,完全陌生的包

ESTABLISHED,将要或已经建立连接的包

  RELATED,与已知某个连接相关联的包

  INVALID 无对应连接,以通讯连接无效的包

  UNTRACKED,未跟踪状态的包

 

# iptables –P FORWARD DROP

# iptables –A FORWARD –s 192.168.10.0/24 –jACCEPT

# iptables –A FORWARD –d 192.168.10.0/24 –m state –-stateESTABLSHED,RELATED –j ACCEPT

 

不做重点

 

DOS: Denial OF Service 拒绝服务功击

 

# iptables –A INPUT –m state –state NEW –ptcp –syn –j DROP

# iptables –A FORWARD –m state –state NEW –ptcp ! –syn DROP

 

识别FTP数据链接

针对FTP被动模式,数据端口未知

# iptables –A FORWARD –d 192.168.4.100 –ptcp –dport 20:21 –j –ACCEPT

# iptables –A FORWARD –s 192.168.4.100 –ptcp –sport 20:21 –j ACCEPT

 

# iptables -A FORWARD –d 192.168.4.100 –m state –stateESTABLISHED,RELATED –j  ACCEPT

# iptables -A FORWARD –s 192.168.4.100 –m state –stateESTABLISHED,RELATED –j ACCEPT

 

 

禁止从内网访问外网的服务

# iptables –A FORWARD –s 192.168.4.0/24 –oeth0 –j ACCEPT

# iptables –A FORWARD –d 192.168.4..0/24 –i eth0 –mstate –state ESTABLISHED,RELATED –j DROP

# iptables –A FORWARD –d 192.168.4.0/24 –ieth0 –m state –state NEW –j DROP

 

比如,访问量较大的Web服务

# iptables –t raw –A PREROUTING –d192.168.4.100 –p tcp –dport 80 –j NOTRACK

# iptables –t raw –A PREROUTING –s192.168.4.100 –P tcp –sport 80 –j NOTRACK

# iptables –A FORWARD –m state –stateUNTRACKED –j ACCEPT