zoukankan      html  css  js  c++  java
  • CentOS7 使用iptables作为netfilter的应用层工具以及常用iptables配置脚本

    1.CentOS7 使用iptables作为netfilter的应用层工具

    yum -y install iptables-services
    systemctl stop firewalld 
    systemctl disable firewalld
    
    systemctl start iptables
    systemctl enable iptables
    

    2.常用iptables配置脚本

    #!/bin/bash
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    
    function support_distro(){
            if [ -z "`egrep -i "centos" /etc/issue`" ];then
                    echo "Sorry,iptables script only support centos system now."
                    exit 1
            fi
    }
    
    support_distro
    
    echo "============================iptables configure============================================"
    # Only support CentOS system
    
    # 获取SSH端口
    if grep "^Port" /etc/ssh/sshd_config>/dev/null;then
            sshdport=`grep "^Port" /etc/ssh/sshd_config | sed "s/Ports//g" `
    else
            sshdport=22
    fi
    
    # 获取DNS服务器IP
    if [ -s /etc/resolv.conf ];then
            nameserver1=`cat /etc/resolv.conf |grep nameserver |awk 'NR==1{print $2 }'`
            nameserver2=`cat /etc/resolv.conf |grep nameserver |awk 'NR==2{print $2 }'`
    fi
    
    IPT="/sbin/iptables"
    
    # 删除已有规则
    $IPT --delete-chain
    $IPT --flush
    
    # 禁止进,允许出,允许回环网卡
    $IPT -P INPUT DROP
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT ACCEPT
    $IPT -A INPUT -i lo -j ACCEPT
    
    # 允许已建立的或相关连接的通行
    $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    $IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    # 限制80端口单个IP的最大连接数为10
    $IPT -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP
    
    # 允许80(HTTP)/873(RSYNC)/443(HTTPS)/20,21(FTP)/25(SMTP)端口的连接
    $IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
    
    # 允许SSH端口的连接,脚本自动侦测目前的SSH端口,否则默认为22端口
    $IPT -A INPUT -p tcp -m tcp --dport $sshdport -j ACCEPT
    
    # 允许ping
    $IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
    $IPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
    
    # 允许DNS
    [ ! -z "$nameserver1" ] && $IPT -A OUTPUT -p udp -m udp -d $nameserver1 --dport 53 -j ACCEPT
    [ ! -z "$nameserver2" ] && $IPT -A OUTPUT -p udp -m udp -d $nameserver2 --dport 53 -j ACCEPT
    
    # 保存规则并重启IPTABLES
    service iptables save
    service iptables restart
    echo "============================iptables configure completed============================================"
    

    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    docker 安装es
    Redis 和 Zookeeper 到底谁更牛?
    Redisson 看门狗
    记一次线上服务CPU 100%的处理过程
    必须了解的mysql三大日志-binlog、redo log和undo log
    python学习笔记 -- reduce合并减少
    Python学习笔记 -- 列表2: 遍历:嵌套列表, 将其中同位置的元素组成新的列表
    python学习笔记 -- filter() 过滤符合条件的可迭代序列
    python学习笔记 -- map() 操作可迭代序列
    python学习笔记
  • 原文地址:https://www.cnblogs.com/ccku/p/13662714.html
Copyright © 2011-2022 走看看