iptables(下)规则

iptables安装

停止并禁止开机自启firewalld服务

systemctl stop firewalld &&  systemctl disable firewalld

检查是否安装了iptables

rpm -q iptables

没有安装,可以安装iptables

yum install -y iptables

升级iptables

yum update iptables 

iptables的语法规则

iptables 至少有三个预设的 table (filter, nat, mangle),较常用的是本机的 filter 表, 这也是默认的表。

查看规则

iptables [-t tables] [-L] [-nv](也可以使用iptables-save)
-t :后面接 table ,例如 nat 或 filter ,若省略此项目,则使用预设的 filter
-L :列出目前的 table 的规则
-n :不进行 IP 与 HOSTNAME 的反查,显示结果的速度会快很多!
-v :列出更多的信息,包括通过该规则的数据包总位元数、相关的网路接口等

例如查看nat表的规则

iptables -t nat -nL

[root@ll ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:90 to:80.0.0.0
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:90 to:80.0.0.0

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination     
  • Chain 就是链
  • policy 就是默认的规则
  • target:代表进行的动作, ACCEPT 是放行,而 REJECT 则是拒绝,此外,还有 DROP (丢弃) 的项目!
  • prot:代表使用的数据包协议,主要有 tcp, udp 及 icmp 三种数据包格式;
  • opt:额外的选项说明
  • source :代表此规则是针对哪个『来源 IP』进行限制
  • destination :代表此规则是针对哪个『目标 IP』进行限制

清除规则

iptables [-t tables] [-FXZ]
选项与参数:
-F :清除所有的已设置的规则;
-X :杀掉所有用户 “自定义” 的 chain;
-Z :将所有的 chain 的计数与流量统计都归零
此命令不会清除默认的规则(默认规则就是处理没有符合到任何一个规则的数据包的策略。)

设置规则

以下规则是生产环境下使用的默认规则
就是将进入本机的数据包默认是拒绝的,出去的数据包和需要转发的数据包都是放行的。

iptables -P INPUT   REJECT    
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT
设置默认规则的语法

iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
-P :定义默认规则( Policy )。注意,这个 P 为大写
ACCEPT :该数据包可接受
DROP :该数据包直接丢弃,不会让 client 端知道为何被丢弃。

一般规则

iptables(下)规则

例如
允许ping

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

关于 LOG

LOG 这个动作仅仅用于记录,并且不会影响这个数据包的其他规则的比对
就是把符合规则的数据包记录到 /var/log/messages 日志中
iptables -A INPUT -s 192.168.1.100 -j LOG
关于 TCP 和 UDP 的规则
语法
iptables [-AI 链] [-io 网络接口] [-p tcp,udp]
[-s 来源 IP/网段] [–sport 端口范围]
[-d 目标 IP/网段] [–dport 端口范围]
-j [ACCEPT;DROP;REJECT]
例如
只允许 192.168.1.0/24 网段的 1024到65534 端口访问本机的 22 端口

iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 \
--sport 1024:65534 --dport ssh -j ACCEPT

关于状态的规则

语法
iptables -A INPUT [-m state] [–state 状态]
-m :一些 iptables 的外挂模块,主要常见的有:
state :TCP 状态模块
mac :网卡的 mac 地址 (hardware address)
–state :一些数据包的状态,主要有:
INVALID :无效的数据包,例如资料破损的数据包状态
ESTABLISHED:已经连线成功的连线状态;
NEW :想要新建立连线的数据包状态;
RELATED :这个最常用!表示这个数据包是与我们主机发送出去的数据包有关

例如
只要已建立或相关数据包就予以通过,只要是不合法数据包就丢弃

iptables -A INPUT -m state \
--state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -m state --state INVALID -j DROP

保存规则

想要保存策略,需要安装iptable的服务

yum install -y iptables-services

启动服务

systemctl start iptables.service

之后使用 iptables-save > /etc/sysconfig/iptables 命令讲当前的规则保存网络地址转换开启防火墙主机的路由功能

echo "1" > /proc/sys/net/ipv4/ip_forward
sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0

DNET目标地址转换(或者端口转发)

将访问本机1000端口的数据包转发到192.168.100.10服务器的22端口

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport1000 -j DNAT --to-destination 192.168.100.10:22
上一篇:GhostScript 沙箱绕过(命令执行)漏洞(CVE-2018-19475)


下一篇:Octavia API接口慢问题排查引发的思考