IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux学习-iptables操作 -> 正文阅读

[系统运维]Linux学习-iptables操作

作者:token operator

iptables操作事例

#获取filter表中的规则链信息
[root@nginx02 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  
#创建一个自定义链名为IN_public       
[root@nginx02 ~]# iptables -t filter -N IN_public
#查看filter链
[root@nginx02 ~]# iptables -t filter -L
...
Chain IN_public (0 references)
target     prot opt source               destination         
#自定义链没有被引用,可以通过-E参数进行自定义链重命名
[root@nginx02 ~]# iptables -t filter -E IN_public OUT_public
[root@nginx02 ~]# iptables -t filter -L
...    
Chain OUT_public (0 references)
target     prot opt source               destination 
#清空链
[root@nginx02 ~]# iptables -F
#清除所有规则
[root@nginx02 ~]# iptables -X
#修改链的匹配规则
[root@nginx02 ~]# iptables -t filter -P FORWARD DROP
[root@nginx02 ~]# iptables -L -n
...
Chain FORWARD (policy DROP)
target     prot opt source               destination         
...
#显示指定规则的号码
[root@nginx02 ~]# iptables -L -n --line-numbers
...
Chain IN_public (2 references)
num  target     prot opt source               destination         
1    IN_public_log  all  --  0.0.0.0/0            0.0.0.0/0           
2    IN_public_deny  all  --  0.0.0.0/0            0.0.0.0/0  
...
#删除FORWARD链上的第9条规则
[root@nginx02 ~]# iptables -D FORWARD 9
#指定源地址为任意地址,目标地址为本机,且为TCP协议的所有数据包均放行
[root@nginx02 ~]# iptables -t filter -A INPUT -d 192.168.88.102 -p tcp -j ACCEPT
[root@nginx02 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            192.168.88.102 
#指定由本机发出的TCP协议报文与任意主机进行通信都放行
[root@nginx02 ~]# iptables -t filter -A OUTPUT -s 192.168.88.102 -p tcp -j ACCEPT
[root@nginx02 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            192.168.88.102      

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.88.102       0.0.0.0/0 
#修改指定链的target为drop
[root@nginx02 ~]# iptables -P INPUT DROP
[root@nginx02 ~]# iptables -P OUTPUT DROP
[root@nginx02 ~]# iptables -P FORWARD DROP
[root@nginx02 ~]# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            192.168.88.102      

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.88.102       0.0.0.0/0
#开启本机[192.168.88.102]ping,80,22对外访问的规则
[root@nginx02 ~]# iptables -t filter -A INPUT -d 192.168.88.102 -p icmp -j ACCEPT
[root@nginx02 ~]# iptables -t filter -A OUTPUT -s 192.168.88.102 -p icmp -j ACCEPT
#放行SSH(22端口)服务
[root@nginx02 ~]# iptables -A OUTPUT -p tcp --sport=22 -s 192.168.88.102 -j ACCEPT
[root@nginx02 ~]# iptables -A INPUT -p tcp --dport=22 -d 192.168.88.102 -j ACCEPT
#放行http(80端口)服务
[root@nginx02 ~]# iptables -A OUTPUT -p tcp --sport=80 -s 192.168.88.102 -j ACCEPT
[root@nginx02 ~]# iptables -A INPUT -p tcp --dport=80 -d 192.168.88.102 -j ACCEPT
#查看设置的规则
[root@nginx02 ~]# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            192.168.88.102       tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            192.168.88.102       tcp dpt:80
ACCEPT     icmp --  0.0.0.0/0            192.168.88.102      

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.88.102       0.0.0.0/0            tcp spt:22
ACCEPT     tcp  --  192.168.88.102       0.0.0.0/0            tcp spt:80
ACCEPT     icmp --  192.168.88.102       0.0.0.0/0  
#查看内核模块nf_conntrack
[root@nginx02 netfilter]# pwd
/lib/modules/3.10.0-862.el7.x86_64/kernel/net/netfilter
[root@nginx02 netfilter]# modinfo nf_conntrack_ftp
filename:       /lib/modules/3.10.0-862.el7.x86_64/kernel/net/netfilter/nf_conntrack_ftp.ko.xz
alias:          nfct-helper-ftp
alias:          ip_conntrack_ftp
description:    ftp connection tracking helper
author:         Rusty Russell <rusty@rustcorp.com.au>
license:        GPL
retpoline:      Y
rhelversion:    7.5
srcversion:     83D9304C9B64D8FBC064040
depends:        nf_conntrack
intree:         Y
vermagic:       3.10.0-862.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        3A:F3:CE:8A:74:69:6E:F1:BD:0F:37:E5:52:62:7B:71:09:E3:2B:96
sig_hashalgo:   sha256
parm:           ports:array of ushort
parm:           loose:bool  
#查看nf_conntrack当前连接数     
[root@nginx02 netfilter]# cat /proc/sys/net/netfilter/nf_conntrack_count
1
#查看nf_conntrack表最大连接数
[root@nginx02 netfilter]# cat /proc/sys/net/netfilter/nf_conntrack_max
262144
#查看已经追踪到并记录下的连接
[root@nginx02 net]# cat /proc/net/nf_conntrack
ipv4     2 tcp      6 299 ESTABLISHED src=192.168.88.1 dst=192.168.88.102 sport=51385 dport=22 src=192.168.88.102 dst=192.168.88.1 sport=22 dport=51385 [ASSURED] mark=0 zone=0 use=2
ipv4     2 tcp      6 431982 ESTABLISHED src=192.168.88.1 dst=192.168.88.102 sport=50469 dport=22 src=192.168.88.102 dst=192.168.88.1 sport=22 dport=50469 [ASSURED] mark=0 zone=0 use=2
ipv4     2 tcp      6 431986 ESTABLISHED src=192.168.88.1 dst=192.168.88.102 sport=51384 dport=22 src=192.168.88.102 dst=192.168.88.1 sport=22 dport=51384 [ASSURED] mark=0 zone=0 use=2
#通过dmesg查看nf_conntrack的信息
[root@nginx02 netfilter]# dmesg | grep nf_conntrack
[  232.452376] nf_conntrack version 0.5.0 (65536 buckets, 262144 max)
[root@nginx02 netfilter]# cat /proc/sys/net/netfilter/nf_conntrack_buckets
65536
[root@nginx02 netfilter]# cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
432000
#通过内核参数查看命令,查看所有参数配置
[root@nginx02 netfilter]# sysctl -a | grep conntrack
#一次放行多个端口(-m multiport)
[root@nginx02 netfilter]# iptables -I OUTPUT -s 192.168.88.102 -p tcp -m multiport --sport=22,80 -j ACCEPT
[root@nginx02 netfilter]# iptables -I INPUT -d 192.168.88.102 -p tcp -m multiport --dport=22,80 -j ACCEPT
#指定IP地址范围(-m iprange)放行
[root@nginx02 ~]# iptables -I INPUT -d 192.168.88.102 -p tcp -m iprange --src-range=192.168.88.1-192.168.88.100 -m multiport --dport=22,80 -j ACCEPT
[root@nginx02 ~]# iptables -I OUTPUT -s 192.168.88.102 -p tcp -m iprange --dst-range=192.168.88.1-192.168.88.100 -m multiport --sport=22,80 -j ACCEPT
#string扩展
[root@nginx02 ~]# iptables -I OUTPUT -m string --algo='bm' --string='movie' -j REJECT
#time扩展(注意时间格式问题)
[root@nginx02 ~]# iptables -I INPUT -d 192.168.88.102 -p tcp --dport 80 -m time --timestart 23:39 --timestop 23:45 -j REJECT
#connlimit(同一主机并发连接数限制),限制连接上限为3
[root@nginx02 ~]# iptables -I INPUT -p tcp -d 192.168.88.102 --dport 22 -m connlimit --connlimit-above=3 -j REJECT
#limit扩展,基于收发报文速率做检查
#--limit表示速率,--limit-burst表示上限
[root@nginx02 ~]# iptables -A INPUT -d 192.168.88.102 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 30/minute -j ACCEPT
#--state扩展
#开通22端口
[root@nginx02 ~]# iptables -I INPUT -d 192.168.88.102 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@nginx02 ~]# iptables -I OUTPUT -s 192.168.88.102 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#开通ping请求
[root@nginx02 ~]# iptables -I INPUT -d 192.168.88.102 -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@nginx02 ~]# iptables -I OUTPUT -s 192.168.88.102 -p icmp --icmp-type 0 -m state --state ESTABLISHED -j ACCEPT

#------------------开放被动模式的ftp服务
#安装vsftpd服务
[root@nginx02 netfilter]# yum install -y vsftpd
#1)装载nf_conntrack_ftp模块
[root@nginx02 netfilter]# modprobe nf_conntrack_ftp
[root@nginx02 netfilter]# lsmod | grep ftp
nf_conntrack_ftp       18638  0 
nf_conntrack          133053  7 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ftp,nf_conntrack_ipv4,nf_conntrack_ipv6
#2)放行请求报文
#命令连接:NEW,ESTABLISH
#数据连接:RELATED,ESTABLISHED
#放行命令连接
[root@nginx02 ~]# iptables -I INPUT -d 192.168.88.102 -p tcp -m multiport --dport 21,22,80 -m state --state NEW -j ACCEPT
#放行数据连接
[root@nginx02 ~]# iptables -I INPUT -d 192.168.88.102 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
#3)放行响应报文
[root@nginx02 ~]# iptables -I INPUT -s 192.168.88.102 -p tcp -m state --state ESTABLISHED -j ACCEPT
#------------------开放被动模式的ftp服务
#----------------保存和重载规则
#保存规则
[root@nginx02 ~]# iptables-save > /etc/sysconfig/iptables
#重载规则
[root@nginx02 ~]# iptables-restore < /etc/sysconfig/iptables
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:41:37  更:2022-04-27 11:43:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:47:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码