Archive for 10/30/13
Cấu hình Firewall Iptables trên CentOS / Redhat
Thứ Tư, 30 tháng 10, 2013
Posted by Admin
Tag :
Centos
Netfilter là firewall
cơ bản cho các máy chủ Linux.Nó được đưa
vào như một phần của các hệ điều hành kể trên và được cấu hình mặc định có hiệu
lực trên hệ thống.Firewall này được quản lý thông qua chương trình
iptables.Netfilter lọc các gói tin tại tần kernel, trước khi hệ thống hoặc các
phần mềm tầng ứng dụng xử lý gói tin đó.
Iptables
Config File
Mặc định trong RHEL / CentOS / Fedora file cấu hình của iptables là :
Mặc định trong RHEL / CentOS / Fedora file cấu hình của iptables là :
/etc/sysconfig/iptables
Xem
các rules (luật) mặc định:
Hãy gõ dòng lệnh sau:
Hãy gõ dòng lệnh sau:
iptables
--line-numbers -n -L
Bạn sẽ nhận được kết
quả trả về có nội dung tương tự như sau:
Chain
INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
4 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
8 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
4 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
8 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Bật
/ tắt / khởi động lại firewall
Sử dụng các lệnh sau:
Sử dụng các lệnh sau:
chkconfig
iptables on
service iptables start
# Khởi động lạifirewall
service iptables restart
# Tắt firewall
service iptables stop
service iptables start
# Khởi động lạifirewall
service iptables restart
# Tắt firewall
service iptables stop
Tìm
hiểu sâu hơn về Firewall iptables
Trong iptables có tất cả 4 kiểu sự kiện như sau:
Trong iptables có tất cả 4 kiểu sự kiện như sau:
§ INPUT: Các
gói tin gửi đến hệ thống từ bên ngoài.Sử dụng sự kiện này để chặn các cổng
(port) gửi đến như 80,25,110 hoặc các ip nguồn, subnet (chẳng hạn như
202.54.1.20/29).
§ OUTPUT: Chỉ
các gói tin được tạo ra từ hệ thống.
§ FORWARD: Các
gói tin được gửi thông qua thiết bị khác.Thường dùng trong trường hợp cài đặt
máy chủ Linux như một router.Ví dụ, eth0 kết nối với modem ADSL / Cable và eth1
kết nối với mạng LAN. Sử dụng FORWARD để gửi và nhận các gói tin truy cập từ
mạng LAN với Internet.
§ RH-Firewall-1-INPUT: Tùy
chỉnh các sự kiện, nó sẽ gọi đến 3 kiểu sự kiện trên là INPUT,OUTPUT và
FORWARD.
Quy
trình xử lý gói tin:
§ Bắt đầu từ rules đầu tiên
§ Chạy đến khi gói tin phù hợp với một điều kiện trong các
config đã cấu hình.
§ Nếu có sự phù hợp trong các rules, gói tin sẽ được xử lý
bằng REJECT, ACCEPT, DROP.
Các
cách xử lý gói tin:
§ ACCEPT cho
phép gói tin đi qua.
§ REJECT loại
bỏ và gửi thông báo lỗi đến địa chỉ nguồn gửi gói tin.
§ DROP xóa
gói tin mà không thông báo đến địa chỉ nguồn gửi gói tin.
Cấu
hình /etc/sysconfig/iptables
Bạn có thể sử dụng vi hoặc nano như sau:
Bạn có thể sử dụng vi hoặc nano như sau:
nano
/etc/sysconfig/iptables
Nội dung của file sẽ
theo mẫu bên dưới:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Chặn
tất cả gói tin:
Tìm các dòng:
Tìm các dòng:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
Chỉnh sửa thành:
:INPUT
DROP [0:0]
:FORWARD DROP [0:0]
:FORWARD DROP [0:0]
Ghi
lại log và xóa DROP các gói tin từ nguồn chỉ định:
Thêm các dòng sau vào file cấu hình, trước chữ COMMIT cuối cùng file:
Thêm các dòng sau vào file cấu hình, trước chữ COMMIT cuối cùng file:
-A INPUT
-i eth0 -s 10.0.0.0/8 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 172.16.0.0/12 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 192.168.0.0/16 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 224.0.0.0/4 -j LOG --log-prefix "IP DROP MULTICAST "
-A INPUT -i eth0 -s 240.0.0.0/5 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -d 127.0.0.0/8 -j LOG --log-prefix "IP DROP LOOPBACK "
-A INPUT -i eth0 -s 169.254.0.0/16 -j LOG --log-prefix "IP DROP MULTICAST "
-A INPUT -i eth0 -s 0.0.0.0/8 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 240.0.0.0/4 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 255.255.255.255/32 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 168.254.0.0/16 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 248.0.0.0/5 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 172.16.0.0/12 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 192.168.0.0/16 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 224.0.0.0/4 -j LOG --log-prefix "IP DROP MULTICAST "
-A INPUT -i eth0 -s 240.0.0.0/5 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -d 127.0.0.0/8 -j LOG --log-prefix "IP DROP LOOPBACK "
-A INPUT -i eth0 -s 169.254.0.0/16 -j LOG --log-prefix "IP DROP MULTICAST "
-A INPUT -i eth0 -s 0.0.0.0/8 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 240.0.0.0/4 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 255.255.255.255/32 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 168.254.0.0/16 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 248.0.0.0/5 -j LOG --log-prefix "IP DROP "
Ghi
lại log và DROP tất cả các gói tin:
Tìm dòng sau:
Tìm dòng sau:
-A
RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
COMMIT
Sửa thành:
-A
RH-Firewall-1-INPUT -j LOG
-A RH-Firewall-1-INPUT -j DROP
COMMIT
-A RH-Firewall-1-INPUT -j DROP
COMMIT
Mở
port
Để mở port 80 cho webserver thêm dòng sau vào trước COMMIT cuối file:
Để mở port 80 cho webserver thêm dòng sau vào trước COMMIT cuối file:
-A
RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A
RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
-A
RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
Để mở port 25 cho SMTP
server thêm dòng sau vào trước COMMIT cuối file:
-A
RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
-A
RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j
ACCEPT
….
Lưu lại file và
restart iptables:
#
service iptables restart
# iptables -vnL --line-numbers
# iptables -vnL --line-numbers
Hy vọng bài viết này
có thể giúp ích cho các bạn, giúp bạn hiểu hơn về hệ thống firewall cơ bản
nhưng rất hiểu quả: iptables.