强大的安全防护盾

# Shell命令 » 硬件·内核·监测 » iptables

iptables 命令是 Linux 上常用的防火墙软件,是 netfilter 项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

通过 iptables 搭建的防火墙规则可以实现:
防攻击
数据包转发
等等..

iptables 中的4表5链

4张表:

  • filter:一般的过滤功能
  • nat:用于nat功能(端口映射,地址映射等)
  • mangle:用于对特定数据包的修改
  • raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能

注:表的处理优先级:raw > mangle > nat > filter

5条链:

  • PREROUTING:数据包进入路由表之前
  • INPUT:通过路由表后目的地为本机
  • FORWARDING:通过路由表后,目的地不为本机
  • OUTPUT:由本机产生,向外转发
  • POSTROUTIONG:发送到网卡接口之前。如下图数据包的流向:

iptables 规则的组成部分:

场景练习

# 开放(80、22、10-21)端口的访问,允许ICMP协议的数据包,禁止其它未被允许的端口。
iptables -F
iptables -I INPUT -i lo -j ACCEPT # 允许本机访问本机
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许本机访问外部网络
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 10:21 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p icmp -j ACCEPT
iptables -A INPUT -j REJECT

# iptables -L INPUT --line-numbers # 列出INPUT 链所有的规则
# iptables -D INPUT 2 # 删除第 2 行规则

# 只允许某台或部分主机访问80端口
iptables -D INPUT -p tcp --dport 80 -j ACCEPT # 清除本条规则
iptables -I INPUT -p tcp -s 10.10.1.123 --dport 80 -j ACCEPT
iptables -I INPUT -p tcp -s 10.10.1.0/24 --dport 80 -j ACCEPT

# 常见对外的端口服务:
网站 www
                http   80/tcp
                https 443/tcp

邮件 mail
                smtp   25/tcp
                smtps 465/tcp
                pop3   110/tcp
                pop3s 995/tcp
                imap   143/tcp
                
# 常见不对外的端口服务:
文件服务
               NFS     123/udp
               SAMBA  137,138,139/tcp 445/tcp
               FTP        20/tcp, 21/tcp
远程管理
              SSH      22/tcp
数据库   
             MYSQL 3306/tcp
             ORACLE 1521/tcp

iptables NAT模式设置

分类 功能 作用链
SNAT 源地址转换 出口POSTROUTING
DNAT 目标地址转换 进口PREROUTING
# vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1 # 打开端口转发内核功能
    
# sysctl -p # 使配置生效
# sysctl -a |  grep ip_forward # 查看配置是否生效

# snat配置
iptables -t nat -A POSTROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.132

# dnat配置
iptables -t nat -A PREROUTING -d 10.10.188.123 -p tcp --dport 80 -j DNAT --to 10.10.177.123:8080

# 查看nat表的规则
iptables -t nat -L

iptables 防CC攻击

## 防止 SYN 攻击
 iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT
 
 ## 防止 DDOS 攻击
 # 并发请求限制
 iptables -I INPUT -p tcp --dport 80 -s 10.10.10.1 -m connlimit --connlimit-above 10 -j REJECT
 # limit模块,限速控制异常流量
 iptables -A INPUT -p icmp -m limit --limit 3/hour --limit-burst 10 -j ACCEPT
 iptables -A INPUT -p icmp -j REJECT 

你可能感兴趣的:(unix/linux)