2024整理 iptables防火墙学习笔记大全_modepro iptables

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

FILTER
NAT
MANGLE
提示:所有链名都要大写
4.表及其链的功能
Filter表
主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)。filter表是iptables默认使用的表。这个表定义了三个链(chains):
企业工作场景:主机防火墙。
INPUT:负责过滤所有目标地址是本机地址的数据包。通俗的讲,就是过滤进入主机的数据包
FORWARD:负责转发流经主机的数据包。起转发的作用,和Nat关系很大,后面会详细介绍。Lvs NAT模式。net.ipv4.ip_forward=0
OUTPUT:处理所有源地址是本机地址的数据包,通俗的讲,就是处理从主机发出去的数据包。
强调:对于Filter表的控制是我们实现本机防火墙功能的重要手段,特别是对INPUT链的控制
NAT表
负责网络地址转换,即来源与目的ip地址和port的转换。应用:和主机本身无关。一般用于局域网共享上网或者特殊的端口转换服务相关。
NAT功能一般企业工作场景.
l)用于做企业路由(zebra)或网关(iptables),共享上网(POSTROUTING)
2)做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,FTP
服务。(PREROUTING),
3)web,单个端口的映射,直接映射80端口(PREROUTING)。
这个表定义了三个链(chains),nat功能就相当于网络的acl控制。和网络交换机acl类似。
INPUT:和主机发出去的数据包有关。改变主机发出数据包的目标地址。
PREROUTING:在数据包到达防火墙时进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等。(通俗比喻,就是收信时,根据规则重写收件人的地址,这看上去很不地道啊!哈哈。)例如:把公网IP;124.42.60.113映射到局域网的10.0.0.19服务器上。如果是web服务,可以把80转为局域网的服务器上9000端口。
POSTROUTING:在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址、源端口等。(通俗比喻,就是寄信时,写好发件人的地址,要让人家回信时能够有地址可回。),例如:我们现在的笔记本和虚拟机都是10.0.0,0/24,就是出网的时候被我们企业路由器把源地址改成了公网地址了。生产应用:局域网共享上网。
MANGLE表
主要负责修改数据包中特殊的路由标记,如TTL,TOS,MAARK等。这个表定义5个链(Chains)。
INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING。
由于这个表与特殊标记相关,一般情况下,我们用不到这个mangle表,这里就不做详细介绍了。
5.iptables的工作流程
前面介绍己经提到,iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
数据包的流向是从左向右的

小结:
防火墙是层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
如果匹配上规则,即明确表明是阻止还是通过,数据包就不在向下匹配新规则了。
如果所有规则中没有明确表明是阻止还是通过,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
防火墙默认规则是所有的规则执行完才会执行的。
重点:匹配上了拒绝规则也是匹配,例如
[root@mysql ~]# iptables -A INPUT -p tcp --dport 3306 -j DROP
[root@mysql ~]# iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
此时telnet ip address 3306 是不同的,原因就是telnet请求已先匹配上了拒绝规则,因此不会再找下面的规则匹配了。如果希望telnet ip address 3306连通,可以把ACCEPT规则中的-A改为-I,即iptables -I INPUT -p tcp --dport 3306 -j ACCEPT,把允许规则放于INPUT链的第一行生效
6.iptables表和链的工作流程图
下面的这张图清晰的描绘了netfilter对包的处理流程

