服务器安全之iptables iptables

Linux--iptables 防火墙 文章目录前言一、Linux 防火墙基础1.1、Linux 包过滤防火墙概述1.2、iptables 的表、链结构1.2.1、规则表1.2.2、规则链1.3、数据包过滤的匹配流程二、编写防火墙规则2.1、iptables 安装2.2、基本语法、数据包控制类型2.3、添加、查看、删除规则等基本操作2.3.1、添加新的规则2.3.2、查看规则列表2.3.3、删除、清空规则2.3.4、设置默认策略2.4、规则的匹配条件2.4.1、通用匹配2.4.2、隐含匹配2.4.3、显示匹配 前言 一、Linux 防火墙基础 1 阅读详情

服务器安全之iptables

感谢老男孩老师为我们讲解iptables 
优化之路


iptables防火墙简介

Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包过滤的防火墙工具**,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置下跑的非常好
Iptables是Linux2.4及2.6内核中集成的服务。其功能与安全性比其**ipfwadm,ipchains**强大的多,iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持**7层控制**(squid代理+iptables)

iptables 名词和术语

容器:包含和被包含的关系 
iptables是表的容器 
iptables包含表 (4张表)表是链的容器,每个表都包含若干个链 
链是规则的容器,真正过滤规则是属于链里面的 
级别介绍

iptables国家 
表省 
链 市 
规则 县

iptables工作流程

iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则来进行匹配是否可以进入到主机。

1.png-66.7kB

iptables工作流程小结

1.防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。 
2.如果匹配上规则,即明确表是阻止还是通过,此时数据包就不在向下匹配新规则了。 
3.如果所有规则中没有明确是阻止还是通过这个数据包,也就是么有匹配上新规则,向下进行匹配,直到匹配默认规则得到明确的组织还是通过 
4.防火墙的默认规则是对应链的所有规则执行完才会执行的。

iptables表(tables)和链(chains)

iptables根据功能和表的定义划分包含三个表,filter,nat,mangle,其每个表又包含不同的操作链(Chains)

2.png-37.3kB

3.png-67.8kB

Filter表 是真正的防火墙功能 
INPUT 进服务器 OUTPUT出服务器 FORWARD 流经服务器 
Nat 表 负责数据包改写 网关共享上网、IP和端口映射 
OUTPUT 
PREROUTING 
POSTROUTING 
Mangle表 路由标记 用的不多 
####所有链全有 
RAW 表 用处很少和Mangle一样 
我们可以通过man iptables 来获取

表介绍

表1.png-99.9kB

对于filter表的控制是我们实现本机防火墙的重要手段,特别是对INPUT链的控制 
表2.png-97kB
表3.png-80.4kB
表4.png-69.7kB
表5.png-26.8kB

iptables表和链工作流程图

表流.png-37.1kB
22.png-26.7kB

提示: iptables主要由2个作用,第一是防火墙,第二是路由。 
NAT功能: 
企业案例:1)局域网上网共享(路由和网关)NAT POSTROUTING 
2)外部IP和端口映射为内部IP和端口(DMZ功能),NAT PREROUTING 
Filter功能,即防火墙FILTER INPUT FORWARD 
企业案例:主要应用于服务器防火墙

配置iptables

iptables默认已经安装

 
  1. [root@web02 ~]# iptables -V
  2. iptables v1.4.7
  3. [root@web02 ~]# rpm -qa iptables
  4. iptables-1.4.7-16.el6.x86_64
  5. [root@web02 ~]# /etc/init.d/iptables status
  6. iptables: Firewall is not running.

查看iptables规则

 
  1. [root@web02 ~]# iptables -nL
  2. Chain INPUT (policy ACCEPT)

表示针对input链 ACCEPT是默认规则,默认是运行通过的

 
  1. target prot opt source destination
  2. input链下面具体的规则
  3. ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
  4. ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
  5. ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
  6. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
  7. REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
  8. Chain FORWARD (policy ACCEPT)
  9. target prot opt source destination
  10. REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
  11. Chain OUTPUT (policy ACCEPT)
  12. target prot opt source destination

如果没有指定表,默认就是filfer表

iptables默认加载的内核模块

 
  1. [root@web02 ~]# lsmod |egrep "nat|filter|ipt"
  2. ipt_REJECT 2351 2
  3. iptable_filter 2793 1
  4. ip_tables 17831 1 iptable_filter

加载如下模块到linux内核

 
  1. modprobe ip_tables
  2. modprobe iptable_filter
  3. modprobe iptable_nat
  4. modprobe ip_conntrack 连接跟踪
  5. modprobe ip_conntrack_ftp 连接跟踪
  6. modprobe ip_nat_ftp
  7. modprobe ipt_state

