Buổi 5. SAMBA, DNSFirewall

📝 ĐỀ BÀI

1. Cài đặt CentOS

Câu 1.1

Thực hiện cài đặt CentOS 6 (hoặc CentOS 7, 8) vào máy tính cá nhân (hoặc máy ảo)

Link file ISO CentOS 8open in new window

Câu 1.2

Cài đặt dịch vụ Web Server trên máy ảo. Tạo một trang web đơn giản index.html lưu vào thư mục /var/www/html/myweb

Đã làm trong bài thực hành Buổi 4

2. Cài đặt và cấu hình SAMBA

💡 KIẾN THỨC

Samba là dịch vụ chia sẻ file giữa các nền tảng khác nhau như WindowsLinux bằng cách sử dụng giao thức SMB/CIFS.

Câu 2.1

Cài đặt dịch vụ Samba bằng lệnh :

$ yum install samba

Screenshot from 2021-05-09 11-04-12.png

==> Bạn có thể gõ samba --version để kiểm tra đã cài đặt chưa.

Câu 2.2

Tạo người dùng và nhóm người dùng chia sẻ dữ liệu:

$ adduser tuanthai
$ passwd tuanthai
$ groupadd lecturers
$ usermod -aG lecturers tuanthai

Screenshot from 2021-05-09 11-06-34.png

Câu 2.3

Tạo thư mục cần chia sẻ và phân quyền :

$ mkdir /data
$ chgrp lecturers /data
$ chmod -R 775 /data

Câu 2.4

Cấu hình dịch vụ SAMBA

$ cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
$ nano /etc/samba/smb.conf
...
[data]
    comment = Shared folder for lecturers
    path = /data
    browsable = yes
    writable = yes
    read only = no
    valid users = @lecturers

💡 GIẢI THÍCH

  • comment : chú thích

  • path : đường dẫn đến thư mục cần kết nối Samba

  • browsafe : kiểm soát việc chia sẻ file có được nhìn thấy trong chế độ thực

  • writable : Cho phép ghi file (đảo ngược với read only)

  • read only : Chỉ cho phép đọc (đảo ngược với read only)

  • valid users : người dùng có hiệu lực

==> Tham khảo cách config tại đâyopen in new window

Câu 2.5

Thêm người dùng cho dịch vụ SAMBA bằng lệnh :

$ smbpasswd -a tuanthai

Screenshot from 2021-05-09 11-17-34.png

Câu 2.6

Cấu hình SELINUX cho phép Samba

$ setsebool -P samba_export_all_rw on
$ setsebool -P samba_enable_home_dirs on
  • samba_export_all_rw : cho phép xuất bất kỳ files hay diretories nào, cho phép quyền đọcghi

  • samba_enable_home_dirs on : cho phép chia sẻ thư mục chính của người dùng

==> Tham khảo tại đâyopen in new window

Câu 2.7

Tắt tường lửa

$ service iptables stop

Screenshot from 2021-05-09 11-19-36.png

Câu 2.8

Khởi động lại dịch vụ Samba :

$ service smb start

Câu 2.9

Trên máy Windows, bật tính năng hỗ trợ SMB1 :

Mở Control PanelProgramsTurn Windows feature on or offSMB 1.0/CIFS FIle Sharing Support ➞ Chọn SMB 1.0/CIFS Client

Screen Shot 2021-05-07 at 13.07.25.png

==> Cài CentOS trên ổ cứng, không sử dụng máy ảo, nên không làm bước này

Câu 2.10

Trên File Exployer, chọn tính năng Add a network location để kết nối tới Samba server sử dụng địa chỉ \\<IP máy CentOS>\data

Thực hiện các bước sau để kết nối giao thức Samba trên CentOS :

  • B1: Vào Nautilus (hay còn gọi là Finder) ⇨ Chọn Other Locations ⇨ Điền IP của máy chạy Samba ⇨ Chọn Connect

  • B2: Chọn Registerd User và điền tài khoảnmật khẩu đăng ký Samba ở trên ⇨ Chọn Connect

  • B3: Bạn có thể tạo file (ví dụ tạo file1 như sau)

    💡 FACT

    Vào máy kết nối Samba kiểm tra như sau :

    Screenshot from 2021-05-09 12-19-36.png

    ==> Như đã thấy file1 đã xuất hiện

