iptables防火墙

getenforce 查看selinux的状态
vi /etc/selinux/config 进去改他的配置文件 永久设置他的状态

setenforce 0 临时生效

2. Selinux
配置文件 /etc/selinux/config 三种形式:enforcing, permissive, disabled
SELINUX=disabled 更改完成重启系统才可以生效
setenforce 0/1 getenforce yum install -y libselinux-utils

3. Netfilte -- iptables是 iptables是netfiler的一个工具
参考: http://www.cnblogs.com/bangerlee/archive/2013/02/27/2935422.html

四个表,五个链
========================

filter 这个表主要用于过滤包的,是系统预设的表,内建三个链INPUT、OUTPUT以及FORWARD。
INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包。

nat 主要用处是网络地址转换、端口映射,也有三个链。PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址。

mangle 主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time ToLive,生存周期)值以及为数据包设置Mark标记,以实现Qos (Quality of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。

raw 对报文设置一个标志,决定数据包是否被状态跟踪机制处理 只有两个链:OUTPUT、PREROUTING

五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD

=================================
commond
A 添加
D 删除
I 插入
R 修改规则
L 查看表规则
F 清空
Z 清空
N 不常用。清除所有自定义规则
X 不常用。
P 默认规则

p 指定他的协议
s 指定他的ip

iptables -nvL 查看规则
iptables -F 清除当前的规则
iptables -Z 计数器清零

iptables –t filter –D INPUT 1 表示删filter表中INPUT链的第一条规则

iptables –F INPUT 全部清除INPUT链的规则

================================
service iptables status 查看iptables状态
设置iptables开机启动
chkconfig iptables on
chkconfig iptables off

现在防火墙主要分以下三种类型:包过滤、应用代理、状态检测

iptables-save用来把当前的规则存入一个文件里以备iptables-restore使用
iptables-restore用来装载由iptables-save保存的规则集

规则备份与恢复:
service iptables save 这样会保存到/etc/sysconfig/iptables
iptables-save > myipt.rule 可以把防火墙规则保存到指定文件中
iptables-restore < myipt.rule 这样可以恢复指定的规则

cat /etc/sysconfig/iptables 查看默认的规则

想要下次重启规则生效的步骤:
1.iptables -F
2.service iptables save 要保存到配置文件里面规则才永久生效,不然清空了重启了又恢复了
3.然后重启就生效了

service iptables save 保存规则 保存的规则文件为:/etc/sysconfig/iptables
service iptables stop 可以暂停防火墙,但是重启后它会读取/etc/sysconfig/iptables 从而启动防火墙,另外即使我们停止防火墙,但一旦我们添加任何一条规则,它也会开启。

==================================

iptables -t 指定表名,默认不加-t则是filter表

查看当前防火墙的设置
iptables –L 默认查看的是filter表
iptables –t nat –L
iptables –t managle –L
iptables -t nat -F 清除规则

iptables规则相关:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT 放行22端口

iptables -I INPUT -p tcp -s 22.129.48.82 --dport 22 -j ACCEPT

iptables -I INPUT -s 22.129.48.82 -j ACCEPT

增加/删除规则
iptables -A/-D INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP

插入规则
iptables -I INPUT -s 1.1.1.1 -j DROP/ACCEPT/REJECT
A和I这两参数不一样,A是追加的最后面,I是插在前面的规则

iptables -nvL --line-numbers 查看规则带有id号
iptables -D INPUT 1 根据规则的id号删除对应规则

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
别人访问不了本机,本机也不能向外发数据

iptables -P INPUT DROP 用来设定默认规则,默认是ACCEPT ,一旦设定为DROP后
只能使用 iptables -P ACCEPT 才能恢复成原始状态,而不能使用-F参数

实例:
针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.0.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。 脚本如下:

#! /bin/bash
ipt="/sbin/iptables"
$ipt -F; $ipt -P INPUT DROP;
$ipt -P OUTPUT ACCEPT; $ipt -P FORWARD ACCEPT;
$ipt -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

=============================
更改默认规则
1.sh
#! /bin/bash
iptables -F
iptables -P INPUT DROP 设置默认规则为DROP(建议不要改)允许下面的
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

上面设置后,如果不行,就必须iptables -P INPUT ACCEPT
因为他还有其他的端口和机器通讯
==============================

nat表应用:
路由器就是使用iptables的nat原理实现
假设您的机器上有两块网卡eth0和eth1,其中eth0的IP为192.168.10.11,eth1的IP为172.16.10.11 。eth0连接了intnet 但eth1没有连接,现在有另一台机器(172.16.10.12)和eth1是互通的,那么如何设置也能够让连接eth1的这台机器能够连接intnet?
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -o eth0 -j MASQUERADE

==========================================================================
禁止内部人员访问外部指定的网站
iptables -A FORWARD -d www.123.com -j DROP

匹配条件
按网络接口匹配
iptables -A OUTPUT -o eth0 -j DROP
备注:将接口eth0流出的数据DROP掉

iptables -A INPUT -i eth0 -j DROP
备注:将流入接口eth0的数据DROP掉

按地址匹配
-s 匹配源地址
iptables -A INPUT -s 192.168.3.100 -j DROP
备注:将来自192.168.3.100 的任何请求DROP掉

-d 匹配目的地址
iptables -A OUTPUT -d 192.168.3.100 -j DROP
备注:将本机发往192.168.3.100 的任何请求DROP掉

注意,可以是单个ip,网段192.168.3.1/24,域名,不设则变任何地址

按协议类型匹配
-p 匹配协议类型
iptables -A INPUT -s 192.168.3.100 -p tcp --dport 22 -j DROP
备注:禁止192.168.3.100 的客户机连接本机22端口

iptables -A INPUT -p icmp -j DROP 禁止别人ping本机

iptables -A INPUT -p 1 --icmp-type 8 -j DROP
备注:可以ping通其他客户机,但是其他客户机ping不通本机----------------常用

按端口匹配
-sport 匹配来源端口
iptables -A INPUT -p tcp --sport 80 -j DROP
备注:将来自80端口的请求DROP掉

-dport匹配目的端口
iptables -A INPUT -s 192.168.3.1/24 -p tcp --dport 80 -j DROP
备注:将来自192.168.3.1/24的针对本机80端口的请求DROP掉

注意,-sport,-dport 必须配合参数-p使用
可以指定某个端口,也可以是端口范围,比如 :2000(2000以下端口)
2000:3000(2000-3000端口) 3000: (3000以上端口)

iptables -A INPUT -s 192.168.3.1/24 -j ACCEPT
备注:来自192.168.3.1/24 的所有请求ACCEPT

iptables -A INPUT -s 192.168.3.1 -j DROP
备注:将来自192.168.3.1 的请求全部DROP掉

=============================================================================

应用Iptables规则
示例(1)、允许WWW
iptables –t filter –A INPUT –p tcp –dport 80 –j ACCEPT
该规则被添加到filter表的INPUT链,允许目的端口是80的数据包。

示例(2)、在内部接口上允许DHCP
iptables –A INPUT –i eth0 –p tcp --sport 68 --dport 67 ACCEPT
iptables –A INPUT –i eth0 –p ucp --sport 68 --dport 67 ACCEPT
以上同时允许TCP和UDP协议。

===========================

根据uid 或者gid 进行限制
-m owner 参数
-m owner [!] --uid-owner $AN_UID
iptables -A OUTPUT -p tcp --dport 23
-m owner --uid-owner 500 -j REJECT
iptables -A OUTPUT -p tcp --dport 23
-m owner --gid-owner 500 -j REJECT
注:-m owner 仅仅对OUTPUT链有效

普通的地址伪装

透明代理
iptables -t nat -A PREROUTING -s
192.168.10.0/24 -p tcp -m multiport --dport
80,443 -j REDIRECT --to-port 3128
(squid 服务需要特别的配置)

Squid 的配置
在能正常工作的squid.conf 中增加下列四行
即可:
? httpd_accel_host virtual
? httpd_accel_port 80
? httpd_accel_with_proxy on
? httpd_accel_uses_host_header on

穿透防火墙.提供服务
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT –to 192.168.10.156:80

几种流向的顺续为
PREROUTING --->INPUT--> OUTPUT-->
POSTROUTING

请总结:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD各条链处理数据的对象,以及数据经过防火墙时通过各链的顺序。

=====================
iptables -A INPUT -p tcp --dport 22 -j ACCEPT 开启22端口

减少不安全的端口连接,不然本机访问这些端口
[[email protected] ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP

我们只允许192.168.0.3的机器进行SSH连接
[[email protected] ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链
对正在转发链的监控.开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
[[email protected] ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[[email protected]】 ~]# iptables -A FORWARD -i eth1 -o eh0 -j
ACCEPT丢弃坏的TCP包
[[email protected] ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j

DROP处理IP碎片数量,防止攻击,允许每秒100个
[[email protected] ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
[[email protected] ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j
ACCEPT我在前面只所以允许ICMP包通过,就是因为我在这里有限制.

配置一个NAT表放火墙1,查看本机关于NAT的设置情况
[[email protected] rc.d]# iptables -t nat -L

  Chain PREROUTING (policy ACCEPT)

  target   prot opt source   destination   Chain POSTROUTING (policy ACCEPT)

  target   prot opt source   destination

  SNAT   all  --  192.168.0.0/24   anywhere   to:211.101.46.235Chain OUTPUT (policy ACCEPT)

  target   prot opt source   destination  我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).
当然你如果还没有配置NAT 的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的如果你想清除,命令是
[[email protected] ~]# iptables -F -t nat
[[email protected] ~]# iptables -X -t nat
[[email protected] ~]# iptables -Z -t nat2,添加规则添加基本的NAT地址转换
添加规则,我们只添加DROP链.因为默认链全是 ACCEPT.防止外网用内网IP欺骗
[[email protected] sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP

[[email protected] sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP

[[email protected] sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

  如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)
例:
禁止与211.101.46.253的所有连接
[[email protected] ~]# iptables -t nat -A PREROUTING  -d 211.101.46.253 -j DROP
禁用FTP(21)端口
[[email protected] ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j
DROP这样写范围太大了,我们可以更精确的定义.
[[email protected] ~]# iptables -t nat -A PREROUTING  -p tcp --dport 21 -d 211.101.46.253 -j DROP
这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.
如web(80端口)连接.按照我写的,你只要找到QQ,MSN等其他软件的 IP地址,和端口,以及基于什么协议,只要照着写就行了
最后drop非法连接

[[email protected] ~]# iptables -A INPUT   -m state --state INVALID -j DROP

[[email protected] ~]# iptables -A OUTPUT  -m state --state INVALID -j DROP

[[email protected] ~]# iptables-A FORWARD -m state --state INVALID -j DROP

允许所有已经建立的和相关的连接

[[email protected] ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[[email protected] ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[[email protected] ~]# /etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[[email protected] ~]# service iptables restart

这样就可以完工了

========================================================================================

五个链
INPUT:输入,目的IP 是本机的包
OUTPUT:输出,源IP 是本机的包
FORWARD:转发,穿过本机的包
PREROUTING: 路由前
POSTROUTING: 路由后

案例讲解:
1、防止外网用内网IP 欺骗
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

3、阻止一个IP 连接本机
iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP

4、查看本机的IPTABLES 的所填规则
iptables -L -n

5、清除filter 中所有的规则连接
iptables -F

7、关闭不安全的端口连接本机
iptables -A OUTPUT -p tcp --sport 31337 -j DROP
iptables -A OUTPUT -p tcp --dport 31337 -j DROP

8、开启所需要的端口
22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
80
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

9、禁止一个IP 或者一个IP 段访问服务器端口服务
80 端口
iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp --dport http -j DROP
FTP 端口
iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp --dport ftp -j DROP

10. iptables -A INPUT –s 192.168.100.1 –p udp --dport 53 -j DROP
不允许100.1 进行DNS 域名解析

iptables -A INPUT –s 192.168.100.1 -p tcp --dport 53 -j DROP
不允许100.1 进行DNS 的TCP 的连接

11. iptables -A INPUT –s 192.168.100.1 -p tcp --dport 25 -j DROP
客户机100.1 不能向服务器发邮件

iptables -A INPUT –s 192.168.100.1 -p tcp --dport 110 -j DROP
客户机100.1 不能收邮件

12 文件服务的重定向
iptables –t nat -A PREROUTING -d 192.168.100.2 -p tcp --dport 21 -j
DNAT --to-destination 192.168.200.1
iptables –t nat -A PREROUTING -d 192.168.100.2 -p tcp --dport 20 -j
DNAT --to-destination 192.168.200.1
公网地址-192.168.100.2
13 单独允许服务重定向
Sendmail 源端、目的端分别允许
Iptables –A FORWARD –p tcp --dport 25 –j ACCEPT
Iptables –A FORWARD –p tcp --sport 25 –j ACCEPT
Iptables –A FORWARD –p tcp --sport 110 –j ACCEPT
Iptables –A FORWARD –p tcp --dport 110 –j ACCEPT
VSFTP 源端、目的端分别允许
Iptables –A FORWARD –p tcp --dport 21 –j ACCEPT
Iptables –A FORWARD –p udp --sport 21 –j ACCEPT
Iptables –A FORWARD –p udp --sport 20 –j ACCEPT
Iptables –A FORWARD –p udp --dport 20 –j ACCEPT
14 将由eth0 传送出去的数据源修改为 192.168.10.1
Iptables –t nat -A POSTROUTING –o eth0 –j SNAT –to 192.168.10.1
15 将连接到eth0 的port 的80 口,传送到内部 192.168.20.1
Iptables –t nat –A PREROUTING –I eth0 –p tcp --dport 80 –j DNAT --to
192.168.20.1

时间: 2024-10-20 10:39:42

iptables防火墙的相关文章

Iptables防火墙(一)

一.Linux防火墙基础 Linux防火墙主要工作在网络层,属于典型的包过滤防火墙. netfilter和iptables都用来指Linux防火墙,主要区别是: netfilter:指的是linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于"内核态"的防火墙功能体系. iptables:指的是用来管理linux防火墙的命令程序,通常位于/sbin/iptables目录下,属于"用户态"的防火墙管理体系. 1.iptables的表.链结构 Ipt

【整理笔记-防火墙】实现iptables防火墙搭建

搭建防火墙,配置防火墙. - - 系统centos7 . centos7自带firewalld,由于看firewalld命令行没有接触过,所以安装iptables防火墙. 1:禁用firewalld firewall-cmd --state 查看系统自带防火墙状态. 用systemctl stop firewalld.service   禁止立即生效, systemctl disable firewalld.service  永久关闭firewalld.执行完再看一下防火墙状态, 显示为not

iptables防火墙高级应用

iptables 防火墙(主机防火墙) 前言:我们在以前学习过asa防火墙,对防火墙有一定的了解,那么iptables和asa防火墙类似,作用一样,都是为了保证网络安全,系统安全,服务器的安全,和asa一样也需要建立策略,个人觉得比asa的策略要繁琐一点,但只要多做几遍,也就简单了. 一.防火墙基础 Linux防火墙主要工作在网络层,属于典型的包过滤防火墙. 1.iptables的表.链结构 Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默

Linux下的配置iptables防火墙增强服务器安全

Linux下的配置iptables防火墙增强服务器安全 实验要求 iptables常见概念 iptables服务器安装及相关配置文件 实战:iptables使用方法 例1:使用iptables防火墙保护公司web服务器 例2:使用iptables搭建路由器,通过SNAT使用内网机器上网 例3:限制某些IP地址访问服务器 例4:使用DNAT功能把内网web服务器端口映射到路由器外网 实验环境 iptables服务端:xuegod-63   IP:192.168.1.63 iptables客户端:x

iptables防火墙应用

安全服务--Iptables  一.网络安全访问控制我们都知道,Linux一般作为服务器使用,对外提供一些基于网络的服务,通常我们都需要对服务器进行一些网络控制,类似防火墙的功能,  常见的访问控制包括:那些IP可以访问服务器,可以使用那些协议,那些接口.那些端口 是否需要对数据包进行修改等等.如果某服务器受到攻击,或者来自互联网哪个区域或者哪个IP的攻击,这个时候应该禁止所有来自该IP的访问.那么Linux底层内核集成了网络访问控制,通过netfilter模块来实现.  iptables作用:

基于linux的web服务器的iptables防火墙安全优化设置

安全规划:开启 80  22 端口并 打开回路(回环地址 127.0.0.1) #iptables –P INPUT ACCEPT #iptables –P OUTPUT ACCEPT #iptables –P FORWARD ACCEPT 以上几步操作是为了在清除所有规则之前,通过所有请求,如果远程操作的话,防止远程链接断开. 接下来清除服务器内置规则和用户自定义规则: #iptables –F #iptables -X 打开ssh端口,用于远程链接用: #iptables –A INPUT

iptables防火墙配置详解

iptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,output和forward: nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output: mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING: inpu

CentOS下配置iptables防火墙 linux NAT(iptables)配置

CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network   这里可以更改主机名称. NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=BGI-TJ.localdomain GATEWAY=192.168.11.1(超算网关) 2.vim /etc/sysconfig/network-scripts/

20条IPTables防火墙规则用法!

导读 管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受攻击.很多用户把 Linux 中的 IPTables 当成一个防火墙,从严格意见上来说 IPTables 只是能够帮助管理员定义各种规则并与 Linux Kernel 进行沟通的一个命令行工具.它只是帮助管理员配置网络流量的传入.传出规则列表,具体的实现其实是在 Linux 内核当中. IPTables 包括一组内置和由用户定义规则的「链」,管理员可以在「链」上附加

iptables防火墙之主机型

iptables防火墙本身是不防火的,是靠其中的规则判断数据是丢弃还是放行,而这些规则就存放在iptables的四表五链中. iptables四表五链 四表 filter(过滤数据包):INPUT,OUTPUT,FORWARD nat(地址转换):PREROUTING,POSTOUTING,OUTPUT mangle表(拆开,修改,封装数据):五个链全部包含 raw(状态追踪):PREROUTING,OUTPUT 五链(根据数据报文的流向,判断报文放在那里) INPUT:到本机内部来的数据 OU