再次过滤,查看生效情况

 
  1. [root@web02 ~]# lsmod |egrep "nat|filter|ipt"
  2. nf_nat_ftp 3443 0
  3. nf_conntrack_ftp 11953 1 nf_nat_ftp
  4. iptable_nat 5923 0
  5. nf_nat 22676 2 nf_nat_ftp,iptable_nat
  6. ipt_REJECT 2351 2
  7. nf_conntrack_ipv4 9154 5 iptable_nat,nf_nat
  8. nf_conntrack 79206 6 nf_nat_ftp,nf_conntrack_ftp,iptable_nat,nf_nat,nf_conntrack_ipv4,xt_state
  9. iptable_filter 2793 1
  10. ip_tables 17831 2 iptable_nat,iptable_filter

清空所有的规则,只留下默认规则

 
  1. [root@web02 ~]# iptables -F
  2. [root@web02 ~]# iptables -X
  3. [root@web02 ~]# iptables -Z

iptables -F 清除所有规则 
iptables -X 删除用户自定义规则 
iptables -Z 链的计数器清零


禁止规则

查看端口

 
  1. [root@web02 ~]# netstat -lntup|grep ssh
  2. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1329/sshd
  3. tcp 0 0 :::22 :::* LISTEN 1329/sshd

命令如下:

 
  1. iptables -t filter -A INPUT -p tcp --dport 22 -j DROP

-A 添加规则到指定链的结尾,最后一条 
-I 添加规则到指定链的开头,第一条 
-t 指定表,也可以不指定默认是filter 
-p 指定协议(all.tcp,udp.icmp)默认all 
--dport 指定端口 
-j 处理的行为 
ACCPET接收、DROP丢弃、REJECT拒绝

最好使用ACCPET和DROP,因为拒绝会返回给用户信息。 
333.png-9.6kB

清除规则可以使用iptables -F 
还可以使用iptables -D INPUT 1 
-D指定删除的链 
--line-number 显示序列号 
iptables -nl --line-number 
3333.png-9.7kB

提示:需要写上链和序列号

温馨提示:恢复刚才断掉的SSH连接 
1)去机房重启系统或登录服务器删除刚才的禁止规则 
2)让机房人员重启服务器或者让机房人员拿用户密码登录进去 
3)通过服务器的远程管理卡管理(推荐) 
4)先写一个定时任务,每5分钟就停止防火墙 
5)测试环境测试好,写成脚本,批量执行


企业案例

