linuxeth0drop
❶ Linux下DMZ配置
Linux下DMZ构建
保护网络最常见的方法就是使用防火墙。防火墙作为网络的第一道防线,通常放置在外网和需要保护的网络之间。最简单的情况是直接将防火墙放置在外网和企业网络之间,所有流入企业网络的数据流量都将通过防火墙,使企业的所有客户机及服务器都处于防火墙的保护下。这对于一些中小企业来说是简单易行的,而且这种解决方法在某些情况下也表现不错。然而这种结构毕竟比较简单。企业中有许多服务器、客户机等资源需要保护,不同的资源对安全强度的要求也不同。不能用对待客户机的安全级别来对待服务器,这样服务器将会很危险;同样,也不能用对待服务器的安全级别来对待客户机,这样用户会感觉很不方便。
针对不同资源提供不同安全级别的保护,可以考虑构建一个叫做“Demilitarized Zone”(DMZ)的区域。DMZ可以理解为一个不同于外网或内网的特殊网络区域。DMZ内通常放置一些不含机密信息的公用服务器,比如Web、Mail、FTP等。这样来自外网的访问者可以访问DMZ中的服务,但不可能接触到存放在内网中的公司机密或私人信息等。即使DMZ中服务器受到破坏,也不会对内网中的机密信息造成影响。
许多防火墙产品都提供了DMZ的接口(一般老的防火墙都只有两个口,即做不了DMZ,现在的防火墙一般都有三个或四个接口)。硬件防火墙由于使用专门的硬件芯片,所以在性能和流量上有绝对的优势。软件防火墙的性价比非常好,一般企业使用起来效果不错。如果使用Linux防火墙,其成本将更低。这里将介绍的是在Linux防火墙上划分DMZ区域的方法。
构建DMZ的策略
Linux从2.4内核开始,正式使用iptables来代替以前的ipfwadm和ipchains,实现管理Linux的包过滤功能。Linux的包过滤通过一个叫netfilter的内核部件来实现。netfilter内建了三个表,其中默认表Filter中又包括3个规则链,分别是负责外界流入网络接口的数据过滤的INPUT链、负责对网络接口输出的数据进行过滤的OUTPUT链,以及负责在网络接口之间转发数据过滤的FORWARD链。要构建一个带DMZ的防火墙,需要利用对这些链的设定完成。首先要对从连接外部网络的网卡(eth0)上流入的数据进行判断,这是在INPUT链上完成。如果数据的目标地址属于DMZ网段,就要将数据转发到连接DMZ网络的网卡(eth1)上;如果是内部网络的地址,就要将数据转发到连接内部网络的网卡(eth2)上。表1显示了各个网络之间的访问关系。
表1 网络间访问关系表
内网 外网 DMZ
内网 / Y Y
外网 N / Y
DMZ N N /
根据表1,可以明确以下六条访问控制策略。
1.内网可以访问外网
内网的用户显然需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。
2.内网可以访问DMZ
此策略是为了方便内网用户使用和管理DMZ中的服务器。
3.外网不能访问内网
很显然,内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。
4.外网可以访问DMZ
DMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。
5.DMZ不能访问内网
很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。
6.DMZ不能访问外网
此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。
DMZ的实现
根据以上访问控制策略可以设定Linux防火墙的过滤规则。下面将在一个虚构的网络环境中,探讨如何根据以上六条访问控制策略建立相应的防火墙过滤规则。这里的讨论和具体应用会有所区别,不过这种讨论将有助于实际应用。用户在实际应用时可根据具体的情况进行设置。该虚拟环境的网络拓扑如图1。
图1 DMZ网络拓扑图
如图1所示,路由器连接Internet和防火墙。作为防火墙的Linux服务器使用三块网卡:网卡eth0与路由器相连,网卡eth1与DMZ区的Hub相连,网卡eth2与内网Hub相连。作为一个抽象的例子,我们用“[内网地址]”来代表“192.168.1.0/24”之类的具体数值。同理还有“[外网地址]”和“[DMZ地址]”。
对于防火墙,原则之一就是默认禁止所有数据通信,然后再打开必要的通信。所以在防火墙脚本的最初,需要清空系统原有的规则,然后将INPUT、OUTPUT、FORWARD的默认规则设置为丢弃所有数据包。
对应的防火墙脚本片段如下:
# Flush out the tables and delete all user-defined chains
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
# Drop every packet
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP
接下来,逐一解释六种策略的实现。
1.内网可以访问外网
对应的防火墙脚本片段如下:
/sbin/iptables -t nat -A POSTROUTING -s [内网地址] -d [外网地址] -o eth0 -j SNAT --to [NAT的真实IP]
当数据从连接外网的eth0流出时,要将来自内网的数据包的源地址改成Internet上的真实IP,这样才能和外网的主机进行通信。“[NAT的真实IP]”表示分配给NAT用户的真实IP,有几个就写几个,以空格分开,但至少要写一个。
2.内网可以访问DMZ
对应的防火墙脚本片段如下:
/sbin/iptables -A FORWARD -s [内网地址] -d [DMZ地址] -i eth2 -j ACCEPT
以上命令允许所有来自内网、目的地为DMZ的数据包通过。
3.外网不能访问内网
对应的防火墙脚本片段如下:
/sbin/iptables -t nat -A PREROUTING -s [外网地址] -d [内网地址] -i eth0 -j DROP
以上命令将来自外网、去往内网的数据包全部丢弃。
4.外网可以访问DMZ
为了保护DMZ中的服务器,外网对DMZ的访问也要加以限制。通常的思路是,只允许外网访问DMZ中服务器所提供的特定服务,比如HTTP。
对应的防火墙脚本片段如下:
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -d [分配给HTTP服务器的Internet上的真实IP] -s [外网地址] -i eth0 -j DNAT --to [HTTP服务器的实际IP]
/sbin/iptables -A FORWARD -p tcp -s [外网地址] -d [HTTP服务器的实际IP] -i eth0 --dport 80 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -d [外网地址] -s [HTTP服务器的实际IP] -i eth1 --sport 80 ! --syn -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -s [外网地址] -d [DMZ地址] -i eth0 -j DROP
该防火墙脚本片段将开放HTTP服务,使得只有访问DMZ中HTTP服务的数据包才能通过防火墙。
设置得当,Linux会能成为很好的防火墙。需要补充的是,任何一种防火墙都只能提供有限的保护。设置好防火墙不等于网络就是安全的,很多单位学校防火墙基本上是一个心理安慰的工具,连基本的策略都是全部any,所以关键在于综合运用各种安全手段。
❷ linux 下用ifconfig 查看网卡状态,发现eth0有RX有drop包,这是否说明内网硬件不正常.或者存在arp攻击
ifconfig 显示接收丢包,一般来说是驱动申请不到足够的内存来存放收到的包
接收丢包统计在数据结构net_device_stats的下面这个字段中
unsigned long rx_dropped; /* no space in linux buffers */
所以既不是硬件问题(否则根本收不到包),也不是arp攻击(驱动不管上层协议类型的),有可能是内存不够,但是不能确定,楼主可以查一下你网卡的驱动程序确认下
❸ linux iptables ftp设置
这些规则很罗嗦,最重要的是概念不清,加了基本等于没加,该防护的都没防护到,反而加重系统负担。
OUTPUT链默认就是允许的,如果这个主机是你管理并可控的,你为何不让本机可以访问外部所有的地址?非得加那么多啰嗦的脚本?
一、本机做NAT,让内部主机访问外部FTP服务器的做法
1、清除所有旧有的规则
service iptables stop //RHEL才有的命令
2、加载让NAT内部主机访问外部FTP的模块:
modeprobe ip_nat_ftp
//从RHEL4开始,该模块会自动在系统加载ip_nat/ip_conntrack/ip_tables/ip_conntrack_ftp/ip_conntrack_irc等多个模块
3、打开linux的转发开关
echo "1" /proc/sys/net/ipv4/ip_forward
4、开启NAT
iptables -t nat -A POSTROUTING -s $INT_NET -j SNAT --to $FW_IP
这样,内部主机就可以访问外部的FTP服务了,你不需要知道对方是主动还是被动模式
二、如果本机做FTP被访问
service iptables stop
modprobe ip_conntrack_irc //如果端口不是21,后面还需要加上端口号。如果是21,这步也可以用modprobe ip_nat_ftp,把其他模块也加载上。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
当INPUT的默认策略是DROP时,RELATED模块用途就是为本机的FTP服务打开衍生端口,ESTABLISHED是允许回包。
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT //开放21端口
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT //开放管理端口
iptables -P INPUT DROP //默认策略拒绝
❹ linux运维必须知道的几个常用命令
Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理都是无法改变的,Linux命令有许多强大功能:从简单的磁盘操作、文件存取以及复杂的多媒体图像和媒体文件都会使用到命令。
Linux常用的命令有哪些?老男孩教育为大家总结一下:
安装和登录命令:login 、shutdown 、halt 、reboot 、mount 、umount 、chsh
文件处理命令:file 、mkdir 、grep 、dd 、find 、mv 、ls 、diff 、cat 、ln
网络操作命令:ifconfig 、ip 、ping 、netstat 、telnet 、ftp 、route 、rlogin rcp 、finger
、mail 、nslookup
系统安全相关命令:passwd 、su 、umask 、chgrp 、chmod 、chown 、chattr、sudo、pswho
系统管理相关命令:df 、top 、free 、quota 、at 、lp 、 adser 、groupadd kill 、 crontab 、tar、unzip 、gunzip 、last
❺ 关于linux的iptables和selinux功能说明
iptables 能做到“控制内部机器上网与不上网,访问哪些网站的控制”
但日志只能记录关于访问ip数据的相关信息
iptables日志内容:
IN=eht1 OUT=eth0 SRC=10.44.10.200 DST=219.223.222.17 LEN=48 TOS=0x00 PREc=0x00 TTL=127 ID=53825 DF PROTO=TCP SPT=1564 DPT=2142 WINDOW=16384 RES=0x00 SYN UPGR=0
SElinux是提高当前linux服务器安全性的软件应该对其他机器无效。
❻ 跪求:linux,iptables命令的使用,谢谢指导!
我就以192.168.1.0/24这个网段和80端口为例子来给你说明吧。
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j DROP
这是拒绝192.168.1.0/24这个网段的人来访问本机。
如果指定某台主机的话,就把网段地址指定为主机的IP地址就可以了。
iptables -A INPUT -s 192.168.1.0/24 --dport 80 -p tcp -i eth0 -j DROP
句的意思就是,拒绝192.167.1.0/24这个网段的任何主机使用TCP协议从eth0这个网卡来访问本机的80端口。如果使用具体主机的话,跟上面一样,把网段地址改为主机IP地址就可以了。
iptables -A INPUT -P DROP
iptables -A FORWORD -P DROP
iptables -A OUTPUT -p DROP
iptables -t nat -A PREROUTING -p DROP
iptables -t nat -A POSTROUTING -p DROP
iptables -t nat -A OUTPUT -p DROP
这样你就拒绝了所有人对你的机器的访问了,同样,你可不能访问别人了。
但是,你还可以加上你自己的条目来让访问别人并让别人来访问你。
具体的设置,我推荐你看一下鸟哥的linux相关资料,他的官方网站是:
www.vbird.org
❼ linux 网关设置
/etc/sysconfigure/network 这个是设置网关的
route add default gw这个是用来设置路由表的。可以使用route -n查看
这个的作用是在/etc/resolv.conf里面的nameserver作用一样,添加路由表。
❽ 怎样在 Linux 中限制网络带宽使用
限制网络流量速率的一种方法是通过一个名为trickle的命令行工具。通过在程序运行时,预先加载一个速率限制 socket 库 的方法,trickle 命令允许你改变任意一个特定程序的流量。 trickle 命令有一个很好的特性是它仅在用户空间中运行,这意味着,你不必需要 root 权限就可以限制一个程序的带宽使用。要能使用 trickle 程序控制程序的带宽,这个程序就必须使用非静态链接库的套接字接口。当你想对一个不具有内置带宽控制功能的程序进行速率限制时,trickle 可以帮得上忙。
在 Ubuntu,Debian 及其衍生发行版中安装 trickle :
1
$ sudo apt-get install trickle
在 Fdora 或 CentOS/RHEL (带有 EPEL 软件仓库):
1
$ sudo yum install trickle
trickle 的基本使用方法如下。仅需简单地把 trickle 命令(及速率参数)放在你想运行的命令之前。
1
$ trickle -d <download-rate> -u <upload-rate> <command>
这就可以将 <command> 的下载和上传速率限定为特定值(单位 KBytes/s)。
例如,将你的 scp 会话的最大上传带宽设定为 100 KB/s:
1
$ trickle -u 100 scp backup.tgz alice@remote_host.com:
如若你想,你可以通过创建一个自定义启动器的方式,使用下面的命令为你的 Firefox 浏览器设定最大下载速率(例如, 300 KB/s)。
1
trickle -d 300 firefox %u
最后, trickle 也可以以守护进程模式运行,在该模式下,它将会限制所有通过 trickle 启动且正在运行的程序的总带宽之和。 启动 trickle 使其作为一个守护进程(例如, trickled):
1
trickle -d 300 firefox %u
一旦 trickled 守护进程在后台运行,你便可以通过 trickle 命令来启动其他程序。假如你通过 trickle 启动一个程序,那么这个程序的最大下载速率将是 1000 KB/s, 假如你再通过 trickle 启动了另一个程序,则每个程序的(下载)速率极限将会被限制为 500 KB/s,等等。
在 Linux 中限制一个网络接口的速率
另一种控制你的带宽资源的方式是在每一个接口上限制带宽。这在你与其他人分享你的网络连接的上行带宽时尤为实用。同其他一样,Linux 有一个工具来为你做这件事。wondershaper就是干这个的。
wondershaper 实际上是一个 shell 脚本,它使用 tc 来定义流量调整命令,使用 QoS 来处理特定的网络接口。外发流量通过放在不同优先级的队列中,达到限制传出流量速率的目的;而传入流量通过丢包的方式来达到速率限制的目的。
事实上, wondershaper 的既定目标不仅仅是对一个接口增加其带宽上限;当批量下载或上传正在进行时,wondershaper 还试图去保持互动性会话如 SSH 的低延迟。同样的,它还会控制批量上传(例如, Dropbox 的同步)不会使得下载“窒息”,反之亦然。
在 Ubuntu Debian 及其衍生发行版中安装 wondershaper:
1
trickle -d 300 firefox %u
在 Fdora 或 CentOS/RHEL (带有 EPEL 软件仓库) 中安装 wondershaper:
1
trickle -d 300 firefox %u
wondershaper 的基本使用如下:
1
$ sudo wondershaper <interface> <download-rate> <upload-rate>
举个例子, 将 eth0 的最大下载/上传带宽分别设定为 1000Kbit/s 和 500Kbit/s:
1
$ sudo wondershaper <interface> <download-rate> <upload-rate>
你也可以通过运行下面的命令将速率限制进行消除:
1
$ sudo wondershaper <interface> <download-rate> <upload-rate>
假如你对 wondershaper 的运行原理感兴趣,你可以阅读其 shell 脚本源文件(/sbin/wondershaper)。
总结
在本教程中,我介绍了两种不同的方法,来达到如何在 Linux 桌面环境中,控制每个应用或每个接口的带宽使用的目的。 这些工具的使用都很简单,都为用户提供了一个快速且容易的方式来调整或限制流量。 如果你想更多地了解如何在 Linux 中进行速率控制,请参考 the Linux bible.
❾ linux 防火墙 默认策略是DROP 如何让我能随意连接其他人的22端口
iptables -A OUTPUT -o eth0 -d 192.168.100.250 -s 192.168.1.1 -p tcp --sport 22 -j ACCEPT
类似这样
❿ 如何通过Linux系统下iptables防火墙开启/关闭指定端口方法
一般情况下iptables已经包含在Linux发行版中.
运行iptables
--version来查看系统是否安装iptables
启动iptables
service
iptables
start
iptables
--list
//*查看iptables规则集*//
下面是没有定义规划时iptables的样子:
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
如何开启/关闭指定端口
例如:
开启81端口:
iptables
-I
INPUT
-i
eth0
-p
tcp
--dport
81
-j
ACCEPT
iptables
-I
OUTPUT
-o
eth0
-p
tcp
--sport
81
-j
ACCEPT
关闭81端口:
iptables
-I
INPUT
-i
eth0
-p
tcp
--dport
81
-j
DROP
iptables
-I
OUTPUT
-o
eth0
-p
tcp
--sport
81
-j
DROP
然后保存
/etc/rc.d/init.d/iptables
save
你可以使用lsof命令来查看某一端口是否开放.查看端口可以这样来使用.
我就以81端口为例:
lsof
-i:81
如果有显示说明已经开放了.如果没有显示说明没有开放