28_02_iptables系列之基本应用及显式扩展

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了28_02_iptables系列之基本应用及显式扩展相关的知识,希望对你有一定的参考价值。

netfiler:Framework, TCP/IP

iptables [-t TABLE] COMMAND CHAIN [num] 匹配条件 -j 处理动作

匹配条件  

    通用匹配

   -s 匹配源地址

-d 匹配目标地址

-p 匹配协议的{tcp|udp|icmp}

-i 指定数据报文流入接口

-o 指定书库报文流出接口

扩展匹配

    隐含扩展

  -p tcp

       --sport PORT [-PORT]: 源端口

--dport PORT [-PORT]: 目标端口

--tcp-flags mask comp:只检查mask指定的标志位,是逗号分隔的标志位列表;

                      comp:此列表中出现的标记为必须为1,comp中没出现,而mask中出现,必须为0;

   --tcp-flags SYN,FIN,ACK,RST SYN = --syn

--syn:专门匹配tcp三次握手的第一次

-p icmp

   --icmp-type

   0:echo-reply  响应报文

8:echo-request 请求报文

-p udp

    --sport

--dport

显示扩展:使用额外的匹配机制

   -m EXTESTION --spe-opt

       state:状态扩展

      结合ip_conntrack追踪会话的状态

      NEW:新连接请求

  ESTABLISHED:已建立的连接

  INBALID:非法连接

  RELATED:相关联的

-m state --state NWE,ESTABLISHED -j ACCEPT

multiport:离散的多端口扩展

  --source-ports

  --destination-ports

  --ports

-m multiport --destination-ports 21,22,80 -j ACCEPT   合并端口

条件取反:!,            -s ! 172.16.100.6 除了此IP以外都可以作为原地址

命令:

    管理规则

        -A:附加一条规则,在链的尾部追加一条规则

-I:CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条

-D:CHAIN [num]:删除指定链中第num条规则

-R:CHAIN [num]:替换指定的规则

    管理链

   -F [CHAIN]:flush,清空指定规则链,如果省略CHAIN则表示清空对应表中的所有链。

-P CHAIN: 设定指定链的默认策略:

-N:自定义一条新的空链

-X:删除一个自定义的空链

-Z:置零指定链中所有规则的计数器

-E:重命名一条自定义的链

查看类:

   -L:显示指定表中的所有规则;

   -n:以数字格式显示主机地址和端口号

-V:显示详细信息

-VV

   -X:显示精确值

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


动作(target)

    ACCEPT 允许通过

    DROP   丢弃

    REJECT 拒绝

    DNAT  目标地址转换

    SNAT  源地址转换

    REDIRECT   端口重定向

    MASQUERADE 地址伪装

LOG   日志

MARK 给一个报文设定标记

iptables -t filter -A INPUT -s 192.168.1.0/24 -j DROP


允许172.16.0.0网段的用户访问172.16.100.7,的sshd:22/tcp

iptables -t filter -A INPUT -s 172.16.0.0/16  -d 172.16.100.7 -p tcp --dport 22  -j ACCEPT

iptables -t filter -A OUTPUT -s 172.16.100.7  -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT


iptables 不是服务,而是服务脚本;服务脚本的主要作用,在于生效保存的规则


lsmod命了可以检查iptables的模块是都装载


开启或者停止iptables服务 其实是装载或移除iptables/netfilter相关内核模块

iptanles_nat ,  iptables_filter,  iptables_mangle,  iptables_raw,  iptables_nat

ip_conntrack


 

yum install mysql-server vsftpd httpd -y


iptables -P INPUT DROP 修改默认链为丢弃

iptables -P OUTPUT DROP 

iptables -P FORWARD DROP 


iptables -L -n 查看修改后的链



允许所有主机访问本机的web服务

iptables -I  INPUT  -d 192.168.1.51 -p tcp --dport 80 -j ACCEPT

iptables -I  OUTPUT -s 192.168.1.51 -p tcp --sport 80 -j ACCEPT


iptables -A  INPUT -s 127.0.0.1  -d 127.0.0.1  -i l0 -j ACCEPT

iptables -A  OUTPUT -s 127.0.0.1 -d 127.0.0.1  -o lo  -j ACCEPT



允许自己ping任意主机

iptables -A  OUTPUT -s 192.168.1.51   -p icmp  --icmp-type 8 -j ACCEPT 