案例1: 加-A和-I的区别

 
  1. [root@web02 ~]# iptables -A INPUT -p tcp --dport 80 -j DROP
  2. [root@web02 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

按照iptables匹配规则,首先会先匹配第一行,依次向下。这样设置拒绝就没有用 
如果想在中间插入可以指定插入行号

 
  1. [root@web02 ~]# iptables -nL
  2. Chain INPUT (policy ACCEPT)
  3. target prot opt source destination
  4. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
  5. DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
  6. Chain FORWARD (policy ACCEPT)
  7. target prot opt source destination
  8. Chain OUTPUT (policy ACCEPT)
  9. target prot opt source destination

还可以通过序列号插入iptables 命令

 
  1. [root@web02 ~]# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT
  2. [root@web02 ~]# iptables -nL --line-number
  3. Chain INPUT (policy ACCEPT)
  4. num target prot opt source destination
  5. 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
  6. 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
  7. 3 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
  8. Chain FORWARD (policy ACCEPT)
  9. num target prot opt source destination
  10. Chain OUTPUT (policy ACCEPT)
  11. num target prot opt source destination

小结:总结下删除规则的方法 
1. iptables -D INPUT -p tcp –dport 8080 -j DROP 
2. iptables -F 删所有规则 
3. /etc/init.d/iptables restart (用iptables命令行配置的命令都是临时生效) 
4. iptables -D INPUT 规则序号

案例:禁止10.0.0.0网段接入 
基于客户端网段控制

 
  1. [root@web02 ~]# iptables -A INPUT -s 10.0.0.0/24 -j DROP

-s指定源地址 
还可以使用不是这个网段的进行操作

 
  1. [root@web02 ~]# iptables -A INPUT ! -s 10.0.0.0/24 -j DROP

案例:控制22端口 eth0网卡进来的数据

 
  1. iptables -A INPUT -p tcp --dport 22 -i eth0 ! -s 10.0.0.0/24 -j DROP
  2. iptables -A INPUT -p tcp --dport 22 -i eth0 ! -s 192.168.1.1 -j DROP

封掉3306端口

 
  1. iptables -A INPUT -p tcp --dport 3306 -j DROP

匹配指定的协议

 
  1. iptables -A INPUT -p tcp
  2. iptables -A INPUT -p udp

匹配指定协议外的所有协议

 
  1. iptables -A INPUT ! -p tcp

“匹配单一端口**

 
  1. iptables -A INPUT -p tcp --sport 22 源端口
  2. iptables -A INPUT -p udp --dport 22 目的端口

匹配端口范围:

 
  1. iptables -A INPUT -p tcp --sport 22:80
  2. iptables -A INPUT -p tcp --dport 21,22,23 -j DROP---->错误语法
  3. iptables -I INPUT -p tcp -m multiport --dport 22,23,24,25 -j DROP
  4. iptables -I INPUT -p tcp -m multiport ! --dport 22,23,24,25 -j DROP
  5. iptables -I INPUT -p tcp --dport 3306:8809 -j ACCEPT
  6. iptables -I INPUT -p tcp --dport 18:80 -j DROP <----最佳方法

匹配ICMP类型

 
  1. iptables -A INPUT -p icmp-type 8

icmp中有很多类型,其中8代表ping 
例:

 
  1. iptables -A INPUT -p icmp --icmp-type 8 -j DROP
  2. iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

因为icmp类型很多可以使用any,icmp的所有类型全禁

 
  1. iptables -A INPUT -s 192.168.1.0/24 -p icmp -m icmp --icmp-type any -j ACCEPT

企业场景禁ping

 
  1. iptables -A INPUT -p icmp --icmp-type 8 -s 10.0.0.0/24 -j ACCEPT

根据需求来设定

匹配网络状态

 
  1. -m state --state
  2. NEW:已经或启动新的连接
  3. ESTABLISHED:已建立的连接
  4. RELATED:正在启动的新连接
  5. INVALID:非法或无法识别的
  6. FTP服务是特殊的,需要配状态连接

允许关联的状态包通过(Web服务不要使用FTP服务) 
允许关联的状态包

 
  1. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  2. iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

限制指定时间包的允许通过数量及并发数

 
  1. -m limit --limit n/{second/minute/hour}

指定时间内的请求速率“n”为速率,后面为时间分别为:秒、分、时

 
  1. --limit-burst [n]

在同一时间内允许通过的请求“n”为数字,不指定默认为5

 
  1. iptables -I INPUT -s 10.0.1.0/24 -p icmp --icmp-type 8 -m limit --limit 5/min --limit-burst 2 -j ACCEPT

手动执行iptables命令配置企业生产环境防火墙

生产环境配置主机防火墙的两种模式 
1. 允许所有程序,对操作伤害的进行拒绝操纵 应用场景:企业配置上网网关路由 
2. 拒绝所有操作,允许指定的操作 应用场景:服务器主机防火墙


配置企业主机防火墙

 
  1. [root@web02 ~]# iptables -F
  2. [root@web02 ~]# iptables -X
  3. [root@web02 ~]# iptables -Z

1.设置允许SSH登录端口

 
  1. [root@web02 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCETP
  2. [root@web02 ~]# iptables -A INPUT -p tcp -s 10.0.0.1/24 -j ACCEPT

2.设置允许本机lo通信规则

 
  1. [root@web02 ~]# iptables -A INPUT -i lo -j ACCEPT
  2. [root@web02 ~]# iptables -A OUTPUT -o lo -j ACCEPT

3.设置默认规则

 
  1. [root@web02 ~]# iptables -P INPUT DROP
  2. [root@web02 ~]# iptables -P OUTPUT ACCEPT
  3. [root@web02 ~]# iptables -P FORWARD DROP

轻松应对IDC机房带宽突然暴涨问题 
查看规则(现在的服务器是最安全的)

 
  1. [root@web02 ~]# iptables -nL --line-number
  2. Chain INPUT (policy DROP)
  3. num target prot opt source destination
  4. 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
  5. 2 ACCEPT tcp -- 10.0.0.0/24 0.0.0.0/0
  6. 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
  7. Chain FORWARD (policy DROP)
  8. num target prot opt source destination
  9. Chain OUTPUT (policy ACCEPT)
  10. num target prot opt source destination
  11. 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

4.开启信任的IP网段 
允许IDC LAN/WAN 和办公网IP的访问,及对外合作机构访问

 
  1. iptables -A INPUT -s 124.23.62.96/27 -p all -j ACCEPT #办公室固定IP段
  2. iptables -A INPUT -s 192.168.2.0/24 -p all -j ACCEPT #IDC机房的内网网段
  3. iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT #其他机房的内网网段
  4. iptables -A INPUT -s 203.82.24.0/24 -p all -j ACCEPT #IDC机房的外网网段
  5. iptables -A INPUT -s 203.82.23.0/24 -p all -j ACCEPT #其他IDC机房的外网网段

现在还只是我们可以访问,对外还无法访问 
5.允许icmp类型协议通过

 
  1. iptables -A INPUT -p icmp -m icmp-type any -j ACCEPT

提示:如果不想开,就不执行此命令

 
  1. iptables -A INPUT -p icmp -s 10.0.0.0/24 -m icmp --icmp-type any -j ACCEPT

6.允许关联的状态包通过(Web服务不要使用FTP服务)

 
  1. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  2. iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

提示:以上配置就是合格服务器应该配置的

保存

默认使用iptables并没有永久保存,重启失效。 
第一种方法:

 
  1. /etc/init.d/iptables save 保存到/etc/sysconfig/iptables 下面

显示如下格式

 
  1. [root@web02 ~]# cat /etc/sysconfig/iptables
  2. # Generated by iptables-save v1.4.7 on Mon Aug 15 01:33:44 2016
  3. *nat
  4. :PREROUTING ACCEPT [1413:153792]
  5. :POSTROUTING ACCEPT [132:8834]
  6. :OUTPUT ACCEPT [132:8834]
  7. COMMIT
  8. # Completed on Mon Aug 15 01:33:44 2016
  9. # Generated by iptables-save v1.4.7 on Mon Aug 15 01:33:44 2016
  10. *filter
  11. :INPUT DROP [1798:662465]
  12. :FORWARD DROP [0:0]
  13. :OUTPUT ACCEPT [288:21100]
  14. -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
  15. -A INPUT -s 10.0.0.0/24 -p tcp -j ACCEPT
  16. -A INPUT -i lo -j ACCEPT
  17. -A OUTPUT -o lo -j ACCEPT
  18. COMMIT
  19. # Completed on Mon Aug 15 01:33:44 2016

第二种方法:

 
  1. [root@web02 ~]# iptables-save >/etc/sysconfig/iptables

推荐使用第一种方式


测试:我通过其他服务器扫描我们配置的防火墙 
使用nmap工具进行分析,此工具需要安装

 
  1. [root@web02 ~]# yum -y install nmap

使用如下:更多可以使用nmap –help

 
  1. [root@web02 ~]# nmap 10.0.0.8 -p 1-65535
  2. Starting Nmap 5.51 ( http://nmap.org ) at 2016-08-15 04:28 CST
  3. Nmap scan report for 10.0.0.8
  4. Host is up (0.0000070s latency).
  5. Not shown: 65532 closed ports
  6. PORT STATE SERVICE
  7. 22/tcp open ssh
  8. 80/tcp open http
  9. 3306/tcp open mysql
  10. Nmap done: 1 IP address (1 host up) scanned in 14.21 seconds

生产维护

(1)确定的规则; 
编辑/etc/sysconfig/iptables 
加入想要的规则:例如

 
  1. -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT
  2. /etc/init.d/iptables reload

或者改配置的同时命令在执行,也是永久生效。 
(2)命令试错,没问题了,然后放配置文件,这时不需要重启了


恶意IP封杀

封IP,在第一行封。10.0.0.1 这个机器攻击我们服务器或者在BBS里发垃圾帖子 
手工封IP:

 
  1. iptables -I INPUT -s 10.0.0.1 -j DROP #粗,范围大,外部攻击者
  2. Iptables -I INPUT -s 10.0.0.1 -j DROP
  3. iptables -I INPUT -p tcp -s 10.0.0.1 --dport 80 -j DROP #细,范围小。内部

自动封IP:分析Web或应用日志或者网络连接状态封掉垃圾IP 
脚本:

 
  1. #!/bin/bash
  2. #this is a server firewall created by oldboy 17:03 2006-7-26
  3. # e_mail:31333741@qq.com
  4. # qqinfo:49000448
  5. # function: a server firewall
  6. # version:1.1
  7. ################################################
  8. # oldboy trainning info.
  9. # QQ 1986787350 70271111
  10. # site: http://www.etiantian.org
  11. # blog: http://oldboy.blog.51cto.com
  12. # oldboy trainning QQ group: 208160987 45039636
  13. ################################################
  14. #define variable PATH
  15. IPT=/sbin/iptables
  16. #Remove any existing rules
  17. $IPT -F
  18. $IPT -X
  19. $IPT -Z
  20. #setting default firewall policy
  21. $IPT --policy OUTPUT ACCEPT
  22. $IPT --policy FORWARD DROP
  23. $IPT -P INPUT DROP
  24. #setting for loopback interface
  25. $IPT -A INPUT -i lo -j ACCEPT
  26. $IPT -A OUTPUT -o lo -j ACCEPT
  27. #setting access rules
  28. #one,ip access rules,allow all the ips of
  29. $IPT -A INPUT -s 10.0.10.0/24 -p all -j ACCEPT
  30. $IPT -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT

##下面的是重复的,作为知识点保留,单个服务的配置

 
  1. #second,port access rules
  2. #nagios
  3. $IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 5666 -j ACCEPT
  4. $IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 5666 -j ACCEPT
  5. #db
  6. $IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 3306 -j ACCEPT
  7. $IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 3307 -j ACCEPT
  8. $IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 3306 -j ACCEPT
  9. $IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 3307 -j ACCEPT
  10. #ssh difference from other servers here.>>
  11. $IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 52113 -j ACCEPT
  12. $IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 52113 -j ACCEPT
  13. $IPT -A INPUT -p tcp --dport 22 -j ACCEPT
  14. #http
  15. $IPT -A INPUT -p tcp --dport 80 -j ACCEPT
  16. #snmp
  17. $IPT -A INPUT -s 10.0.0.0/24 -p UDP --dport 161 -j ACCEPT
  18. $IPT -A INPUT -s 10.0.10.0/24 -p UDP --dport 161 -j ACCEPT
  19. #rsync
  20. $IPT -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 873 -j ACCEPT
  21. $IPT -A INPUT -s 10.0.10.0/24 -p tcp -m tcp --dport 873 -j ACCEPT
  22. #icmp
  23. #$IPT -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
  24. #others RELATED
  25. $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  26. $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

企业案例:写一个脚本解决DOS攻击生产案例 
提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟。防火墙命令为:iptables -I INPUT -s 10.0.1.10 -j DROP
本脚本使用测试文件进行编写 
相关博文:答案见博客shell板块

 
  1. [root@db02 scripts]# cat test_6.sh
  2. #!/bin/sh
  3. #
  4. [ -f /etc/init.d/functions ] && . /etc/init.d/functions
  5. IP_file="/server/scripts/ddos.txt"
  6. IP_filter_command="iptables -I INPUT -j DROP -s"
  7. IP_recover_command="iptables -D INPUT -j DROP -s"
  8. function IP_check(){
  9. grep "EST" ${IP_file}|awk -F "[ |:]+" '{print $6}'|sort |uniq -c|sort -rn -k1 > /server/scripts/ip.txt
  10. }
  11. function IP_filter(){
  12. exec < /server/scripts/ip.txt
  13. while read line
  14. do
  15. IP_count=`echo $line|awk '{print $1}'`
  16. IP=`echo $line|awk '{print $2}'`
  17. IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l`
  18. if [ ${IP_count} -gt 25 -a ${IP_fil} -eq 0 ];then
  19. ${IP_filter_command} ${IP}
  20. echo "${IP}" >> /server/scripts/ip_filtered.txt
  21. action "Filter ${IP}" /bin/true
  22. fi
  23. done
  24. }
  25. function IP_recover(){
  26. exec < /server/scripts/ip.txt
  27. while read line
  28. do
  29. IP_count=`echo $line|awk '{print $1}'`
  30. IP=`echo $line|awk '{print $2}'`
  31. IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l`
  32. if [ ${IP_count} -le 25 -a ${IP_fil} -eq 1 ];then
  33. ${IP_recover_command} ${IP}
  34. echo "${IP}" >> /server/scripts/ip_filtered.txt
  35. action "Recover ${IP}" /bin/true
  36. fi
  37. done
  38. }
  39. function main(){
  40. case "$1" in
  41. filter)
  42. IP_check
  43. echo "$(date +%F-%H:%M:%S) filtered by $(whoami)" >> /server/scripts/ip_filtered.txt
  44. IP_filter
  45. ;;
  46. recover)
  47. IP_check
  48. echo "$(date +%F-%H:%M:%S) recovered by $(whoami)" >> /server/scripts/ip_filtered.txt
  49. IP_recover
  50. ;;
  51. *)
  52. echo "USAGE:$0 {filter|recover}"
  53. exit 1
  54. esac
  55. }
  56. main $*

