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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    第6课:datetime模块、操作数据库、__name__、redis、mock接口
    第5课:内置函数、处理json、常用模块
    第4课:函数、模块、集合
    第3课:列表和字典的增删改查、字符串常用方法、文件操作
    第2课:jmeter总结、Charles抓包
    第1课:接口测试和jmeter总结
    Centos下找不到eth0设备的解决方法
    Python安装、配置
    改进的SMO算法
    拉普拉斯特征图降维及其python实现
  • 原文地址:https://www.cnblogs.com/ccku/p/13662714.html
Copyright © 2011-2022 走看看