iptables -A  INPUT -d 192.168.1.51   -p icmp --icmp-type 0 -j ACCEPT


DNS服务器:放行别人到服务器来请求

iptables -A  INPUT -d 192.168.1.51 -p udp --dport 53 -j ACCEPT

iptables -A  OUTPUT -s 192.168.1.51 -p udp --sport 53 -j ACCEPT

iptables -A  INPUT -s 192.168.1.51  -p udp --sport 53 -j ACCEPT

iptables -A  OUTPUT -d 192.168.1.51 -p udp --dport 53 -j ACCEPT




/proc/net/ip_conntrack  记录连接信息,追踪连接,此功能可以使服务器根据追踪信息 只允许响应回复出站,从而有效的避免反弹性的病毒。

iptstate

     -t 显示当前所有连接的个数


modprobe ip_conntrack 装载模块

modprobe -r ipcontrack 移除模块

[[email protected] ~]# lsmod |grep ip 查看已装载的模块

[[email protected] ~]# cat /proc/sys/net/ipv4/ip_conntrack_max  查看ip_conntrack记载的最大条目数


注意:特别繁忙的服务器不要装载ip_conntrack模块。否则会出现问题

iptables -t nat -L 查看nat表,也会自动加载此模块



重启iptables 会清空表里的规则

[[email protected] ~]# cat /etc/sysconfig/iptables

service iptables save 保存规则到此文件,后重启服务规则不会丢失

iptables-save > /etc/sysconfig/iptables.2013041801 可以使用输出重定向来指明保存到什么位置

iptables-restore < /etc/sysconfig/iptables.2013041801 使用输入重定向来指明从什么位置读取信息


-------------------------------

server:172.16.100.7

放行sshd,httpd服务


iptables -I OUTPUT -s 172.16.100.7 -p tcp --sport 80  -m state --state ESTABLISHED    -j ACCEPT

iptables -I INPUT -d 172.16.100.7  -p tcp --dport 80  -m state --state NEW,ESTABLISHED  -j ACCEPT


iptables -A INPUT -d 172.16.100.7 -P tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 22  -m state --state ESTABLISHED -j ACCEPT


iptables -P INPUT DROP 

iptables -P OUTPUT DROP

-------------------------------


修改ip_conntrack最大连接数

sysctl -w net.ipv4.ip_conntrack_max=65536

要永久有效需要修改/etc/sysctl.conf




/proc/sys/net/ipv4/netfilter  此目录里的文件定义了一些超时时间





iptables -L -n --line-numbers -v 查看一写的规则

-------------------------------------------

FTP:

iptables -A INPUT  -i lo  -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

需要安装ip_conntrack_ftp和ip_nat_ftp模块

[[email protected] ~]# vim /etc/sysconfig/iptables-config 

  IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"



iptables -A INPUT  -d  172.16.100.7 -p tcp  -m state --state RELATED,ESTABLISHED -j  ACCEPT

iptables -A OUTPUT -s  172.16.100.7 -p tcp  -m state --state RELATED,ESTABLISHED  -j ACCEPT


----------------------

[[email protected] ~]# vim /etc/sysconfig/iptables 可以直接编辑配置文件写入防火墙规则

由于匹配规则是从第一条开始匹配,直到匹配到就为止,所有可以把相同的规则,统一后写到最前面从而提高性能。

  

把端口相同的合并:

列如:

iptables -I INPUT 2 -d 172.16.100.7 -p tcp -m multiport --destination-ports 21,22,80 -m state --state NEW -j ACCEPT




iptables -R 修改

列如:

修改第6条 为 -d 172.16.100.7 -p tcp -m state --state ESTABLISHED,REDIRECT -j ACCEPT

iptanles -R INPUT 6  -d 172.16.100.7 -p tcp -m state --state ESTABLISHED,REDIRECT -j ACCEPT


iptables -D 删除




本文出自 “运维成长路” 博客,谢绝转载!

以上是关于28_02_iptables系列之基本应用及显式扩展的主要内容,如果未能解决你的问题,请参考以下文章

3.6接口判断及显式实现比较

03JavaScript程序设计修炼之道_2019-07-02_20-11-09_ 2019-07-02_21-28-28 常用事件(onkeydown...)offsetclientscro

防火墙之iptables

41_iptables防火墙 filter表控制 扩展匹配 nat表典型应用

iptables命令使用基础(02)

Linux_异常_02_Failed to restart iptables.service: Unit not found.