ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

iptables使用示例

2021-06-29 19:02:46  阅读:157  来源: 互联网

标签:iptables 示例 -- ACCEPT 使用 INPUT root localhost


 

iptables应用

 

环境 centos7

  • iptables-services安装

    [root@localhost ~]# yum -y install 1 iptables-services
    #centos7系统中默认存在iptables命令,此命令仅为简单查询及操作命令,不包含配置文件,安装iptablesservices后,将直接生成配置文件,便于配置保存。包含ipv4及ipv6。
  • 设置服务开启

    [root@localhost ~]# systemctl start iptables.service
  • 设置开机自启动

    [root@localhost ~]# systemctl enable iptables.services
  • 查看配置文件

    [root@localhost ~]# rpm -ql iptables-services
  • 保存规则

    [root@localhost ~]# iptables-save > /etc/1 sysconfig/iptables
  • 重载

    [root@localhost ~]#iptables-restore < /etc/sysconfig/iptables
  • 基本配置

    iptables -F
    #删除现有规则
    
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT DROP
    #配置默认链策略
  • 案例:白名单

    [root@localhost ~]# iptables -t filter -F
    [root@localhost ~]# iptables -P INPUT DROP
    [root@localhost ~]# iptables -t filter -I INPUT -p tcp --dport=22 -j ACCEPT
    [root@localhost ~]# iptables -t filter -I INPUT -p tcp --dport=80 -j ACCEPT
  • 案例:黑名单

    [root@localhost ~]# iptables -P INPUT ACCEPT
    [root@localhost ~]# iptables -F
    [root@localhost ~]# iptables -t filter -A INPUT -s 192.168.2.20/24 -p tcp --dport 80 -j DROP
  • 案例:通过lo访问本机数据

    [root@localhost ~]# iptables -I INPUT -d 127.0.0.1 -p tcp --dport=9000 -i lo -j ACCEPT
    [root@localhost ~]# iptables -I INPUT -i lo -j ACCEPT
    #允许通过本地回环网卡访问本机
  • 案例:允许连接态产生衍生态

    [root@localhost ~]# iptables -I INPUT -m state --state ESTABLISHED,1 RELATED -j ACCEPT
  • iptables filter表应用案例

    • 案例1

      [root@localhost ~]# yum -y install httpd vsftpd sshd
      [root@localhost ~]# systemctl start httpd vsftpd sshd
      [root@localhost ~]# iptables -t filter -F
      [root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
      [root@localhost ~]# iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT
      [root@localhost ~]# iptables -I INPUT -p tcp --dport 22 -j ACCEPT
      [root@localhost ~]# iptables -A INPUT -j REJECT
      #在存问题
      本机无法访问本机
      例如:ping 127.0.0.1
      解决方法
      [root@localhost ~]# iptables -I INPUT -i lo -j ACCEPT
      本机无法访问其它主机
      例如:ssh remote_host
      解决方法
      [root@localhost ~]# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      FTP无法访问 解决方法1: [root@localhost ~]# iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf pasv_min_port=50000 pasv_max_port=60000 [root@localhost ~]# iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT 解决方法2:使用连接追踪模块 [root@localhost ~]# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT [root@localhost ~]# iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT [root@localhost ~]# modprobe nf_conntrack_ftp #临时方法,添加连接追踪模块 [root@localhost ~]# vim /etc/sysconfig/iptables-config IPTABLES_MODULES="nf_conntrack_ftp" #启动服务时加载 #针对数据端口连接时,将三次握手第一次状态由NEW识别为RELATED
    • 案例2:iptables标准流程

      [root@localhost ~]# iptables -F
      [root@localhost ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      [root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT
      [root@localhost ~]# iptables -A INPUT -s 192.168.2.0/24 -j ACCEPT #允许内网任何访问
      [root@localhost ~]# iptables -A INPUT -p tcp --syn --dport 80 -j ACCEPT
      [root@localhost ~]# iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT
      [root@localhost ~]# iptables -A INPUT -p tcp --syn --dport 21 -j ACCEPT
      [root@localhost ~]# iptables -A INPUT -j REJECT
      [root@localhost ~]# modprobe nf_conntrack_ftp
      [root@localhost ~]# iptables-save > /etc/sysconfig/iptables
      [root@localhost ~]# vim /etc/sysconfig/iptables-config
      IPTABLES_MODULES="nf_conntrack_ftp"
    • 案例3:扩展匹配

      #-m icmp [root@localhost ~]# iptables -F [root@localhost ~]# iptables -t filter -I INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT #允许ping回应 [root@localhost ~]# iptables -A INPUT -j REJECT
      #-m iprange [root@localhost ~]# iptables -t filter -I INPUT -m iprange --src-range 192.168.2.10-192.168.2.100 -j REJECT
      #-m multiport [root@localhost ~]# iptables -t filter -I INPUT -p tcp -m multiport --dports 20,21,22,25,80,110 -j ACCEPT
      #-m tos 根据ip协议头部 type of service进行过滤 [root@localhost ~]# iptables -F [root@localhost ~]# tcpdump -i eth0 -nn port 22 -vvv
      #抓取远程主机访问本机的ssh数据包,观察TOS值 [root@localhost ~]# tcpdump -i eth0 -nn port 22 -vvv
      #抓取远程从本机rsync或scp复制文件,观察TOS值 #ssh: tos 0x0 0x10 #scp: tos 0x0 0x8 #rsync: tos 0x0 0x8 [root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 22 -m tos --tos 0x10 -j ACCEPT [root@localhost ~]# iptables -t filter -A INPUT -j REJECT
      #-m tcp 按TCP控制位进行匹配 Flags:SYN ACK FIN RST URG PSH ALL NONE [root@localhost ~]# iptables -t filter -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST SYN --dport 80 -j ACCEPT [root@localhost ~]# iptables -t filter -A INPUT -p tcp --syn --dport 80 -j ACCEPT
      #--tcp-flags SYN,ACK,FIN,RST SYN 检查四个标记位,只有SYN标记位才匹配,即只允许三次握手中的第一次握手,等价于--syn
      #-m comment 对规则进行备注说明 [root@localhost ~]# iptables -A INPUT -s 192.168.2.250 -m comment --comment "cloudhost" -j REJECT
      #-m mark 使用mangle表的标记方法,配合mangle表使用 [root@localhost ~]# iptables -t filter -A INPUT -m mark 2 -j REJECT

    • 案例4:扩展动作

      #-j LOG 记录至日志中
      [root@localhost ~]# grep 'kern.*' /etc/rsyslog.conf 
      #添加kern.* /var/log/kernel.log
      [root@localhost ~]# systemctl restart rsyslog
      [root@localhost ~]# iptables -j LOG -h
      [root@localhost ~]# iptables -t filter -A INPUT -p tcp --syn --dport 22 -j LOG --logprefix " localhost_ssh "
      [root@localhost ~]# iptables -t filter -A INPUT -p tcp --syn --dport 22 -j ACCEPT
      [root@localhost ~]# iptables -t filter -A INPUT -j REJECT
      
      #-j REJECT
      当访问一个未开启的TCP端口时,应该返回一个带有RST标记的数据包
      当访问一个未开启的UDP端口,结果返回port xxx unreachable
      当访问一个开启的TCP端口,但被防火墙REJECT,结果返回port xxx unreachable
      [root@localhost ~]# iptables -j REJECT -h
      [root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT --rejectwith
      tcp-reset //返回一个自定义消息类型
      
      
      #-j MARK 进行标记,可在LVS调度器中应用
      [root@localhost ~]# iptables -t mangle -L
      [root@localhost ~]# iptables -j MARK -h
      [root@localhost ~]# iptables -t mangle -A PREROUTING -s 192.168.2.110 -j MARK --setmark 1
      [root@localhost ~]# iptables -t mangle -A PREROUTING -s 192.168.2.25 -j MARK --setmark 2
      [root@localhost ~]# iptables -t filter -A INPUT -m mark --mark 1 -j ACCEPT //按照标记匹配
      [root@localhost ~]# iptables -t filter -A INPUT -m mark --mark 2 -j REJECT
  • iptables nat表应用案例

    • nat表作用

      • 导流
    • nat表作用位置

      • KVM或OpenStack中虚拟机或云主机与外部通信
      • Docker管理的容器与外部通信
    • nat表规则动作所对应的链

      • SNAT 源地址转换 应用于出口POSTROUTING
      • MASQUERADE 源地址转换 应用于出口POSTROUTING
      • DNAT 目标地址转换 应用于进口PREROUTING
      • REDIRECT 端口重定向 应用于进口PREROUTING
    • 开启路由转发功能

      [root@localhost ~]# sysctl -a | grep ip_forward
      net.ipv4.ip_forward = 1
      [root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
      1
      #以上为开启
      #以下为关闭
      [root@localhost ~]# echo 0 > /proc/sys/net/ipv4/ip_forward
      [root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
      0

标签:iptables,示例,--,ACCEPT,使用,INPUT,root,localhost
来源: https://www.cnblogs.com/liviniu/p/14951537.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有