生产环境iptables脚本讲解

技巧:具备外网IP的服务器不对外的服务最好要做源地址限制。对外提供的服务,不能做源地址限制,例如:80 端口 
问题:企业硬件防火墙和IPTABLES防火墙是否要同时用。 
解决:可以同时使用企业硬件防火墙一般放在网关位置,相当于大厦的保安,但是楼里的每个屋子还是需要有人锁门的iptables

问题: IDC机房部署了硬件防火墙,我们的服务器可以不开防火墙吗? 
解答:绝对不可以,大厦有了保安,你的办公室门就不锁了吗?


NAT表设置

1.png-16.8kB

共享上网设置 
linux网关B: 
局域网共享的两条命令方法:

方法1:适合于有固定外网地址的:

 
  1. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7

(1)-s192.168.1.0/24 办公室或IDC内网网段。 
(2)-oeth0 为网关的外网卡接口。 
(3)-jSNAT –to-source 10.0.0.7 是网关外网卡IP地址。 
方法2:适合变化外网地址(ADSL):

 
  1. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE ç伪装。

配置如下

第一步:外网服务器配置

 
  1. [root@lb01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.5
  2. [root@lb01 ~]# iptables -t nat -L -n

开启内核转发

 
  1. net.ipv4.ip_forward = 1
  2. vim /etc/sysctl.conf

sysctl -p 生效 
需要上网服务器设置 
添加路由

 
  1. route add default gw 172.16.1.5

#此处写提供外网的IP地址

 
  1. vim /etc/resolv.conf

添加 nameserver 223.5.5.5 
2.png-6.6kB

route -n 检查


案例2:实现把访问10.0.0.5:80的请求转到172.16.1.8:80

 
  1. [root@web02 ~]# iptables -t nat -A PREROUTING -d 10.0.0.5 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.8:80
  2. [root@web02 ~]# iptables -P FORWARD DROP

3.png-34.1kB

iptables常用企业案例:

1、Linux主机防火墙(表:FILTER 控制链:INPUT) 
2、局域网机器共享上网(表:NAT 控制链:POSTROUTING)

 
  1. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7

3、外部地址和端口,映射为内部地址和端口(表:NAT 控制的链:PREROUTING)

 
  1. iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.8:9000

企业案例:实现外部IP 124.42.34.112 一对一映射到内部server 10.0.0.8 
网关Ip:eth0:124.42.60.109 eth1:10.0.0.254 
首先在路由网关上绑定VIP 124.42.34.112,可以是别名或辅助IP的方式。

 
  1. -A POSTROUTING -s 10.0.0.0/255.255.240.0 -d 124.42.34.112 -j SNAT --to-source 10.0.0.254
  2. -A PREROUTING -d 124.42.34.112 -j DNAT --to-destination 10.0.0.8
  3. -A POSTROUTING -s 10.0.0.8 -o eth0 -j SNAT --to-source 124.42.34.112

相关文章 
(1)生产环境大于254台机器网段划分及路由解决方案详解01 
(2) linux route命令深入浅出与实战案例精讲[1] 
(3) linux route命令深入浅出与实战案例精讲[2]

4.png-20.9kB


iptables 生产应用场景

1)局域网共享上网(适合做企业内部局域网上网网关,以及IDC机房内网的上网网关[nat POSTROUTING]) 
2)服务器防火墙功能(适合IDC机房具有外网IP的服务器)(主要是filter INPUT的控制) 
3)把外部IP及端口映射到局域网内部(可以一对一IP映射,也可以针对某一个端口映射)也可能是IDC把网站的外网VIP及网站端口映射到负载均衡器上(硬件防火墙)。(nat PREROUTING) 
4)办公路由器+网关功能(zebra路由+iptables过滤及NAT+squid正向透明代理)80+ntop/iftop/iptraf流量查看+tc/cbq流量控制限速 
5)邮件的网关

