• iptables学习笔记


    1. 压力測试
        ab
        host1 ab -n 100000 -c 40 http://192.168.1.112/
        host2 netstat -an|grep 80|grep 192.168.1.114 |grep EST -c
              w

    2. netfilter
        linux核心层内部的一个数据包处理模块

    3. hook point(INPUT OUTPUT FORWARD PREROUTING POSTROUTING)
        数据包在netfilter的挂载点

    4. iptables
        四张表(filter nat mangle raw)+五条链(hook point)+规则

        规则
            数据包訪问控制 ACCEPT DROP REJECT
            数据包改写 SNAT DNAT
            信息记录 LOG

        table     command    chain        params         target
       -t filter    -A        INPUT        -p tcp        -j ACCEPT        
          nat        -D        FORWARD        -s               DROP
                    -L        OUTPUT        -d               REJECT
                    -F        PREROUTING    -m  tcp           DNAT
                    -P        POSTROUTING        state       SNAT
                    -I                        multiport
                    -R
                    -n

    5. iptables配置
        iptables -L #列出规则
            -F 清除已有规则
            -n 不显示主机名
        
        iptables -I INPUT -p tcp --dport 22:80 -j ACCEPT #同意訪问22到80端口
        iptables -I INPUT -p icmp -j ACCEPT #同意ICMP
        iptables -A INPUT -j REJECT #屏蔽其他訪问

        iptables -D INPUT -p tcp --dport 80 -j ACCEPT #先删除
        iptables -I INPUT -p tcp --dport 80 -j REJECT #后拒绝
        iptables -nL #不显示主机名列出规则

        iptables -I INPUT -i lo -j ACCEPT #本机能够訪问自己
        iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
        #本机能够訪问其他主机

        iptables -D INPUT -p tcp --dport 80 -j ACCEPT #先删除
        iptables -I INPUT -p tcp -s 192.168.1.112 --dport 80 -j ACCEPT
        #仅仅同意指定ip訪问本机80port


    ftp主动模式(开放20port) client必须#iptables -F
        #vim /etc/vsftpd/vsftpd.conf #配置文件
        port_enable=yes
        connect_from_port_20=YES
        #iptables -I INPUT -p tcp --dport 21 -j ACCEPT #同意訪问21端口  

    ftp被动模式(开放'随意'port)(默认)
        #vim /etc/vsftpd/vsftpd.conf
        port_enable=NO
        pasv_min_port=50000
        pasv_max_port=60000
        #iptables -I INPUT -p tcp --dport 21 -j ACCEPT #打开21号端口
        #iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT

        #modprobe nf_conntrack_ftp #暂时建立ftp被动
        #modprobe -l #查看内核模块
        #vim /etc/sysconfig/iptables-config #永久建立ftp被动
        IPTABLES_MODULES="nf_conntrack_ftp" #设置參数


    常见port
        http 80/tcp
        https 443/tcp

        smtp 25/tcp
        smtps 465/tcp
        pop3 110/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 -F
        iptables -I INPUT -i lo -j ACCEPT
        iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT #指定网段
        iptables -A INPUT -p tcp --dport 80 -j ACCEPT
        iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
        iptables -I INPUT -p icmp -j ACCEPT
        iptables -A INPUT -j REJECT

        /etc/sysconfig/iptables #配置文件
        /etc/init.d/iptables save #运行以保存iptables设置

    nat表规则配置
        SNAT 源地址转换   出口POSTROUTING
        DNAT 目标地址转换 进口PREROUTING
        
        iptables -t nat -F
        iptables -t nat -A PREROUTING -d 192.168.1.112 -p tcp --dport 80 -j DNAT
        --to 192.168.2.112:80
        iptables -t nat -L

    6. 利用iptables防CC攻击
        connlimit模块 #限制每个clientip的并发连接数
            --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 192.168.1.112 -m connlimit
            --connmlimit-above 10 -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

    7. 实例脚本
        详见 ./iptables.sh
           
  • 相关阅读:
    hive -- 协同过滤sql语句
    Hive
    hive的排序,分組练习
    Hive 外部表的练习(多表关联查询,以及分组,子查询)
    javascript高级程序编程-学习笔记(基础)
    nodejs-基础与深入
    4.npm模块安装和使用(axios异步请求,lodash工具库)
    node-xlsx
    Git在tortoiseGit以及eclipse的使用方法
    稻盛和夫----六项精进
  • 原文地址:https://www.cnblogs.com/llguanli/p/7121717.html
Copyright © 2020-2023  润新知