192.168.4.119 为本机的ip地址;每条链的规则是由上至下进行匹配,因此我们需要把范围小的规则放在上面以防被覆盖。

1)清空iptables默认规则,并自定义规则

[root@iptables ~]# systemctl start firewalld.service  #启用防火墙
[root@iptables ~]# iptables -F #清空默认规则
[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -p tcp --dport 22 -j ACCEPT #接受任何主机对本机的ssh连接请求
[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -p tcp --sport 22 -j ACCEPT #允许本机对任何主机建立ssh连接
[root@iptables ~]# iptables -A INPUT -j REJECT #最后一条规则设置为拒绝所有入站请求
[root@iptables ~]# iptables -A OUTPUT -j REJECT #最后一条规则设置为拒绝所有出站流量
[root@iptables ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.4.119 tcp dpt:22
7 1076 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 192.168.4.119 0.0.0.0/0 tcp spt:22
8 720 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

2)多端口匹配,开放21,22,23,80,3306端口

[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -p tcp -m multiport --dports 21:23,80,3306 -j ACCEPT
[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -p udp -m multiport --dports 21:23,80,3306 -j ACCEPT
[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -p tcp -m multiport --sports 21:23,80,3306 -j ACCEPT
[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -p udp -m multiport --sports 21:23,80,3306 -j ACCEPT

3)连续地址的匹配,允许192.168.4.1 ~ 192.168.4.100访问80端口

[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -p tcp --dport 80 -m iprange --src-range 192.168.4.1-192.168.4.100 -j ACCEPT
[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -p tcp --sport 80 -m iprange --dst-range 192.168.4.1-192.168.4.100 -j ACCEPT

4)限定时间访问,只允许周一到周五 9:00~18:00 之间访问80端口

[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -p tcp --dport 80 -m time --kerneltz --weekdays 1,2,3,4,5 --timestart 9:00 --timestop 18:00 -j ACCEPT
[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -p tcp --sport 80 -m time --kerneltz --weekdays 1,2,3,4,5 --timestart 9:00 --timestop 18:00 -j ACCEPT

5)对报文作字符串匹配,拒绝响应带“vpn”明文字符的报文通过80端口

[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -p tcp --sport 80 -m string --algo kmp --string "vpn" -j REJECT

6)并发连接限制,限制192.168.2.0/24网段中每个ip对3306端口最多只能有2个并发

[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -s 192.168.2.0/24 -p tcp --dport 3306 -m connlimit --connlimit-upto 2 -j ACCEPT

7)对报文作速率限制,限制同时最多有5个icmp包,每秒1个icmp包

[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 60/minute -j ACCEPT
[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -p icmp --icmp-type 0 -j ACCEPT

8)对报文状态作匹配,开放会话状态为ESTABLISHED的连接

[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -m state --state ESTABLISHED -j ACCEPT
[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -m state --state ESTABLISHED -j ACCEPT

9)对ftp服务作会话追踪:

# 加载ftp追踪模块
[root@iptables data]# modprobe nf_conntrack_ftp
[root@iptables data]# lsmod | grep ftp
nf_conntrack_ftp 18638 0
nf_conntrack 105745 8 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4,nf_conntrack_ipv6
# 卸载模块:rmmod nf_conntrack_ftp
# 添加iptables rules
[root@iptables data]# iptables -I INPUT -d 192.168.4.119 -p tcp --dport 21 -m state --state NEW -j ACCEPT
[root@iptables data]# iptables -I INPUT -d 192.168.4.119 -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@iptables data]# iptables -I OUTPUT -s 192.168.4.119 -m state --state ESTABLISHED -j ACCEPT
[root@iptables data]# cat /proc/net/nf_conntrack
ipv4 2 tcp 6 431995 ESTABLISHED src=192.168.4.116 dst=192.168.4.119 sport=57103 dport=21 ...

10)将对80端口的访问重定向到8080端口:

[root@iptables ~]# iptables -t nat -I PREROUTING -d 192.168.4.119 -p tcp --dport 80 -j REDIRECT --to-port 8080
[root@iptables ~]# iptables -I INPUT -d 192.168.4.119 -p tcp --dport 8080 -j ACCEPT
[root@iptables ~]# iptables -I OUTPUT -s 192.168.4.119 -p tcp -m multiport --sports 80,8080 -j ACCEPT

iptables应用的更多相关文章

  1. iptables

    一.在服务器上打开 22.80.9011端口: iptables -A INPUT -p tcp --dport 9011 -j ACCEPT iptables -A OUTPUT -p tcp -- ...

  2. 浅谈iptables 入站 出站以及NAT实例

    --------------本文是自己工作上的笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!--------------- iptbales默认ACCEPT策略,也称通策略,这种情况下可以做 ...

  3. Failed to stop iptables.service: Unit iptables.service not loaded.

    redhat 7 [root@lk0 ~]# service iptables stop Redirecting to /bin/systemctl stop iptables.service Fai ...

  4. CentOS7安装iptables防火墙

    CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...

  5. linux iptables常用命令之配置生产环境iptables及优化

    在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...

  6. CentOS系统配置 iptables防火墙

    阿里云CentOS系统配置iptables防火墙   虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...

  7. /etc/sysconfig/下找不到iptables文件解决方法

    时间:2014-12-19 01:17来源:csdn 作者:大智 举报 点击:5639次 本想做些防火墙策略.防火墙策略都是写在/etc/sysconfig/iptables文件里面的.可我发现我也没 ...

  8. docker通过iptables修改或新增镜像映射端口

    443 8088 22 端口是初始映射端口 [root@SERVER ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAM ...

  9. lnmp 预设iptables设置

    「LNMP」iptables初始配置   首先使用命令iptables -P INPUT ACCEPT允许所有连接,否则容易把自己关在外边.然后使用iptables -F;iptables -X;ip ...

  10. 关闭SELinux和iptables防火墙

    1.关闭SELinux: 编辑SELinux配置文件: [root@Redis selinux]# vim /etc/selinux/config 修改SELINUX配置项为disable SELIN ...

随机推荐

  1. cf1072B. Curiosity Has No Limits(枚举)

    题意 题目链接 给出两个序列\(a, b\),求出一个序列\(t\),满足 \[a_i = t_i | t_{i + 1}\] \[b_i = t_i \& t_{i + 1}\] 同时,\( ...

  2. select @@identity用法

    用select @@identity得到上一次插入记录时自动产生的ID 如果你使用存储过程的话,将非常简单,代码如下:SET @NewID=@@IDENTITY 说明: 在一条 INSERT.SELE ...

  3. 尝试VS插件

    从试用vs2013开始,ide变得越来越智能,但是vs2013总是会出一些莫名其妙的问题,导致编译不成功,不能跟vs2010共享等等.于是由再次回到vs2010. 现在vs2015的update1更新 ...

  4. 【Mood-15】DailyBuild 1月

    keywords: AsyncImageLoader universal-image-loader 2015-01-07 AsyncImageLoader:异步动态加载网络图片  类似listview ...

  5. 怎样在vs2013和vs2015中实现自动编译sass

    Visual Studio不论是2013版本还是2015版本要自动编译都需要添加扩展. 添加扩展的方法,路径“工具”->“扩展和更新”,在打开的窗口“搜索”你需要的扩展根据提示“下载”和“安装” ...

  6. java面试题之----get和post请求方法的区别

    GET和POST两种基本请求方法的区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过req ...

  7. Struts的学习-eclipse与idea与struts的连接

    1.建立一个空白工程(里面是没有文件的). 可以在文件放置找到项目文件夹 2.点击托管项目到码云 (ps:没有码云帐号的自己注册) 3.按快捷键:ctrl+alt+shift+s 呼出项目结构管理器, ...

  8. php之Apache压力测试

    1,测试本机是否已经安装好Apache ①进入自己的Apache目录下面的bin目录,然后执行ab -V.如果返回Apache版本则表示已经装好 2,执行压力测试命令,ab -n 1000(请求总数) ...

  9. Win10下使用VSCode配置python运行环境

    VSCode配置python运行环境 安装python 到官网下载python,直接安装即可,在安装过程中可以选择将python加入环境变量 安装VSCode 官网下载,直接安装 配置 安装pytho ...

  10. MAVEN本地下载、安装

    1. 安装jdk (此处版本选择1.7以上) 此处不做安装说明!!! 2.Eclipse.配置及安装 此处不做安装说明!!! 3.maven安装包(此处选择apache-maven-3.5.2-bin ...