Linux运维 第三阶段 (十一)iptables

本文涉及的产品
云防火墙,500元 1000GB
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
公网NAT网关,每月750个小时 15CU
简介:

 

linux防火墙:netfilter(框架framework);iptables(生成防火墙规则并将其附加在netfilter上,真正实现数据报文过滤、NATmangle等规则生成的工具);真正起作用的是规则,规则放在netfilter上才能生效

 

网络防火墙的功能根据TCP/IP首部实现的

IP报文(见文末附图):

fragment ID(段标识)

MFmore fragment

DFdon’t fragment,单个报文大小超过默认值会返回错误信息)

Fragment offset(片偏移,报文的先后次序)

TTLtime to liveip报文会经多个router转发,每经一个网关设备将TTL值减1,否则会永远在网络上游荡)

Protocol(标记tcp,udp,icmp(icmp是三层半协议,不能实现报文控制,仅实现网络控制)

Header Checksum(存放首部校验码)

TCP报文(见文末附图):

Source Port number

Destination Port number

Sequence number(序列号,发送方告诉接收方发送报文的编号,依次向后加1

Acknowledgment number(确认号,把对方的序列号加1再返回给对方)

URGurgent紧急指针,0无效,1有效)

ACK(确认号是否有效)

PSHpush推送,不能在缓冲区,内核优先处理的报文)

RSTreset重置)

SYN(同步请求,建立联系的第一个请求)

FIN(断开连接)

注:对TCP来说,应用层协议封装的报文(http+data),都视为数据;对IP来说,传输层以上封装的报文都视为数据(tcp+http+data

 

The tcp finite state machineTCP的有限状态机,三次握手四次挥手):

client-side状态转换:closed-->SYN_SENT-->ESTABLISHED-->FIN_WAIT1-->FIN_WAIT2-->TIME_WAIT-->closed

server-side状态转换:

closed-->LISTEN-->SYN_RCVD-->ESTABLISHED-->CLOSE_WAIT-->LAST_ACK-->closed-->LISTEN

注:状态间转换仅一根线,不能随意转换,上下状态间是有次序的,只要知道某一方处在什么状态,就知道通信处在哪一阶段

例:

SYN=1,FIN=0,RST=0,ACK=0TCP三次握手中的第一次)

SYN=1,ACK=1,FIN=0,RST=0TCP三次握手中的第二次)

ACK=1,SYN=0,RST=0,FIN=0TCP三次握手中的第三次ESTABLISHED

 

防火墙:工作在主机边缘或网络边缘(数据报文进出的地方),对于进出的数据报文进行检查、监控、并能根据事先定义好的规则(匹配的标准),做出相应处理的组件就称作防火墙

规则:匹配标准、处理办法

