zoukankan      html  css  js  c++  java
  • CentOs7 使用iptables开启关闭端口

    介绍

    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分
    iptables文件设置路径:命令:vim /etc/sysconfig/iptables-config

    注意事项

    如果说你以前使用的是contos7 那么默认使用的防火墙那么就是Firewall 这样的话,就要先把Firewall 给关闭在使用iptables

    关闭Firewall 命令
    命令:systemctl stop firewalld #关闭防火墙
    命令:systemctl disable firewalld #禁止开机启动

    检查是否安装了iptables

    命令:service iptables status

    安装iptables

    命令:yum install -y iptables

    升级iptables

    命令:yum update iptables

    安装iptables-services

    命令:yum install iptables-services

    开启防火墙

    命令:systemctl start iptables.service #启动防火墙
    命令:systemctl enable iptables.service #设置开机自启动

    关闭防火墙

    命令:systemctl stop iptables.service #关闭防火墙
    命令:systemctl disable iptables.service #禁止开机启动

    查看iptables状态

    命令:systemctl status iptables.service

    查看iptables现有规则

    命令:iptables -L -n

    重点:清除默认的防火墙规则

    11.1 安装完成基本配置-允许所有请求防止悲剧
    首先在清除前要将policy INPUT改成ACCEPT,表示接受一切请求。
    这个一定要先做,不然清空后可能会直接悲剧
    设置 INPUT 方向所有的请求都允许
    命令:iptables -P INPUT ACCEPT

    11.2 安装完成基本配置-清空所有默认规则
    命令:iptables -F

    11.3 安装完成基本配置-清空所有自定义规则
    命令:iptables -X

    11.4 安装完成基本配置-所有计数器归0
    命令:iptables -Z

    重点:配置规则

    12.1允许来自于lo接口的数据包
    如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1
    命令:iptables -A INPUT -i lo -j ACCEPT

    12.2开启某个端口
    iptables -A INPUT -p tcp --dport 端口 -j ACCEPT

    12.2.1例子:开启80,22端口
    命令:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    命令:iptables -A INPUT -p tcp --dport 22 -j ACCEPT

    12.3允许icmp包通过,也就是允许ping
    命令:iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

    12.4允许所有对外请求的返回包
    本机对外请求相当于OUTPUT,对于返回数据包必须要接收啊,这相当于INPUT了
    命令:iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

    12.5如果要添加内网ip信任(接受其所有TCP请求)
    iptables -A INPUT -p tcp -s 192.168.1.50(改为允许的内网IP即可) -j ACCEPT

    12.6过滤除iptables规则之外的所有请求
    命令:iptables -P INPUT DROP

     重点:保存规则

    注意:设置完成以后先执行命令iptables -L -n看一下配置是否正确。
    没问题后,先不要急着保存,因为没保存只是当前有效,重启后就不生效,这样万一有什么问题,可以后台强制重启服务器恢复设置。
    另外开一个ssh连接,确保可以登陆。
    确保没问题之后在进行保存
    保存命令:service iptables save

    重启防火墙

    systemctl restart iptables.service

    杂项

    15.1要封停一个IP,使用下面这条命令
    命令:iptables -I INPUT -s ... -j DROP

    15.2 要解封一个IP,使用下面这条命令
    命令:iptables -D INPUT -s ... -j DROP

     删除某个已有规则

    要删除规则那么我们就需要先将所有iptables规则以序号标记显示,执行:
    命令:iptables -L -n --line-numbers

    比如要删除INPUT里序号为8的规则,执行:
    命令:iptables -D INPUT 8

    例子:完整的设置脚本

     #!/bin/sh  
    
    #查看iptables现有规则  
    iptables -L -n  
    
    #先允许所有,不然有可能会杯具  
    iptables -P INPUT ACCEPT  
    
    #清空所有默认规则  
    iptables -F  
    
    #清空所有自定义规则  
    iptables -X  
    
    #所有计数器归0  
    iptables -Z  
    
    #允许来自于lo接口的数据包(本地访问)  
    iptables -A INPUT -i lo -j ACCEPT  
    
    #开放22端口  
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT  
    
    #开放21端口(FTP)  
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT  
    
    #开放80端口(HTTP)  
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT  
    
    #开放443端口(HTTPS)  
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT  
    
    #允许ping  
    iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT  
    
    #允许接受本机请求之后的返回数据 RELATED,是为FTP设置的  
    iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT  
    
    #其他入站一律丢弃  
    iptables -P INPUT DROP  
    
    #所有出站一律绿灯  
    iptables -P OUTPUT ACCEPT  
    
    #所有转发一律丢弃  
    iptables -P FORWARD DROP  
    
    #保存  
    service iptables save 
    
    #重启动
    serv systemctl restart iptables.service


    参考
    作者:P喵呜_PHPoop
    链接:https://www.jianshu.com/p/8fd07c60f23f

  • 相关阅读:
    yum安装报错“rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 1e5e0159”
    EM64T和64位是不是一个概念啊?他们有什么区别啊,怎么区分啊?
    Can't load IA 32-bit .dll on a AMD 64-bit platform
    中间件——Oracle Fusion Middleware
    Does Windows have a limit of 2000 threads per process?
    java8 Lambda Stream操作list,map
    Mybatis优雅存取json字段的解决方案
    网站服务器架构部署方案发展
    springboot flowable Cause: org.xml.sax.SAXParseException; lineNumber: 25; columnNumber: 14; 元素类型为 "include" 的内容必须匹配 "EMPTY"
    java.lang.NoClassDefFoundError: javax/el/ELManager
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11183310.html
Copyright © 2011-2022 走看看