3. Cài đặt và cấu hình dịch vụ DNS

💡 KIẾN THỨC

DNS (Domain Name System) là giải pháp dùng tên miền thay cho địa chỉ IP khó nhớ khi sử dụng các dịch vụ mạng. Truy cập đến website của Khoa CNTT-ĐH Cần Thơ bằng địa chỉ nào dễ hơn ?

http://203.162.36.146http://cit.ctu.edu.vn

Bạn cần phải cài đặt phần mềm BIND trên CentOS để phân giải tên miền qtht.com.vn

Câu 3.1

Cài đặt BIND và các công cụ cần thiết :

$ yum install bind bind-utils

Screenshot from 2021-05-09 12-33-54.png

==> Bạn có thể gõ named -v để kiểm tra bind-utils đã cài chưa.

Câu 3.2

Cài hình DNS server :

$ nano /etc/named.conf 
...
option {
    listen-on port 53 { 127.0.0.1; any;};
    ...
    allow-query    { localhost; any;};
    recursion yes;
    ...
};

loggin {
    ...
    };
};

zone "." IN {
    ...
};

zone "<tên miền>" IN {
    type master;
    file "forward.qtht";
    allow-update { none; };
};

zone "<24bit mạng đảo chiều>.in-addr.arpa" IN {
    type master;
    file "reverse.qtht";
    allow-update { none; };
};
...

Câu 3.3

Tạo tập tin cấu hình phân giải xuôi:

$ cp /var/named/named.localhost /var/named/forward.qtht
$ chgrp named /var/named/forward.qtht
$ nano /var/named/forward.qtht
$TTL 1D
@   IN  SOA @ <tên miền>. (
0     ;Serial
1D    ;Refresh
1H    ;Retry
1W    ;Expire
3H    ;Minimum TTL
)
@    IN    NS    dns.qtht.com.vn.
dns  IN    A    <IP máy>
www  IN    A    <IP máy>
htql IN    A    8.8.8.8

Screenshot from 2021-05-09 08-35-44.png

Câu 3.4

Tạo tập tin cấu hình phân giải ngược :

$ cp /var/named/forward.qtht /var/named/reverse.qtht
$ chgrp named /var/named/reverse.qtht
$ nano /var/named/reverse.qtht
$TTL 1D
@   IN  SOA @ qtht.com.vn. (
0    ;Serial
1D    ;Refresh
1H    ;Retry
1W    ;Expire
3H    ;Minimum TTL
)
@    IN   NS   dns.qtht.com.vn.
dns  IN   A    <IP máy>
245  IN   PTR  www.qtht.com.vn.

Screenshot from 2021-05-09 08-36-00.png

Câu 3.5

Tắt tường lửa

$ service iptables stop

Screenshot from 2021-05-09 11-19-36.png

Câu 3.6

Khởi động dịch vụ DNS

$ service named start

Screenshot from 2021-05-09 13-09-56.png

Câu 3.7

Kiểm tra kết quả

$ nslookup www.qtht.com.vn <địa chỉ IP máy>
  • Phân giải xuôi

    Screenshot from 2021-05-09 08-38-46.png

  • Phân giải ngược

    Screenshot from 2021-05-09 08-38-37.png

Câu 3.8

Trên máy vật lý, cấu hình DNS ServerIP của máy ảo CentOS. Sau đó mở trình duyệt web và truy cập vào địa chỉ http://www.qtht.com.vn/myweb

Screenshot from 2021-05-09 08-33-53.png

💡 FACT

Cũng có thể dùng điện thoại để kết nối (Yêu cầu xài chung Wifi và thiết lập DNS custom )

a4d2f03b003ff561ac2e.png 8f08fed60ed2fb8ca2c3.png

4. Cấu hình tường lửa iptables

💡 KIẾN THỨC

iptables là một bộ công cụ được tích hợp trên hệ điều hành Linux để thực hiện chức năng tường lửa theo cơ chế lọc gói tin (package filtering). Iptables theo dõi lưu lượng mạng đếnđi của một máy tính và lọc nó dựa trên các luật (rules) do người dùng tự định nghĩa trước đó.

