Linux只iptables

时间:2023-01-05 07:36:28
1. 查看<strong>网络</strong>监听的端口:
netstat -tunlp 2. 查看本机的路由规则:
route stack@ubuntu:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.217.99.1 0.0.0.0 UG 0 0 0 eth0
10.217.99.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 Destination-->network
Genmask-->netmask
这两者组成一个完整的网段 Gateway
如果为0.0.0.0,表示该路由直接由本机传送出去,即通过局域网的MAC直接传送,
如果显示IP的话,表示改路由要经过路由器才能传送出去。 Flags:有多个标志,代表的意义如下:
U (route is up):该路由是启动的;
H (target is a host):目标是一部主机 (IP) 而非网域;
G (use gateway):需要透过外部的主机 (gateway) 来转递封包;
R (reinstate route for dynamic routing):使用动态路由时,恢复路由信息的标志;
D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
M (modified from routing daemon or redirect):路由已经被修改了;
! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!) Iface
这个路由传递封包的接口。 路由过程是有顺序的,从小<strong>网络</strong>传送到大<strong>网络</strong>,当最后没有合适的路由可以匹配时,就使用default路由,即destination是0.0.0.0的路由 3./etc/services文件:port和service的对应关系 4.查看本地的<strong>网络</strong>服务
netstat -tunlp #列出正在监听的<strong>网络</strong>服务和端口
netstat -tunp #列出已联机的<strong>网络</strong>联机状态和端口
kill -9 PID #杀掉sshd进程,即可关闭该远程连接 5.查看<strong>网络</strong>上的开放的<strong>网络</strong>服务:
nmap IP
nmap localhost 6. 如何查阅 rpcbind 这个程序一开机就执行? 如果开机就执行,
如何将他改为开机时不要启动? 如何立即关闭这个 rpcbind 服务?
1) chkconfig --list | grep rpcbind
runlevel
确认一下你的环境与 rpcbind 是否启动
2) 如果有启动,可透过chkconfig --level 35 rpcbind off来设定开机时不要启动;
3) 可以透过 /etc/init.d/rpcbind stop 来立即关闭它 7.iptables 1) 查看防火墙格式化输出
iptables [-t tables] [-L] [-nv] 选项与参数:
-t :后面接 table ,例如 nat 或 filter ,若省略此项目,则使用默认的filter
-L :列出目前的 table 的规则
-n :不进行 IP 与 HOSTNAME 的反查,显示讯息的速度会快很多!
-v :列出更多的信息,包括通过该规则的封包总位数、相关的<strong>网络</strong>接口等 eg: 查看filter表的chain
stack@ubuntu:~$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 192.168.122.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT)
target prot opt source destination 说明:
target:代表进行的动作, ACCEPT 是放行,而 REJECT 则是拒绝,此外,尚有 DROP (丢弃) 的项目!
prot:代表使用的封包协议,主要有 tcp, udp 及 icmp 三种封包格式;
opt:额外的选项说明
source :代表此规则是针对哪个『来源 IP』进行限制?
destination :代表此规则是针对哪个『目标 IP』进行限制? 以上的每个chain中的规则,对封包进行过滤的时候是有顺序的,按从上到下的顺序,只要有一个规则符合,那么就可以通过防火墙,
如果一直不符合,就一直向下继续匹配,如果都不符合,那么就执行预设的动作。
可以看到FORWORD的最后两个rule的target是REJECT,这说明,如果前面的rule都不符合,那么到这条规则的时候,就拒绝。 查看nat表的chain
stack@ubuntu:~$ sudo iptables -t nat -L -n 2) 查看完整的防火墙规则: 查看所有的表的规则
stack@ubuntu:~$ sudo iptables-save
# Generated by iptables-save v1.4.12 on Fri Jan 18 14:26:06 2013
*nat
:PREROUTING ACCEPT [512:70935]
:INPUT ACCEPT [371:61561]
:OUTPUT ACCEPT [2352:148261]
:POSTROUTING ACCEPT [2343:147796]
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT
# Completed on Fri Jan 18 14:26:06 2013
# Generated by iptables-save v1.4.12 on Fri Jan 18 14:26:06 2013
*mangle
:PREROUTING ACCEPT [26824:23528990]
:INPUT ACCEPT [26682:23519288]
:FORWARD ACCEPT [2:656]
:OUTPUT ACCEPT [22885:4162471]
:POSTROUTING ACCEPT [23023:4179687]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Fri Jan 18 14:26:06 2013
# Generated by iptables-save v1.4.12 on Fri Jan 18 14:26:06 2013
*filter
:INPUT ACCEPT [26671:23518302]
:FORWARD ACCEPT [2:656]
:OUTPUT ACCEPT [22874:4161485]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Fri Jan 18 14:26:06 2013 查看某一个表的规则
stack@ubuntu:~$ sudo iptables-save -t filter
# Generated by iptables-save v1.4.12 on Fri Jan 18 14:29:14 2013
*filter
:INPUT ACCEPT [26774:23531129]
:FORWARD ACCEPT [2:656]
:OUTPUT ACCEPT [22956:4173130]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Fri Jan 18 14:29:14 2013 对比 stack@ubuntu:~$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 192.168.122.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT)
target prot opt source destination 3) 清除防火墙
iptables [-t tables] [-FXZ] 选项与参数:
-F :清除所有的已订定的规则;
-X :杀掉所有使用者 "自定义" 的 chain (应该说的是 tables )啰;
-Z :将所有的 chain 的计数与流量统计都归零 4) 定义预设的政策(policy)
当你的封包不在你设定的规则之内时,则该封包的通过与否,是以 Policy 的设定为准。即封包不符合你定义的所有规则的话,执行什么操作。
有两个可选:ACCEPT, DROP。
policy是和chain对应的,一个chain对应一个policy. iptables [-t table] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP] 选项与参数:
-P : 定义链( chain )。注意,这个 P 为大写!
ACCEPT : 该封包可接受。
DROP : 该封包直接丢弃,不会让 client 端知道为何被丢弃。 eg:
iptables -P INPUT DROP #将filter表的INPUT链的预设政策设置为DROP 5) 为某个chain增加规则
iptables [-AI 链名] [-io <strong>网络</strong>接口] [-p 协议] [-s 来源 IP/网域] [-d 目标 IP/网域] -j [ACCEPT|DROP|REJECT|LOG]
选项与参数:
-AI 链名:针对某的链进行规则的 "插入" 或 "累加"
-A :新增加一条规则,该规则增加在原本规则的最后面。例如原本已经有四条规则,使用 -A 就可以加上第五条规则!
-I :插入一条规则。如果没有指定此规则的顺序,默认是插入变成第一条规则。例如原本有四条规则,使用 -I 则该规则变成第一条,而原本四条变成 2~5 号。
链 :有 INPUT, OUTPUT, FORWARD 等,
-io <strong>网络</strong>接口:设定封包进出的接口规范
-i :封包所进入的那个<strong>网络</strong>接口,例如 eth0, lo 等接口。需与 INPUT 链配合;
-o :封包所传出的那个<strong>网络</strong>接口,需与 OUTPUT 链配合;
-p 协议:设定此规则适用于哪种封包格式,主要的封包格式有: tcp, udp, icmp 及 all 。
-s 来源 IP/网域:设定此规则之封包的来源项目,可指定单纯的 IP 或包括网域,
例如: IP:192.168.0.100,网域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。
若规范为『不许』时,则加上 ! 即可,例如:
-s ! 192.168.100.0/24 表示不许 192.168.100.0/24 之封包来源;
-d 目标 IP/网域:同 -s ,只不过这里指的是目标的 IP 或网域。
-j :后面接动作,主要的动作有接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)及记录(LOG),
LOG 这个动作仅在进行记录而已,并不会影响到这个封包的其他规则比对的。 eg:
#1. 给filter表的INPUT链加上一条规则,设定 lo 成为受信任的装置,亦即进出 lo 的封包都予以接受
iptables -A INPUT -i lo -j ACCEPT #2. 给filter表的INPUT链加上一条规则,设定来自eth1接口的192.168.100.0/24网段的封包都接受
iptables -A INPUT -i eth1 -s 192.168.100.0/24 -j ACCEPT #3. 给filter表的INPUT链加上一条规则,设定来自eth1接口的 192.168.100.230 IP的封包都丢弃
iptables -A INPUT -i eth1 -s 192.168.100.230 -j DROP #4. 记录来自192.168.2.200这个IP的请求记录
iptables -A INPUT -s 192.168.2.200 -j LOG 6) 设定规则具体到端口
iptables [-AI 链名] [-io <strong>网络</strong>接口] [-p tcp|udp] \
[-s 来源 IP/网域] [--sport 端口范围] \
[-d 目标 IP/网域] [--dport 端口范围] \
-j [ACCEPT|DROP|REJECT|LOG] 因为仅有 tcp 与 udp 封包具有端口,因此你想要使用--dport,--sport 时,得要加上 -p tcp 或 -p udp 的参数才会成功. eg: #1. 只要来自 192.168.1.0/24 的 1024:65535 端口的封包,且想要联机到本机的 ssh port 就予以抵挡
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --sport 1024:65534 --dport ssh -j DROP #2. 将来自任何地方来源 port 1:1023 的主动联机到本机端的 1:1023 联机丢弃
iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --dport 1:1023 --syn -j DROP 7) 外挂模块
iptables -A INPUT [-m state] [--state 状态]
选项与参数:
-m :一些 iptables 的外挂模块,主要常见的有:
state :状态模块
mac:<strong>网络</strong>卡硬件地址 (hardware address)
--state :一些封包的状态,主要有:
INVALID:无效的封包,例如数据破损的封包状态
ESTABLISHED:已经联机成功的联机状态;
NEW:想要新建立联机的封包状态;
RELATED:这个最常用!表示这个封包是与我们主机发送出去的封包有关
--mac-source :就是来源主机的 MAC 啦! eg:
#1. 只要已建立或相关封包就予以通过,只要是不合法封包就丢弃
$ iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ iptables -A INPUT -m state --state INVALID -j DROP #2. 针对局域<strong>网络</strong>内的 aa:bb:cc:dd:ee:ff 主机开放其联机
$ iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT #3. 接受ssh联机
$ iptables -A INPUT -m state --state NEW -j ACCEPT 8) icmp封包规则
iptables -A INPUT [-p icmp] [--icmp-type 类型] -j ACCEPT
选项与参数:
--icmp-type :后面必须要接 ICMP 的封包类型,也可以使用代号,例如 8 代表 echo request 的意思 0 Echo Reply (代表一個回應信息)
3 Destination Unreachable (表示目的地不可到達)
4 Source Quench (當 router 的負載過高時,此類別碼可用來讓發送端停止發送訊息)
5 Redirect (用來重新導向路由路徑的資訊)
8 Echo Request (請求回應訊息)
11 Time Exceeded for a Datagram (當資料封包在某些路由傳送的現象中造成逾時狀態,此類別碼可告知來源該封包已被忽略的訊息)
12 Parameter Problem on a Datagram (當一個 ICMP 封包重複之前的錯誤時,會回覆來源主機關於參數錯誤的訊息)
13 Timestamp Request (要求對方送出時間訊息,用以計算路由時間的差異,以滿足同步性協定的要求)
14 Timestamp Reply (此訊息純粹是回應 Timestamp Request 用的)
15 Information Request (在 RARP 協定應用之前,此訊息是用來在開機時取得網路信息)
16 Information Reply (用以回應 Infromation Request 訊息)
17 Address Mask Request (這訊息是用來查詢子網路 mask 設定信息)
18 Address Mask Reply (回應子網路 mask 查詢訊息的) eg: #接受所有的icmp请求
$ iptables -A INPUT -p icmp -j ACCEPT 9) 删除某一个规则
我们可以用两种办法中的任一种删除规则。
首先,因为知道这是INPUT链中唯一的规则,我们用编号删除:
#删除INPUT链中的编号为1的规则
$ iptables -D INPUT 1 第二种办法是 -A 命令的映射,不过用-D替换-A。
当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。这样的话,我们可以使用:
$ iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
-D的语法必须和-A(或者-I或者-R)一样精确。如果链中有多个相同的规则,只会删除第一个。 10) 将iptables规则开机自启动
http://www.hjwahjl.net/archives/67

