• linux 防火墙详细介绍


    1、其实匹配扩展中,还有需要加-m引用模块的显示扩展,默认是隐含扩展,不要使用 -m
    状态检测的包过滤
    -m state
          --state {NEW,ESTATBLISHED,INVALID,RELATED}  指定检测那种状态
    -m multiport 指定多端口号
          --sport
          --dport
          --ports
    -m iprange 指定IP段
          --src-range ip-ip
          --dst-range ip-ip
    -m connlimit 连接限定
          --comlimit-above # 限定大连接个数
    -m limit 现在连接速率,也就是限定匹配数据包的个数
          --limit  指定速率
          --limit-burst # 峰值速率,最大限定
    -m string 按字符串限定
          --algo bm|kmp  指定算法bm或kmp
          --string "STRING" 指定字符串本身
     
    # iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.80.139 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    允许任何主机状态为NEW,ESTABLISHED的状态连接,这里要注意当写成0.0.0.0/0.0.0.0 表示任意地址的时候是可以省略的,如下即可:
    # iptables -A INPUT -d 192.168.80.140 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    允许本机的ESTABLISHED状态出去,为了防止有反弹时木马,让服务器主动向外发起请求
    # iptables -A OUTPUT -s 192.168.80.140 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
    之后再修改默认权限为拒绝即可
    # iptables -P INPUT DROP
    # iptables -P OUTPUT DROP
    现在在本机ping 127.0.0.1,发现时不同的,所以要允许本机,下面在写一个:
    # iptables -I INPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
    # iptables -I OUTPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
    如果要限制80端口的话,那在就在写一条,现在写在一条里,为了节省查询时间
    之前的--sport或--dport 后面可以添加连续的如 --sport 22:80 表示从22到80的所有端口,不符合现在的条件,所以我们用第二个显示扩展:
    # iptables -A INPUT -d 192.168.80.140 -p tcp -m multiport --dport 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT
    这样就把22,80 和在一起的,OUTPUT同理但注意源端口目标端口,之后再删除原来的即可
    (注意:有SSH的话一定要先添加在删除)
    这里需要知道一点,从本机出去的ESTABLISHED都是现请求进来的,所以可以写成如下:
    # iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
    表示所有客户端NEW请求进来服务器返回ESTABLISHED的状态全部允许
    也可以添加在INPUT中,提高查询速度
    # iptables -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT 
    这里的原理是,当NEW请的时候匹配他自己的那条规则,当建立连接后直接就匹配这条规则,提高效率
    例如:第一条是允许ESTABISHED 的,第二条是22,的NEW,ESTABLISHED的规则,这样当用户请求22的时候先匹配22的NEW,之后的ESTABLISHED状态时直接匹配第一条,不用在去匹配第二条的规则了,这样当我们有许多条目的时候大大提高了效率

    # iptables -A INPUT -d 192.168.80.140 -m iprange --src-range 192.168.80.130-192.168.80.150 -p tcp --dport 23 -m state --state NEW -j ACCEPT
    指定192.168.80.130-192.168.80.150 可以访问本机的23端口

    # iptables -I INPUT 2 -d 192.168.80.140 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 2 -j ACCEPT
    这里connlimit ! --connlimit-above 2 -j ACCEPT 表示只允许SSH本机2次,connlimit --connlimit-above 2 -j DROP 表示超过2次后拒绝,这里因为默认权限是拒绝的所以用!取反,而且前面有写允许22端口的,这里不匹配后就会先下匹配那条,将匹配22允许的更改即可。
    # iptables -A INPUT -d 192.168.80.140 -p tcp --dport 80 -m state --state  NEW -m limit --limit 1/second --limit-burst 3 -j ACCEPT
    表示对web服务的新连接请求,平均每秒只允许1个,最多一次进3个

    # iptables -I OUTPUT 1 -m string --algo kmp --string "peace" -j DROP
    表示本机响应当中包含“peace”字符串的机拒绝
    2、如何开发FTP
    主动模式开放FTP
    # iptables -A INPUT -d 192.168.80.140 -p tcp --dport 21 -m state --state NEW -j ACCEPT
    # iptables -A INPUT -d 192.168.80.140 -p tcp --dport 20 -m state --state NEW -j ACCEPT
    # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    被动模式开放FTP
    1)清空之前的配置,重启服务即可
    # service iptables restart
    2)先添加ssh规则
    # iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
    # iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
    # iptables -A INPUT -d 192.168.80.140 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 3 -j ACCEPT
    # iptables -P INPUT DROP
    # iptables -P OUTPUT DROP

    3)下面开启FTP
    # iptables -A INPUT -d 192.168.80.140 -p tcp --dport 21 -m state --state NEW -j ACCEPT
    但是访问还是不行

    4)先加载模块
    # modprobe ip_nat_ftp
    # lsmod | grep ftp
    ip_nat_ftp              7361  0
    ip_nat                 20973  1 ip_nat_ftp
    ip_conntrack_ftp       11569  1 ip_nat_ftp
    ip_conntrack           53409  5 ip_nat_ftp,ip_nat,ip_conntrack_ftp,xt_connlimit,xt_state
    5)开发RELATED状态
    # iptables -R INPUT 2 -m state --state ESTABLISHED,RELATED -j ACCEPT
    # iptables -R OUTPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    6)在连接下发现可以了

    iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited
    iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

    //开放38342端口

    iptables -I INPUT 2 -p tcp -m tcp --dport 38342 -j ACCEPT

    如果有问题可以加我微信(baolongsj)共同学习和进步…..
  • 相关阅读:
    对struts2的简单理解
    对xml文件封装思想的处理
    反射技术
    设计模式之观察者模式
    设计模式之单例模式
    浅谈对象的克隆
    细说 过滤篇
    flex html 用flex展示html
    git同一文件由于文件名大小写不同导致不能合并
    关于C#引用Dll后,找不到命名空间的问题
  • 原文地址:https://www.cnblogs.com/521football/p/3767556.html
Copyright © 2020-2023  润新知