一、簡介一下iptables
iptables命令中ACCEPT(允許流量通過)、LOG(記錄日志信息)、REJECT(拒絕流量通過)、DROP(拒絕流量通過)。允許動作和記錄日志工作都比較好理解,着重需要講解的是這兩條拒絕動作的不同點,其中REJECT和DROP的動作操作都是把數據包拒絕,DROP是直接把數據包拋棄不響應,而REJECT會拒絕后再回復一條“您的信息我已收到,但被扔掉了”,讓對方清晰的看到數據被拒絕的響應。下圖是iptables的選項。
二、我們今天分別演示
- 設置拒絕規則鏈(默認只能是DROP不能是REJECT);
- 向規則鏈中添加icmp包流入允許策略(就是允許別人通過ping命令來查看我們的主機是否在線);
- 只允許本機指定端口被指定網段訪問,其他流量均被拒絕; – 拒絕所有人訪問本機指定端口;
- 拒絕指定主機訪問本機指定端口;
- 拒絕所有人訪問本機指定的端口段;
- 刪除指定策略;
- 最后保存設置的防火牆策略。
1、設置拒絕規則鏈(默認只能是DROP不能是REJECT)。首先我們輸入“iptables -F”清空所有防火牆策略(一定要在實驗環境下做,不然會把配置好的策略清除)。然后輸入“iptables -P INPUT DROP”。設置好以后我們用“iptables -L”命令查看一下策略列表。然后用ping命令驗證一下是否設置成功。可以看到已經拒絕了。成功之后我們為了下面的演示,把INPUT策略設置為允許通過“iptables -P ACCEPT”。
2、向規則鏈中添加icmp包流入允許策略(就是允許別人通過ping命令來查看我們的主機是否在線)。輸入命令:
iptables -I INPUT -p icmp -j ACCEPT
然后我們用ping命令測試一下,可以看到ping通了。
3、只允許本機22端口被192.168.1.0/24網段訪問,其他流量均被拒絕。我們輸入命令:
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
和命令:
iptables -A INPUT -p tcp --dport 22 -j REJECT
同學們都知道22端口是ssh服務占用的資源。我們用ssh測試一下,可以看到能夠連接到遠程主機。
4、拒絕所有人訪問本機8888端口,輸入命令:
iptables -I INPUT -p tcp --dport 8888 -j REJECT
和命令:
iptables -I INPUT -p udp --dport 8888 -j REJECT
5、拒絕指定主機192.168.1.200訪問本機80端口,輸入命令:
iptables -I INPUT -s 192.168.1.200 -p tcp --dport 80 -j REJECT
6、拒絕所有人訪問本機4444到5555端口,輸入命令:
iptables -A INPUT -p tcp --dport 4444:5555 -j REJECT
和命令:
iptables -A INPUT -p udp --dport 4444:5555 -j REJECT
7、刪除INPUT鏈中的第2條策略,首先我們看一下防火牆策略中的第二條策略是什么“iptables -L”,然后輸入命令刪除第2條策略:
iptables -D INPUT 2
可以看到第2條策略被刪除了。
8、設置的防護牆策略在重啟系統之后會消失,所有我們要保存設置好的策略,輸入命令:
service iptables save
好了,今天的演示就到這里了。
喜歡這篇文章?歡迎打賞~~