zoukankan      html  css  js  c++  java
  • iptables


    1.防火墙开启
    service iptables start

    2.防火墙关闭
    service iptables stop

    3.防火墙规则保存
    service iptables save

    4.防火墙状态
    service iptables status

    5.防火墙规查看
    iptables -L -n

    6.防火墙规则清除
    iptables [-t tables] [-FXZ]
    -F 清除所有的已定义规则
    -X 清除所有用户自定义规则
    -Z 将所有的chain的计数和流量归0


    7.iptables定义默认策略
    iptables [-t nat] -P [INPUT, OUTPUT, FORWARD] [ACCEPT, DROP]

    例:
    将本机INPUT设置为DROP,其他设置为ACCEPT
    #iptables -P INPUT DROP
    #iptables -P OUTPUT ACCEPT
    #iptables -P FORWARD ACCEPT

    8.防火墙规则查看

    #iptables -nL --line-number

    9.按行删除防火墙规则

    #iptables -D INPUT 2 #删除input的第二行


    9.iptables设置规则:
    #iptables [-AI 链] [-io 网络接口] [-p 协议] [-s 来源ip/网段] [--sprot 端口范围] [-d 目标ip/网段] [--dport 端口范围] -j [ACCEPT/DROP]

    参数介绍:
    -AI 针对某点规则进行插入或累加
    -A 加在现有规则的最后面
    -I 插入现有规则的最前面

    -io 网络接口
    -i 数据进入接口 如 -i eth0
    -o 数据流出接口 需要与OUTPUT配合

    -p 协议,主要有tcp,udp, icmp, 及all

    -s 来源ip
    -d 目标ip

    -j 主要有ACCEPT/接受 DROP/丢弃 LOG/记录

    开启80端口
    #iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    #iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

    开启22端口
    #iptables -I INPUT -p tcp --dport 22 -j ACCEPT

    打开主动模式21端口
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT 



    打开被动模式49152~65534之间的端口
    iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

    把3306端口设置为只允许本机访问
    #iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT
    #iptables -A OUTPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT

    开放进出端口

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

    设置完iptables后要记得保存下

    service iptables save

    否则重启后将失效

    *******************************************************************************

    为了更严厉的防火墙存取限制,一般初学者会这样配配置:
    #iptables -P INPUT DROP
    #iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    也就是主机只有打算开放 ssh 服务对外提供存取。

    这样乍看之下好像非常正确,但是设定好后外面是可以连到该 port 22 服务,但是却导致了一个后续的问题,也就是 "该主机若是要主动对外要建立连线却被禁止"。比方这台服务主机无法使用 ssh 登入到远端主机,也无法用浏览器看其他主机 port 80 的 http 服务的。

    引起该问题的原因呢? TCP/IP 本身是双向的,也就是有出必有进,有进必有出。这个规则没考虑到这点问题。

    当主机对外要建立连线时,对方势必也要回应封包到原主机,所以回应的封包是要被允许的。不过该配置来看却没考虑到这点问题,所以导致回应的封包被丢弃,所以连线根本建立失败。

    所以设定 -P INPUT DROP 时,一般正确方式应该考虑加上允许主机本身对外连线时对方回应封包项目,也就是:
    #iptables -P INPUT DROP
    #iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
    #iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    不过上面规则通常应该考虑的是,主机本身对外只有提供可以连结存取port 22 该 ssh 服务,但是若是自己主机有开 port 80 与 port 25 等  服务项目的话,这样配置却也导致自己存取自己的主机服务也被限制住了。

    基于该问题,一般会建议加上由 loopback interface 该界面不受到该 firewall 组态限制而被阻挡,一般会建议改成:
    #iptables -P INPUT DROP
    #iptables -A INPUT -i lo -j ACCEPT
    #iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

    #iptables -A INPUT -p tcp --dport 22 -j ACCEPT

  • 相关阅读:
    线程的故事:我的3位母亲成就了优秀的我!
    Semaphore自白:限流器用我就对了!
    CyclicBarrier:人齐了,老司机就可以发车了!
    最新版Swagger 3升级指南和新功能体验!
    阿里巴巴Druid,轻松实现MySQL数据库连接加密!
    try-catch-finally中的4个大坑,不小心就栽进去了!
    Git 常用命令总结,将会持续更新
    oracle in 条件超长问题解决
    关于java中使用split方法末尾空值被丢弃的问题
    Ubuntu 嵌入式开发准备
  • 原文地址:https://www.cnblogs.com/itfenqing/p/4429416.html
Copyright © 2011-2022 走看看