硬件防火墙(背后是图形化了的iptables,或二次开发的iptables

软件防火墙

网络管理的职责:设计规则

对于服务器来讲,拒绝所有,仅开放明确已知的报文

默认规则若是开放,我们就要堵;默认规则若是关闭,我们就要通

IPSIPDIP

TCPSPORTDPORT

UDPSPORTDPORT

ICMPicmp-type(有报文类型的区别,不用端口而是报文,如ping时,有网关不可达,主机不在线,请求超时,主机名称无法解析等,报文格式均不相同)

 

数据报文过滤:

用户空间的命令(管理工具app)直接操作内核(内核中的工作框架)的机制

注:app只是个规则生成器,写完规则就没用了,而内核中的框架netfilter+规则就可发挥作用

早期linux无防火墙,参考FreeBSD(openBSD)移植过来的

linux2.0ipfw/firewall-->2.2ipchain/firewall-->2.4iptables/netfilter

 

规则放在内核中框架的5个位置:

prerouting,input,forward,output,postrouting(这五个位置是netfilter设计者补充在TCP/IP协议栈中的五个钩子函数hookfunction

 

报文的三种流向(可理解为三个门):进入本地(input);从本地出去(output);经本地转发(forward)。报文经网卡送至TCP/IP协议栈,就根据路由表作出决策。

 

prerouting数据报文经网卡送至本地,在根据路由表作出决策前对其作出处理

input进入本地(请求本地某服务)

output从本地出去(响应请求或请求其它服务器)

forward经本地转发

postrouting已送至本地网卡,即将离开本机时对其处理(在路由决策作出之后)

 

prerouting postrouting:并不用来放行(ACCEPT)或拒绝(DROPREJECT)报文,而是用来作NATnetworkaddress translationSNAT(source NAT要在出去的时候改POSTROUTING,适用于公司仅一个公网地址,内网主机要上互联网)DNAT(destination NAT要在刚进本机时改PREROUTING,适用于公司仅一个公网地址,内网的多个服务器向互联网提供服务)

 

四表五链(在表的链上生成的规则)

五个规则链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

四种不同功能(四个表),优先级依次为:raw,mangle,nat,filter

raw表:确定是否对该数据包进行状态跟踪(PREROUTINGOUTPUT

mangle表:为数据包设置标记,拆开报文,修改报文并封装(PREROUTINGINPUTFORWARDOUTPUTPOSTROUTING

nat表:地址转换,修改数据包中源IP、目标IP或端口(PREROUTINGPOSTROUTING

filter表:过滤,确定是否放行该数据包(INPUTFORWARDOUTPUT

数据包过滤匹配流程:参考文末附图

 

自定义链:只能被默认链调用以后才能发挥功能(跳转执行自定义链),可精简整个链的结构,可提高整个链的效率,将那些同类的(或处理量大的)独立出来,例如只有访问WEB服务时才跳转,其它的依次顺序执行

注:可以使用自定义链,只在被调用时才发挥作用,而且如果没有与自定义链中的任何规则匹配还应该有返回机制;用户可以删除自定义链,默认链不能被删除

 

规则:匹配标准、处理动作(处理办法)

注:每个规则都有两个内置的计数器(被匹配到的报文个数、被匹配的报文大小之和)

匹配标准:通用匹配(自身能够检查);扩展匹配(隐含扩展、显示扩展,依赖于模块检查)

#rpm -ql  iptables/lib[64]/iptables/*.so,扩展模块)

注:隐含扩展(不用指明由哪个模块进行的扩展,使用-p  {tcp|udp|icmp});显示扩展(必须指明由哪个模块进行的扩展,使用-m  NAME即可)

 

iptables不是服务,但有服务脚本,服务脚本的主要作用在于管理(生效、清除、重新载入)保存的规则

#service iptables  start|stopiptables服务的启动和停止就是让内核装载和移除相关模块)

#lsmod |  grep  ipiptable_raw,iptable_mangle,iptable_nat,iptable_filter,ip_conntrack,ip_nat

其中:ip_nat(实现nat的补充模块),ip_conntrack(启用nat功能时,每个地址转换相应的返回的报文能实现自动管理,追踪每一个地址转换的报文)

#service iptables  save(保存规则,此命令将写好的规则默认保存在/etc/sysconfig/iptables

#service iptables  restart(重启会清空表中的每一个链中的规则,并会重新加载配置文件及默认位置的规则)

#iptables-save  >  /etc/sysconfig/iptables.`date  +%F`(将此前写好的规则保存至指定位置)

#iptables-restore  < /etc/sysconfig/iptables.*(导入或恢复指定位置保存的规则)

 

若自己服务器中了木马,木马有反弹的特性,它会在你的服务器上会自动找出一个开放的端口(漏洞)来连接远端的服务器,接受远端控制,以WEB服务为例,80port有别人请求进来才响应出去,所以设置防火墙时要仅放行响应出去的,而反弹式木马是主动出去连接别人的(不放行此连接),这种功能叫连接追踪ip_conntrack(connection track)

ip_conntrack是个内核模块,它能实时记录着当前主机服务器同客户端彼此正在建立的连接关系,并且能追踪查询到某一连接与其它连接处于什么状态,之间拥有什么关系

#cat /proc/net/ip_conntrack(内存空间的这个文件保存有当前系统上每一个client同当前主机所建立的连接关系,仅保留tcp有关的连接信息,一个条目记录每一个连接来回的两个会话通道,并且保留当前建立的会话状态)

#iptstate -tA top-like display of IP Tables state table entries-t(Showtotals (total states, total TCP states, etc),默认ESTABLISHED的连接保持120小时)

#cat /proc/sys/net/ipv4/ip_conntrack_max(默认32768,定义最多可追踪多少个连接)

#sysctl -w net.ipv4.ip_conntrack_max=65536(永久生效要写入配置文件/etc/sysctl.conf

#cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established(已建立的连接默认保持432000(120小时)

#echo 216000  > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

#iptables -t  nat  -L  -n(此命令会激活ip_conntrack

注:该模块一装载就开始追踪,对于繁忙的服务器来说,若连接达到默认的32768后,后续的用户请求都无法正常建立连接,这是非常致命的,所以对于非常繁忙的服务器不要触发启用这个模块,而对于连接量不是很大的服务器可以开启但尽量将该值ip_conntrack_max调大

#cat /proc/sys/net/ipv4/netfilter/ip_conntrack_icmp_timeout(默认30秒)

 

 

#man iptables

#iptables [-t  TABLE]  COMMAND CHAIN  [NUM]  匹配标准  -j  TARGET

 

-t raw|mangle|nat|filter(若不指定表名,则默认操作的是filter表)

 

COMMAND(管理规则):

-A CHAIN--append,附加一条规则,添加在链的尾部)

-I CHAIN  NUM--insert,插入一条规则到对应链的第NUM条,不指NUM则是插入到第一条规则)

-D CHAIN  NUM--delete,删除指定链中第NUM条规则)

-R CHAIN  NUM--replace,替换指定链第NUM条规则)

COMMAND(管理链)

-F [CHAIN]--flush,清空指定规则链,若省略CHAIN则是清空对应表中的所有链)

-P CHAIN  TARGET--policy,设定指定链的默认策略,TARGETACCEPTDROP))