iptables防火墙的应用

1)主机防火墙 
2)网关的应用(IP映射,端口映射) 
3)过滤信息,监控限制流量及员工上网行为(squid(正向代理缓存加过滤)+ntop(图形流量监控)+通常(流量限制)+iptraf/iftop(流量查看)) 
如果IPTABLES的服务器升级内核可以实现类似squid的过滤功能 
4)网关装杀毒软件监听9999端口,(网关杀毒)

 
  1. iptables -A PREROUTING -i eth0 -d 211.167.253.109 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.10.6:9025

5)结合zebra配置企业级路由器

映射多个外网IP上网

 
  1. iptables -t nat -A POSTROUTING -s 10.0.0.1/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.11-124.42.60.16
  2. iptables -t nat -A POSTROUTING -s 172.16.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.103-124.42.60.106
  3. #iptables -t nat -A postrouting -S 192.168.1.0/22 -o eth0 -j SNAT --to-source 10.0.0.241-10.0.0.249

问题: 
1、2000人被封 
2、可用65535端口资源有限


企业案例: ip_conntrack: table full, dropping packet.的错误提示 
以下是我的生产环境的某个服务器的配置:

 
  1. net.ipv4.tcp_fin_timeout = 2
  2. net.ipv4.tcp_tw_reuse = 1
  3. net.ipv4.tcp_tw_recycle = 1
  4. net.ipv4.tcp_syncookies = 1
  5. net.ipv4.tcp_keepalive_time = 600
  6. net.ipv4.ip_local_port_range = 4000 65000
  7. net.ipv4.tcp_max_syn_backlog = 16384
  8. net.ipv4.tcp_max_tw_buckets = 36000
  9. net.ipv4.route.gc_timeout = 100
  10. net.ipv4.tcp_syn_retries = 1
  11. net.ipv4.tcp_synack_retries = 1

