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-prohibitedChain 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