溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

配置iptables防火墻(一)

發(fā)布時間:2020-08-08 15:22:22 來源:網(wǎng)絡 閱讀:1360 作者:304076020 欄目:安全技術

配置iptables防火墻

管理iptables規(guī)則

1、 拒絕所有入站協(xié)議的數(shù)據(jù)包

[root@s2 ~]# iptables -P INPUT DROP

2、 允許系統(tǒng)管理員從192.168.10.100/24 網(wǎng)段使用SSH方式遠程防火墻主機

[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.10.100/24 -j ACCEPT

3、 查看filterINPUT鏈中的所有規(guī)則,同時顯示各條規(guī)則的順序號

[root@s2 ~]# iptables  -L INPUT --line-numbers

4、 查看filter表各鏈中所有規(guī)則的相信信息,同時以數(shù)字的形式顯示地址和端口信息

[root@s2 ~]# iptables –vnL注意-L選項放在最后,否則會將vn當成鏈名

Chain INPUT (policy DROP 47 packets, 10544 bytes)

pkts bytes target     prot opt in     out     source               destination        

 732 51752 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22

   0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0          

   0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0          

   0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0          


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in     out     source               destination        


Chain OUTPUT (policy ACCEPT 566 packets, 57384 bytes)

pkts bytes target     prot opt in     out     source               destination        


Chain RH-Firewall-1-INPUT (0 references)

pkts bytes target     prot opt in     out     source               destination  

5、 刪除filterINPUT鏈中的第二條規(guī)則

[root@s2 ~]# iptables -D INPUT 2

6、 清空filter表、nat表、mangle表各鏈中的所有規(guī)則

[root@s2 ~]# iptables –F不指定表名時默認清空filter

[root@s2 ~]# iptables -t nat -F

[root@s2 ~]# iptables -t mangle -F

7、 filter表中FORWARD規(guī)則鏈的默認策略設為DROP

[root@s2 ~]# iptables -t filter -P FORWARD DROP

8、 filter表中OUTPUT規(guī)則鏈的默認策略設為ACCEPT

[root@s2 ~]# iptables -P OUTPUT ACCEPT

9、 獲得iptables相關選項用法的幫助信息

查看iptables命令中關于icmp協(xié)議的幫助信息

[root@s2 ~]# iptables -p icmp –h

10、在raw表中新增一條自定義的規(guī)則鏈,鏈名為TCP_PACKETS

[root@s2 ~]# iptables -t raw -N TCP_PACKETS

[root@s2 ~]# iptables -t raw -L

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination        


Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination        


Chain TCP_PACKETS (0 references)

target     prot opt source               destination

11、清空用戶自定義的所有規(guī)則鏈

[root@s2 ~]# iptables -t raw -X

條件匹配

1、通用(general)條件匹配

 拒絕進入防火墻的所有icmp協(xié)議數(shù)據(jù)包

[root@s2 ~]# iptables -I INPUT -p icmp -j REJECT

2、允許防火墻轉發(fā)除icmp協(xié)議以外的所有數(shù)據(jù)包(使用驚嘆號! 可以將條件相反)

[root@s2 ~]# iptables -A FORWARD -p ! icmp -j ACCEPT

[root@s2 ~]# iptables -L FORWARD

Chain FORWARD (policy DROP)

target     prot opt source               destination        

ACCEPT    !icmp --  anywhere             anywhere

3、拒絕轉發(fā)來自192.168.1.11主機的數(shù)據(jù),允許轉發(fā)來自192.168.0.0/24網(wǎng)段的數(shù)據(jù)

[root@s2 ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT

[root@s2 ~]# iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

4、丟棄從外網(wǎng)接口(eth2)進入防火墻本機的源地址為私網(wǎng)

[root@s2 ~]# iptables -A INPUT -i eht1 -s 192.168.0.0/24 -j DROP

5、封鎖某個IP網(wǎng)段,設置兩小時后解鎖

[root@s2 ~]# iptables -I INPUT -s 192.168.1.0/24 -j DROP

[root@s2 ~]# iptables -I FORWARD -s 192.168.1.0/24 -j DROP

[root@s2 ~]# at now +2 hours設置2小時后解鎖

at> iptables -D INPUT 1

at> iptables -D FORWARD 1<EOT>

job 3 at 2010-04-25 19:52此處按Ctrl+D組合鍵提交任務

6、允許本機開放從TCP端口20~1024提供的應用服務

[root@s2 ~]# iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT

[root@s2 ~]# iptables -A OUTPUT -p tcp --dport 20:1024 -j ACCEPT

7、作為網(wǎng)關使用時,允許轉發(fā)來自192.168.0.0/24局域網(wǎng)段的DNS解析請求數(shù)據(jù)包

[root@s2 ~]# iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT

[root@s2 ~]# iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

--dport 目標端口   --sport  源端口


8、拒絕從外網(wǎng)接口(eth2)直接訪問防火墻本機的數(shù)據(jù)包,但是允許響應防火墻TCP請求的數(shù)據(jù)包進入

[root@s2 ~]# iptables -I INPUT -i eth2 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT

[root@s2 ~]# iptables -I INPUT -i eth2 -p tcp --tcp-flags ! SYN,RST,ACK SYN -j ACCEPT

--tcp-flags  用于查找數(shù)據(jù)包的TCP標記位

9、禁止其他主機ping防火墻主機,但是允許從防火墻上ping其他主機(允許接受ICMP回應數(shù)據(jù))

[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP

[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT

[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT

Echo-Request 數(shù)值代碼為8   Echo-Reply 數(shù)值代碼為0   destination-Unreachable  數(shù)值代碼為3,分別對應ICMP協(xié)議的請求、回顯、目標不可達數(shù)據(jù)

10、禁止轉發(fā)來自MAC地址為00-50-56-C0-00-01的主機的數(shù)據(jù)包。

[root@s2 ~]# iptables -A FORWARD -m mac --mac-source 00:50:56:C0:00:01 -j DROP

-m  模塊關鍵字的形式調(diào)用顯示匹配

11、允許防火墻本機對外開放TCP端口20、21、25、110以及被動模式FTP端口1250~1280

[root@s2 ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,11,1250:1280 -j ACCEPT--dports  端口列表 或 sports端口列表

12、禁止轉發(fā)源IP地址為192.168.1.20~192.168.1.199TCP數(shù)據(jù)包

[root@s2 ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,11,1250:1280 -j ACCEPT--src-range IP地址范圍  或者  --dst-rangeIP地址范圍

13、禁止轉發(fā)與正常TCP連接無關的非syn請求數(shù)據(jù)包(如網(wǎng)絡中可能存在的一些非法***數(shù)據(jù)包)

[root@s2 ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP  state  檢查數(shù)據(jù)包連接狀態(tài) 常見的數(shù)據(jù)包狀態(tài)主要包括NEW(與任何連接無關)、ESTABLISHED(響應請求或者已建立連接的)和RELATED(與已有連接有相關性的,如FTP數(shù)據(jù)連接)

14、拒絕訪問防火墻的新數(shù)據(jù)包,但允許響應連接或已有連接相關的數(shù)據(jù)包

[root@s2 ~]# iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

15、在服務器中設置防火墻策略,只開放本機的Web服務(80端口)、FTP服務(2021端口、20450、20480),放行外部主機發(fā)往服務器其他端口的應答數(shù)據(jù)包,將其他入站數(shù)據(jù)包均予以丟棄處理

[root@s2 ~]# iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT

[root@s2 ~]# iptables -I INPUT -p tcp --dport 20450:20480 -j ACCEPT

[root@s2 ~]# iptables -I INPUT -p tcp -m state  --state ESTABLISHED -j ACCEPT

[root@s2 ~]# iptables -P  INPUT DROP將默認策略設為DROP

數(shù)據(jù)包控制

1、對于嘗試通過SSH方式登錄防火墻主機的訪問數(shù)據(jù),記錄日志信息并禁止其他訪問

iptables -I INPUT -p tcp --dport 22 -j DROP

iptables -I INPUT -p tcp --dport 22 -j LOGLOG 在、var/log/messages文件中記錄日志信息


2、為了避免日志記錄過于頻繁,通常結合LIMIT方式顯示匹配(-limit)對日志寫入頻繁進行限制。以下規(guī)則用于將日志的頻繁限制為平均三次/分鐘,允許的峰值為八次

[root@s2 ~]# iptables -R INPUT 1 -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG

3、自定義一個新的鏈MyLAN1,轉發(fā)自/192.168.1.0、24網(wǎng)段的數(shù)據(jù)包均較給該鏈中的規(guī)則處理

[root@s2 ~]# iptables -t filter -N MyLAN1

[root@s2 ~]# iptables -A FORWARD -s 192.168.1.0/24 -j MyLAN1

[root@s2 ~]# iptables -A FORWARD -d 192.168.1.0/24 -j MyLAN1

[root@s2 ~]# iptables -A MyLAN1 -p icmp -j DROP

SNAT(源地址轉換)修改數(shù)據(jù)包的源IP地址

DNAT(目標地址轉換)修改數(shù)據(jù)包的目標IP地址

使用防火墻腳本

1、直接執(zhí)行iptables-save命令時,將會把當前設置的防火墻信息輸出到終端

[root@s2 ~]# iptables-save

# Generated by iptables-save v1.3.5 on Sun Apr 25 19:41:15 2010

*filter

:INPUT DROP [456:29475]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [1855:180828]

:MyLAN1 - [0:0]

:RH-Firewall-1-INPUT - [0:0]

-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 3/min --limit-burst 8 -j LOG

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A FORWARD -s 192.168.1.0/255.255.255.0 -j MyLAN1

-A FORWARD -d 192.168.1.0/255.255.255.0 -j MyLAN1

-A MyLAN1 -p icmp -j DROP

COMMIT

# Completed on Sun Apr 25 19:41:15 2010

2、將當前調(diào)好的iptables規(guī)則保存到配置文件,并通過iptables服務自動加載

[root@s2 ~]# iptables-save > /etc/sysconfig/iptables

[root@s2 ~]# service iptables restart

Flushing firewall rules: [  OK  ]

Setting chains to policy ACCEPT: filter [  OK  ]

Unloading iptables modules: [  OK  ]

Applying iptables firewall rules: [  OK  ]

Loading additional iptables modules: ip_conntrack_netbios_ns [  OK  ]

[root@s2 ~]# chkconfig --level 35 iptables on

3、從保存的規(guī)則配置文件中導入iptables規(guī)則

[root@s2 ~]# [root@s2 ~]# chkconfig --level 35 iptables on



編寫防火墻腳本

1、在腳本文件中預先將防火墻主機的IP地址、網(wǎng)絡接口、局域網(wǎng)地址等定義為變量。

#!/bin/bash

INET_IP="214.16.18.20"

INET_IF="eth2"

LAN_IP="192.168.0.1"

LAN_IF="eth0"

2、在腳本文件中預先加載iptables需要用到的內(nèi)核模塊

/sbin/depmod -a

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_nat

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_raw

/sbin/modprobe ipt_REJECT

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_iprange

/sbin/modprobe xt_tcpudp

/sbin/modprobe xt_state

/sbin/modprobe xt_multiport

/sbin/modprobe xt_mac

/sbin/modprobe xt_limit

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_nat_irc

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc

3開啟路由轉發(fā)功能

 在腳本文件中開啟防火墻主機的路由轉發(fā)功能

[root@s2 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

[root@s2 ~]# cat /proc/sys/net/ipv4/ip_forward

1

 通過修改/etc/sysctl.conf文件中的方式開啟防火墻主機的路由轉發(fā)功能。

net.ipv4.ip_forward = 1

4、用戶設置的iptables規(guī)則

 刪除用戶的自定義的鏈,清空以保存的規(guī)則,將filter表的默認策略恢復為允許

/sbin/iptables  -X

/sbin/iptables  -t      nat     -X

/sbin/iptables  -t      mangle  -X

/sbin/iptables  -t      raw     -X

/sbin/iptables  -F

/sbin/iptables  -t      nat     -F

/sbin/iptables  -t      mangle  -F

/sbin/iptables  -t      raw     -F

/sbin/iptables  -p INPUT ACCEPT

/sbin/iptables  -p OUTPUT ACCEPT

/sbin/iptables  -p FORWARD ACCEPT

上機實驗部分

編寫iptables腳本實現(xiàn)IP地址、端口過濾

1、將iptablesfilter表中INPUT、FORWARD鏈的缺省策略設為DROP

[root@s2 ~]# iptables -P INPUT DROP

[root@s2 ~]# iptables -P FORWARD DROP

2、

1)、允許從Internet訪問網(wǎng)關服務器的指定端口,并記錄訪問日志沒15分鐘記錄一次

[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 201.12.13.14/24 -j ACCEPT

[root@s2 ~]# iptables -I INPUT -p tcp --dport 22 -m limit --limit 15/minute  -j LOG

2)、允許來自內(nèi)網(wǎng)IP為:192.168.1.5/24的主機訪問網(wǎng)關的22號端口

[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.1.5/24 -j ACCEPT

3)、允許MAC地址為000C27304E5D的主機訪問網(wǎng)關的22號端口

[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 00:0C:27:30:4E:5D -j ACCEPT

4)、僅允許局域網(wǎng)主機(LAN1192.168.1.0/24)訪問3128端口的代理服務

[root@s2 ~]# iptables  -A INPUT -p tcp --dport 3128  -s 192.168.1.0/24  -j ACCEPT

(5)、允許局域網(wǎng)主機訪問DNS服務器

[root@s2 ~]# iptables -A FORWARD -s 192.168.1.5/24 -d 192.168.2.2/24 -p udp --dport 53 -j ACCEPT

[root@s2 ~]# iptables -A FORWARD -s 192.168.2.2/24 -d 192.168.1.5/24 -p udp --dport 53 -j ACCEPT


3、開啟路由轉發(fā)

/etc/sysctl.conf

net.ipv4.ip_forward = 1

 重新加載/etc/sysctl.conf文件中的sysctl配置


[root@s2 ~]# sysctl -p

net.ipv4.ip_forward = 1

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 4294967295

kernel.shmall = 268435456

4、編寫腳本

net_ip="201.12.13.1/24"

inet_if="eth0"

inet2_ip="192.168.2.1"

inet2_if="eth2"

yuan_ip="201.12.13.14/24"

lan_ip="192.168.1.0/24"

lan_mac="00:0C:27:30:4E:5D"

dns="192.168.2.2/24"

/sbin/depmod -a

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_nat

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_raw

/sbin/modprobe ipt_REJECT

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_iprange

/sbin/modprobe xt_tcpudp

/sbin/modprobe xt_state

/sbin/modprobe xt_multiport

/sbin/modprobe xt_mac

/sbin/modprobe xt_limit

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_nat_irc

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc





/sbin/iptables -P INPUT DROP

/sbin/iptables -P FORWARD DROP

/sbin/iptables -A INPUT -p tcp --dport 22 -s $yuan_ip -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 22 -m limit --limit 15/minute  -j LOG

/sbin/iptables -A INPUT -p tcp --dport 22 -s $lan_ip -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 22 -m mac --mac-source $lan_mac -j ACCEPT

/sbin/iptables  -A INPUT -p tcp --dport 3128  -s $lan_ip  -j ACCEPT

/sbin/iptables -A FORWARD -s $lan_ip -d $dns -p udp --dport 53 -j ACCEPT

/sbin/iptables -A FORWARD -s $dns -d $lan_ip -p udp --dport 53 -j ACCEPT



向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI