linux下iptables详解

1.selinux 关闭

 vim /etc/sysconfig/selinux


设置方法:
1      #SELINUX=enforcing     #注释掉

2      #SELINUXTYPE=targeted  #注释掉

3      SELINUX=disabled  #增加

4     :wq  #保存,关闭。

5     shutdown -r now   #重启
View Code

 

2.iptables 内网关闭,外网打开,大并发情况下,不能开iptables,影响性能,硬件防火墙。

 

iptables 工作流程小结

1.防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。

2.如果匹配上规则,即明确表明是阻止还是通过,此时数据包就不再向下匹配新规则了。

3.如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。

4.防火墙的默认规则是对应链的所有的规则执行完才会执行的。

 

5.iptables 配置实战:

iptables  -V 查看iptables 版本

man iptables 查看iptables帮助

查看防火墙的状态

  /etc/init.d/iptables status

 iptables  -nL

 6.查看liunx内核默认加载模块

lsmod |egrep "nat|filter"

 加载如下模块到linux内核

modprobe ip_tables

modprobe iptable_filter

 modprobe iptable_nat

modprobe ip_conntrack

 modprobe ip_conntrack_ftp

modprobe ip_nat_ftp

modprobe ipt_state

 

7.iptables 命令

 -n 数字

 -L 列表

 -F   清除所有规则 ,只留下默认规则,允许所有通过。

 -X   删除用户自定义的链

 -Z  链的计数器清零

 -t 指定表

--line-numbers 显示序号 

-A添加规则到指定链的结尾,最后一条

-I添加规则到指定链的开头,是第一条

-D 删除规则  ##删除指定规则  iptables -D INPUT  -p tcp --dport 1000 -j ACCEPT

这个区别的意义在意,规则是由上先下执行匹配;可以应用与防DDOS。

测试规则端口是否生效,可以再 cmd 上  telnet 10.0.0.18 80 看是否能连接。

iptables -I INPUT 2 -p tcp --dort 1000 -j ACCEPT         (2为第二行,插入在第二行的前面)

 

 

 -p协议 (all,tcp , udp,icmp). 默认all

--dport目的端口

--sport 源端口

 -j  (jump)处理的行为

 -s 指定源地址

-d 指定目的地址

-i INPUT  匹配进入的网卡接口

-o OUTPUT 匹配出去的网卡接口

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

基本的处理行为:ACCEPT(接受),DROP(丢弃),REJECT(拒绝)

 

8. 查看某个服务的端口

netstat -lntup|grep mysql

netstat -lntup|grep ssh

 

 

拒绝ssh远程连接(加了这条无法用xshell进行远程连接了),iptables默认的就是filter表,可以不指定,下面两条相等。

iptables -t filter -A INPUT -p tcp --dport  22  -j  DROP

iptables  -A INPUT -p tcp --dport  22  -j  DROP

 

 

-t指定filter表(不加这条,默认也是filter), -A增加规则,-p指定协议 --dport 指定端口,-j指定行为 DROP 为拒绝。

 断掉后,得在远程主机,删除这条规则,或者清空规则才可以进行远程连接。

 

9.禁止网段连入

iptables  -A INPUT -i  etho -s 10.0.0.0/24  -j DROP

 10.匹配端口范围(用冒号连接)--最佳写法

 iptables -I INPUT -p tcp --dport 8080:8090  -j ACCEPT

还可以用列表形式添加多端口匹配 -m multiport

iptables -I INPUT -p tcp -m multiport --dport 21,80,8088,8080,3306 -j ACCEPT ,第一天允许,下面的不DROP 规则不匹配;

 11.禁止ping (--imcp type8为ping)

 iptables  -I INPUT -p icmp  --icmp-type 8 -j DROP

 12 匹配网络状态

-m  state --state

NEW :已经或将启动新的连接

ESTABLISHED : 已经建立的连接

RELATED:正在启动的新连接

INVALID:非法或无法识别的

 

13.允许关联的数据包通过(web服务不要使用FTP服务)

#others RELATED ftp协议

#允许关联的状态包

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

 14.生产环境中iptables 配置

#清除所有规则

ipatbles -F

#清除用户自定义的链
iptables -X

#清除当前所有链的计数器
iptables -Z

#允许ssh远程连接端口

iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

# 允许网卡回环接口(服务器本机)
iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

#设置DROP掉FORWARD,INPUT链,允许OUTPUT链
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#允许指定网段通过(外网网段与内网网段)
iptables -A INPUT -s  211.154.152.0/24 -p all -j ACCEPT
iptables -A INPUT -s  192.168.152.0/24 -p all -j ACCEPT

#允许对外提供服务80端口
iptables -A INPUT -p tcp  --dport 80 -j ACCEPT

#允许icmp类型通过(所有ip都能ping)
iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

# 允许关联的包通过(一般应用与ftp)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#永久保存防火墙配置,预防重启后失效
/etc/init.d/iptables save
或用重定向方式保存(很少用)
iptables-save >/etc/sysconfig/iptables
iptables

 生产环境中

使用iptables  -F 切忌(特别是托管机房)

要先执行 

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

/etc/init.d/iptables save

 

然后执行

 iptables -F

要不然,没有规则,全部是drop ,ssh 断开了,所有连接失效,很严重;

 

15.生产环境中iptables 维护

#编辑规则
vim /etc/sysconfig/iptables

#加入想要的规则
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

/etc/init.d/iptables reload


##改DROP 一定要线下先测试一通,避免把自己DROP掉


#封IP,第一行封,范围小,影响不大

iptables -I INPUT -p tcp  -s 10.0.0.106 --dport 80 -j DROP
View Code

 

16 nat 表的核心功能: IP及端口的映射转换

1.共享上网

2.端口映射

 

17

扩展匹配
指定-m选项,表示用什么模块来匹配,如:
-m state --state
NEW,ESTABLISHED,RELATED 表示用state模块来匹配当前连接状态为这三种状态的连接
-m iprange
--src-range 用iprange模块匹配来源的ip地址范围
--dst-range 用iprange模块匹配目的的ip地址范围
-m multiport
--source-ports 用multiport模块来匹配来源的端口范围
--destination-ports 用multiport模块来匹配目的的端口范围
我们看如下一条例子来解读:
-A INPUT -p tcp -m iprange --src-range 121.21.30.36-121.21.30.100 -m multiport --destination-ports 3326,3327,3328 -m state --state NEW -j ACCEPT
这表示来自121.21.30.36-121.21.30.100这个地址范围的,请求端口为3326,3327,3328并且是新建的连接,都给予放行

 

posted @ 2017-12-30 13:20  爱奔跑的大卫  阅读(8391)  评论(0编辑  收藏  举报