#5、dmesg里面显示ip_conntrack: table full, dropping packet.的错误提示.如何解决。 
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。 
c58:

 
  1. net.ipv4.ip_conntrack_max = 25000000
  2. net.ipv4.netfilter.ip_conntrack_max=25000000
  3. net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
  4. net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
  5. net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
  6. net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120

################################################################ 
C64:

 
  1. net.nf_conntrack_max = 25000000
  2. net.netfilter.nf_conntrack_max = 25000000
  3. net.netfilter.nf_conntrack_tcp_timeout_established = 180
  4. net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
  5. net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
  6. net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

调整内核参数/etc/sysctl.conf后,需执行/sbin/sysctl -p使得修改生效。 
强调:如果并发比较大,或者日PV多的情况下,开启防火墙要注意,很可能导致网站访问缓慢 
大并发(并发1万,PV日3000万)要么购买硬件防火墙,要么不开iptables防火墙


iptables 参数简介

-n 数字 
-L 列表 
-F 清除所有规则,不会处理默认规则 
-X 删除用户自定义的链 
-Z链的计数器清零 
-A 添加规则到指定链的结尾,最后一条 
-I 添加规则到指定链的开头,第一条 
-t指定表,也可以不指定默认是filter 
-p 指定协议(all.tcp,udp.icmp)默认all 
-P 设置默认规则 
-s指定源地址 
-d 目的地址 
--dport 指定端口 
-j处理的行为 ACCPET接收、DROP丢弃、REJECT拒绝 
-iinput 匹配进入的网卡接口 
-ooutput 匹配出去的网卡接口 
-m state –state 匹配网络状态 
-mlimit –limit n/{second/minute/hour}限制限定时间包的允许通过数量及并发数

更多命令可以使用man iptables 或iptables -h

nginx+fail2ban+iptables 服务器安全设置 iptables设置 1.操作系统为centos7.2,默认firewalld防火墙,为了后续方便,需禁用firewalld启用iptables 2.#先检查是否安装了iptables service iptables status #安装iptables yum install -y iptables #... 阅读详情

