一、 iptables環(huán)境準(zhǔn)備
1.安裝iptables管理命令
[root@test ~]# yum install iptables-services -y
2.加載防火墻的內(nèi)核模塊
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
3.查看已加載的模塊
[root@test ~]#? lsmod |egrep 'filter|nat|ipt'
ipt_REJECT ????????????12541??0?
nf_nat_ftp ????????????12770??0?
nf_conntrack_ftp ??????18638??1?nf_nat_ftp
iptable_filter ????????12810??0?
xt_nat ????????????????12681??3?
iptable_nat ???????????12875??1?
nf_nat_ipv4 ???????????14115??1?iptable_nat
nf_nat ????????????????26146??3?nf_nat_ftp,nf_nat_ipv4,xt_nat
nf_conntrack ?????????105745??7?nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,xt_conntrack,nf_conntrack_ftp,nf_conntrack_ipv4
ip_tables ?????????????27240??2?iptable_filter,iptable_nat
4.啟動(dòng)防火墻
首先停止firewalld
systemctl stop firewalld
systemctl disable firewalld
開(kāi)啟iptables
systemctl start iptables.service
systemctl enable iptables.service
二甘畅、 iptables基本操作命令
1.查看防火墻規(guī)則
[root@test ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target ????prot opt source ??????????????destination? ? ? ? ?
Chain FORWARD (policy ACCEPT)
target ????prot opt source ??????????????destination? ? ? ? ?
Chain OUTPUT (policy ACCEPT)
target ????prot opt source ??????????????destination
2.清除防火墻規(guī)則
iptables -F <-清除所有規(guī)則谜疤,不會(huì)處理默認(rèn)的規(guī)則
iptables -X <-刪除用戶自定義的鏈
iptables -Z <-鏈的計(jì)數(shù)器清零(數(shù)據(jù)包計(jì)數(shù)器與數(shù)據(jù)包字節(jié)計(jì)數(shù)器)
3.添加防火墻規(guī)則
iptables -t <-指定表d(efault: `filter')
iptables -A <-把規(guī)則添加到指定的鏈上,默認(rèn)添加到最后一行椎椰。
iptables -I <-插入規(guī)則,默認(rèn)插入到第一行(封IP)。
iptables -D <-刪除鏈上的規(guī)則
4.網(wǎng)絡(luò)連接狀態(tài)
NEW:已經(jīng)或?qū)?dòng)新的連接
ESTABLISHED:已建立的連接
RELATED:正在啟動(dòng)的新連接
INVALID:非法或無(wú)法識(shí)別的
5.刪除某個(gè)規(guī)則
iptables -nL --line-numbers查看規(guī)則號(hào)碼
iptables -D INPUT 1刪除指定鏈上的指定序號(hào)
iptables A INPUT -p tcp -m state --dport 22 -j DROP
iptables -nL
iptables -nL --line-numbers
iptables -D INPUT 1
三复旬、iptables實(shí)戰(zhàn)
1.禁止某個(gè)端口訪問(wèn)
iptables -t filter?-A INPUT?-p tcp --dport 22?-j DROP
規(guī)則解釋:
-p ??????#<==指定過(guò)濾的協(xié)議-p(tcp,udp,icmp,all)
--dport ?#<==指定目標(biāo)端口(用戶請(qǐng)求的端口)。
-j ??????#<==對(duì)規(guī)則的具體處理方法(ACCEPT,DROP,REJECT,SNAT/DNAT)
--sport ?#<==指定源端口冲泥。
2.規(guī)則解釋:
-s ??????#<==指定源地址或網(wǎng)段(192.168.1.0/24)驹碍。 ! 取反壁涎。
-d ??????#<==指定目的地址(nat表prerouting)。
-i ??????#<==進(jìn)入的網(wǎng)絡(luò)接口(eth0,eth1)志秃。
-o ??????#<==出去的網(wǎng)絡(luò)接口(eth0,eth1)怔球。
3.禁止除跳板機(jī)以外的IP訪問(wèn)
iptables -I INPUT -p tcp ! -s 10.0.0.1 -j DROP
4.匹配端口范圍
iptables -I INPUT -p tcp -m multiport --dport 21,22,23,24 -j DROP
iptables -I INPUT -p tcp --dport 3306:8809 -j ACCEPT
iptables -I INPUT -p tcp --dport 18:80 -j DROP ?#<==最佳
?5.?匹配ICMP類型
iptables -A?INPUT?-p icmp --icmp-type?8
例:iptables-A?INPUT?-p icmp --icmp-type?8?-j DROP
iptables -A?INPUT?-p icmp -m icmp --icmp-type?any?-j ACCEPT
iptables -A?FORWARD?-s 192.168.1.0/24?-p icmp -m icmp --icmp-type?any?-j ACCEPT
6.一些操作
1、封掉10.0.0.7
iptables -I INPUT -s 10.0.0.7 -j DROP
2浮还、讓10.0.0.7和SSH客戶端(10.0.0.1)服務(wù)器可以Ping竟坛,其它的不能Ping
iptables -I INPUT -p icmp --icmp-type 8 -s 10.0.0.7 -j ACCEPT
iptables -I INPUT 2 -p icmp ! -s 10.0.0.1 --icmp-type 8 -j DROP
3、封掉3306端口
iptables -I INPUT -p tcp --dport 3306 -j DROP
四钧舌、 關(guān)于操作命令的解釋
1.從上往下依次匹配
2.一但匹配上,就不在往下匹配了
3.默認(rèn)規(guī)則,默認(rèn)的情況,默認(rèn)規(guī)則是放行所有
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT :把這條規(guī)則添加到INPUT鏈的最后一行
-p tcp :指定協(xié)議為tcp
-m state --state NEW :匹配TCP的連接狀態(tài)
-m tcp --dport 22 :匹配TCP協(xié)議的目標(biāo)端口
-j ACCEPT :執(zhí)行動(dòng)作 放行
iptables A INPUT -p tcp -m state --dport 22 -j DROP
禁止一個(gè)數(shù)據(jù)包:
tcp協(xié)議
訪問(wèn)的端口是22
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -nLiptables -nL --line-numbersiptables -D INPUT 1
禁止源地址是10.0.0.7的主機(jī)訪問(wèn)22端口
iptables -A INPUT -p tcp -s 10.0.0.7 --dport 22 -j DROP
禁止源地址是10.0.0.7的主機(jī)訪問(wèn)任何端口
iptables -A INPUT -p tcp -s 10.0.0.7 -j DROP
禁止源地址是10.0.0.8的主機(jī)訪問(wèn)80端口
iptables -A INPUT -p tcp -s 10.0.0.8 --dport 80 -j DROP
禁止除了10.0.0.7以外的地址訪問(wèn)80端口
iptables -A INPUT -p tcp ! -s 10.0.0.7 --dport 80 -j DROP
2條規(guī)則沖突,會(huì)以誰(shuí)先誰(shuí)為準(zhǔn)
iptables -I INPUT -p tcp -s 10.0.0.7 --dport 22 -j ACCEPT
iptables -I INPUT -p tcp -s 10.0.0.7 --dport 22 -j DROP
禁止10.0.0.7訪問(wèn)22和80端口
iptables -I INPUT -p tcp -s 10.0.0.7 -m multiport --dport 22,80 -j DROP
禁止10.0.0.7訪問(wèn)22到100之間的所有端口
iptables -A INPUT -p tcp -s 10.0.0.7 --dport 22:100 -j DROP
禁止所有主機(jī)ping
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
放行10.0.0.7可以ping
iptables -I INPUT 2 -p icmp --icmp-type 8 -s 10.0.0.7 -j ACCEPT
只允許10.0.0.7可以ping
ACCEPT icmp -- 10.0.0.7 0.0.0.0/0 icmptype 8
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
等同于上一條,優(yōu)化版,只要不是10.0.0.7就不允許ping
iptables -I INPUT -p icmp --icmp-type 8 ! -s 10.0.0.7 -j DROP
優(yōu)先級(jí):
匹配頻次最高的條件放前面