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

. 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 的用户信息

iptables 学习笔记的更多相关文章

  1. Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  2. Linux下iptables学习笔记

    Linux下iptables学习笔记 在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了.但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6. ...

  3. 【转】IPtables学习笔记

    写在前面,大家测试玩iptables时要记得自己配置了那些东西,测试完成后记得删除啊,博主忘了删除一个input REJECT链的一条记录,后续测试搭建了apache服务器,始终无法访问,最后抓包发现 ...

  4. iptables学习笔记

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3812510.html ...

  5. iptables学习笔记_____摘自朱双印个人日志 ____http://www.zsythink.net/

    iptables为我们预先定义了四张表 raw.mangle.nat.filter filter表负责过滤:允许那些ip访问.拒绝那些ip访问.允许那些端口...是最常用的表 #查看表里面所有的规则i ...

  6. Linux学习笔记之iptables学习笔记

    iptables系列学习推荐: http://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/iptab ...

  7. Linux防火墙iptables学习

    http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...

  8. Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

    自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...

  9. Hadoop入门学习笔记---part1

    随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...

随机推荐

  1. Mysql—数据类型详解

    在MySQL中常用数据类型主要分为以下几类:数值类型.字符串类型.日期时间类型. 数值类型 字符串类型 日期时间类型  数据类型  字节数  取值范围  格式 备注   year  1  1901~2 ...

  2. [Linux]gocron定时任务平台的部署

    采用二进制文件的方式部署非常简单,因为go已经把源码打包成了可执行文件,下载下来直接运行就可以了,不需要自己去编译和配置依赖 下载执行文件的地址是:https://github.com/ouqiang ...

  3. STM32HAL快速上手

    STM32HAL快速上手 资料下载 如果在下面的网站中没有账户,建议用edu邮箱创建账户. STMicroeletronic 意法半导体官网 首页 - STMicroelectronics 意法半导体 ...

  4. MATLAB高斯混合数据的生成

    MATLAB高斯混合数据的生成 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MATLAB中GMM聚类算法:M ...

  5. 7.Java基础_Java数据输入

    import java.util.Scanner; public class Output { public static void main(String[] args){ Scanner sc=n ...

  6. RedisTemplate操作Redis(spring-data-redis)

    参看博客:https://www.cnblogs.com/songanwei/p/9274348.html 使用文档:StringRedisTemplate+RedisTemplate使用说明

  7. Re-androideasy

    题目地址 https://dn.jarvisoj.com/challengefiles/androideasy.apk.17e528e9498d4ae25dc82ad43730a03d 先看看功能 然 ...

  8. 题解 P2719 【搞笑世界杯】

    其实懂了之后很简单,但是刚开始真的很难想.. d[a][b]表示剩a张A类票和b张B类票时,最后两张票相同的概率 那么此时的排队的第一个人只有两种选择 拿A类票或者B类票 抛硬币得到的可能性当然是二分 ...

  9. LCT好题总结

    写在前面: 初探多项式之后,开始了数据结构之旅,可持久化数据结构的总结大概是咕了,只总结一些$LCT$的题 T1:水管局长数据加强版 发现题中只有删边操作,而我们只会做加边,所有考虑时光倒流 先在最后 ...

  10. Ubuntu中如何使得程序在后台运行

    Ubuntu中如何使得程序在后台运行 一.前言 在Ubuntu中有的程序启动需要执行改程序./bin目录下的文件,并且启动之后这个shell就不能使用和关闭了,非常的麻烦,因此就有了相应的命令来解决这 ...