iptables的常用命令和规则

基本命令

1、清除默认规则

# 清除防火墙默认规则
iptables -F 
# 清除自定义链
iptables -X
# 清除防火墙计数器信息
iptables -Z

2、防火墙查看

# -L 以列表形式显示所有规则信息
iptables -L 

# -n 以数字形式显示IP地址或端口信息,不要转换为字符串显示
iptables -L -n  

# -t 表示指定查看或者配置相应的表
iptables -t nat -L -n

# -v 表示显示详细规则信息,包含匹配计数器数值
iptables -L -n -v 
	   
# line-number 显示规则序号信息	   
iptables  -L -n --line-number

规则设置

禁止访问指定端口

参数说明:

  • -A 表示添加
  • -I 表示插入,不加参数插入到头部,INPUT 3 表示插入到第三的位置
  • -D 删除规则, 后面可以直接跟规则序号
  • -p 指定响应服务协议信息 tcp、udp、icmp all
    • -dport 指定目标端口信息
    • -sport 指定源端口信息
  • -j 指定匹配的规则执行什么操作(ACCEPT(允许) DROP(拒绝)

    # 禁止22端口 可以不写-t filter 默认是f
    iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
    
    # 禁掉多个端口
    iptables -A INPUT -p tcp --dport 1000:2000 -j DROP
    iptables -A INPUT -p tcp -m multiport --dport 22,24,25 -j DROP
    
    # 删除规则
    iptables -D INPUT -p tcp --dport 22 -j DROP
    iptables -D INPUT 规则序号 # 删除指定序号的规则
    
    # 插入规则都头部
    iptables -I INPUT -p tcp --dport 22 -j DROP
    
    # 插入到指定位置
    iptables -I INPUT 3 -p tcp --dport 22 -j DROP
    iptables -R INPUT 6 -p tcp --dport 23 -j DROP
    

禁止指定网段主机访问端口

参数说明:

  • -s 匹配的网段信息或主机信息
  • -d 目标网段信息或主机信息
  • -i 进入流量接口信息,配置在INPUT链上
  • -o 发出的流量接口信息,配置在OPTPUT链上

    # 禁止10.0.0.0/24网段访问指定端口
    iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j DROP
    
    # 禁止指定主机访问
    iptables -A INPUT -s 10.0.0.167 -p tcp --dport 22 -j DROP 
    
    # 匹配指定网卡接口进来的流量信息 禁止eht0网卡进来的10.0.0.167主机
    iptables -A INPUT -i eth0 -s 10.0.0.167 -p tcp --dport 22 -j DROP
    
    # 除了指定主机,其他主机都不能访问 !取反
    iptables -A INPUT ! -s 10.0.0.167 -p tcp --dport 22 -j DROP
    
    
    

禁ping

ping功能基于icmp协议实现的 ,icmp协议有多种类型:
icmp-type 8:请求类型
icmp-type 0:回复类型

# 进站的时候禁止
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
# 出站的时候禁止
iptables -A OUTPUT -p icmp --icmp-type 0 -j DROP

# 所有icmp类型都禁止
iptables -A INPUT -p icmp -m icmp --icmp-type any -j DROP
iptables -A OUTPUT -p icmp -m icmp --icmp-type any -j DROP

白名单设置

1、首先添加上指定放行的端口22,和一些常用端口,因为要使用22端口登陆。

iptables -A INPUT -p tcp -m multiport --dport 22,80,443 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# 允许web服务与ftp服务器建立连接
iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT 

2、清除默认规则

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

3、保存防火墙配置

/etc/init.d/iptables save
iptables-save > /etc/sysconfig/iptables

配置NAT表来实现内网访问外网

配置NAT表就是配置2个链

postrouting 内网访问外网

在路由之后进行地址映射转换,把内网地址地址转换成相应的外网地址。

prerouting 外网访问内网

在路由之前进行映射,把外网地址转换为内网地址。

内网访问外网的实现

分为几步:

1、开启外网机器上的路由转发功能。

2、配置外网机器的iptables功能。

# 1.开启路由转发功能
vim /etc/sysctl.conf
sysctl -p

# 2.配置规则
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7