相关推荐

Linux服务器安全加固:iptables实战配置与端口封锁、ICMP过滤策略

防火墙是网络安全的第一道防线,其核心在于通过规则集控制网络流量的进出。iptables作为Linux内核集成的经典防火墙工具,基于Netfilter框架,通过表(Tables)和链(Chains)的机制,实现数据包的过滤、地址转换与修改。其状态跟踪(Stateful)能力能智能识别连接状态,极大简化了规则配置。在服务器安全领域,iptables的价值在于提供底层、精细化的访问控制,有效实施白名单策略,从而缩小攻击面,抵御端口扫描和恶意探测。典型的应用场景包括Web服务器防护、数据库访问控制以及内部网络隔离。

weixin_33690367的博客 368

关于iptabels的-A与-I参数

iptables-参数-A和-I iptables -L -n --line-number 列出链所有的规则 最直观的讲解-A与-I的重要性 -A添加规则的参数,是添加规则在现有的后面 -I添加规则的参数,是添加在规则在现有的前面 如果是互不干涉的规则端口使用-A没关系不会受影响 假设node01节点的机器,我不想让他的ssh链接开放并且限制指定的主机连接 实验主机 三台都是均为虚拟机,主机的内网IP为192.168.1.250 IP 备注 ssh端口均为22 192.168..

小啊宇的博客 6213

Linux服务器安全:iptables与SELinux纵深防御实战指南

在Linux系统安全领域,网络层访问控制与内核级强制访问控制是构建服务器安全防线的两大基石。iptables作为Linux内核Netfilter框架的用户空间工具,通过定义数据包过滤规则,实现了基于IP、端口和协议的网络流量精细管控,其白名单机制和状态跟踪能力是抵御外部网络攻击的第一道屏障。SELinux则提供了超越传统自主访问控制的强制访问控制模型,通过为进程、文件和端口打上安全标签并定义严格策略,即使攻击者突破应用层防线,也能将其权限限制在最小范围,有效遏制横向渗透。这两项技术协同工作,形成了从网络边界

weixin_42706667的博客 298

iptables中 -A 和 -I 参数的区别

在使用iptables添加规则的过程中,看到-A和-I参数都是添加规则,刚开始容易混淆,然后就专门试了一下,原来差异在这里。删除上述4、5、6、7号规则,然后是-I。

ss810540895的博客 6257

14、保障CentOS服务器安全:IPTables与Fail2ban配置指南

本文详细介绍了如何在CentOS系统中使用IPTables配置防火墙以及通过Fail2ban保护SSH服务,从而构建多层次的安全防护体系。内容涵盖IPTables规则设置、Fail2ban封禁机制、常见问题解决方案以及安全策略优化建议,帮助用户有效提升服务器的安全性和稳定性。

green的博客 132

Isaacgym使用操作指南

Isaac Gym 是一个强大的仿真工具,特别适合那些需要进行大规模并行仿真和训练的机器人和强化学习任务。通过 GPU 加速、深度学习集成和丰富的物理仿真能力,Isaac Gym 能够显著提高仿真和训练效率,是机器人学和 AI 研究中的一大利器。

Tony Wey的博客 1万+

iptables详解

看完下面这个iptables的讲解一下子豁然开朗,写的很详细 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。 目前市面上比较常见的

wdt3385的专栏 5414

手把手教你如何修改YOLO11的模型结构(以CBAM和可变性卷积为例)

YOLO11修改模型结构

2401_86807530的博客 1万+

服务器安全之iptables

服务器安全之iptables iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置下跑的非常好。Iptables是Linux2....

Csdn129341的博客 451

sap销售发货的流程_SAP销售订单发货后如何实现发票的自动创建?

问SAP销售订单发货后如何实现发票的自动创建?答业务场景有些快消零售企业,SAP系统单据量大,单据金额少,一般在销售发货后即可确认收入。此时无需人工在系统内操作VF01或者VF04进行开票操作,可将该操作设置成后台作业进行自动批量开票,具体操作如下:1、定义任务:VF06输入完以上信息,点击保存进入以下界面:说明:当前日期的意思是“开票的日期”等于“系统电脑中的当前日期”当前日期+/-...

weixin_42358409的博客 3358

飞牛fnNAS搭建web版微信

摘要:本文介绍了一种通过Docker在飞牛NAS上部署微信客户端的方法,实现24小时同步微信聊天记录。具体步骤包括:1)激活飞牛NAS的Docker功能并配置镜像加速源;2)创建专用文件夹并下载docker-wechat镜像;3)设置容器参数并部署微信客户端;4)通过局域网或ZeroTier内网穿透实现远程访问。相比传统Windows/Linux方案,该方法资源占用更低,适合需要长期保存微信聊天记录的用户。

dgnankai的专栏 3330

Linux 服务器安全配置:iptables + SELinux 防御策略全解析

