Iptables là một hệ thống tường lửa (Firewall) tiêu chuẩn được cấu hình, tích hợp mặc định trong hầu hết các bản phân phối của hệ điều hành Linux (CentOS, Ubuntu…). Iptables hoạt động dựa trên việc phân loại và thực thi các package ra/vào theo các quy tắc được thiết lập từ trước.
iptables
Trong bài viết này, mình sẽ hướng dẫn sử dụng Iptables một cách đơn giản và dễ dàng nhất để các bạn có thể tự thiết lập VPS firewall cho riêng mình, cũng như mở port theo nhu cầu.
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
12.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
13.Block Outgoing
Block Access To Outgoing IP Address
The following rule will block ip address 202.54.1.22 from making any outgoing connection:
iptables -A OUTPUT -d 202.54.1.22 -j DROP
The above will block chat server ip address or site having dangerous contains such as viruses or malware.
Block Access To Outgoing IP TCP / UDP Port Number
To block specific port number such tcp port # 5050, enter:
iptables -A OUTPUT -p tcp --dport 5050 -j DROP
To block tcp port # 5050 for an IP address 192.168.1.2 only, enter:
iptables -A OUTPUT -p tcp -d 192.168.1.2 --dport 5050 -j DROP
Finally, you need to save your firewall rules. Under CentOS / RHEL / Fedora Linux, enter:
# /sbin/service iptables save
OR
# /etc/init.d/iptables save
Leave a Reply