linux設置防火牆策略和端口的檢測


linux設置防火牆策略

CentOS 6.8

iptables v1.4.7


iptables -L #查看現有防火牆所有策略

iptables -F #清除現有防火牆策略

只允許特定流量通過,禁用其他流量

#開放redis端口
iptables -A INPUT -p tcp -m tcp --dport 6379 -j ACCEPT

#開放MySql端口
iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

#開放WebServer端口
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

#開放SMTP端口
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT

#開放ssh端口
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

#允許本地回環接口(即允許本機訪問本機)
iptables -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT

#開放ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#允許已建立的或相關連的通行?這一行要加上,否則無法訪問外網
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#開放本機所有向外的訪問
iptables -A OUTPUT -j ACCEPT

#禁用某個訪問異常多的ip

 [weblogic@host-192-168-149-56 ~]$ netstat -tn|grep "192.168.149.56"|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -rn

  26 10.212.132.123

  1 10.204.130.158    #首先檢查出服務器上各個ip的連接次數;其中netstat -tn命令的-t是檢測所有連接的tcp,-n是檢測到的不進行域名解析

  iptables -I INPUT 1 -s 10.212.132.123 -j DROP #把這個ip地址禁用掉

保存配置
service iptables save

重啟
service iptables restart

端口相關的概念:

在網絡技術中,端口(Port)包括邏輯端口和物理端口兩種類型。物理端口指的是物理存在的端口,如ADSL Modem、集線器、交換機、路由器上用 於連接其他網絡設備的接口,如RJ-45端口、SC端口等等。邏輯端口是指邏輯意義上用於區分服務的端口,如TCP/IP協議中的服務端口,端口號的范圍從0到65535,比如用於瀏覽網頁服務的80端口,用於FTP服務的21端口等。由於物理端口和邏輯端口數量較多,為了對端口進行區分,將每個端口進行了編號,這就是端口號

端口按端口號可以分為3大類:

1:公認端口(Well Known Port)

公認端口號從0到1023,它們緊密綁定與一些常見服務,例如FTP服務使用端口21,你在 /etc/services 里面可以看到這種映射關系。

2:注冊端口(Registered Ports):

從1024到49151。它們松散地綁定於一些服務。也就是說有許多服務綁定於這些端口,這些端口同樣用於許多其它目的.

3: 動態或私有端口(Dynamic and/or Private Ports)

動態端口,即私人端口號(private port numbers),是可用於任意軟件與任何其他的軟件通信的端口數,使用因特網的傳輸控制協議,或用戶傳輸協議。動態端口一般從49152到65535

Linux中有限定端口的使用范圍,如果我要為我的程序預留某些端口,那么我需要控制這個端口范圍。/proc/sys/net/ipv4/ip_local_port_range定義了本地TCP/UDP的端口范圍,你可以在/etc/sysctl.conf里面定義net.ipv4.ip_local_port_range = 1024 65000

[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000
[root@localhost ~]#  echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range


端口與服務的關系

端口有什么用呢?我們知道,一台擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。那么,主機是怎樣區分不同的網絡服務呢?顯然不能只靠IP地址,因為IP 地址與網絡服務的關系是一對多的關系。實際上是通過“IP地址+端口號”來區分不同的服務的。

端口號與相應服務的對應關系存放在/etc/services文件中,這個文件中可以找到大部分端口。

如何檢查端口是否開放,其實不整理,還不知道有這么多方法!

1:nmap工具檢測開放端口
nmap是一款網絡掃描和主機檢測的工具。nmap的安裝非常簡單,如下所示rpm安裝所示。

[root@DB-Server Server]# rpm -ivh nmap-4.11-1.1.x86_64.rpm 
warning: nmap-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:nmap                   ########################################### [100%]
[root@DB-Server Server]# rpm -ivh nmap-frontend-4.11-1.1.x86_64.rpm 
warning: nmap-frontend-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:nmap-frontend          ########################################### [100%]
[root@DB-Server Server]#

關於nmap的使用,都可以長篇大寫特寫,這里不做展開。如下所示,nmap 127.0.0.1 查看本機開放的端口,會掃描所有端口。 當然也可以掃描其它服務器端口

[root@DB-Server Server]# nmap 127.0.0.1
 
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2016-06-22 15:46 CST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1674 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
111/tcp  open  rpcbind
631/tcp  open  ipp
1011/tcp open  unknown
3306/tcp open  mysql
 
Nmap finished: 1 IP address (1 host up) scanned in 0.089 seconds
You have new mail in /var/spool/mail/root
[root@DB-Server Server]# 
clip_image001
2:netstat 工具檢測開放端口

[root@DB-Server Server]# netstat -anlp | grep 3306
tcp 0 0 :::3306 ::😗 LISTEN 7358/mysqld
[root@DB-Server Server]# netstat -anlp | grep 22
tcp 0 0 :::22 ::😗 LISTEN 4020/sshd
tcp 0 52 ::ffff:192.168.42.128:22 ::ffff:192.168.42.1:43561 ESTABLISHED 6198/2
[root@DB-Server Server]#
clip_image002

如上所示,這個工具感覺沒有nmap簡潔明了。當然也確實沒有nmap功能強大。

3:lsof 工具檢測開放端口

[root@DB-Server Server]# service mysql start
Starting MySQL......[  OK  ]
[root@DB-Server Server]# lsof -i:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME
mysqld  7860 mysql   15u  IPv6  44714       TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[  OK  ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]# 
clip_image003

[root@DB-Server Server]# lsof -i TCP| fgrep LISTEN
cupsd     3153    root    4u  IPv4   9115       TCP localhost.localdomain:ipp (LISTEN)
portmap   3761     rpc    4u  IPv4  10284       TCP *:sunrpc (LISTEN)
rpc.statd 3797 rpcuser    7u  IPv4  10489       TCP *:1011 (LISTEN)
sshd      4020    root    3u  IPv6  12791       TCP *:ssh (LISTEN)
sendmail  4042    root    4u  IPv4  12876       TCP localhost.localdomain:smtp (LISTEN)

4: 使用telnet檢測端口是否開放

服務器端口即使處於監聽狀態,但是防火牆iptables屏蔽了該端口,是無法通過該方法檢測端口是否開放的。

5:netcat工具檢測端口是否開放。
[root@DB-Server ~]# nc -vv 192.168.42.128 1521
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
[root@DB-Server ~]# nc -z 192.168.42.128 1521; echo $?
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
0
[root@DB-Server ~]#  nc -vv 192.168.42.128 1433
nc: connect to 192.168.42.128 port 1433 (tcp) failed: No route to host


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM