软件防火墙iptables(2)

说明:
 
  • 执行规则顺序:
    • 从上往下,从左往右一条条执行
  • 其他点
    • 不通过网络则不经过iptables
    • 直接看案例,理解案例就差不多
不理解:
  • 端口的含义,在哪?
  • xshell 连接对应进出的iptables链
  • ssh是啥
  • 启动与启动iptables区别(实际演示中未看出)
 
>第一部分
 
  1. 怎么启动使用
    1. 安装
      • ]# yum install iptables*
    2. 启动
      • # systemctl start iptables
    3. 关闭firewalld
      • # systemctl disable --now firewalld
  2. 格式及参数
    1. 格式
      • iptables -t 表名 选项 链名称 条件  动作
    1. 参数
      1. -t:                 指定操作的表
      2. -L, --list          列出当前的规则
      3. -v                    显示数据包和数据包大小
      4. -n                   不反解地址
      5. A, --append        追加一条规则到链中
      6. I, --insert        插入一条规则,插入到顶部
      7. -F, --flush            清空
      8. -Z, --zero            清空计数器(  包数量 、包大小)
      9. 以下很少用
        1. -D, --delete            删除链中的规则
        2. -R, --replace           修改
        3. -S, --list-rules         列出所有的规则
        4. -N, --new-chain       创建一个自定义 链
        5. -X, --delete-chain    删除一个自定义链
        6. -P, --policy               指定链的默认策略  
  3. iptables动作
    1. ACCEPT        将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链
    2. REJECT         拦阻该数据包,并传送数据包通知对方
    3. DROP         丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序
    4. REDIRECT    将包重新导向到另一个端口,进行完此处理动作后,将会继续比对其它规则
    5. 其他重要动作
      1. -i : 进来的网卡
      2. -o : 出去的网卡
      3. -m : 指定模块
      4. -j : 转发动作
      5. -p :指定协议
  4. 基本的条件匹配(看案例理解)
    1. TCP(http)
    2. ICMP(ping)
    3. UDP
    4. ALL
  5. 源,目标地址
    1. 源地址:发送请求的地址
      • -s
    2. 目标地址  : 访问的地址
      • -d 
  6. 源,目标端口
    1. 源端口:发送请求的端口
      • --sport
    2. 目标端口:访问的端口
      • --dport
    3. ---查看本机端口占用的命令
      • netstat -nutlp
 
 
>第二部分
 
iptables中的模块(-m : 指定模块)
 
        目的  ---拓展iptables功能
 
  1. 连续匹配多个端口(multiport)
    1. --dports  : 指定多个端口(不同端口之间以逗号分割,连续的端口使用冒号分割)
  2. 指定一段连续的ip地址范围(iprange)
    1. --src-range   源地址范围
    2. --dst-range   目标地址范围
  3. 匹配指定字符串(string)
    1. --string 字符    # 指定要匹配的字符串
    2. --algo bm或kmp       # 匹配的查询算法
  4. 根据时间段匹配报文(time)
    1. --timestart hh:mm[:ss]        # 开始时间
    2. --timestop hh:mm[:ss]        # 结束时间
    3. --monthdays day[,day...]    # 指定一个月的某一天
    4. --weekdays day[,day...]        # 指定周 还是  周天
  5. 禁ping, 默认本机无法ping别人 、别人无法ping自己
    1. --icmp-type   ( type[/code]|typename)
      • echo-request  (8) 请求
      • echo-reply    (0) 回应
  6. 限制链接数,并发连接数(connlimit)
    1. --connlimit-upto n        #  如果现有连接数小于或等于  n  则 匹配
    2. --connlimit-above n        #  如果现有连接数大于n 则匹配
  7. 针对 报文速率 进行限制。 秒、分钟、小时、天
    1. --limit rate[/second|/minute|/hour|/day] # 报文数量
    2. --limit-burst number  # 报文数量(默认:5)
 
 
