Sử dụng Iptables

0
1353

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

 

[[email protected] ~]# 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

avatar
  Subscribe  
Notify of