Linux下iptables屏蔽IP和端口号
封单个IP的命令:iptables -I INPUT -s 124.115.0.199 -j DROP
封IP段的命令:iptables -I INPUT -s 124.115.0.0/16 -j DROP
封整个段的命令:iptables -I INPUT -s 194.42.0.0/8 -j DROP
封几个段的命令:iptables -I INPUT -s 61.37.80.0/24 -j DROP
只封80端口:iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP
解封:iptables -F
清空:iptables -D INPUT 数字
列出 INPUT链 所有的规则:iptables -L INPUT --line-numbers
删除某条规则,其中5代表序号(序号可用上面的命令查看):iptables -D INPUT 5
开放指定的端口:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
禁止指定的端口:iptables -A INPUT -p tcp --dport 80 -j DROP
拒绝所有的端口:iptables -A INPUT -j DROP
以上都是针对INPUT链的操作,即是外面来访问本机的方向,配置完之后 需要保存,否则iptables 重启之后以上设置就失效
service iptables save
iptables 对应的配置文件 /etc/sysconfig/iptables
注意:iptables的规则匹配顺序上从上到下的,也就是说如果上下两条规则有冲突时,将会以上面的规则为准。
***************************************************************
Linux中iptables设置详解
无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,很有可能导致无法SSH连接,这将是很认人头疼的事. 以下内容是为了防止这种情况发生而写的,如果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,以下每一步都最好执行一遍此语句,以下不再累述, 否则直接执行service iptables restart命令后, 刚才添加的将丢失.
1.首先介绍一下指令和相关配置文件
启动指令:service iptables start
重启指令:service iptables restart
关闭指令:service iptables stop
然后是相关配置:/etc/sysconfig/iptables
如何操作该配置呢?
vim /etc/sysconfig/iptables
2.下面介绍一些指令用法
-A:指定链名
-p:指定协议类型
-d:指定目标地址
–dport:指定目标端口(destination port 目的端口)
–sport:指定源端口(source port 源端口)
-j:指定动作类型
3.全局DROP规则.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
这个步骤是把所有不符合自己配置的规则ACCEPT的连接全部DROP掉,执行完以后如果咱SSH还没掉,那么谢天谢地,安全了,重启下iptables后继续下面的配置!
4.可能有时候需要删除规则,使用指令完成的命令删除规则的方法:
语法是: iptables -D chain rulenum [options]
其中: chain 是链的意思,就是INPUT FORWARD 之类的
rulenum 是规则的编号。从1 开始。可以使用 –line-numbers 列出规则的编号
所以,例如上面要删除一个INPUT链的规则的话可以这样:iptables -D INPUT 3
意思是删除第3条规则。
5.最后补充一下,对某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
下面咱就不细说了,具体就是看自己服务器要开放哪些端口或者是要访问哪些端口来做具体的配置,下面是我自己的机器的配置:
/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
#允许服务器自己的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
#允许服务器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
======================
说一下上面的 –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
…
…
#屏蔽单个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进行保存后重启服务即可 .
******************************iptables 白名单配置******************************
Linux防火墙--iptables--白名单配置
1.服务器22端口和1521端口开通给指定IP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
[root@node2 sysconfig] # iptables -t filter -nL INPUT Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0 /0 0.0.0.0 /0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0 /0 0.0.0.0 /0 ACCEPT all -- 0.0.0.0 /0 0.0.0.0 /0 ACCEPT tcp -- 0.0.0.0 /0 0.0.0.0 /0 state NEW tcp dpt:22 REJECT all -- 0.0.0.0 /0 0.0.0.0 /0 reject-with icmp-host-prohibited [root@node2 sysconfig] # iptables -F [root@node2 sysconfig] # iptables -t filter -nL INPUT Chain INPUT (policy ACCEPT) target prot opt source destination [root@node2 sysconfig] # iptables -I INPUT -s 192.168.222.1 -p tcp -m tcp --dport 22 -j ACCEPT [root@node2 sysconfig] # iptables -t filter -nL INPUT Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 192.168.222.1 0.0.0.0 /0 tcp dpt:22 [root@node2 sysconfig] # iptables -A INPUT -j REJECT [root@node2 sysconfig] # iptables -I INPUT -s 192.168.222.1 -p tcp -m tcp --dport 1521 -j ACCEPT [root@node2 sysconfig] # iptables -t filter -nL INPUT Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 192.168.222.1 0.0.0.0 /0 tcp dpt:1521 ACCEPT tcp -- 192.168.222.1 0.0.0.0 /0 tcp dpt:22 REJECT all -- 0.0.0.0 /0 0.0.0.0 /0 reject-with icmp-port-unreachable [root@node2 sysconfig] # service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables :[ OK ] [root@node2 sysconfig] # service iptables restart iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ] [root@node2 sysconfig] # iptables -t filter -nL INPUT Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 192.168.222.1 0.0.0.0 /0 tcp dpt:1521 ACCEPT tcp -- 192.168.222.1 0.0.0.0 /0 tcp dpt:22 REJECT all -- 0.0.0.0 /0 0.0.0.0 /0 reject-with icmp-port-unreachable [root@node2 sysconfig] # iptables -t filter -nL INPUT --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 192.168.222.1 0.0.0.0 /0 tcp dpt:1521 2 ACCEPT tcp -- 192.168.222.1 0.0.0.0 /0 tcp dpt:22 3 REJECT all -- 0.0.0.0 /0 0.0.0.0 /0 reject-with icmp-port-unreachable [root@node2 sysconfig] # iptables -t filter -D INPUT 1 [root@node2 sysconfig] # iptables -t filter -nL INPUT --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 192.168.222.1 0.0.0.0 /0 tcp dpt:22 2 REJECT all -- 0.0.0.0 /0 0.0.0.0 /0 reject-with icmp-port-unreachable |
2.注意:每次最后需要添加
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
3.插入到那一行
先查看当前的行,iptables -nL --line-numbers
插入到指定的行
[root@node2 sysconfig]# iptables -I INPUT 行号 -s 192.168.222.1 -p tcp -m tcp --dport 1521 -j ACCEPT
4.针对某个端口设置白名单机制
1
2
3
4
5
6
7
8
9
10
11
|
[root@node2 ~] # iptables -F [root@node2 ~] # iptables -I INPUT -p tcp --dport 1521 -j DROP [root@node2 ~] # [root@node2 ~] # telnet 192.168.222.11 1521 Trying 192.168.222.11... ^C [root@node2 ~] # iptables -I INPUT -s 192.168.222.11 -p tcp --dport 1521 -j ACCEPT [root@node2 ~] # telnet 192.168.222.11 1521 Trying 192.168.222.11... Connected to 192.168.222.11. Escape character is '^]' . |
当你的才华还撑不起你的野心的时候,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来,历练;梦想,不是浮躁,而是沉淀和积累,只有拼出来的美丽,没有等出来的辉煌,机会永远是留给最渴望的那个人,学会与内心深处的你对话,问问自己,想 要怎样的人生,静心学习,耐心沉淀,送给自己,共勉。
**************************************************************************************