Linux只iptables的更多相关文章

  1. Linux防火墙iptables学习笔记(三)iptables命令详解和举例&lbrack;转载&rsqb;

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  2. linux 防火墙 iptables实例讲解

    端口为例): 显示现有规则: iptables –L -n 清空现有规则表: iptables -F 黑名单:先允许所有数据包通过,后逐条添加黑名单规则. iptables –A INPUT–p tc ...

  3. 详解Linux下iptables中的DNAT与SNAT设置(转)

    详解Linux下iptables中的DNAT与SNAT设置 这篇文章主要介绍了Linux下iptables中的DNAT与SNAT设置,是Linux网络配置中的基础知识,需要的朋友可以参考下   原文连 ...

  4. Linux防火墙iptables学习

    http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...

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

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

  6. Linux下iptables学习笔记

    Linux下iptables学习笔记 在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了.但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6. ...

  7. Linux防火墙&lpar;Iptables&rpar;的开启与关闭

    Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig ipt ...

  8. linux 防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  9. Linux防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

随机推荐

  1. Evolutionary Computing&colon; 5&period; Evolutionary Strategies&lpar;2&rpar;

    Resource: Introduction to Evolutionary Computing, A.E.Eliben Outline recombination parent selection ...

  2. 暑假集训&lpar;1&rpar;第三弹 -----Dungeon Master(Poj2251&rpar;

    Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...

  3. Spring类型转换(Converter)

    Spring的类型转换 以前在面试中就有被问到关于spring数据绑定方面的问题,当时对它一直只是朦朦胧胧的概念,最近稍微闲下来有时间看了一下其中数据转换相关的内容,把相应的内容做个记录. 下面先说明 ...

  4. Python Revisited Day 02 &lpar;数据类型&rpar;

    目录 Python 关键字 整数 整数转换函数 整数位逻辑操作符 浮点类型 math模块函数与常量 复数 精确的十进制数字 decimal 字符串 str.format() 格式规约 Python 关 ...

  5. js重定向跳转页面

    重定向方式: 1>  window.location ='www.baidu.com';    window.location='/';  window.location='/logout/'; ...

  6. MongoDB numa系列问题一:&lbrack;initandlisten&rsqb; connection refused because too many open connections&colon;

    1:Mongod日志有很多这样的报错: [initandlisten] connection refused because too many open connections: 2:查看系统的限制 ...

  7. linux chkconfig 使用说明

    原文 chkconfig是管理系统服务(service)的命令行工具.所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序. chkconfig可以更新(启动或停止)和查询系统 ...

  8. android四大组件(一)Activity

    一.创建一个新的Activity 1.android的四大组件都要在清单文件里面配置 2.如果想让你的应用有多个启动图标,你的activity需要这样配置 <intent-filter> ...

  9. 前端高质量知识&lpar;二&rpar;-JS执行上下文&lpar;执行环境&rpar;详细图解Script

    先随便放张图 我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题.比如先来一个简单一点的. console.log(a); // 这里会打印出什么? var a = 20; PS: 变量提 ...

  10. PHP高性能开发-多进程开发

    硬件多核时代的软件业以前计算能力的提升一直在摩尔定律的指引下,沿着提升CPU时钟频率这条道路前进,从初期的几十MHz到如今的几GHz.但是,进入2002年以 来,CPU提升主频的困难越来越大,因为主频 ...