iptables主要用来配置防火墙。其是一个需要特别谨慎设置的东西,服务器不在身边,不要贸然设置,有可能导致无法SSH,那就麻烦了。

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文件配置如下:   
  

*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

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@czl 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配置iptables的更多相关文章

  1. linux配置iptables(3)

    简单通用 web 服务器iptables 配置 *filter :INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0] #超出 链规则 的数据 ...

  2. linux配置防火墙详细步骤(iptables命令使用方法)

    通过本教程操作,请确认您能使用linux本机.如果您使用的是ssh远程,而又不能直接操作本机,那么建议您慎重,慎重,再慎重! 通过iptables我们可以为我们的Linux服务器配置有动态的防火墙,能 ...

  3. Linux配置完iptables后,重启失效的解决方案

    Linux配置完iptables后,重启失效的解决方案 因为只有root用户才可访问1024以下的端口,非root用户登陆是不能启用80端口的.web service 往往启动1024以上的端口,并通 ...

  4. Linux的iptables常用配置范例(1)

    以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的配置说明 可以通过/sbin/iptables -F清除所有规则来暂时停止防火墙: (警告:这只适合在没 ...

  5. linux下iptables配置模板

    linux下iptables配置模板 # Flush all policy iptables -F iptables -X iptables -Z iptables -t nat -F iptable ...

  6. Linux下iptables安全配置

    Linux下配置IPTables,只开放特定端口,禁用其他网络. *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] ...

  7. linux下IPTABLES配置详解 (防火墙命令)

    linux下IPTABLES配置详解 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT ...

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

    CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/syscon ...

  9. Linux CentOS7 安装配置 IPtables

    2021-08-11 1. 前言 防火墙其实就是实现 Linux 下访问控制功能的,分为硬件和软件的防火墙两种类型.无论在何网络中,防火墙工作的地方一定是网络的边缘.防火墙的策略.规则就是去定义防火墙 ...

随机推荐

  1. JSOI 2010 连通数

    洛谷 P4306 [JSOI2010]连通数 洛谷传送门 题目描述 度量一个有向图联通情况的一个指标是连通数,指图中可达顶点对个的个数. 如图 顶点 11 可达 1,~2,~3,~4,~51, 2, ...

  2. [冬令营Day1 T2]sequence

    题目描述 Description 给一个长度为N的序列以及Q的询问,每次两个参数l,r,问你序列[l,r]中的最大连续和 输入描述 Input Description 一行二个正整数N,Q. 接下来一 ...

  3. Scrapy的中间件(二)

    爬虫中间件 爬虫中间件的用法与下载器中间件非常相似,只是它们的作用对象不同.下载器中间件的作用对象是请求request和返回response:爬虫中间件的作用对象是爬虫,更具体地来说,就是写在spid ...

  4. ESA2GJK1DH1K基础篇: 移植官方MQTT包,让TCP实现MQTT功能(以GPRS模块为例)

    前言 这节代码将在这一节的基础上实现 拷贝第一节测试里面的MQTT文件夹到当前工程 当前工程建个MQTT的文件夹,用于存放那个MQTT文件夹里面的内容 添加文件到里面 注意:::: 实际源码拷贝位置 ...

  5. Python实现网络图形化界面多人聊天室 - Linux

    网络图形化界面多人聊天室 - Linux Windows版本:https://www.cnblogs.com/noonjuan/p/12078524.html 在Python实现网络多人聊天室基础上, ...

  6. Computer-Hunters——项目需求分析

    Computer-Hunters--项目需求分析 前言 本次作业属于2019秋福大软件工程实践Z班 本次作业要求 团队名称: Computer-Hunters 本次作业目标:撰写一份针对团队项目的需求 ...

  7. Java 并发系列之六:java 并发容器(4个)

    1. ConcurrentHashMap 2. ConcurrentLinkedQueue 3. ConcurrentSkipListMap 4. ConcurrentSkipListSet 5. t ...

  8. java基础之 hashmap

    Hashmap是一种非常常用的.应用广泛的数据类型,最近研究到相关的内容,就正好复习一下.网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论. 1.hashma ...

  9. 【IntelliJ IDEA学习之九】版本控制之Git和Github

    版本:IntelliJIDEA2018.1.4 [IntelliJ IDEA学习之九]版本控制之Git版本:IntelliJIDEA2018.1.4 一.git知识准备git是目前流行的分布式版本管理 ...

  10. php扩展模块 opcache安装教程

    php扩展模块 opcache安装教程PHP5.5.0以后版本自带Opcache加速器,但默认情况下木有启用.所以编译PHP的时候 我们想要启用该PHP加速器就应该添加参数 : –enable-opc ...