封單個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
'^]'
.
|