-N CHAIN_NAME--new-chain,自定义一个新的空链)

-X [CHAIN_NAME]--delete-chain,删除一自定义空链,非空用-F清空再删除)

-Z [CHAIN]--zero,置0指定链中所有规则的计数器)

-E OLDCHAIN_NAME  NEWCHAIN_NAME--rename-chain,重命名一自定义链)

COMMAND(查看)

-L -n  --line-numbers  -v[v]--list  --numeric --verbose

-L -n  -vv  -x--exact显示计数器的精确值)

 

匹配标准(通用匹配):

-s  [!]  IP|NET--src指定源地址,!可条件取反)

-d IP|NET--dst指定目标地址)

-p tcp|dup|icmp(指定协议)

-i INTERFACE--in-interface,指定数据报文流入的接口,一般用在PREROUTING,INPUT,FORWARD

-o  INTERFACE--out-interface,指定数据报文流出的接口,可用于标准定义的链FORWARD,OUPTOU,POSTROUTING

匹配标准(扩展匹配(隐含扩展)):

-p tcp  --sport  PORT[:PORT](支持连续的一堆端口,不能用离散的)

-p tcp  --dport  PORT[:PORT]

-p tcp  --tcp-flags  MASK COMP(只检查MASK指定的标志位,MASK是逗号分隔的标志位列表;COMP表示此列表中的位必须为1,而MASK中出现的,COMP中没出现的则必须为0

举例:-p  tcp  --tcp-flags SYN,ACK,FIN,RST  SYN(表示为TCP三次握手的第一次,也可表示为-p  tcp  --syn

-p icmp  --icmp-type  0|8|3|5|90表示echo-replyping应答,回显应答),8表示echo-requestping请求,回显请求);例如我ping别人,ping出去的8,别人回应进来的0;例如别人ping我,出去的0,进来的8

-p udp  --sport  PORT[:PORT]

-p udp  --dport  PORT[:PORT]

匹配标准(扩展匹配(显式扩展:使用额外的匹配机制)):

-m state  --state  NEW|ESTABLISHED|INVALID|RELATED/lib[64]/iptables/libipt_state.so,结合ip_conntrack追踪会话的状态,NEW表示新连接请求,ESTABLISHED表示已建立的连接,INVALID表示非法连接请求(:SYN=1,FIN=1)RELATED表示相关联的(专为ftp服务)

-m multiport  --source-ports  PORT,PORT,……[:PORT](实现离散的多端口匹配,多个离散的用逗号隔开,范围内的用冒号,最多可指定15个)

-m multiport --destination-ports  PORT,PORT,……[:PORT]

-m multiport  --ports  PORT,PORT,……[:PORT]

-m iprange  [!]  --src-range IP-IP(仅匹配IPv4地址)

-m iprange  --dst-range  IP-IP

-m connlimit  [!]  --connlimit-above  NUM(连接数限定,表示达到NUM上限则DROPREJECT;若使用!则表示未达到上限要用ACCEPT

-m limit  --limit  RATE(例如tc(traffic control流量控制,流量整形,流量重塑reshape,采用令牌桶token bucket,仅获取到令牌的才允许访问连接)limit不能限定总体上限,仅控制单位时间的流量上限;RATE表示单位时间的流量控制,如3/second,3/minute,3/hours,3/day

-m limit  --limit-burst  NUM(表示控制每一次最多蜂拥而来NUM个)

-m string  --algo  bm|kmp --string  “PATTERN”(匹配字符串,若在拒绝网页中某字串显示,注意是在OUTPUT链上写规则)

 

-j  TARGET(处理办法):

-j  ACCEPT

-j  DROP(悄悄丢弃,不告知对方,一般用此项)

-j  REJECT(明确告知拒绝,若拒绝一般用DROP,以防引起对方反感会主动攻击)

-j  DNAT  --to-destination  IP[-IP][:PORT-PORT](目标地址转换)

-j  SNAT  --to-source IP[-IP](源地址转换)

-j  REDIRECT(端口重定向)

-j  MASQUERADE(地址伪装,用于SNATPOSTROUTING))

-j  LOG(仅记录日志,不负责报文的去向)

-j  MARK(打标记)

例:-j  LOG  --log-prefix “STRING”

 

 

 

举例:(修改默认策略为DROP,分别放行ssh服务和httpd服务及本地接口)

#iptables -t  filter  -A INPUT  -s  192.168.101.0/24  -d 192.168.101.154  -p  tcp --dport  22  -j ACCEPT(先放行ssh服务,防止修改了默认策略把自己挡在门外)

#iptables -t  filter  -A OUTPUT  -s  192.168.101.154  -d 192.168.101.0/24  -p  tcp --sport  22  -j ACCEPT

#iptables -P  INPUT  DROP(修改默认策略)

#iptables -P  OUTPUT  DROP

#iptables -t  filter  -I INPUT  -d  192.168.101.154  -p tcp  --dport  80 -j  ACCEPT

#iptables -t  filter  -I OUTPUT  -s  192.168.101.154  -p tcp  --sport  80  -j  ACCEPT

#iptables -t  filter  -I INPUT  -s  127.0.0.1 -d  127.0.0.1  -i  lo  -j ACCEPT

#iptables -t  filter  -I OUTOUT  -s  127.0.0.1 -d  127.0.0.1  -o  lo  -j ACCEPT

 

举例:(我能ping别人,别人ping不了我)

#iptables -t  filter  -A INPUT  -d  192.168.101.154  -p icmp  --icmp-type  0 -j  ACCEPT

#iptables -t  filter  -A OUTPUT  -s  192.168.101.154  -p icmp  --icmp-type  8 -j  ACCEPT

#iptables -L  -n  -vv(分别在win主机和本机ping对方,查看有无匹配到的包)

 

举例:(状态追踪)

 #iptables  -P INPUT  ACCEPT

#iptables -P  OUTPUT  ACCEPT

#iptables -F

#iptables -A  INPUT  -d 192.168.101.154  -p  tcp --dport  22  -m state  --state  NEW,ESTABLISHED  -j ACCEPT

#iptables -A  OUTPUT  -s 192.168.101.154  -p  tcp --sport  22  -m state  --state  ESTABLISHED -j  ACCEPT

#iptables -P  INPUT  DROP

#iptables -P  OUTPUT  DROP

#iptables -A  INPUT  -d 192.168.101.154  -p  tcp --dport  80  -m state  --state  NEW,ESTABLISHED  -j ACCEPT

#iptables -A  OUTPUT  -s  192.168.101.154  -p tcp  --sport  80  -m  state --state  ESTABLISHED  -j ACCEPT

#iptables -A  INPUT  -d 192.168.101.154  -p  icmp --icmp-type  8  -m state  --state  NEW,ESTABLISHED  -j ACCEPT

#iptables -A  OUTPUT  -s 192.168.101.154  -p  icmp --icmp-type  0  -m state  --state  ESTABLISHED -j  ACCEPT

#iptables -L  -n

#iptables -I  OUTPUT  -s 192.168.101.154  -m  state --state  ESTABLISHED  -j ACCEPT(将OUTPUT链上的规则合并,一条规则放行所有条目,之后只用写INPUT链上的规则,OUTPUT链上(出去的规则)的规则就不用写了)

#iptables -D  OUTPUT  2

 

举例:(iptables中配置ftp服务,注意ftp服务有被动模式,端口随机,配置时INPUTOUTPUT都要有ESTABLISHEDRELATED

#lsmod |  grep  ip_nat_ftp(查看是否有此模块,配置ftp需要装载两个模块ip_nat_ftpip_conntrack_ftp

#modprobe ip_nat_ftp(装载此模块会自动装载ip_conntrack_ftp,确保这两个模块用lsmod可查看到)

#vim /etc/sysconfig/iptables-config(以上是手动装载,为方便每次重启服务或主机能自动装载此模块,添加如下信息,多个模块间用空格隔开)

IPTABLES_MODULES="ip_nat_ftp  ip_conntrack_ftp  ip_conntrack_netbios_ns"

#iptables -A  INPUT  -d 192.168.101.154  -p  tcp  --dport  21  -m  state --state  NEW,ESTABLISHED  -j ACCEPT

#iptables -I  OUTPUT  -m state  --state  ESTABLISHED,RELATED  -j ACCEPT

#iptables -I  INPUT  -d 192.168.101.154  -p  tcp -m  state  --state ESTABLISHED,RELATED  -j  ACCEPT

#iptables -I  INPUT  2 -d  192.168.101.154  -p tcp  -m  multiport --destination-ports  21,22,80  -m state  --state  NEW,ESTABLISHED  -j ACCEPT(将INPUT链整合)

#iptables -D  INPUT  3

#service iptables  save

 

举例:(-m  iprange

#iptables -A  INPUT  -m iprange  --src-range  192.168.101.130-192.168.101.150  -d 192.168.101.154  -p  tcp --dport  22  -m state  --state  NEW,ESTABLISHED  -j ACCEPT(仅设置了INPUT链,因为OUTPUT链已被设置为ESTABLISHED,RELATED

 

举例:(-m  connlimit

#iptables -I  INPUT  2 -d  192.168.101.154  -p tcp  --dport  22 -m  connlimit  --connlimit-above  2 -j  DROP(设置上限值,单个IP最多仅允许连进2个,若大于两个提示Connectionrefused;若用!取反则表示2个以下最后要用ACCEPT,如-m  connlimit  ! --connlimit-above  2  -j ACCEPT

#iptables -L  -n  -vv(查看有无匹配到的包)

 

举例:(-m  limit

#iptables -A  INPUT  -d 192.168.101.154  -p  icmp --icmp-type  8  -m limit  --limit  3/minute --limit-burst  3  -j ACCEPT(在WIN下使用>ping  -t  IP查看效果)

#iptables -L  -n  -vv

 

举例:(-m  sring

#iptables -I  OUTPUT  -s 192.168.101.154  -p  tcp --sport  80  -m string  --alog  bm --string  “magedu”  -j REJECT(注意此例web服务是在OUTPUT链上)

 

举例:( -j  LOG

#iptables -R  INPUT  3 -d  192.168.101.170  -p icmp  --icmp-type  8 -j  LOG  --log-prefix “—firewall log prefix”

 

举例:(自定义链——清洗链)

#iptables -N  clean_in

#iptables -A  clean_in  -d 255.255.255.255  -p  icmp -j  DROP

#iptables -A  clean_in  -d 192.168.255.255  -p  icmp -j  DROP

#iptables -A  clean_in  -p tcp  !  --syn -m  state  --state NEW  -j  DROP

#iptables -A  clean_in  -p tcp  --tcp-flags  ALL ALL  -j  DROP

#iptables -A  clean_in  -p tcp  --tcp-flags  ALL NONE  -j  DROP

#iptables -A  clean_in  -d 192.168.101.154  -j  RETURN

#iptables -I  INPUT  -j clean_in

 

举例:(利用recent模块抵御DOS攻击(denial of service拒绝服务)

#iptables -I  INPUT  -p tcp  --dport  22 -m  connlimit  --connlimit-above  3 -j  DROP(单IP最多连进3个,若内网用SNAT上互联网可调大该值)

#iptables -I  INPUT  -p tcp  --dport  22 -m  state  --state NEW  -m  recent --set  --name  SSH--set记录数据包的来源IP,若已存在则是更新已存在条目;--name指定列表名为SSH/proc/net/ipt_recent/SSH

#iptables -I  INPUT  -p tcp  --dport  22 -m  state  --state NEW  -m  recent --update  --seconds  300 --hitcount  3  --name SSH  -j  DROP(利用recentstate模块限制单IP300s内只能与本机建立3个新连接,被限制五分钟后即可恢复访问,--seconds--hitcount要与—update一起用)

 

举例:(SNAT

#iptables -t  nat  -A POSTROUTING  -s  172.16.100.0/16  -j SNAT  --to-source  192.168.101.154

#iptables -t  nat  -A POSTROUTING  -s  172.16.100.0/16  -j SNAT  MASQUERADEMASQUERADE用于外网地址是动态获取时使用,它等同于--to-source  192.168.101.154

#iptables -F

#iptables -P  FORWARD  DROP

#iptables -A  FORWARD  -m state  --state  ESTABLISHED,RELATED  -j ACCEPT

#iptables -A  FORWARD  -s 172.16.100.0/16  -p  tcp --dport  80  -m state  --state  NEW -j  ACCEPT

#iptables -A  FORWARD  -s 172.16.100.0/16  -p  tcp --dport  21  -m state  --state  NEW -j  ACCEPT

 

举例:(DNAT

#iptables -t  nat  PREROUTING -d  172.16.100.2  -p tcp  --dport  80  -j  DNAT --to-destination 192.168.101.154[:80](注意其它限制要在FORWARD链上写规则)

 

注:对LINUX,地址是属于主机的并不是网卡,一个主机在两网卡上配两个地址,开启ip_forward后,所有报文都转发,若只想转发部分报文在FORWARD链上过滤

 

 

layer7(使iptables具有应用层过滤功能,软件包:l7-protocols-2009-05-28.tar.gznetfilter-layer7-v2.21.tar.gziptables-1.4.4.tar.bz2linux-2.6.28.10.tar.gz

#uname -r(现系统版本redhat5.8 2.6.18-308.el5-->2.6.28.10(将内核打补丁并升级,2.6.28是此软件开发人员测试过的内核稳定的版本,其它内核高版本未测试)

 

#tar xf  linux-2.6.28.10.tar.gz  -C /usr/src/

#tar xf  netfilter-layer7-v2.21.tar.gz  -C /usr/src

#cd /usr/src

#ln -sv  linux-2.6.28.10/  linux

#cd linux

# patch  -p1  < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch-p1表示补丁包在上一级目录)

#cp  /boot/config-2.6.18-308.el5  ./.config

 

#make menuconfig

 

General setup  --->

   Localversion - append to kernel release(添加-l7

 

Networking support--> Networking options-->Network packet filtering framework (Netfilter)--> Core NetfilterConfiguration(确保开启如下选项)

<M> Netfilter connection trackingsupport

<M>  FTP protocol support

<M>  "connlimit" match support"

<M>  "conntrack" connection tracking match support

<M>  "iprange" address range match support 

<M>  "mac" address match support

<M>  "multiport" Multiple port match support   

<M>  "state" match support

<M>  "layer7" match support

[*]    Layer 7 debugging output

<M>  "string" match support 

<M>  "time" match support 

 

Networking support--> Networking options-->Network packet filtering framework (Netfilter)--> IP: NetfilterConfiguration

<M> IPv4 connection tracking support(required for NAT)

<M>  Full NAT        

<M>     MASQUERADE target support 

<M>     NETMAP target support

<M>     REDIRECT target support 

 

Networking support-->(将不需要的编译项划掉,以节省编译时间)

[ ]  Wireless  ---> 

< >  Bluetooth subsystem support ---> 

 

[ ] Virtualization  --->

 

Device Drivers  --->

< > Sound card support  --->

< > InfiniBand support  --->

  [*]Network device support  --->

[ ]   Ethernet (1000 Mbit)  ---> 

[ ]   Ethernet (10000 Mbit)  --->  

[ ]   Token Ring driver support  --->  

[ ]   PCMCIA network device support  ---> 

[ ]   ATM drivers --->

[ ]   FDDI driver support   

 

File systems  ---> 

< > GFS2 file system support   

 

#screen(为防止终端意外终止,使用能可恢复)

#make

ctrl+a,d表示暂时离开当前屏幕会话Detachscreen from this terminal

#screen -ls

#screen -r  12819(恢复编译的屏幕会话状态)

#make modules_install

#make install

 

#vim /boot/grub/grub.conf(将default=1改为0,使用新编译的内核)

default=0

……

title Red Hat Enterprise Linux Server(2.6.28.10-l7)

……

title Red Hat Enterprise Linux Server(2.6.18-308.el5)

……

#shutdown -r  now

 

#cd

#cp  /etc/init.d/iptables  ./

#cp /etc/sysconfig/iptables-config  ./

#rpm -e  --nodeps  iptables iptables-ipv6  iptstate

#tar xf  iptables-1.4.4.tar.bz2  -C  /usr/src

#cd /usr/src/ iptables-1.4.4

#cp  ../netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/libxt_layer7.* ./extensions/

#./configure  --prefix=/usr --with-ksource=/usr/src/linux

#make &&  make  install

#which iptables

/usr/sbin/iptables

#cp /root/iptables  /etc/rc.d/init.d/

#vim /etc/init.d/iptables(将21,22行的/sbin/$IPTABLES改为/usr/sbin/$IPTABLES

#cp /root/iptables-config /etc/sysconfig/

#service iptables  start

#tar xf  l7-protocols-2009-05-28.tar.gz

#cd  l7-protocols-2009-05-28

#make install

#ls /etc/l7-protocols/protocols(此目录包含众多可控制的应用,如qq,xunlei,pplive,pop3,ftp等)

 

 

-m layer7  --l7proto  PROTOCOL_NAME -j  ACCEPT|DROP

-m time  --datestart  YYYY[-MM [-DD]]  --datestop YYYY[-MM[-DD]]

-m time  --timestart  hh:mm[:ss] --timestop  hh:mm[:ss]

举例:

#iptables -t  nat  -A POSTROUTING  -s  192.168.101.0/24  -j SNAT  --to-source  172.16.100.1

#iptables -A  FORWARD  -s 192.168.101.10/24  -m  layer7 --l7proto  qq  -j DROP

#iptables -A  FORWARD  -s 192.168.101.0/24  -m  time --timestart  08:00:00  --timestop 12:00:00  -j  REJECT

#iptables -A  FORWARD  -s 192.168.101.0/24  -m  time --timestart  14:30:00  --timestop 18:00:00  -j  REJECT

 

iptables脚本:

#!/bin/bash

#

ipt=/usr/sbin/iptables

iinterface=eth0

einterface=eth1

iip=192.168.101.154

eip=172.16.100.1

$ipt -t  nat  -F

$ipt -t  filter  -F

$ipt -t  mangle  -F

$ipt……

 

 

 


wKioL1Y7BwfyD2UYAAIzal52OcE166.jpg

wKiom1Y7BsfDXtymAAGcevo1WbI370.jpg



本文转自 chaijowin 51CTO博客,原文链接:http://blog.51cto.com/jowin/1710043,如需转载请自行联系原作者

相关文章
|
25天前
|
运维 监控 网络协议
|
11天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
32 3
|
2月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
227 73
|
1月前
|
存储 运维 搜索推荐
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
37 1
|
1月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
43 1
|
1月前
|
Web App开发 运维 安全
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
|
2月前
|
运维 监控 Linux
深入理解Linux系统运维:命令行工具的力量
【9月更文挑战第14天】在Linux的世界里,命令行工具是系统管理员的瑞士军刀。本文将带你领略命令行的魅力,从基础操作到高级技巧,让你的运维工作更加高效和精准。准备好了吗?让我们一起开启这段探索之旅!
|
2月前
|
消息中间件 运维 Linux
linux之centos运维kafka
linux之centos运维kafka
|
1月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
54 4