程式扎記: [Linux 文章收集] CentOS : Block IP/Port With IPtables

標籤

2014年2月12日 星期三

[Linux 文章收集] CentOS : Block IP/Port With IPtables

來源自 這裡
Preface:
How do I block port number with iptables under Linux operating systems? Port numbers which are recognized by Internet and other network protocols, enabling the computer to interact with others. Each Linux server has a port number (see /etc/services file). For example:
- TCP port 80 - HTTP Server
- TCP port 443 - HTTPS Server
- TCP port 25 - Mail Server
- TCP port 22 - OpenSSH (remote) secure shell server
- TCP port 110 - POP3 (Post Office Protocol v3) server
- TCP port 143 - Internet Message Access Protocol (IMAP) — management of email messages
- TCP / UDP port 53 - Domain Name System (DNS)

Block Incoming Port:
The syntax is as follows to block incoming port using IPtables:
  1. /sbin/iptables -A INPUT -p tcp --destination-port {PORT-NUMBER-HERE} -j DROP  
  2.   
  3. ### interface section use eth1 ###  
  4. /sbin/iptables -A INPUT -i eth1 -p tcp --destination-port {PORT-NUMBER-HERE} -j DROP  
  5.   
  6. ### only drop port for given IP or Subnet ##  
  7. /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP-ADDRESS-HERE} -j DROP  
  8. /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP/SUBNET-HERE} -j DROP  
To block port 80 (HTTP server), enter (or add to your iptables shell script):
# /sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP
# /sbin/service iptables save

Block Incomming Port 80 except for IP Address 1.2.3.4
# /sbin/iptables -A INPUT -p tcp -i eth1 -s ! 1.2.3.4 --dport 80 -j DROP

Block Outgoing Port:
The syntax is as follows:
  1. /sbin/iptables -A OUTPUT -p tcp --dport {PORT-NUMBER-HERE} -j DROP  
  2.   
  3. ### interface section use eth1 ###  
  4. /sbin/iptables -A OUTPUT -i eth1 -p tcp --dport {PORT-NUMBER-HERE} -j DROP  
  5.   
  6. ### only drop port for given IP or Subnet ##  
  7. /sbin/iptables -A OUTPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP-ADDRESS-HERE} -j DROP  
  8. /sbin/iptables -A OUTPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP/SUBNET-HERE} -j DROP  
To block outgoing port # 25, enter:
# /sbin/iptables -A OUTPUT -p tcp --dport 25 -j DROP
# /sbin/service iptables save

You can block port # 1234 for IP address 192.168.1.2 only:
# /sbin/iptables -A OUTPUT -p tcp -d 192.168.1.2 --dport 1234 -j DROP
# /sbin/service iptables save


How Do I Log Dropped Port Details?
Use the following syntax:
  1. # Logging #  
  2. ### If you would like to log dropped packets to syslog, first log it ###  
  3. /sbin/iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "PORT 80 DROP: " --log-level 7  
  4.   
  5. ### now drop it ###  
  6. /sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP  
How Do I Block Cracker (IP: 123.1.2.3) Access To UDP Port # 161?
  1. /sbin/iptables -A INPUT -s 123.1.2.3 -i eth1 -p udp -m state --state NEW -m udp --dport 161 -j DROP  
  2.   
  3. # drop students 192.168.1.0/24 subnet to port 80  
  4. /sbin/iptables -A INPUT -s 192.168.1.0/24 -i eth1 -p tcp -m state --state NEW -m tcp --dport 80 -j DROP  

在 Linux 用 iptables 封鎖 ip:
在 Linux 下如果要封鎖 ip 的網路流量, 可以透過 iptables 實現, 指令如下:
# iptables -A INPUT -s IP_ADDRESS -j DROP

只要將想封鎖的 ip 方法上面的 IP_ADDRESS 位置便可以了.

有一種情況是不想將某個 ip 的全部流量封鎖, 只想封鎖指定的 port 埠號, 可以這樣做:
# iptables -A INPUT -s IP_ADDRESS -p tcp --destination-port 25 -j DROP

以上指令透過 iptables 的 --destination-port 選項, 指令只封鎖 port 25 的流量.

但如果只是簡單的輸入 iptables 封鎖 IP, 當主機 reboot 或者重新啟動 iptables 後, 所加入的規則便會全部刪除, 在 Redhat/Centos 下可以用以下指令將規則儲存到 config file 內:
# service iptables save

如果想刪除封鎖的話, 只要將上面 iptables 指令的 -A 改成 -D 便可以了, 例如:
# iptables -D INPUT -s IP_ADDRESS -j DROP
# service iptables save

如果你要 block 是一個 IP 的 range 如 221.0.0.0-221.255.255.255 , 則可以使用下面範例:
# iptables -I INPUT -s 221.0.0.0/255.0.0.0 -j DROP # 使用 netmask 255.0.0.0

# iptables -I INPUT -s 221.0.0.0/8 -j DROP # /8 指的是前面 8 個 bit 固定, 即 '211' 這個區段.

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!