iptables防火墙(上)

1.常见防火墙选用

  • 硬件防火墙

  • 开源软件:iptables(默认规则改为INPUT DROP)

  • 云服务器:安全组(阿里云 白名单,默认是拒绝的)

2.iptables使用 执行过程
3.iptables 4表5链
4.准备iptables环境
5.iptables功能之一防火墙
  • 封IP 封端口

  • 准许某个ip访问 网段访问

6.iptables功能之内网服务器上外网(共享上网)
7.iptables功能之 端口转发

2.常见防火墙选用

  • 公司网站入口使用的硬件 防火墙 、三次路由带有防火墙功能
  • itpables访问量小 C5 C6自带,CentOS 7为Firewalld
  • SELinux

3.相关名词与单词

名词 含义 对比
容器 存放内容/存放东西
Netfilter/iptables 是表的容器 国家
(table) 是用来存放链的容器
(chain) 链 存放规则的容器
规则(policy) 准许/拒绝访问 区/县

4.防火墙执行过程

  1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下从前到后进行过滤的。
  2. 如果匹配上规则,即明确表示是阻止(DROP)还是通过(ACCEPT)数据包就不再向下匹配新的规则。
  3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
  4. 防火墙的默认规则是所有规则执行完才执行的。
image

5.四表五链

5.1 四表及作用

功能
Filter 过滤,默认的表,防火墙功能
NAT 实现NAT转化:1.共享上网 2.端口转发
mangle 查询帮助man iptables 了解即可
raw 查询帮助man iptables 了解即可

5.2 四表中的5链

image
image
五链:
PREROUTING
FORWARD
INPUT
OUPUT
POSTROUTING

image
image

5.3 filter表和nat表

image

5.3.1 filter表

filter表 企业工作场景:主机防火墙
INPUT 就是过滤进入主机的数据包
FORWARD 负责转发流经主机的数据包
OUTPUT 就是处理从主机发出去的数据包

5.3.2 nat表

nat表
PREROUTING 处理用户请求中的目的地址 目的端口 端口转发 ip映射
POSTROUTING 处理离开服务器的请求 源端口 源ip :共享上网
OUTPUT 和主机放出去的数据包有关,改变主机发出数据包的目的地址

补充:

filter表:
​​INPUT 作用:用于发送到本地套接字的数据包。
​FORWARD 作用:对于正在通过该框路由的数据包
​OUTPUT 作用:用于本地生成的数据包。

nat表:
​PREROUTING 作用:因为他们一进来就改变了包
​OUTPUT 作用:用于在路由之前更改本地划分的数据包。
​POSTROUTING 作用:改变包,因为它们即将离开

6.防火墙之filter表

6.1环境准备

m01 iptables iptables-services
db01 iptables iptables-services
[root@m01 ~]# rpm -qa iptables-services
iptables-1.4.21-28.el7.x86_64
[root@m01 ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables #iptables 配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service    #iptables服务管理配置

启动防火墙

[root@m01 ~]# systemctl stop firewalld    #CentOS7关闭firewalld
[root@m01 ~]# systemctl restart iptables
[root@m01 ~]# systemctl enable iptables

手动加载内核模块

[root@m01 ~]# modprobe ip_tables
[root@m01 ~]# modprobe iptable_filter
[root@m01 ~]# modprobe iptable_nat
[root@m01 ~]# modprobe ip_conntrack
[root@m01 ~]# modprobe ip_conntrack_ftp
[root@m01 ~]# modprobe ip_nat_ftp
[root@m01 ~]# modprobe ipt_state

检查防火墙内核模块是否加载成功:

[root@m01 ~]# lsmod |egrep 'nat|ipt|filter'
nf_nat_ftp             12770  0 
nf_conntrack_ftp       18638  1 nf_nat_ftp
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT
ipt_MASQUERADE         12678  1 
nf_nat_masquerade_ipv4    13412  1 ipt_MASQUERADE
iptable_filter         12810  1 
xt_nat                 12681  2 
iptable_nat            12875  1 
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26787  4 nf_nat_ftp,nf_nat_ipv4,xt_nat,nf_nat_masquerade_ipv4
nf_conntrack          133095  8 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4
ip_tables              27126  2 iptable_filter,iptable_nat
libcrc32c              12644  3 xfs,nf_nat,nf_conntrack

6.2 配置规则-禁止访问22端口

[root@m01 ~]# iptables -F  #清除规则
[root@m01 ~]# iptables -X
[root@m01 ~]# iptables -Z
[root@m01 ~]# iptables -nL #查看规则
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   
[root@m01 ~]# #添加一条规则,禁止22端口访问
[root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
[root@m01 ~]# 
Type `help' to learn how to use Xshell prompt.
[d:\~]$    #断开了~跑下机房

删除规则,重新连接m01
[root@m01 ~]# iptables -nL --line-number #查看防火墙规则
[root@m01 ~]# iptables -t filter -D INPUT 1   #删除第1条规则
[root@m01 ~]# iptables -nL --line-number #再次查看

image

重新连接 22端口就可以用了

Type `help' to learn how to use Xshell prompt.
[d:\~]$ 

Connecting to 10.0.0.61:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Tue Jul  2 17:04:55 2019
[root@m01 ~]# 

配置防火墙规则注意事项:
  1. 去机房重启系统或者登陆服务器删除刚才的禁止规则。

  2. 让机房人员重启服务器或者让机房人员拿用户密码登录进去

  3. 通过服务器的远程管理卡管理(推荐)

  4. 先写一个定时任务,每5分钟就停止防火墙**5. 测试环境测试好,写成脚本,批量执行

6.3 filter表其他规则配置

6.3.1 只让10.0.0.0/24网段进行访问连接

只要是10.0.0.0/24 局域网的用户 访问m01 都ACCEPT

此例子主要限制:网段或ip地址

[root@m01 ~]# iptables -A INPUT -p tcp ! -s 10.0.0.0/24 -j DROP   #"!" 叹号表示取反
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  -- !10.0.0.0/24          0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination      

image

去另一台服务器上测试一下是否成功:

[root@db01 ~]# ssh 10.0.0.61  #连接10.0.0.61,可以连接
root@10.0.0.61's password: 
Last login: Tue Jul  2 17:41:01 2019 from 10.0.0.51
[root@m01 ~]# logout  #退出
Connection to 10.0.0.61 closed.
[root@db01 ~]# ssh 172.16.1.61    #连接172.16.1.61,不可以连接
....等到死

image

6.3.2准许或禁止端口

多个端口:表示范围 1-1024范围

[root@m01 ~]# iptables -I INPUT -p tcp ! --dport 1:1024 -j DROP 
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:!1:1024
2    DROP       tcp  -- !10.0.0.0/24          0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination  

多个端口 不连续 80,443,52113,22

[root@m01 ~]# iptables -I INPUT -p tcp -m multiport ! --dport 80,443,22 -j DROP 
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports  !80,443,22
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination  

6.4 iptables命令及参数

iptables
-t 指定表 filter(默认) nat
-A append 把规则追加到末尾
-I (大写字母i ) insert 把规则插入到规则的第1条 (添加拒绝类规则的时候)
-p protocal 指定协议:tcp /udp/icmp
--dport destination port 目标端口
--sport source port 源端口
-d dest ip address 目标ip地址
-s source ip address 源ip地址
-j jump 方法 DROP (拒绝)、 ACCEPT(准许) 、REJECT(拒绝)
iptables查看 删除
-F 清除链中所有规则
-X 清空自定义链的规则
-Z 清空计数器
-n 不要把端口解析服务名字
-L 显示表中的规则
--line-number 给每个链中的规则加上行号
-D 删除规则 根据规则的号码进行删除

7. nc命令

nc用法:

nc -l 指定监听端口

nc/telnet 连接

[root@m01 ~]# nc -l 888 #m01服务器上
爱你哦
晚上好
你也好

[root@db01 ~]# nc 10.0.0.61 888 #db01服务器上
爱你哦
晚上好
你也好

iptables防火墙必会面试题:https://www.cnblogs.com/wajika/p/6382853.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容