zoukankan      html  css  js  c++  java
  • iptables 学习笔记

    1. 安装iptables

    yum install iptables

    centos7: yum install -y iptables-services

    2. service命令

    查看iptables是否在运行:service iptables status

     

     启动iptables:service iptables start

      重启iptables

      关闭iptables

    3. 开机启动iptables

    4. 将iptables规则保存的文件 /etc/sysconfig/iptables

    service iptables save

    5. iptables 防火墙调试方法 

    因为我们的服务器可能是云服务器,只能通过ssh登录,给这样的服务器配置防火墙时,很容易把自己也挡在了外面,导致无法ssh登陆服务器的尴尬局面,所以一般我们弄一个cron定时任务,每隔2分钟执行一次,来清理防火墙的配置,还原到最初状态。

    即使我们配置错了,2分钟之后,cron定时任务执行,我们又可以ssh登录上服务器。

     cat iptables_test.sh 内容:

    这里清理所有规则,清理自定义规则,打开22端口,设置默认ACCEPT。

    6. mysql主机防火墙设置:

    1)防火墙打开ssh的22端口:

    允许22端口的TCP入口流量:  iptables -I INPUT -p tcp --dport 22 -j ACCEPT 

    允许22端口的TCP出库流量: iptables -I OUTPUT -p tcp --sport 22  -j ACCEPT

    改进1:

    只允许192.168.52.102的服务器可以访问mysql服务器的22端口:

    iptables -A INPUT -p tcp -s 192.168.52.102 --dport 22 -j ACCEPT

    改进2:

    只允许192.168.52.0/24 这个网段的服务器可以访问mysql服务器的22端口:

    iptables -A INPUT -p tcp -s 192.168.52.0/24 --dport 22 -j ACCEPT

    这样mysql的服务器只允许局域网能够ssh。

    2)防火墙打开mysql的3306端口:

    允许3306端口的TCP入口流量: iptables -I INPUT -p tcp --dport 3306 -j ACCEPT 

    允许3306端口的TCP出口流量:iptables -I OUTPUT -p tcp --sport 3306  -j ACCEPT

    改进1:

    只允许192.168.52.102的服务器可以访问mysql的3306端口:

    iptables -A INPUT -p tcp -s 192.168.52.102 --dport 3306 -j ACCEPT

    改进2:

    只允许192.168.52.0/24 这个网段的服务器可以访问mysql的3306端口:

    iptables -A INPUT -p tcp -s 192.168.52.0/24 --dport 3306 -j ACCEPT

    这样mysql只允许局域网能够连上。

    3)设置默认拒绝:

    iptables -P INPUT DROP

    iptables -P OUTPUT DROP

    4)查看最后结果:

    5)测试

    telent 192.168.52.102 3306

    nmap -sS 192.168.52.102 

     测试 3306 和 22端口都打开了,未发现其他端口。

    7)127.0.0.1 回环网络

     但是你会发现一个问题,在mysql所在服务器执行:

    telnet 127.0.0.1 3306时结果如下:

    处理方法:

    iptables -A INPUT -i lo -j ACCEPT

    iptables -A OUTPUT -o lo -j ACCEPT

    7. Tomcat主机防火墙设置:

    1)防火墙打开ssh的22端口:

    允许22端口的TCP入口流量:  iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

    允许22端口的TCP出库流量:  iptables -A OUTPUT -p tcp --sport 22  -j ACCEPT

    2)80端口和443端口

     iptables -I INPUT -p tcp --dport 80 -j ACCEPT 

     iptables -I OUTPUT -p tcp --sport 80  -j ACCEPT

     iptables -A INPUT -p tcp --dport 443 -j ACCEPT 

     iptables -A OUTPUT -p tcp --sport 443  -j ACCEPT

    3)设置默认拒绝:

    iptables -P INPUT DROP

    iptables -P OUTPUT DROP

    iptables -P FORWARD DROP

    4)127.0.0.1回环地址:

    iptables -A INPUT -i lo -j ACCEPT

    iptables -A OUTPUT -o lo -j ACCEPT

    5)查看结果

    6)tomcat 需要访问 mysql

     tomcat在 192.168.52.101,而mysql在192.168.52.102上面。

    iptables -A OUTPUT -p tcp -d 192.168.52.102 --dport 3306 -j ACCEPT ; 允许tomcat的数据包发送给192.168.52.102:3306

    iptables -A INPUT -p tcp -s 192.168.52.102 --sport 3306 -j ACCEPT; 允许192.168.52.102:3306的响应数据包进入tomcat的服务器;

    使用web项目测试, 可以正常访问mysql中的数据。

    当然这里只是设置了tomcat所在服务器的 iptables,mysql所在的服务器iptables也需要设置,参见“5. mysql主机防火墙设置”。

    最后的iptables设置如下所示:

    8. mysql主从复制环境iptables设置

    master: 192.168.120.31

    slave:   192.168.120.32

    1)slave服务器上面iptables配置

    先查看复制涉及到的ip和端口,在正常复制的slave服务器上面执行:

    netstat -pan | grep mysqld | grep 192.168.120.31

    可以看到,slave服务器上面复制需要访问 master的3306端口,而且访问master的3306端口的是一个随机的端口(本次是34276)。所以我们在slave上面设置下面的iptables规则:

    iptables -A INPUT -p tcp -s 192.168.120.31 --sport 3306 -j ACCEPT
    iptables -A OUTPUT -p tcp -d 192.168.120.31 --dport 3306 -j ACCEPT

    网上查到说需要使用udp,干脆我们也将udp也加上:

    iptables -A INPUT -p udp -s 192.168.120.31 --sport 3306 -j ACCEPT
    iptables -A OUTPUT -p udp -d 192.168.120.31 --dport 3306 -j ACCEPT

    2)slave服务器的mysql,其他的tomcat需要读取,所以需要加上下面的配置:

    iptables -I INPUT -p tcp -s 192.168.120.0/24 --dport 3306 -j ACCEPT
    iptables -I OUTPUT -p tcp --sport 3306 -j ACCEPT

    同一个网段的都可以访问 slave 的mysql。

    3)脚本内容如下:

     iptables的设置建议使用脚本文件。

    4)查看结果:

     可以看到 upd没有看到流量,主从复制需要用到udp表示怀疑。。。

    5)开机启动iptables:

     systemctl start iptables

    6)master服务器上面iptables配置

    先查看哪些端口在使用:

    netstat -pan 包括了tcp和upd;

    netstat -pant 只有tcp;

    netstat -panu 只有udp;

     

    查看某个端口对应的进程:

    lsof -i:25

    fuser -n tcp -v 25

    fuser安装命令:yum install psmisc

    fuser -- 就是 file/tcp/udp 的用户信息

  • 相关阅读:
    div3--C. Pipes
    Problem F Free Weights
    H
    Problem C Careful Ascent
    Problem L. World Cup
    Problem E. Bet
    Problem D. Ice Cream Tower
    A. Number Theory Problem
    A
    软考知识点梳理--项目评估
  • 原文地址:https://www.cnblogs.com/digdeep/p/11623309.html
Copyright © 2011-2022 走看看