Câu 4.1

Thực thi tường lửa

$ service iptables start

Screenshot from 2021-05-09 09-13-04.png

Câu 4.2

Hiển thị các rules hiện có trên iptables

$ iptables -v -L --line-numbers

Screenshot from 2021-05-09 09-18-28.png

💡 GIẢI THÍCH

iptables_filter.png
Giải thíchINPUTFORWARDOUTPUT
Trừu tượngKiểm soát các gói đến từ route đến server của bạnKiểm soát các gói bắt nguồn từ server của bạn đến nhà mạngKiểm soát các gói được chuyển tiếp bởi server của bạn
Dễ hiểuLọc các gói dành cho server củ bạnLọc các gói đến server của bạn mà card wifi khác có thể truy cậpLọc các gói có nguồn gốc từ server của bạn

Câu 4.3

Tạo rules cho phép các máy khác truy cập tới dịch vụ Web trên server

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

Tham khảo cách dùng iptables căn bản tại đâyopen in new window

  • Trước khi cho máy khác truy cập với dịch vụ Web Server :

    33363b9e5d9fa8c1f18e.png
  • Sau khi cho máy khác truy cập tới dịch vụ Web Server bằng lệnh trên :

    Screenshot from 2021-05-09 09-50-53.png

    a4d2f03b003ff561ac2e.png

Câu 4.4

Tạo rules để cho máy vật lý có thể ping tới server, các máy khác KHÔNG ping được

$ iptables -I INPUT 2 -p icmp -s <IP cho phép> -j ACCEPT

Sử dụng 1406098-200.png Termuxopen in new window của Android để thao tác các lệnh

🤔 LƯU Ý

Android đang sử dụng chung mạng Wifi của máy dùng iptables và có IP như sau : 192.168.10.101 (riêng máy này thôi !)

  • Trước khi thiết lập rules chặn ping :

    • icons8-android.pngAndroid sử dụng ping

    • icons8-centos.png CentOS sử dụng ping

      Screenshot from 2021-05-09 09-54-50.png

    ==> Cả hai vẫn ping được

  • Sau khi thiết lập rules chặn ping bằng lệnh trên :

    Screenshot from 2021-05-09 09-58-15.png

    🤔 LƯU Ý

    qtht.com.vn tương đương 192.168.10.135 vì đã cấu hình DNS bên trên

    • icons8androidpngAndroid sử dụng ping

    • icons8centospng CentOS sử dụng ping

      Screenshot from 2021-05-09 09-54-50.png

==> Sau khi thiết lập rules chỉ có máy có IP:192.168.10.135ping được đến server.

Câu 4.5

Tạo rules để KHÔNG cho người dùng trên máy CentOS truy cập tới địa chỉ facebook.com

$ iptables -A OUTPUT -p tcp -m string --string facebook --algo kmp -j REJECT

Sử dụng lệnh trên để gửi gói truy cập đến server của Facebook :

Screenshot from 2021-05-09 10-13-39.png

==> Sau khi đã áp dụng rules thì chúng ta không thể truy cập facebook được nữa :

Screenshot from 2021-05-09 10-16-54.png

Câu 4.6

Lưu và phục hồi các rules của iptables

$ cp /etc/sysconfig/iptables /etc/sysconfig/iptables.orig
$ iptables-save > /etc/sysconfig/iptables
$ iptables-restore < /etc/sysconfig/iptables

Trước khi tắt iptables, ta nên sao lưu (backup) lại rules bằng lệnh :

$ iptables-save > /etc/sysconfig/iptables

🤔 LƯU Ý

Vì sau khi tắt iptableskhởi động lại, các rules thiết lập trước đó sẽ reset như sau :

Screenshot from 2021-05-09 10-20-30.png

==> Khi đó ta có thể khôi phục (restore) lại rules đã sao lưu (backup) bằng lệnh sau:

$ iptables-restore < /etc/sysconfig/iptables

🧚 KẾT QUẢ

Screenshot from 2021-05-09 10-20-59.png

(Vì mình đã xoá rules chặn facebook trước đó nên không còn ở OUTPUT nữa)

Cập nhật lúc :
Tác giả: Zenfection, Zenfection