-------------------
案例(对应第一部分)
-------------------
 
  1. 案例1:只允许22端口可以访问,其他端口全部无法访问(-含义??)
    1. iptables -t filter -A INPUT -p TCP --dport 22  -j ACCEPT
    2. iptables -t filter -A INPUT -p TCP -j DROP
  2. 案例2:只允许22,80,443端口可以访问,其他端口全部无法访问
    1. iptables -t filter -A INPUT -p TCP --dport 22  -j ACCEPT
    2. iptables -t filter -A INPUT -p TCP --dport 80  -j ACCEPT
    3. iptables -t filter -A INPUT -p TCP --dport 443  -j ACCEPT
    4. iptables -t filter -A INPUT -p TCP -j DROP
  3. 案例3:只允许22,80,443端口可以访问,其他端口全部无法访问,但是本机可以访问百度(???)
    1. 暂无答案
  4. 案例4:要求使192.168.15.81能够通过22端口(该端口是192.168.15.81ip的端口,所以192.168.15.81指目的地ip/电脑)链接,但是其他的不行
    1. iptables -t filter -A INPUT -p TCP -d 192.168.15.81 --dport 22  -j ACCEPT
    2. iptables -t filter -A INPUT -p TCP -j DROP
      • 含义:eth0:192.168.15.81和eth1:172.16.1.81是B电脑IP,其他电脑想要访问B只能通过192.168.15.81访问,不同通过eth0:192.168.15.81访问
  5. 案例5:只允许192.168.15.71能够通过22端口链接,其他的不行
    1. iptables -t filter -A INPUT -p  TCP -s 192.168.15.71  -d 192.168.15.81 --dport 22 -j ACCEPT
    2. iptables -t filter -A INPUT -p TCP -j DROP
      • 含义:只允许IP是192.168.15.71的电脑连接到远程电脑
  6. 案例6:要求192.168.15.71对外部不可见
    • iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP
      • #含义: 192.168.15.71是目标地址,不让别人访问(即拒绝->即过滤)
  7. 案例7:要求使用eth0网卡的所有请求全部拒绝
    • iptables -t filter -A INPUT -p TCP -i etho -j DROP
  8. 使用172.16.1.71登录进来的窗口,不允许访问百度(???)
    • iptables -t filter -I OUTPUT -p TCP -o eth1 -j DROP
  9. 要求访问服务器的8080端口转发至80端口
    • iptables -t nat -A PREROUTING -p TCP --dport 8080 -j REDIRECT --to-port 80
      • ???网页上操作是怎么回事<04视频 09min40sec>
  10. 要求只允许windows通过ssh连接192.168.15.81,其他的拒绝
    1. iptables -t filter -I INPUT -p TCP -s 192.168.15.1 -d 192.168.15.81 --dport 22 -j ACCEPT
    2. iptables -t filter -I INPUT -p TCP --dport 22 -j DROP
      1. ???为什么是这个地址 -s 192.168.15.1
      2. windows 怎么登?
-------------------
案例(对应第二部分)
-------------------
 
  1. 要求将22,80,443以及30000-50000之间所有的端口向外暴露,其他端口拒绝
    1. iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPT
    2. iptables -f filter -A INPUT -p TCP -j DROP
  2. 要求访问数据包中包含HelloWorld的数据不允许通过
    • iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP
  3. 要求192.168.15.1 - 192.168.15.10之间的所有IP能够连接192.168.15.81,其他拒绝
    1. iptables -t filter -A INPUT -p TCP -m iprange --src-range 192.168.15.1-192.168.15.10 -j ACCEPT
    2. iptables -f filter -A INPUT -p TCP -j DROP
  4. 要求每天的12到13之间,不允许访问(注意里边是UTC时间,差8h与北京时间)
    • iptables -t filter -A INPUT -p TCP -m time  --timestart 4:00   --timestop 5:00 -j DROP
  5. 要求别人不能ping本机,但是本机可以ping别人(???)
    • iptables -t filter -A INPUT -p TCP -m icmp --icmp-type "echo-request" -j DROP
  6. 要求主机连接最多有2个(???)
    • iptables -t filter -A INPUT -p TCP --dport 22 -m connlimit --connlimit-above 2 -j DROP
      • ??? 用up-to 小于等于两个不行???
  7. 要求限制速率在500k/s左右
    1. iptables -t filter -A OUTPUT -p TCP -m limit --limit 333/s -j ACCEPT
    2. iptables -t filter -A OUTPUT -p TCP -j DROP
 
---------
实际演练
---------
 
关闭防火墙及查看iptables状态
 
 
 
服务器登陆切换
172.16.1.xxx 内网外部不能访问含义
eth1
---
 
 
案例8
 
模块-案例3
 
模块 -案例7
传输速率/速度限制语句
 
生成固定大小文件
限制之前传输速率
之后限制之前
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2021-12-28 00:34  tslam  阅读(70)  评论(0)    收藏  举报