Bảo vệ vps bằng IPTABLES trên linux

I.iptables

1.Lệnh cài đặt 

Trên centos 

# yum install iptables-services

Trên ubuntu

# apt-get install iptables

Kiểm tra phiên bản 

# iptables --version

2.Bật tắt iptables

Trên centos

#  service iptables start 

#  service iptables stop

Trên ubuntu

# service ufw start

# service ufw stop

3.Lệnh xem quy tắc của iptables 

# iptables -L

Các bạn sẽ thấy nội cung các quy tắc của iptables

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

 

# iptables -S

Các bạn sẽ thấy tình trạng của iptables

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

4.Mở port 

Vd: Mở port 80

Để mở port có 2 cách

+) Chỉnh sửa file /etc/sysconfig/iptables 

# nano /etc/sysconfig/iptables

Và thêm dòng sau vào

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 

+) Dùng dòng lệnh

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

5.Chặn cổng

Vd: Chặn cổng 80

# iptables -A INPUT -p tcp --dport 80 -j DROP

6.Cho phép 1 ip cụ thể đi qua port 

Vd: Chỉ cho phép ip 107.178.97.14 đi qua cổng 22

# iptables -A INPUT -p tcp -s 107.178.97.14 --dport 22  -j ACCEPT

7.Chặn 1 ip củ thể đi qua port 

Vd: Chặn ip 107.178.97.14 đi qua cổng 22

# iptables -A INPUT -p tcp -s 107.178.97.14 --dport 22  -j DROP

8.Chặn ping 

Nếu bạn muốn chặn ping từ địa chỉ khác dến server của mình thì bạn gõ lệnh sau

# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

Nếu bạn muốn chặn ping từ server của mình đến địa chỉ khác gõ lệnh sau

# iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP

9.Bảo vệ cơ sở dữ liệu của bạn (MySql / MariaDB)

Vd: Chặn tất cả các ip trừ ip 107.178.97.14 đi qua cổng 3306

# iptables -A INPUT -p tcp -s 107.178.97.14 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

10. Chặn SMTP

SMTP là Giao thức truyền tải thư điện tử ,nếu server của bạn không phải là web mail thì lên chặn lại

# iptables -A OUTPUT -p tcp --dport 25 -j DROP

11. Chặn DDos

Để phát hiện ra các ip có số lượng truy cập cao nhất các bạn gõ lệnh sau

# netstat -ntu | awk ’{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n

[root@maxserver ~]# netstat -ntu | awk ’{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
      1 212.129.37.29
      1 89.163.142.209
      1 Address
      1 servers)
      20 104.222.16.60
      22 108.61.5.83
      281 109.68.120.144

Như hình trên ta có số lượng kết nốt và theo sau là địa chỉ ip (vd: ta có địa chỉ ip 109.68.120.144 có số lượng kết nối vượt trội là 281)

+) Hạn chế số lượng kết nối đồng thời từ 1 địa chỉ ip

Xem địa chỉ ip kết nối với eth0 của bạn

# iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set

Kiểm tra các kết nối trong 60 giây nếu lượng kết nối cao hơn 5 thì sẽ drop kết nối đó

# iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 -j DROP

Thực hiện những quy tắc persistant trong trường hợp khởi động lại 

Trên centos

# iptables-save > /etc/sysconfig/iptables

Trên Ubuntu

# iptables-save > /etc/network/iptables

+) Hoặc các bạn có thể đặt lệnh như sau để giới hạn kết nối

# iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute --limit-burst 50 -j ACCEPT

và chạy thêm các lệnh sau để kích hoạt thêm một số tính năng bảo vệ

# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
# echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# echo 1 > /proc/sys/net/ipv4/conf/lo/rp_filter
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
# echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
# echo 0 > /proc/sys/net/ipv4/tcp_sack
# echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog

!2.Chặn quét port 

Máy chủ của bạn có thể đang bị 1 hacker chú ý và quét port để tấn công ta chặn quét port bằng lệnh sau

# iptables -N block-scan

# iptables -A block-scan -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN

# iptables -A block-scan -j DROP