linux查看防火墙状态命令linux查看防火墙状态
centos查看防火墙状态?
查看centos防火墙状态方法一:
直接使用iptables-L查看防火墙设置
serviceiptablesstop关闭防火墙
serviceiptablesstart/restart开启或重启
查看centos防火墙状态方法二:
serviceiptablesstatus可以查看到iptables服务的当前状态。
但是即使服务运行了,防火墙也不一定起作用,你还得看防火墙规则的设置iptables-L
在此说一下关于启动和关闭防火墙的命令:
1)重启后生效
开启:chkconfigiptableson
关闭:chkconfigiptablesoff
2)即时生效,重启后失效
开启:serviceiptablesstart
关闭:serviceiptablesstop
linux查看防火墙是否开启centos8?
我的:centos8查看防火墙是否开启,需要执行systemctlstatusfirewalld。
systemctllist-unit-files|grepenabled
查看所有自启动的服务,查找是否包括
firewalld服务。如果找不到,证明防火墙没随机自启动。
否则就是防火墙是随机启动了,需要查看防火墙状态,执行systemctlstatusfirewalld查看服务状态。
ubuntu下怎么查看防火墙设置?
ubuntu910默认的是UFW防火墙,已经支持界面操作了。在命令行运行ufw命令就可以看到提示的一系列可进行的操作。
最简单的一个操作:sudoufwstatus可检查防火墙的状态,我的返回的是:不活动
sudoufwversion防火墙版本:
ufw029-4ubuntu1
Copyright2008-2009CanonicalLtd
ubuntu系统默认已安装ufw
1安装
sudoapt-getinstallufw
2启用
sudoufwenable
sudoufwdefaultdeny
运行以上两条命令后,开启了防火墙,并在系统启动时自动开启。关闭所有外部对本机的访问,但本机访问外部正常。
3开启/禁用
sudoufwallow|deny
打开或关闭某个端口,例如:
sudoufwallowsmtp允许所有的外部IP访问本机的25/tcp(smtp)端口
sudoufwallow22/tcp允许所有的外部IP访问本机的22/tcp(ssh)端口
sudoufwallow53允许外部访问53端口(tcp/udp)
sudoufwallowfrom1921681100允许此IP访问所有的本机端口
sudoufwallowprotoudp19216801port53to19216802port53
sudoufwdenysmtp禁止外部访问smtp服务
sudoufwdeleteallowsmtp删除上面建立的某条规则
4查看防火墙状态
sudoufwstatus
一般用户,只需如下设置:
sudoapt-getinstallufw
sudoufwenable
sudoufwdefaultdeny
以上三条命令已经足够安全了,如果你需要开放某些服务,再使用sudoufwallow开启。
开启/关闭防火墙(默认设置是’disable’)
sudoufwenable|disable
转换日志状态
sudoufwloggingon|off
设置默认策略(比如“mostlyopen”vs“mostlyclosed”)
sudoufwdefaultallow|deny
许可或者屏蔽端口(可以在“status”中查看到服务列表)。可以用“协议:端口”的方式指定一个存在于/etc/services中的服务名称,也可以通过包的meta-data。‘allow’参数将把条目加入/etc/ufw/maps,而‘deny’则相反。基本语法如下:
sudoufwallow|deny
显示防火墙和端口的侦听状态,参见/var/lib/ufw/maps。括号中的数字将不会被显示出来。
sudoufwstatus
UFW使用范例:
允许53端口
$sudoufwallow53
禁用53端口
$sudoufwdeleteallow53
允许80端口
$sudoufwallow80/tcp
禁用80端口
$sudoufwdeleteallow80/tcp
允许smtp端口
$sudoufwallowsmtp
删除smtp端口的许可
$sudoufwdeleteallowsmtp
允许某特定IP
$sudoufwallowfrom192168254254
删除上面的规则
$sudoufwdeleteallowfrom192168254254
linux24内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,他免费且功能强大,可以对流入、流出的信息进行细化控制,它可以实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。
但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是iptables。ufw即uncomplicatedfirewall的简称,一些复杂的设定还是要去iptables。
ufw相关的文件和文件夹有:
/etc/ufw/:里面是一些ufw的环境设定文件,如beforerules、afterrules、sysctlconf、ufwconf,及forip6的before6rule及after6rules。这些文件一般按照默认的设置进行就ok。
若开启ufw之后,/etc/ufw/sysctlconf会覆盖默认的/etc/sysctlconf文件,若你原来的/etc/sysctlconf做了修改,启动ufw后,若/etc/ufw/sysctlconf中有新赋值,则会覆盖/etc/sysctlconf的,否则还以/etc/sysctlconf为准。当然你可以通过修改/etc/default/ufw中的“IPT_SYSCTL=”条目来设置使用哪个sysctrlconf
/var/lib/ufw/userrules这个文件中是我们设置的一些防火墙规则,打开大概就能看明白,有时我们可以直接修改这个文件,不用使用命令来设定。修改后记得ufwreload重启ufw使得新规则生效。
下面是ufw命令行的一些示例:
ufwenable/disable:打开/关闭ufw
ufwstatus:查看已经定义的ufw规则
ufwdefaultallow/deny:外来访问默认允许/拒绝
ufwallow/deny20:允许/拒绝访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。
ufwallow/denyservicename:ufw从/etc/services中找到对应service的端口,进行过滤。
ufwallowprototcpfrom10010/10to本机ipport25:允许自10010/10的tcp封包访问本机的25端口。
ufwdeleteallow/deny20:删除以前定义的"允许/拒绝访问20端口"的规则
linux中怎样查看防火墙是否关闭了?
详细步骤如下:
1、打开Linux系统进入桌面,点击上方菜单栏处系统选项;
2、在弹出的菜单栏中,依次点击管理,防火墙选项;
3、进入防火墙界面,输入用户密码,进行安全验证;
4、连接服务器后,输入语句‘serviceiptablesstatus’,回车,会显示防火墙状态;
5、输入语句‘chkconfigiptableson’,可以开启防火墙。或者使用语句‘chkconfigiptablesoff’,关闭防火墙,需要重启后生效。
linux如何关闭防火墙?
rhel6关闭防火墙的方法为:serviceiptablesstatus查看当前防火墙状态1永久性生效开启:chkconfigiptableson关闭:chkconfigiptablesoff2即时生效,重启后失效开启:serviceiptablesstart关闭:serviceiptablesstoprhel7关闭防火墙的方法为:systemctlstatusfirewalld查看当前防火墙状态1永久性生效开启:systemctlenablefirewalld关闭:systemctldisablefirewalld2即时生效,重启后失效开启:systemctlstartfirewalld关闭:systemctlstopfirewalld
linux防火墙作用一:
一、防火墙的基本模型
基于TCP/IP协议簇的Internet网际互联完全依赖于网络层以上的协议栈(网络层的IP协议、传输控制协议TCP/UDP协议和应用层协议)。考虑到网络防火墙是为了保持网络连通性而设立的安全机制,因此防火墙技术就是通过分析、控制网络以上层协议特征,实现被保护网络所需安全策略的技术。构建防火墙有三类基本模型:即应用代理网关、电路级网关(Circuit Level Gateway)和网络层防火墙。
二、不应该过滤的包
在开始过滤某些不想要的包之前要注意以下内容:
ICMP包
ICMP
包可用于检测TCP/IP失败的情形。如果阻挡这些包将导致不能得“Host unreachable”或“No route to host”等信息。ICMP包还用于MTU发现,某些TCP实现使用了MTU发现来决定是否进行分段。MTU发现通过发送设置了不进行分段的位的包探测,
当得到的ICMP应答表示需要分段时,再发送较小的包。如果得不到ICMP包(“destination unreachable”类型的包),则本地主机不减少MTU大小,这将导致测试无法停止或网络性能下降。 到DNS的TCP连接
如果要拦阻出去的TCP连接,那么要记住DNS不总是使用UDP。如果从DNS服务器过来的回答超过512字节,客户端将使用TCP连接,并仍使用端口53接收数据。若禁止了TCP连接,DNS大多数情况下会正常工作,但可能会有奇怪的延时故障出现。
如果内部网络的DNS查询总是指向某个固定的外部DNS服务器,可以允许本地域端口到该服务器的域端口连接。
主动式FTP的TCP连接
FTP有两种运作方式,即传统的主动式(active)方式和目前流行的被动式(passive)方式。在主动式FTP模式下,FTP 服务器发送文件或应答LS命令时,主动和客户端建立TCP连接。如果这些TCP连接被过滤,则主动方式的FTP将被中断。如果使用被动方式,则过滤远地的TCP连接没有问题。因为数据连接是从客户端到服务器进行的(包括双向的数据)。
三、针对可能的网络攻击
防火墙的性能是否优良关键在于其配置能否防护来自外界的各种网络攻击。这要求网络管理者能针对可能的网络攻击特点设定完善的安全策略。以网络常见的“ping of death”攻击为例,“ping of death”攻击通过发送一个非法的大ICMP包使接收者的TCP堆栈溢出从而引起混乱。针对这种攻击可将防火墙配置为阻挡ICMP分段。因为普通的
ICMP包大都不需要到分段的程度,阻挡ICMP分段只拦阻大的“ping”包。 这种防护策略也可用于针对其他协议安全缺陷的网络攻击。
linux防火墙作用二:
它可通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况, 以此来实现网络的安全保护。
在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器,有效地监控了内部网和Internet之间的任何活动, 保证了内部网络的安全。
2使用Firewall的益处
保护脆弱的服务
通过过滤不安全的服务,Firewall可以极大地提高网络安全和减少子网中主机的风险。例如, Firewall可以禁止NIS、NFS服务通过,Firewall同时可以拒绝源路由和ICMP重定向封包。
控制对系统的访问
Firewall可以提供对系统的访问控制。如允许从外部访问某些主机,同时禁止访问另外的主机。例如, Firewall允许外部访问特定的Mail Server和Web Server。
集中的安全管理
Firewall对企业内部网实现集中的安全管理,在Firewall定义的安全规则可以运行于整个内部网络系统, 而无须在内部网每台机器上分别设立安全策略。Firewall可以定义不同的认证方法, 而不需要在每台机器上分别安装特定的认证软件。外部用户也只需要经过一次认证即可访问内部网。
增强的保密性
使用Firewall可以阻止攻击者获取攻击网络系统的有用信息,如Figer和DNS。
记录和统计网络利用数据以及非法使用数据
Firewall可以记录和统计通过Firewall的网络通讯,提供关于网络使用的统计数据,并且,Firewall可以提供统计数据, 来判断可能的攻击和探测。
策略执行Firewall提供了制定和执行网络安全策略的手段。未设置Firewall时,网络安全取决于每台主机的用户。
3防火墙的种类
防火墙总体上分为包过滤、应用级网关和代理服务器等几大类型。
数 据 包 过 滤
数据包过滤(Packet Filtering)技术是在网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑, 被称为访问控制表(Access Control Table)。通过检查数据流中每个数据包的源地址、目的地址、所用的端口号、 协议状态等因素,或它们的组合来确定是否允许该数据包通过。 数据包过滤防火墙逻辑简单,价格便宜,易于安装和使用, 网络性能和透明性好,它通常安装在路由器上。路由器是内部网络与Internet连接必不可少的设备, 因此在原有网络上增加这样的防火墙几乎不需要任何额外的费用。
数据包过滤防火墙的缺点有二:一是非法访问一旦突破防火墙,即可对主机上的软件和配置漏洞进行攻击; 二是数据包的源地址、目的地址以及IP的端口号都在数据包的头部,很有可能被窃听或假冒。
应 用 级 网 关
应用级网关(Application Level Gateways)是在网络应用层上建立协议过滤和转发功能。 它针对特定的网络应用服务协议使用指定的数据过滤逻辑,并在过滤的同时,对数据包进行必要的分析、 登记和统计,形成报告。实际中的应用网关通常安装在专用工作站系统上。
数据包过滤和应用网关防火墙有一个共同的特点,就是它们仅仅依靠特定的逻辑判定是否允许数据包通过。 一旦满足逻辑,则防火墙内外的计算机系统建立直接联系, 防火墙外部的用户便有可能直接了解防火墙内部的网络结构和运行状态,这有利于实施非法访问和攻击。
代理服务(Proxy Service)也称链路级网关或TCP通道(Circuit Level Gateways or TCP Tunnels), 也有人将它归于应用级网关一类。它是针对数据包过滤和应用网关技术存在的缺点而引入的防火墙技术, 其特点是将所有跨越防火墙的网络通信链路分为两段。防火墙内外计算机系统间应用层的 链接, 由两个终止代理服务器上的 链接来实现,外部计算机的网络链路只能到达代理服务器, 从而起到了隔离防火墙内外计算机系统的作用。
linux防火墙作用三:
windows防火墙是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的数据通过。
具体作用如下:
1、防止来自网络上的恶意攻击;
2、阻止外来程序连接计算机端口;
3、对电脑进行防护,防止木马入侵或其它黑客软件、程序运行‘
4、阻止本地程序通过计算机端口,向外并发信息;
linux启动命令?
一:启动Nginx服务--在sbin目录下
启动命令:/nginx
关闭命令:/nginx-sstop和/nginx-squit
刷新配置文件:/nginx-sreload(每次对Nginx的配置文件nginxconf修改后,都要进行重新加载配置文件)
二:进程
查看进程ps-ef|grep-ixxxx-i大概是ignore是忽略的意思这里是忽略大小写。
杀死进程kill-9xxxx
三:防火墙
开启防火墙serviceiptablesstart
关闭防火墙serviceiptablesstop
查看防火墙的状态serviceiptablesstatus
永久关闭防火墙chkconfigiptablesoff
四:启动zookeeper服务--在zookeeper的bin目录下
开启zookeeper服务:/zkServershstart
查看zookeeper状态/zkServershstatus
五:启动Redis服务--在redis的bin目录下
以后台的方式启动:/redis-server/redisconf(后面的的redisconf路径要根据每个人配置文件存放的位置来写)
进入redis命令服务:/redis-cli
输入:ping如果返回pong则表示连接成功!
六启动tomcat服务
Linux下tomcat服务的启动、关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:
切换到tomcat主目录下的bin目录(cdusr/local/tomcat/bin)
1,启动tomcat服务
方式一:直接启动/startupsh
方式二:作为服务启动nohup/startupsh
方式三:控制台动态输出方式启动/catalinashrun动态地显示tomcat后台的控制台输出信息,Ctrl+C后退出并关闭服务
解释:
通过方式一、方式三启动的tomcat有个弊端,当客户端连接断开的时候,tomcat服务也会立即停止,通过方式二可以作为linux服务一直运行
通过方式一、方式二方式启动的tomcat,其日志会写到相应的日志文件中,而不能动态地查看tomcat控制台的输出信息与错误情况,通过方式三可以以控制台模式启动tomcat服务,
直接看到程序运行时后台的控制台输出信息,不必每次都要很麻烦的打开catalinaout日志文件进行查看,这样便于跟踪查阅后台输出信息。tomcat控制台信息包括log4j和Systemoutprintln()等输出的信息。
2,关闭tomcat服务
/shutdownsh
七>启动数据库:
servicemysqldstart启动
servicemysqldrestart重启
Linux服务器怎样设置防火墙?
Linux中的防火墙有多种,一般指的iptables。
1Linux防火墙(Iptables)重启系统生效12开启:chkconfigiptableson关闭:chkconfigiptablesoff2Linux防火墙(Iptables)即时生效,重启后失效12开启:serviceiptablesstart关闭:serviceiptablesstop3其它linux防火墙,请自行参考说明文档。一般对于Linux下的服务都可以用以上命令执行开启和关闭操作,而防火墙通常都以服务形式运行,因此也算是一个通用的方法。
linux60修改防火墙设置?
改Linux系统防火墙配置需要修改/etc/sysconfig/iptables这个文件
vim/etc/sysconfig/iptables
在vim编辑器,会看到下面的内容
#Firewallconfigurationwrittenbysystem-config-firewall
#Manualcustomizationofthisfileisnotrecommended
filter
:INPUTACCEPT
:FORWARDACCEPT
:OUTPUTACCEPT
-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
-AINPUT-picmp-jACCEPT
-AINPUT-ilo-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport8080-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport3306-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport2181-jACCEPT
-AINPUT-jREJECT--reject-withicmp-host-prohibited
-AFORWARD-jREJECT--reject-withicmp-host-prohibited
COMMIT
需要开放端口,请在里面添加一条一下内容即可:
-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport1521-jACCEPT
其中1521是要开放的端口号,然后重新启动linux的防火墙服务。
Linux下停止/启动防火墙服务的命令(root用户使用):
serviceiptablesstop--停止
serviceiptablesstart--启动
写在最后:
#永久性生效,重启后不会复原
chkconfigiptableson#开启
chkconfigiptablesoff#关闭
#即时生效,重启后复原
serviceiptablesstart#开启
serviceiptablesstop#关闭
linux防火墙怎么设置打开和禁用端口?
一、查看哪些端口被打开netstat-anp二、关闭端口号:iptables-AINPUT-ptcp--drop端口号-jDROPiptables-AOUTPUT-ptcp--dport端口号-jDROP三、打开端口号:iptables-AINPUT-ptcp--dport端口号-jACCEPT四、以下是linux打开端口命令的使用方法。nc-lp23(打开23端口,即telnet)netstat-an|grep23(查看是否打开23端口)五、linux打开端口命令每一个打开的端口,都需要有相应的监听程序才可以适合入门的学习途径,请阅读《Linux就该这么学》
linux防火墙的启动和关闭的命令是什么?
LINUX系统关闭防火墙的步骤如下:
1首先打开SSH软件,按回车键就会提示你进行登录,输入IP和用户名进行登录。
2执行命令:/etc/initd/iptablesstatus,会得到一系列信息,说明防火墙开着。
3执行命令:/etc/initd/iptablesstop,停止服务。
4执行命令:chkconfig--levels35iptablesoff,关闭防火墙服务开机启动。这样就解决了LINUX系统关闭防火墙的问题了。
Linux防火墙设置
任务描述
(1)设置网卡IP地址为1921681234,子网掩码为2552552550,网关为19216811。
(2)设置DNS为6117771。
(3)Linux防火墙设置,禁用SELinux,启用防火墙,信任WWW、FTP、SSH、SMTP端口。
(4)设置防火墙,使能信任TCP协议的POP3端口。
任务实施
(1)设置网卡IP地址为1921681234,子网掩码为2552552550,网关为19216811。
选择“系统”→“管理”→“网络”命令,启动“网络配置”窗口,如图5-48所示。选择“设备(j)”选项卡,名为eth0的网卡应该已安装(如果没有,可单击工具栏中的“新建”按钮添加一块网卡)。
双击图中的网卡,在新出现的对话框中输入IP地址、子网掩码、网关地址,如图5-49所示,然后单击“确定(0)”按钮。
回到“网络配置”窗口,选中网卡,单击工具栏中的“激活”按钮,使新配置的网络参数生效。
提示/备注:必须“激活”,只有“激活 ”后新配置的网络参数才能生效。
(2)设置DNS为6117771,在图中选择DNS选项卡,输入DNS服务器地址,如图5-50所示。
(3)Linux防火墙设置,禁用SELinux,启用防火墙,信任WWW、FTP、SSH、SMTP端口,选择“系统”→“管理”→“安全级别和防火墙”命令,启动“安全级别设置”窗口,选择SELinux(s)选项卡,“禁用”SELinux,如图5-51所示。
选择“防火墙选项(F)”选项卡,“启用”防火墙,在“信任的服务”列表框中选择WWW(HTTP)、FTP、SSH、SMTP等复选框,如图5-52所示。
(4)设置防火墙,使信任TCP协议POP3端口。在“安全级别设置”窗口中,单击“其他端口”下拉按钮,如图5-33所示,然后单击“添加(A)”按钮,出现如图5-54所示的对话框,在“端口”文本框中输入POP3端口号110,“协议”选TCP,再单击“确定(O)”按钮,回到“安全级别设置”窗口,单击“应用(A)”按钮应用已设置的安全级别。
理论知识
常见服务对应的端口如表5-1所示。
知识拓展
(1)CentOS中配置、查阅网络的命令是ifconfig,Linux防火墙设置用命令iptables。
(2)SELinux(Secrity Enhanced Linux)是一种访问控制机制,用来保护文件安全。
来源:服务器之家(http://serverzzidccom)
偶然看到防火墙的配置操作说明,感觉不错。执行”setup”命令启动文字模式配置实用程序,在”选择一种工具”中选择”防火墙配置”,然后选择”运行工具”按钮,出现防火墙配置界面,将”安全级别”设为”禁用”,然后选择”确定”即可
或者用命令:
#/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
#/etc/rcd/initd/iptables save
这样重启计算机后,防火墙默认已经开放了80和22端口
这里应该也可以不重启计算机:
#/etc/initd/iptables restart
防火墙的关闭,关闭其服务即可:
查看防火墙信息:
#/etc/initd/iptables status
关闭防火墙服务:
#/etc/initd/iptables stop
永久关闭?不知道怎么个永久法:
#chkconfig –level 35 iptables off
看了好几个页面内容都有错,下面是正确方法:
#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
然后保存:
#/etc/rcd/initd/iptables save
再查看是否已经有了:
[root@vcentos ~]# /etc/initd/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- 0000/0 0000/0 udp dpt:80
2 ACCEPT tcp -- 0000/0 0000/0 tcp dpt:80
3 RH-Firewall-1-INPUT all -- 0000/0 0000/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0000/0 0000/0
服务器遭受到大量的大量SYN_RECV,80端号占死,网站打不开
没有硬防
有什么办法可以解决吗
1
sysctl -w netipv4tcp_syncookies=1 #启用使用syncookies
sysctl -w netipv4tcp_synack_retries=1 #降低syn重试次数
sysctl -w netipv4tcp_syn_retries=1 #降低syn重试次数
sysctl -w netipv4tcp_max_syn_backlog=6000 #最大半连接数
sysctl -w netipv4confallsend_redirects=0
sysctl -w netipv4confallaccept_redirects=0 #不接受重定向的icmpbr /sysctl -w netipv4tcp_fin_timeout=30
sysctl -w netipv4tcp_keepalive_time=60
sysctl -w netipv4tcp_window_scaling=1
sysctl -w netipv4icmp_echo_ignore_all=1 #禁止ICMP
sysctl -w netipv4icmp_echo_ignore_broadcasts=1 #ICMP禁止广播
2限制单位时间内连接数
如
iptables -N syn-flood
iptables -A FORWARD -p tcp --syn -j syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -p tcp --syn -m limit --limit 3/s --limit-burst 1 -j ACCEP
iptables -A syn-flood -j DROP
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP
3 如果还是不行,
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEP
如攻击过来的流量大于你的服务器的流量,那就没有什么办法了,如果流量不大,以上方法,可以暂时保证你的80可以访问
如果你的内核已经支持iptables connlimit可以使用, iptables 设定部份,也可以使用
iptables -I FORWARD -p tcp --syn -m connlimit --connlimit-above 5 -j DROP
或
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j REJECT
对付SYN FLOOD的话,真正起作用的是:
sysctl -w netipv4tcp_syncookies=1 #启用使用syncookies
sysctl -w netipv4tcp_synack_retries=1 #降低syn重试次数
其他IPTABLES的限制速度功能不能用来对付SYN FLOOD的(不能阻止拒绝服务,但是确实可以防止服务器CRASH)。
通过本教程操作,请确认您能使用linux本机。如果您使用的是ssh远程,而又不能直接操作本机,那么建议您慎重,慎重,再慎重!
我们来配置一个filter表的防火墙
(1)查看本机关于IPTABLES的设置情况
复制代码
代码如下:
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination/ppChain FORWARD (policy ACCEPT)
target prot opt source destination/ppChain OUTPUT (policy ACCEPT)
target prot opt source destination/ppChain RH-Firewall-1-INPUT (0 references)
target prot opt source destination
ACCEPT all -- 0000/0 0000/0
ACCEPT icmp -- 0000/0 0000/0 icmp type 255
ACCEPT esp -- 0000/0 0000/0
ACCEPTah--0000/00000/0
ACCEPTudp--0000/022400251udpdpt:5353
ACCEPTudp--0000/00000/0udpdpt:631
ACCEPTall--0000/00000/0stateRELATED,ESTABLISHED
ACCEPTtcp--0000/00000/0stateNEWtcpdpt:22
ACCEPTtcp--0000/00000/0stateNEWtcpdpt:80
ACCEPTtcp--0000/00000/0stateNEWtcpdpt:25
REJECTall--0000/00000/0reject-withicmp-host-prohibited
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口
如果你在安装linux时没有选择启动防火墙,是这样的
复制代码
代码如下:
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination /ppChain FORWARD (policy ACCEPT)
target prot opt source destination /ppChain OUTPUT (policy ACCEPT)
target prot opt source destination
什么规则都没有
(2)清除原有规则
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则
复制代码
代码如下:
[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则
我们在来看一下
复制代码
代码如下:
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination /ppChain FORWARD (policy ACCEPT)
target prot opt source destination /ppChain OUTPUT (policy ACCEPT)
target prot opt source destination
什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存
复制代码
代码如下:
[root@tp ~]# /etc/rcd/initd/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了写入后记得把防火墙重起一下,才能起作用
复制代码
代码如下:
[root@tp ~]# service iptables restart
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧
(3)设定预设规则
复制代码
代码如下:
[root@tp ~]# iptables -P INPUT DROP
[root@tp ~]# iptables -P OUTPUT ACCEPT
[root@tp ~]# iptables -P FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃)应该说这样配置是很安全的我们要控制流入数据包
而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过
可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过
这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加但如果你只想要有限的几个规则是,如只做WEB服务器还是推荐三个链都是DROP
注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了因为你没有设置任何规则
怎么办,去本机操作呗!
(4)添加规则
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链
为了能采用远程SSH登陆,我们要开启22端口
复制代码
代码如下:
[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
(注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH在远程一下,是不是好了
其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
复制代码
代码如下:
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
,其他同理
如果做了WEB服务器,开启80端口
复制代码
代码如下:
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
如果做了邮件服务器,开启25,110端口
复制代码
代码如下:
[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
如果做了FTP服务器,开启21端口
复制代码
代码如下:
[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
如果做了DNS服务器,开启53端口
复制代码
代码如下:
[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
如果你还做了其他的服务器,需要开启哪个端口,照写就行了
上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP
允许icmp包通过,也就是允许ping,
复制代码
代码如下:
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
允许loopback!(不然会导致DNS无法正常关闭等问题)
复制代码
代码如下:
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链
减少不安全的端口连接
复制代码
代码如下:
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会
还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料
当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加
允许SSH登陆一样照着写就行了
下面写一下更加细致的规则,就是限制到某台机器
如:我们只允许19216803的机器进行SSH连接
复制代码
代码如下:
[root@tp ~]# iptables -A INPUT -s 19216803 -p tcp --dport 22 -j ACCEPT
如果要允许,或限制一段IP地址可用 19216800/24 表示19216801-255端的所有IP
24表示子网掩码数但要记得把 /etc/sysconfig/iptables 里的这一行删了
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆
或采用命令方式:
复制代码
代码如下:
[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT
然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存写入到/etc/sysconfig/iptables文件里
复制代码
代码如下:
[root@tp ~]# /etc/rcd/initd/iptables save
这样写 !19216803 表示除了19216803的ip地址
其他的规则连接也一样这么设置
在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控
开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
复制代码
代码如下:
[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢弃坏的TCP包
复制代码
代码如下:
[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
处理IP碎片数量,防止攻击,允许每秒100个
复制代码
代码如下:
[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
复制代码
代码如下:
[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
我在前面只所以允许ICMP包通过,就是因为我在这里有限制
二,配置一个NAT表放火墙
1,查看本机关于NAT的设置情况
复制代码
代码如下:
[root@tp rcd]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 19216800/24 anywhere to:21110146235
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则)关于怎么配置NAT,参考我的另一篇文章
当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的
如果你想清除,命令是
复制代码
代码如下:
[root@tp ~]# iptables -F -t nat
[root@tp ~]# iptables -X -t nat
[root@tp ~]# iptables -Z -t nat
2,添加规则
添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),
添加规则,我们只添加DROP链因为默认链全是ACCEPT
防止外网用内网IP欺骗
复制代码
代码如下:
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10000/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 1721600/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 19216800/16 -j DROP
如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)
例:
禁止与21110146253的所有连接
复制代码
代码如下:
[root@tp ~]# iptables -t nat -A PREROUTING -d 21110146253 -j DROP
禁用FTP(21)端口
复制代码
代码如下:
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
这样写范围太大了,我们可以更精确的定义
复制代码
代码如下:
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -d 21110146253 -j DROP
这样只禁用21110146253地址的FTP连接,其他连接还可以如web(80端口)连接
按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了
最后:
drop非法连接
复制代码
代码如下:
[root@tp ~]# iptables -A INPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP
允许所有已经建立的和相关的连接
复制代码
代码如下:
[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# /etc/rcd/initd/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了写入后记得把防火墙重起一下,才能起作用.
复制代码
代码如下:
[root@tp ~]# service iptables restart
别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,
上面的所有规则我都试过,没有问题
0条评论