码迷,mamicode.com
首页 > 其他好文 > 详细

Iptables 详解

时间:2015-07-19 13:17:22      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:

  1. Iptables中的4表5链
    四张表:filter表nat表、mangle表、raw表
    五条链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING
    Filter表:访问控制、规则匹配
    Nat表:地址转发
  2. Iptables规则组成
    数据包访问控制:ACCEPT、DROP、REJECT
    数据库改写:SNAT、DNAT
    信息记录:LOG
    组成部分:四张表 + 五条链 + 规则
    技术分享
    解释:
    -A:追加一个新规则
    -D:删除规则
    -L:显示规则情况
    -F:清除iptables规则
    -P:设置一个默认的iptables
    -I:在原有规则上插入一条规则,成为第一条规则
    -p tcp:协议
    -s:发起源
    -d:目标地址
    --sport:源端口
    --dport:目的端口
    --dports:端口段
    -m tcp:
         state: 
         multiport:   
    均指端口补充
  3. Iptables配置 
    场景一:
    规则1:对所有的地址开放本机的tcp(80、22、10-21)端口的访问
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    iptables -I INPUT -p tcp --dport 22 -j ACCEPT
    iptables -I INPUT -p tcp --dports 10:21 -j ACCEPT
    规则2:允许所有的地址开放本机的基于ICMP协议的数据包访问
    iptables -I INPUT -P ICMP -J ACCEPT
    规则3:其他未被允许的端口则禁止访问
    iptables -A INPUT -j REJECT
    技术分享
    检测端口开放情况,在其他机器使用nmap端口扫描命令检查:
    nmap -sS -p 0-1000 10.10.0.100
    删除开放的80端口
    iptables -D INPUT -p tcp --dport 80 -j ACCEPT
    禁止其他机器访问80端口
    iptables -I INPUT -p tcp --dport 80 -j REJECT
    iptable -nL 查看iptables设置情况
    netstat -luntp | grep 80 检查端口开放情况
    场景一存在的问题:
    a、本机无法访问本机
    b、本级无法访问其他主机
    解决:
    iptables -I INPUT -i lo -j ACCEPT   (所有的数据包可以通过lo网卡)
    iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT (状态为ESTABLISHED,RELATED的数据包允许通过)
    规则4:在场景一基础上,修改iptables,设置只允许10.10.0.101访问本机的http服务
    iptables -D INPUT -p tcp --dport 80 -j ACCEPT 
    iptables -I INPUT -p tcp -s 10.10.0.101 --dport 80 -j ACCEPT  
    场景二:
    要求一:在公司内部(10.10.20.0/24,10.10.30.0/24)能访问服务器上的任何服务
    要求二:通过VPN链接到公司外网-->拨号到VPN服务器-->内网FTP、SAMBA、SSH、NFS
    要求三:公司服务器搭建的网站允许公网访问
    配置思路:
    允许本地访问、开放SSH
    允许已监听状态数据包通过
    允许规则中允许的数据包通过
    拒绝未被允许的数据包
    iptables规则保存成配置文件
    实施:
    iptables -I INPUT -i lo -j ACCEPT 
    iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -s 10.10.20.0/24 -j ACCEPT
    iptables -A INPUT -s 10.10.30.0/24 -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 1723 -j ACCEPT (VPN端口)
    iptables -I INPUT -P ICMP -J ACCEPT
    iptables -A INPUT -j REJECT
    保存iptables设置
    使用命令iptables save 或者 将iptables 设置保存到shell脚本中,并设置为开机自启动
  4. iptables 规则中SNAT规则设置
    SNAT:源地址转换 出口 POSTROUTING
    DNAT:目的地址转换 进口 PREROUTING
    SNAT场景模拟:
    技术分享
    在NatServer上配置Iptables使Client能访问weServer
    修改sysctl.conf,开启net转发
    vi /etc/sysctl.conf
    修改 net.ipv4.ip_forward = 1 (默认为0)
    使其生效
    sysctl -p
    iptables -t nat -A POSTROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.232
    DNAT场景模拟:
    技术分享
    iptables -t nat -A PREROUTING -d 10.10.188.232 -p tcp --dport 80 -j DNAT --to 10.10.177.233:80
    检查设置情况
    iptables -t nat -nL
  5. 利用iptables防止CC攻击
    使用connlimit模块
    作用:用于限制每一个客户端ip的并发连接数
    参数:-connlimit-above n # 限制并发个数
    iptables -I INPUT -p TCP --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT
    iptables -I INPUT -p tcp --dport 80 -s 10.10.0.100 -m connlimit --connlimit-above 100 -j REJECT
    使用Limit模块
    作用:限速、控制流量
    例如:iptables -A INPUT -m limit --limit 3/hour
    --limit-burst 默认值为5
    示例:
    iptables -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT
    iptables -A INPUT -p icmp -j DROP

Iptables 详解

标签:

原文地址:http://www.cnblogs.com/Mrhuangrui/p/4658184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!