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
. 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 学习笔记的更多相关文章
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]
Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...
- Linux下iptables学习笔记
Linux下iptables学习笔记 在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了.但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6. ...
- 【转】IPtables学习笔记
写在前面,大家测试玩iptables时要记得自己配置了那些东西,测试完成后记得删除啊,博主忘了删除一个input REJECT链的一条记录,后续测试搭建了apache服务器,始终无法访问,最后抓包发现 ...
- iptables学习笔记
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3812510.html ...
- iptables学习笔记_____摘自朱双印个人日志 ____http://www.zsythink.net/
iptables为我们预先定义了四张表 raw.mangle.nat.filter filter表负责过滤:允许那些ip访问.拒绝那些ip访问.允许那些端口...是最常用的表 #查看表里面所有的规则i ...
- Linux学习笔记之iptables学习笔记
iptables系列学习推荐: http://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/iptab ...
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...
- Hadoop入门学习笔记---part1
随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...
随机推荐
- 【CobaltStrike】对CobaltStrike内置功能模块的了解
对CobaltStrike内置功能模块的了解 0x00 右键功能列表 Interact 打开beacon Access dump hashes 获取hash Elevate 提权 Golden Tic ...
- 6.GC垃圾回收算法和垃圾收集器的关系
JAVAGC垃圾回收机制和常见垃圾回收算法 推荐博客:JVM垃圾回收机制和常见垃圾回收算法 JVM的内存结构.垃圾回收算法
- Html学习之一(锚点链接的使用,页面间的跳转)
页面一: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- 201871010132-张潇潇-《面向对象程序设计(java)》第八周总结
201871010132-张潇潇<面向对象程序设计(java)>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...
- mongodb的数据库,集合,数据可介绍。
我们知道,在关系型数据库里面有数据库.数据表.表里面是一行一行的数据.而mongodb是非关系型数据库,它有的是数据库.集合.文档,分别对应关系型里面的数据库.数据表.和表里面一行一行的数据.在mon ...
- [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
About this Course This course will teach you the "magic" of getting deep learning to work ...
- VScode Python 虚拟环境
安装python环境 在VScode里设置Python 虚拟环境查找路径(Settings -> Extensions -> Python Configurations -> Env ...
- vue 使用watch监听实现类似百度搜索功能
watch监听方法,watch可以监听多个变量,具体使用方法看代码: HTML: <!doctype html> <html lang="en"> < ...
- 关于 Noip的考纲
关于 \(\text{Noip}\) 的考纲 先放一张图 : 此图包含了 \(\text{Noip}\) 自开始到结束 的所有真题的考察知识点 算法分类标准主要来自于 \(\text{Luogu}\) ...
- 日常笔记6C++标准模板库(STL)用法介绍实例
一.vector常见用法详解 vector翻译为向量,但是这里翻译成变长数组的叫法更好理解. 如果typename是一个STL容器,定义的时候要记得在>>符号之间加上空格,因为在C++11 ...