iptables 學習筆記

1. 安裝iptablesmysql

yum install iptablesweb

centos7: yum install -y iptables-servicessql

2. service命令centos

查看iptables是否在運行:service iptables statustomcat

 

 啓動iptables:service iptables start服務器

  重啓iptables網絡

  關閉iptablesssh

3. 開機啓動iptablestcp

4. 將iptables規則保存的文件 /etc/sysconfig/iptables測試

service iptables save

5. iptables 防火牆調試方法 

由於咱們的服務器多是雲服務器,只能經過ssh登陸,給這樣的服務器配置防火牆時,很容易把本身也擋在了外面,致使沒法ssh登錄服務器的尷尬局面,因此通常咱們弄一個cron定時任務,每隔2分鐘執行一次,來清理防火牆的配置,還原到最初狀態。

即便咱們配置錯了,2分鐘以後,cron定時任務執行,咱們又能夠ssh登陸上服務器。

 

 cat iptables_test.sh 內容:

這裏清理全部規則,清理自定義規則,打開22端口,設置默認ACCEPT。

6. mysql主機防火牆設置:

1)防火牆打開ssh的22端口:

容許22端口的TCP入口流量:  iptables -I INPUT -p tcp --dport 22 -j ACCEPT 

容許22端口的TCP出庫流量: iptables -I OUTPUT -p tcp --sport 22  -j ACCEPT

改進1:

只容許192.168.52.102的服務器能夠訪問mysql服務器的22端口:

iptables -A INPUT -p tcp -s 192.168.52.102 --dport 22 -j ACCEPT

改進2:

只容許192.168.52.0/24 這個網段的服務器能夠訪問mysql服務器的22端口:

iptables -A INPUT -p tcp -s 192.168.52.0/24 --dport 22 -j ACCEPT

這樣mysql的服務器只容許局域網可以ssh。

2)防火牆打開mysql的3306端口:

容許3306端口的TCP入口流量: iptables -I INPUT -p tcp --dport 3306 -j ACCEPT 

容許3306端口的TCP出口流量:iptables -I OUTPUT -p tcp --sport 3306  -j ACCEPT

改進1:

只容許192.168.52.102的服務器能夠訪問mysql的3306端口:

iptables -A INPUT -p tcp -s 192.168.52.102 --dport 3306 -j ACCEPT

改進2:

只容許192.168.52.0/24 這個網段的服務器能夠訪問mysql的3306端口:

iptables -A INPUT -p tcp -s 192.168.52.0/24 --dport 3306 -j ACCEPT

這樣mysql只容許局域網可以連上。

3)設置默認拒絕:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

4)查看最後結果:

5)測試

telent 192.168.52.102 3306

nmap -sS 192.168.52.102 

 測試 3306 和 22端口都打開了,未發現其餘端口。

7)127.0.0.1 迴環網絡

 可是你會發現一個問題,在mysql所在服務器執行:

telnet 127.0.0.1 3306時結果以下:

處理方法:

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

7. Tomcat主機防火牆設置:

1)防火牆打開ssh的22端口:

容許22端口的TCP入口流量:  iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

容許22端口的TCP出庫流量:  iptables -A OUTPUT -p tcp --sport 22  -j ACCEPT

2)80端口和443端口

 iptables -I INPUT -p tcp --dport 80 -j ACCEPT 

 iptables -I OUTPUT -p tcp --sport 80  -j ACCEPT

 iptables -A INPUT -p tcp --dport 443 -j ACCEPT 

 iptables -A OUTPUT -p tcp --sport 443  -j ACCEPT

3)設置默認拒絕:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

4)127.0.0.1迴環地址:

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

5)查看結果

6)tomcat 須要訪問 mysql

 tomcat在 192.168.52.101,而mysql在192.168.52.102上面。

iptables -A OUTPUT -p tcp -d 192.168.52.102 --dport 3306 -j ACCEPT ; 容許tomcat的數據包發送給192.168.52.102:3306

iptables -A INPUT -p tcp -s 192.168.52.102 --sport 3306 -j ACCEPT; 容許192.168.52.102:3306的響應數據包進入tomcat的服務器;

使用web項目測試, 能夠正常訪問mysql中的數據。

固然這裏只是設置了tomcat所在服務器的 iptables,mysql所在的服務器iptables也須要設置,參見「5. mysql主機防火牆設置」。

最後的iptables設置以下所示:

8. mysql主從複製環境iptables設置

master: 192.168.120.31

slave:   192.168.120.32

1)slave服務器上面iptables配置

先查看複製涉及到的ip和端口,在正常複製的slave服務器上面執行:

netstat -pan | grep mysqld | grep 192.168.120.31

能夠看到,slave服務器上面複製須要訪問 master的3306端口,並且訪問master的3306端口的是一個隨機的端口(本次是34276)。因此咱們在slave上面設置下面的iptables規則:

iptables -A INPUT -p tcp -s 192.168.120.31 --sport 3306 -j ACCEPT
iptables -A OUTPUT -p tcp -d 192.168.120.31 --dport 3306 -j ACCEPT

網上查到說須要使用udp,乾脆咱們也將udp也加上:

iptables -A INPUT -p udp -s 192.168.120.31 --sport 3306 -j ACCEPT
iptables -A OUTPUT -p udp -d 192.168.120.31 --dport 3306 -j ACCEPT

2)slave服務器的mysql,其餘的tomcat須要讀取,因此須要加上下面的配置:

iptables -I INPUT -p tcp -s 192.168.120.0/24 --dport 3306 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 3306 -j ACCEPT

同一個網段的均可以訪問 slave 的mysql。

3)腳本內容以下:

 iptables的設置建議使用腳本文件。

4)查看結果:

 能夠看到 upd沒有看到流量,主從複製須要用到udp表示懷疑。。。

5)開機啓動iptables:

 systemctl start iptables

6)master服務器上面iptables配置

先查看哪些端口在使用:

netstat -pan 包括了tcp和upd;

netstat -pant 只有tcp;

netstat -panu 只有udp;

 

查看某個端口對應的進程:

lsof -i:25

fuser -n tcp -v 25

fuser安裝命令:yum install psmisc

fuser -- 就是 file/tcp/udp 的用戶信息

相關文章
相關標籤/搜索