我是靠谱客的博主 爱听歌中心,最近开发中收集的这篇文章主要介绍iptables 知识点整理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

iptables 基础

并发场景测试:

node1:192.168.1.118
node2:192.168.1.109

在node2上搭建搭apache服务器192.168.1.109/1.txt 是可以访问的
在node1上搭建ab压测环境,先安装apache2,关闭apache2,利用ab压测

执行步棸:
    -n总请求数, -c 每次累计并发的数量

ab -n 1000000 -c 40 http://192.168.1.109/1.txt

  1.现在服务端查看负载情况:

root@node2:/var/www/html# w
	21:52:52 up 14 min,  2 users,  load average: 0.01, 0.07, 0.08
	USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

    2.在node1上执行:ab -n 1000000 -c 40 http://192.168.1.109/1.txt

    3.在node2上查看进程

apt install net-tools
		netstat -an|grep 80|grep 192.168.1.118 |grep EST -c

		查看进程:
		root@node2:/var/www/html# w
		22:01:25 up 23 min,  2 users,  load average: 2.33, 0.80, 0.32
		USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
		jesse    tty2     :1               21:39   147days 14.16s  0.36s /usr/lib/evolution/e
		root     pts/2    192.168.1.107    21:41    1.00s  0.20s  0.01s w

		查看进程数:
		root@node2:/var/www/html# netstat -an|grep 80|grep 192.168.1.118 |grep EST -c
		40

   4.在node2上面做一个限制:

iptables -I INPUT -p tcp --dport 80 -s 192.168.1.118 -m connlimit --connlimit-above 10 -j REJECT

	对192.168.1.118来的请求做一个限制,限制tcp协议请求80端口最大是10,超出后就开始拒绝:

5.这时候我们在运行命令:

ab -n 1000000 -c 40 http://192.168.1.109/1.txt

	root@node1:~# ab -n 1000000 -c 40 http://192.168.1.109/1.txt
	This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
	Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
	Licensed to The Apache Software Foundation, http://www.apache.org/

	Benchmarking 192.168.1.109 (be patient)
	apr_socket_recv: Connection refused (111)

	说明直接被拒绝

	ab -n 1000000 -c 9 http://192.168.1.109/1.txt
	如果我改成9就可以直接运行

Netfilter:
    Netfilter是linux操作系统核心层内部的一个数据包处理模块
什么是Hook point?
    (PRE_ROUTING,INPUT,OUTPUT,FORWARD,POST_ROUTING)


iptable 是由四张表和五条链组成的


iptable 是由四张表和五条链(Hook point) + 规则

四张表:filter表,nat表,mangle表,raw表

五条链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING

    Mangle表:修改数据包,改变包头中的内容(TTL,TOS,MARK)

    Filter表:访问控制,规则的匹配

    nat表:地址的转发

iptables规则的组成
    数据包访问控制:ACCEPT(允许),DROP(直接丢弃),REJECT(拒绝,有消息的返回)
    数据包改写:SNAT(对源地址的改写),DNAT(对目标地址的改写)
    信息记录:LOG

命令组合方式:


			-t filter  -A    INPUT        -p tcp          -j ACCEPT
			nat        -D    FORWARD      -s                 DROP
					   -L 	 OUTPUT       -d                 REJECT
					   -F 	 PREROUTING   --sport            DNAT
iptables               -P    POSTROUTING  --dport            SNAT
					   -I                 -m tcp
					   -R                     state
					   -n                     multiport

场景一:
规则1:对所有的地址开发本机的tcp(80,22,10-21)端口的访问
规则2:允许对所有的地址开放本机的基于ICMP协议的数据包访问
规则3:其他未被允许的端口则禁止访问

查看node2的端口开放情况

netstat -luntp
iptables -L 列出规则
iptables -nL不让主机名列出来

规则一:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
		iptables -I INPUT -p tcp --dport 22 -j ACCEPT
		iptables -I INPUT -p tcp --dport 10:21 -j ACCEPT
		-I 是添加一条规则 p是协议,dprort是目的端口  -j ACCEPT 允许访问

规则二:iptables -I INPUT -p icmp -j ACCEPT

ptables -A 是代表所有的意思  一般是加到最后的,如果加到最前面,直接配置会失效

规则三:iptables -A INPUT -j REJECT   所有的流入都拒绝


这时候再次查看
root@node2:/var/www/html# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:10:netstat
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       

开始端口扫描:
nmap -sS -p 0-60000 192.168.1.109

删除80端口的访问
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
禁止对80端口的访问
iptables -I INPUT -p tcp --dport 80 -j REJECT

有的时候是本机访问不了本机,例如,telnet 127.0.0.1 22 不通
说明本地的环路是关闭的,要开启lo环路,lo也是网卡的设备
iptables -I INPUT -i lo -j ACCEPT    #本地回环,重要

可以在telnet 本机就可以了

本地无法上网的问题,解决发数据可以,但是回传的话被拒绝

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

curl -I baidu.com 可以返回状态码

场景四:修改只允许10.103.188.233访问本机的http服务
清除掉允许80端口任意访问的规则
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
开始添加固定的ip限制
iptables -I INPUT -p tcp -s 10.10.188.233 --dport 80 -j ACCEPT
iptables -nL

保存:
vim /etc/sysconfig/iptables

iptables 防火墙nat表规则设置
SNAT 原地址转换   	出口:POSTROUTING
DNAT 目标地址转换 	进口:PREROUTING

查看本机的路由:netstat -rn
更改的方式可以编辑/etc/sysconfig/network 更改geteway网关
或者ip route add 0.0.0.0 gw 10.10.177.232命令

nat 可以实现基于流量的转发,例如:
node1:192.168.0.1
node2:192.168.0.2 192.168.1.2
node3:192.168.2.2 

node1需要直接请求node3

可以在node2上面加上地址的转发,调节是node2必须是双网卡
1.可以基于不同端口的转发
2.也可以基于不同端口的转发
参考:https://www.imooc.com/video/7615

iptables防止CC攻击
iptables -I INPUT -p TCP --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECTxi
限制100个
-connlimit-above n 限制并发数

Limit模块
作用:限速,控制流量
例:iptables -A INPUT -m limit --limit 3/hour
--limit-burst 默认值为5
每小时允许三个并发过来

 

#!/bin/bash
iptables -F
iptables -I INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables -I INPUT -p tcp --dport 1443 -j ACCEPT
iptables -A INPUT -j REJECT
iptables-save
开放的端口:
	1.两台主机的5432端口相互通信,限制别的机器访问
	2.两台主机开放22端口,node只允许本地连接:192.268.1.100访问
	3.node1开放80端口,企业的禁止访问



iptables -L

iptables -F 



限制22
iptables -I INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT

限制5432 postgre
node1:iptables -I INPUT -p tcp -s 192.168.1.109 --dport 5432 -j ACCEPT
node2:iptables -I INPUT -p tcp -s 192.168.1.118 --dport 5432 -j ACCEPT


开放80,443端口:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
限制10050端口:
iptables -I INPUT -p tcp -s 192.168.1.109 --dport 10050 -j ACCEPT

所有默认的都禁止访问
iptables -A INPUT -j REJECT

 

最后

以上就是爱听歌中心为你收集整理的iptables 知识点整理的全部内容,希望文章能够帮你解决iptables 知识点整理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部