二、iptables实战应用
1.iptables命令参数详解
iptables内核模块
[root@mysql ~]# /etc/init.d/iptables start #启动防火墙
如果遇到iptables无法启动,可以通过setup–firewall configure–enable
[root@mysql ~]# lsmod|egrep “nat|filter|ipt” #iptables默认加载内核模块
iptable_filter 2793 1
ip_tables 17831 1 iptable_filter
加载如下模块到linux内核
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
清除默认规则
[root@mysql ~]# iptables -h #查看帮助
[root@mysql ~]# iptables -F #清除所有规则,不会处理默认的规则。
[root@mysql ~]# iptables -X #删除用户自定义的链。
[root@mysql ~]# iptables -Z #链的记数器清零。
–flush -F [chain] Delete all rules in chain or all chains
–delete-chain -X [chain] Delete a user-defined chain
–zero -Z [chain [rulenum]] Zero counters in chain or all chains
禁止规则
[root@mysql ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP #禁止访问22端口
[root@mysql ~]# iptables -t filter -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP #禁止IP地址段进入eth0网卡的流量
–table -t table table to manipulate (default: `filter’)
–append -A chain Append to chain #添加链,最后一条
–new -N chain Create a new user-defined chain #创建一个新链
–policy -P chain target Change policy on chain to target
–insert -I chain [rulenum] Insert in chain as rulenum (default 1=first) #添加链第一条
–delete -D chain Delete matching rule from chain #删除链
–proto -p proto protocol: by number or name, eg. ‘tcp’
–dport #指定目的端口
–in-interface -i input name[+] network interface name ([+] for wildcard)
–source -s address[/mask][…] source specification
-j, --jump target #对规则进行ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)
打台球:如果对方告诉你不去,REJECT(拒绝),如果对方没反应,DROP(丢弃),DROP好于REJECT
使用-I和-A的顺序,防火墙的过滤根据规则顺序的
-A是添加规则到指定链的结尾,最后一条。
-I是添加规则到指定链的开头,第一条。此参数经常用来封IP
测试配置拒绝规则也是匹配
下面的测试有两个要点:非的作用,匹配拒绝也是匹配
Centos5.8版本:iptables -t filter -A INPUT -i eth0 -s ! 192.168.80.1 -j DROP
Centos6.4版本:iptables -t filter -A INPUT -i eth0 ! -s 192.168.80.1 -j DROP
查看规则
[root@mysql ~]# iptables -L -n --line-numbers #以数字形式列出防火请规则
–list -L [chain [rulenum]] List the rules in a chain or all chains
–numeric -n numeric output of addresses and ports
–line-numbers print line numbers when listing #可以用此参数显示的序号删除规则
[root@mysql ~]# iptables -t filter -D INPUT 1 #删除第一条规则
2.详解匹配标准
通用匹配:源地址目标地址的匹配
-s:指定作为源地址匹配,这里不能指定主机名称,必须是IP
IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一个“!”表示除了哪个IP之外
-d:表示匹配目标地址
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据
流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据
流出一般在OUTPUT和POSTROUTING上
隐含扩展:对协议的扩展
-p tcp :TCP协议的扩展。一般有三种扩展
–dport XX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口,比如
–dport 21 或者 --dport 21-23 (此时表示21,22,23)
–sport:指定源端口
–tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)
对于它,一般要跟两个参数:
-p udp:UDP协议的扩展
–dport
–sport
-p icmp:icmp数据报文的扩展
–icmp-type:
echo-request(请求回显),一般用8 来表示
所以 --icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用0来表示
显式扩展(-m)
扩展各种模块
-m multiport:表示启用多端口扩展
之后我们就可以启用比如 --dports 21,23,80
iptables -t filter -A INPUT -p icmp --icmp-type 8 ! -s 192.168.80.1 -j DROP #禁止ping
iptables -A INPUT -d 192.168.80.100 -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.100.1 -d 192.168.80.0/24 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp ! --dport 22 -s 192.168.80.1 -j DROP
iptables -I INPUT -p tcp -m multiport --dport 21,22,23,24 -j ACCEPT #正确
iptables -I INPUT -p tcp --dport 21:24 -j ACCEPT #正确
iptables -I INPUT -p tcp --dport 21,22,23,24 -j ACCEPT #错误
iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state –-state ESTABLISHED -j ACCEPT
3.企业生产环境防火墙配置
清除默认规则
iptables -F
iptables -X
iptables -Z
设置允许本地网段ssh登录
iptables -A INPUT -p tcp --dport 52113 -s 192.168.80.0/24 -j ACCEPT
设置允许本机lo通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
设置默认的防火墙禁止和允许规则:DROP掉FORWARD、INPUT,允许OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
开启信任的ip网段
#允许IDC LAN/WAN和办公网IP的访问,及对外合作机构访问
iptables -A INPUT -s 124.43.62.95/27 -p all -j ACCEPT #办公室固定IP段
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT #IDC机房的内网网段
iptables -A INPUT -s 10.0.0.0/27 -p all -j ACCEPT #其他机房的内网网段
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT #IDC机房的外网网段
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT #其他IDC机房的外网网段
允许业务服务端口对外访问(80)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
允许icmp类型协议通过
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT 如果不想开,就不执行此步
iptables -A INPUT -p icmp -s 192.168.80.0/24 -m icmp --icmp-type 8 -j ACCEPT #允许内网ping
允许关联的包通过(ftp协议)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
使用其他主机扫描此主机的端口
[root@nfs ~]# nmap 192.168.80.105 -p 1-65535

Starting Nmap 5.51 ( http://nmap.org ) at 2016-05-20 20:14 CST
Nmap scan report for mysql.etiantian.org (192.168.80.105)
Host is up (0.00051s latency).
Not shown: 65533 filtered ports
PORT STATE SERVICE
80/tcp closed http
52113/tcp open unknown
MAC Address: 00:0C:29:5D:1D:81 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 118.12 seconds
保存防火墙的配置
/etc/init.d/iptables save #法一
iptables-save >/etc/sysconfig/iptables #法二
cat /etc/sysconfig/iptables 查看iptables配置文件
注:/etc/init.d/iptables save第二次使用时会删除第一次保存的配置
4.生产环境如何维护防火墙
生产中,一般第一次添加规则命令行或者脚本加入然后一次性保存成文件,然后以后可以改配置文件管理
手工封IP
iptables -I INPUT -s 192.168.80.20 -j DROP
自动封IP:分析web或应用日志或者网络连接状面封掉垃圾IP
[root@mysql ~]# cat dropip.sh
#/bin/bash
/bin/netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -rn|head -10|egrep -v ‘192.168|127.0’|awk ‘{if ($2!=null && $1>4) {print $2}}’ >/home/liwen/dropip.txt
for i in $(cat /home/liwen/dropip.txt)
do
/sbin/iptables -I INPUT -s

i

j

D

R

O

P

e

c

h

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
ql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-hF3SVCwh-1713292503142)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值