⑴ 如何修改linux iptables
1.首先介绍一下指令和相关配置文件
启动指令:service
iptables
start
重启指令:service
iptables
restart
关闭指令:service
iptables
stop
然后是相关配置:/etc/sysconfig/iptables
如何操作该配置呢?
vim
/etc/sysconfig/iptables
然后进去修改即可,修改完了怎么办?这里很多人会想到/etc/rc.d/init.d/iptables
save指令,但是一旦你这么干了你刚才的修改内容就白做了。。。
具体方法是:
只修改/etc/sysconfig/iptables
使其生效的办法是修改好后先service
iptables
restart,然后才调用/etc/rc.d/init.d/iptables
save,
因为/etc/rc.d/init.d/iptables
save会在iptables服务启动时重新加载,要是在重启之前直接先调用了/etc/rc.d/init.d/iptables
save那么你
的/etc/sysconfig/iptables
配置就回滚到上次启动服务的配置了,这点必须注意!!!
2.下面介绍一些指令用法(主要还是man iptables看下相关资料才行)
-A:指定链名
-p:指定协议类型
-d:指定目标地址
--dport:指定目标端口(destination
port
目的端口)
--sport:指定源端口(source
port
源端口)
-j:指定动作类型
3.如果我不像修改文件直接打命令可以吗,当然没问题,步骤如下:
例如我给SSH加放行的语句:
添加input记录:
iptables
-A
INPUT
-p
tcp
--dport
22
-j
ACCEPT
添加output记录:
iptables
-A
OUTPUT
-p
tcp
--sport
22
-j
ACCEPT
最后注意需要再执行一下
/etc/init.d/iptables
save,这样这两条语句就保存到刚才那个/etc/sysconfig/iptables
文件中了。
4.接下来说明一下步骤,如果机器不在我身边,我只能SSH进去做iptables规则,那么我必须注意每一步,千万别搞错了,否则就SSH链接不上都有可能!
首先要做的是给咱的SSH进行ACCEPT配置,以免直接无法连接的情况发生:
1.如果SSH端口是22(这里不建议用默认端口最好改掉SSH端口)
iptables
-A
INPUT
-p
tcp
--dport
22
-j
ACCEPT
iptables
-A
OUTPUT
-p
tcp
--sport
22
-j
ACCEPT
注意要/etc/rc.d/init.d/iptables
save,以下每一步都最好执行一遍此语句,以下不再累述。
2.vim
/etc/sysconfig/iptables确定是否已经加入配置,可以的话执行service
iptables
restart重启后生效
3.下面是很危险的操作,如果你第一步没做就会直接可能导致你连不上SSH,此步骤前切记执行第一步!!!
iptables
-P
INPUT
DROP
iptables
-P
OUTPUT
DROP
iptables
-P
FORWARD
DROP
这个步骤是把所有不符合自己配置的规则ACCEPT的连接全部DROP掉,执行完以后如果咱SSH还没掉,那么谢天谢地,安全了,重启下iptables后继续下面的配置!
4.下面咱就不细说了,具体就是看自己服务器要开放哪些端口或者是要访问哪些端口来做具体的配置,下面是我自己的机器的配置:
/etc/sysconfig/iptables文件配置如下:
#
Generated
by
iptables-save
v1.4.7
on
Fri
Mar
2
19:59:43
2012
*filter
:INPUT
DROP
[0:0]
:FORWARD
DROP
[0:0]
:OUTPUT
DROP
[8:496]
-A
INPUT
-m
state
--state
RELATED,ESTABLISHED
-j
ACCEPT
#ping使用的端口
-A
INPUT
-p
icmp
-j
ACCEPT
-A
INPUT
-i
lo
-j
ACCEPT
-A
INPUT
-s
127.0.0.1/32
-d
127.0.0.1/32
-j
ACCEPT
-A
INPUT
-s
192.168.2.200/32
-d
192.168.2.200/32
-j
ACCEPT
#允许服务器自己的SSH(对外部请求来说服务器是目标所以使用--dport)
-A
INPUT
-p
tcp
-m
tcp
--dport
22
-j
ACCEPT
#80端口不用说了吧,服务器网站访问端口
-A
INPUT
-p
tcp
-m
tcp
--dport
80
-j
ACCEPT
-A
INPUT
-p
tcp
-m
tcp
--dport
3306
-j
ACCEPT
-A
INPUT
-p
tcp
-m
tcp
--dport
11211
-j
ACCEPT
-A
INPUT
-p
tcp
-m
tcp
--dport
11212
-j
ACCEPT
-A
FORWARD
-j
REJECT
--reject-with
icmp-host-prohibited
#53端口是DNS相关,TCP和UDP都要配置
-A
INPUT
-p
tcp
-m
tcp
--dport
53
-j
ACCEPT
-A
INPUT
-p
udp
-m
udp
--dport
53
-j
ACCEPT
#ping使用的端口
-A
OUTPUT
-p
icmp
-j
ACCEPT
-A
OUTPUT
-s
127.0.0.1/32
-d
127.0.0.1/32
-j
ACCEPT
-A
OUTPUT
-s
192.168.2.200/32
-d
192.168.2.200/32
-j
ACCEPT
#允许服务器SSH到其他机器(使用外部端口就使用--dport)
-A
OUTPUT
-p
tcp
-m
tcp
--dport
22
-j
ACCEPT
#允许服务器自己的SSH(自已为源输出就使用--sport)
-A
OUTPUT
-p
tcp
-m
tcp
--sport
22
-j
ACCEPT
#访问外部网站80端口(使用外部端口就使用--dport)
-A
OUTPUT
-p
tcp
-m
tcp
--dport
80
-j
ACCEPT
#如果服务器需要访问外部网站,那么OUTPUT也需要配置53端口(使用外部端口就使用--dport)
-A
OUTPUT
-p
tcp
-m
tcp
--dport
53
-j
ACCEPT
-A
OUTPUT
-p
udp
-m
udp
--dport
53
-j
ACCEPT
#如果有访问外部邮箱,那么打开邮箱相关端口(使用外部端口就使用--dport)
-A
OUTPUT
-p
tcp
-m
tcp
--dport
465
-j
ACCEPT
-A
OUTPUT
-p
tcp
-m
tcp
--dport
25
-j
ACCEPT
-A
OUTPUT
-p
tcp
-m
tcp
--dport
110
-j
ACCEPT
#服务器网站访问端口(自已为源输出就使用--sport)
-A
OUTPUT
-p
tcp
-m
tcp
--sport
80
-j
ACCEPT
-A
OUTPUT
-p
tcp
-m
tcp
--sport
3306
-j
ACCEPT
-A
OUTPUT
-p
tcp
-m
tcp
--sport
11211
-j
ACCEPT
-A
OUTPUT
-p
tcp
-m
tcp
--sport
11212
-j
ACCEPT
COMMIT
#
Completed
on
Fri
Mar
2
19:59:43
2012
5.可能有时候需要删除规则,最简单就是修改一下/etc/sysconfig/iptables然后service iptables restart,最后/etc/rc.d/init.d/iptables save即可。
当然也可以使用指令完成:
在网上找了一下,删除规则的方法:
语法是:
iptables
-D
chain
rulenum
[options]
其中:
chain
是链的意思,就是INPUT
FORWARD
之类的
rulenum
是规则的编号。从1
开始。可以使用
--line-numbers
列出规则的编号
所以,例如上面要删除一个INPUT链的规则的话可以这样:iptables
-D
INPUT
3
意思是删除第3条规则。
还有第二种方法。第二种办法是
-A
命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。也就是说,你如何用iptables
-A....
语句定义了一个规则,则删除此规则时就用
-D
来代替-
A
其余的都不变即可。
======================
说一下上面的
--line-numbers
选项,如下面的命令:
iptables
-L
INPUT
--line-numbers
列出INPUT
链所有的规则
num
target
prot
opt
source
destination
1
REJECT
tcp
--
anywhere
anywhere
tcp
dpt:microsoft-ds
reject-with
icmp-port-unreachable
2
REJECT
tcp
--
anywhere
anywhere
tcp
dpt:135
reject-with
icmp-port-unreachable
3
REJECT
tcp
--
anywhere
anywhere
tcp
dpt:netbios-ssn
reject-with
icmp-port-unreachable
...
...
删除指定行规则:
[root@localhost
rc.d]#
iptables
-D
INPUT
4
6.最后补充一下,如果想针对某IP进行单独开放端口可以如下配置:
如果我需要对内网某机器单独开放mysql端口,应该如下配置:
iptables
-A
INPUT
-s
192.168.2.6
-p
tcp
-m
tcp
--dport
3306
-j
ACCEPT
iptables
-A
OUTPUT
-s
192.168.2.6
-p
tcp
-m
tcp
--sport
3306
-j
ACCEPT
7.彻底禁止某IP访问:
#屏蔽单个IP的命令是
iptables
-I
INPUT
-s
123.45.6.7
-j
DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables
-I
INPUT
-s
123.0.0.0/8
-j
DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables
-I
INPUT
-s
124.45.0.0/16
-j
DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables
-I
INPUT
-s
123.45.6.0/24
-j
DROP
指令I是insert指令
但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables
save进行保存后重启服务即可
⑵ linux怎么清除防火墙规则
设置防火墙规则的步骤如下:
一、局域网内共享的天网防火墙设置
1、首先保证在没有装防火墙的情况下局域网内是可以相互通讯的(如果你连这个都不能保障那么就不是防火墙的问题了)
2、在防火墙的系统设置里面按刷新,设置好本地局域网的IP地址
3、在自定义IP规则的TCP协议里把其中‘允许局域网内的机器进行连接和传输’打上勾,并且保存规则
4、访问网络
如果共享打印机不能使用的,那就要开放对应的连接端口就可以了
二、设置规则开放WEB服务的步骤
1、进入防火墙自定义IP规则,增加规则
2、输入名称、说明 (可任意输入,以便查阅)
3、设置数据包方向——接收和发送,对方IP地址——任何地址
4、设置TCP本地端口80到80,对方端口0到0,TCP标志位为SYN,当满足上面条件时“通行”,确定
5、在IP规则列表中把该规则上移到TCP协议的第一条,并选上勾再保存
三、设置规则开放FTP服务的步骤
1、进入防火墙自定义IP规则,增加规则
2、输入名称、说明 (可任意输入,以便查阅)
3、设置数据包方向——接收和发送,对方IP地址——任何地址
4、设置TCP本地端口20到21,对方端口0到0,TCP标志位为SYN,当满足上面条件时“通行”,确定
5、在IP规则列表中把该规则上移到TCP协议的第一条,并选上勾再保存
其它端口的开放设置方法类似
四、关闭或开放特定端口
例,关闭TCP 139端口
1、进入防火墙自定义IP规则,增加规则
2、输入名称、说明 (可任意输入,以便查阅)
3、设置数据包方向——接收或发送,对方IP地址——任何地址
4、设置TCP本地端口139到139,对方端口0到0,TCP标志位为SYN,当满足上面条件时‘拦截’,确定;同时还:记录、警告、发声(视个人设置喜好,可选择若干方式)
5、在IP规则列表中把该新规则上移到TCP协议的第一条,并选上勾再保存
其它端口的关闭设置方法类似;如要开放端口的,设置后把‘拦截’改为‘通行’就可以了。
五、设置规则屏蔽或开放IP的步骤
1、进入防火墙自定义IP规则,增加规则
2、输入名称、说明 (可任意输入,以便查阅)
3、设置数据包方向——接收和发送,对方IP地址——指定地址
4、选择IP协议,当满足上面条件时“拦截”,确定
5、在IP规则列表中把该规则上移到IP协议的第一条,并把新规则和IP规则选上勾再保存
屏蔽IP的方法如上;但如果要开放指定IP的,设置后把‘拦截’改为‘通行’就可以了。
⑶ Linux里面iptables作用是什么
iptables简称netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
iptables基础
规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别制定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
iptables和netfilter的关系
这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
iptables传输数据包的过程
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
⑷ linux中iptables防火墙怎么设置
一,安装并启动防火墙
[root@linux ~]# /etc/init.d/iptables start
当我们用iptables添加规则,保存后,这些规则以文件的形势存在磁盘上的,以CentOS为例,文件地址是/etc/sysconfig/iptables,我们可以通过命令的方式去添加,修改,删除规则,也可以直接修改/etc/sysconfig/iptables这个文件就行了。
1.加载模块
/sbin/modprobe ip_tables
2.查看规则
iptables -L -n -v
3.设置规则
#清除已经存在的规则
iptables -F
iptables -X
iptables -Z
#默认拒绝策略(尽量不要这样设置,虽然这样配置安全性高,但同时会拒绝包括lo环路在内的所#有网络接口,导致出现其他问题。建议只在外网接口上做相应的配置)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#ssh 规则
iptables -t filter -A INPUT -i eth0 -p tcp –dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp –sport 22 -j ACCEPT
#本地还回及tcp握手处理
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
#www-dns 规则
iptables -I INPUT -p tcp –sport 53 -j ACCEPT
iptables -I INPUT -p udp –sport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp –sport 80 -j ACCEPT
#ICMP 规则
iptables -A INPUT -p icmp –icmp-type echo-request-j ACCEPT
iptables -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp –icmp-type echo-reply -j ACCEPT
二,添加防火墙规则
1,添加filter表
1.[root@linux ~]# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT //开放21端口
出口我都是开放的iptables -P OUTPUT ACCEPT,所以出口就没必要在去开放端口了。
2,添加nat表
1.[root@linux ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
将源地址是 192.168.10.0/24 的数据包进行地址伪装
3,-A默认是插入到尾部的,可以-I来插入到指定位置
1.[root@linux ~]# iptables -I INPUT 3 -p tcp -m tcp --dport 20 -j ACCEPT
2.[root@linux ~]# iptables -L -n --line-number
3.Chain INPUT (policy DROP)
4.num target prot opt source destination
5.1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
6.2 DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
7.3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20 //-I指定位置插的
8.4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
9.5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
10.6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
11.7 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID,NEW
12.8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 //-A默认插到最后
13.Chain FORWARD (policy ACCEPT)
14.num target prot opt source destination
15.Chain OUTPUT (policy ACCEPT)
16.num target prot opt source destination
三,查下iptable规则
1,查看filter表
1.[root@linux ~]# iptables -L -n --line-number |grep 21 //--line-number可以显示规则序号,在删除的时候比较方便
2.5 ACCEPT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:21
如果不加-t的话,默认就是filter表,查看,添加,删除都是的
2,查看nat表
1.[root@linux ~]# iptables -t nat -vnL POSTROUTING --line-number
2.Chain POSTROUTING (policy ACCEPT 38 packets, 2297 bytes)
3.num pkts bytes target prot opt in out source destination
4.1 0 0 MASQUERADE all -- * * 192.168.10.0/24 0.0.0.0/0
四,修改规则
1.[root@linux ~]# iptables -R INPUT 3 -j DROP //将规则3改成DROP
五,删除iptables规则
1.[root@linux ~]# iptables -D INPUT 3 //删除input的第3条规则
2.[root@linux ~]# iptables -t nat -D POSTROUTING 1 //删除nat表中postrouting的第一条规则
3.[root@linux ~]# iptables -F INPUT //清空 filter表INPUT所有规则
4.[root@linux ~]# iptables -F //清空所有规则
5.[root@linux ~]# iptables -t nat -F POSTROUTING //清空nat表POSTROUTING所有规则
六,设置默认规则
1.[root@linux ~]# iptables -P INPUT DROP //设置filter表INPUT默认规则是 DROP
所有添加,删除,修改后都要保存起来,/etc/init.d/iptables save.上面只是一些最基本的操作,要想灵活运用,还要一定时间的实际操作。
iptables配置常规映射及软路由
作用:虚拟化云平台服务器网段192.168.1.0/24 通过一台linux服务器(eth0:192.168.1.1、eth1:10.0.0.5)做软路由达到访问10.0.0.5能访问的网络范围,并且通过iptables的NAT映射提供服务。
NAT 映射网络端口:
效果: 10.0.0.5:2222 —-》 192.168.1.2:22
命令:iptable -t nat -A PREROUTING -D 10.0.0.5 -p tcp –dport 2222 -j DNAT –to-destination 192.168.1.2:22
service iptables save
service iptables restart
注意:1.在192.168.1.2的网络配置上需要将NAT主机的内网ip即192.168.1.1作为默认网关,如果10.0.0.5具有公网访问权限,dns则设置成公网对应dns
2. echo 1 》 /proc/sys/net/ip_forward 在NAT 主机上需要开启转发才能生效
软路由192.168.1.0/24通过10.0.0.5访问外网:
命令:iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT –to-source 10.0.0.5
service iptables save
service iptables restart
⑸ linux怎么删除iptables的nat表
你好,iptables的具体内容都是在这个文件内 /etc/sysconfig/iptables,你直接去操作。
⑹ linux 防火墙清除规则可以还原吗
可以的,,如果你只是使用iptables -F 清除的话,是不会真正清除的,,只是这次暂时性的删除了 要恢复直接重启iptables服务即可重新读回原来的配置规则
⑺ linux怎么删除路由转换规则iptables
使用的是iptables吗?
如果是iptables的话,清除规则:
#
iptables
-F
注意!清除规则是恢复到默认规则,如果默认规则为ACCEPT那就全是ACCEPT,如果默认规则是DROP的话,那就是全DROP了。