在 Linux 服务器安全体系中,网络层防护与应用层访问控制是构建纵深防御的核心环节。iptables 作为内核态的包过滤防火墙,负责网络流量的准入管控;SELinux(Security-Enhanced Linux)作为强制访问控制(MAC)机制,实现应用进程与资源的精细化权限隔离。二者协同工作,形成“网络层拦截+应用层管控”的双重屏障,弥补了单一防护机制的短板——iptables 抵御外部网络攻击,SELinux 防范内部权限滥用及漏洞提权,共同构筑 Linux 服务器的安全基石。

lbbxmx111的博客 2069

C++ int转四字节数组

字节转换

我不是码农的博客~~~ 972

服务器安全-使用ipset 和iptables禁止国外IP访问

服务器遭受ddos攻击,发现发部分IP来自国外…… IPSET安装 yum install ipset // 安装ipset ipset create china hash:net hashsize 10000 maxelem 1000000 // 创建地址表 ipset add china 172.18.0.0/16 ipset list china 获取国内IP地址段并导入 vi ipset_china.sh #!/bin/bash rm -rf cn.zone wget ..

JAVA拾贝 4608

Unity必学:Protobuf-net预编译实战

本文深入解析Unity项目使用Protobuf-net Precompile的必要性。作为高效跨平台序列化方案,Protobuf-net解决了Unity工程在网络同步、存档系统中的性能瓶颈,特别是针对iOS等AOT平台的兼容问题。通过预编译模式,将运行时反射转为静态代码生成,显著提升移动端性能表现,支持协议平滑升级,已成为大厂项目的标配方案。文章从原理、实践到多平台适配,全面展示了这一"序列化发动机"如何支撑现代Unity项目的数据传输需求。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 494

电化学-论文分享-NanoStat: An open source, fully wireless potentiostat

本文主要分享论文NanoStat: An open source, fully wireless potentiostat,并记录学习笔记。如果有条件,建议看原文最好。

分享技术笔记,希望对大家能够有一定的帮助,同时也通过归纳总结提升自己的个人能力。 2872

关于linux 对外服务器安全 设置iptables

关于linux/centos 做对外服务器iptables 安全设置 参考 1.http://blog.sitearth.com/centos%e7%9a%84%e9%98%b2%e7%81%ab%e5%a2%99iptables%e9%85%8d%e7%bd%ae 2.http://os.51cto.com/art/201103/249398.htm 3.ht...

weixin_34212762的博客 100

知识库构建革命:基于Agent的智能检索系统设计

本文聚焦“基于Agent的智能检索系统”这一前沿技术,系统讲解其设计逻辑、核心技术与落地方法。我们将覆盖从基础概念(如Agent如何“理解”知识)到实战代码(如何用Python搭建原型系统)的全链路内容,帮助技术开发者、企业知识管理负责人理解这一技术为何能颠覆传统知识库。本文将按“问题引入→核心概念→技术原理→实战落地→未来趋势”的逻辑展开:先用“老图书馆的困境”故事引出传统知识库的问题;再用“智能图书管理员”类比解释Agent如何革新检索;接着拆解NLP、对话管理、知识推理等核心技术;

AI智能探索者的博客 724

【服务器与部署 17】防火墙配置实战指南:iptables与ufw让服务器安全固若金汤

本文深入解析Linux服务器防火墙配置技术,从基础概念到高级应用,详细讲解iptables和ufw两大防火墙工具的使用方法。通过生动的比喻和实战案例,帮助读者掌握端口管理、访问控制、安全策略制定等核心技能,构建坚不可摧的服务器安全防线。文章涵盖防火墙原理、规则配置、性能优化、故障排除等全方位内容,是服务器安全加固的必备指南。

熵数实验室 2252

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用iptables提高Linux服务器的安全性

Below mentioned iptables rules should present as template for making tailored iptables rules toincrease your linux dedicated server security. You can make your firewall much stronger using these ipta...

culu1614的博客 304

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Iptables 服务器安全策略集合

Linux服务器上常用端口 ftp:20 21    ssh:22    http:80    telnet:23    rsync:873    svn:3690 pop3:110    smtp:25    dns:53    mysql:3306    nfs:111 如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter

love android 1143

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

用iptables架设安全的vsftpd服务器

在实际工作中,可用以下脚本架设一台很安全的内部FTP服务器;当然也可以配合Wireshark理解vsftpd的被动与主动的区别,以本机192.168.0.10为例,脚本如下#!/bin/bash iptables -F iptables -X iptables -Z iptables -t nat -F iptables -t nat -X iptables -t...

weixin_34153893的博客 91

HoRain云--Linux服务器安全:iptables端口限制全攻略

本文介绍了在Ubuntu系统中使用iptables进行端口安全管理的实用指南。主要内容包括:常用操作命令速查表,涵盖TCP/UDP端口封禁、端口范围限制、IP访问控制等场景;重要注意事项,强调规则顺序、永久保存规则和避免误锁的关键技巧;以及针对不同安全需求的策略选择建议。文章还提供了专栏介绍和Linux系统管理相关内容推荐,适合从基础到进阶的安全防护需求。

2401_86544677的博客 962
上一篇: MySQL常用命令大全
下一篇: Nagios 配置及监控
linuxlsq
博客等级 码龄11年 69粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值