DANH MỤC HÌNH ẢNH vii
DANH MỤC CÁC TỪ VIẾT TẮT ix
LỜI NÓI ĐẦU 1
CHƯƠNG 1 : TỔNG QUAN HỆ THỐNG MẠNG DOANH NGHIỆP 2
1.1. LÝ DO CHỌN ĐỀ TÀI 2
1.1.1. Lý do khách quan 2
1.1.2. Lý do chủ quan 2
1.2. MỤC TIÊU ĐỀ TÀI 2
1.3. GIỚI HẠN ĐỀ TÀI 2
1.3. MỤC ĐÍCH NGHIÊN CỨU 3
1.3.1. Mục đích trước mắt 3
1.3.2. Mục đích cụ thể 3
1.3.3. Mục đích lâu dài 3
1.5. THỂ THỨC NGHIÊN CỨU 3
1.5.1. Dàn ý chi tiết 3
1.5.2. Đối tượng nghiên cứu 3
1.5.3. Phương pháp nghiên cứu 4
1.5.3. Phương tiện nghiên cứu 4
1.6. HỆ THỐNG MẠNG DOANH NGHIỆP 4
1.6.1 Kiến trúc mạng Enterprise Cisco 4
1.6.2. Kiến trúc mạng Campus 5
1.6.3. Kiến trúc Data Center 5
1.6.4. Kiến trúc Branch 6
1.6.7. Kiến trúc Teleworker 7
1.6.8. Kiến trúc WAN và MAN 7
1.6.9. Mô hình an ninh-an toàn (Secure models) 9
1.7. MÔ HÌNH WAN 9
1.8. MÔ HÌNH MẠNG ĐỂ XUẤT 11
104 trang |
Chia sẻ: honganh20 | Ngày: 12/02/2022 | Lượt xem: 456 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng hệ thống mạng doanh nghiệp sử dụng mã nguồn mở, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ver. Server nhận được thông điệp và xử lý yêu cầu của client sau đó gởi trả cho client cũng bằng một thông điệp LDAP.
1.Kết quả thao tác bind
2.Search operation
3.Return entry #1
LDAP server
LDAP client
Hình 2.13 : Luồng thông điệp giữa client server
- Nếu client tìm kiếm thư mục và nhiều kết quả được tìm thấy, thì các kết quả này được gởi đến client bằng nhiều thông điệp.
5.Return code , msqid =2
6.Return code , msqid =1
4.Return entry , msqid =2
3.Return entry , msqid =1
2.Search operation, ,msqid =2
1.Search operation, ,msqid =1
LDAP server
LDAP client
Hình 2.14 : Những thông điệp Client gửi cho server
1.Thực hiện thao tác tìm kiếm
- Do nghi thức LDAP là giao thức hướng thông điệp nên client được phép phát ra nhiều thông điệp yêu cầu đồng thời cùng một lúc. Trong LDAP, message ID dùng để phân biệt các yêu cầu của client và kết quả trả về của server.
N+1 trả về mã thoát (Result code)
N entry thứ N-1 trả về cho client
3. Entry thứ 2 trả về cho client
2. Entry thứ 1 trả về cho clinet
LDAP server
LDAP client
Hình 2.15 : Nhiều kết quả tìm kiếm được trả về
- Việc cho phép nhiều thông điệp cùng xử lý đồng thời làm cho LDAP linh động hơn các nghi thức khác.
- Ví dụ như HTTP, với mỗi yêu cầu từ client phải được trả lời trước khi một yêu cầu khác được gởi đi, một HTTP client program như là Web browser muốn tải xuống cùng lúc nhiều file thì Web browser phải thực hiện mở từng kết nối cho từng file, LDAP thực hiện theo cách hoàn toàn khác, quản lý tất cả thao tác trên một kết nối.
2.5.1.2. Các thao tác của giao thức LDAP
- LDAP có 9 thao tác cơ bản, chia thành 3 nhóm thao tác chính:
+ Thao tác thẩm tra (interrogation) : search, compare. Hai thao tác này cho phép thực hiện thẩm tra trên thư mục.
+ Thao tác cập nhật (update): add, delete, modify, modify DN ( rename ). Những thao tác này cho phép thực hiện cập nhật thông tin trên thư mục.
+ Thao tác xác thực và điều kiển (authentiaction and control) : bind, unbind, abandon. Thao tác bind cho phép client tự xác định được mình với thư mục, thao tác này cung cấp sự xác nhận và xác thực chứng thư; unbind cho phép client huỷ bỏ phân đoạn làm việc hiện hành và cuối cùng là thao tác abandon cho phép client chỉ ra các thao tác mà kết quả client không còn quan tâm đến nữa.
2.5.1.3. Mô hình LDAP Security
- Vấn đề cuối cùng trong các mô hình LDAP là việc bảo vệ thông tin trong thư mục khỏi các truy cập không được phép. Khi thực hiện thao tác bind dưới một tên DN hay có thể client một người vô danh thì với mỗi user có một số quyền thao tác trên entry thư mục. Và những quyền nào được entry chấp nhận tất cả những điều trên gọi là truy cập điều kiển (access control). Hiện nay LDAP chưa định nghĩa ra một mô hình Access Control, các điều kiển truy cập này được thiết lập bởi các nhà quản trị hệ thống bằng các server software.
2.5.1.4. LDAP Data Interchange Format (LDIF)
- Ldap định nghĩa ra LDIF là dạng văn bản để mô tả thông tin thư mục. LDIF có thể mô tả một tập hợp các entry thư mục hay là tập hợp các cập nhật lên dữ liệu lên thư mục có thể trao đổi cho nhau bằng cách dùng LDIF.
- File LDIF thường được sử dụng để import dữ liệu mới vào trong directory của bạn hoặc thay đổi dữ liệu đã có. Dữ liệu trong file LDIF cần phải tuân theo quy luật có trong schema của LDAP directory.
- Schema là một loại dữ liệu đã được định nghĩa từ trước trong directory của bạn. Mọi thành phần được thêm vào hoặc thay đổi trong directory của bạn sẽ được kiểm tra lại trong schema để đảm bảo sự chính xác. Lỗi vi phạm schema sẽ xuất hiện nếu dữ liệu không đúng với quy luật đã có.
- Một entry là tập hợp của các thuộc tính, từng thuộc tính này mô tả một nét đặt trưng tiêu biểu của một đối tượng. Một entry bao gồm nhiều dòng :
+ dn : distinguished name - là tên của entry thư mục, tất cả được viết trên một dòng.
+ Sau đó lần lượt là các thuộc tính của entry, thuộc tính dùng để lưu giữ dữ liệu. Mỗi thuộc tính trên một dòng theo định dạng là “kiểu thuộc tính : giá trị thuộc tính”.
+ Thứ tự các thuộc tính không quan trọng, tuy nhiên để dễ đọc được thông tin nên đặt các giá trị objectclass trước tiên và làm sao cho các giá trị của các thuộc tính cùng kiểu ở gần nhau.
- Ví dụ: một mô tả của ldif
dn: o=it,dc=hcmute,dc=edu,dc=vn
objectClass: top
objectClass: organization
description: information technology
o: it given
Name: vungoc
uid: vungoc
cn: vungoc
telephoneNumber: 12345678910
sn: tuanh
entryUUID: fbcb85d5-e17c-494e-a36d-5932fb503125
createTimestamp: 20100326000527Z
- Một số các thuộc tính của file ldif
Tên
Mô tả
dn
Distinguished name: tên gọi để phân biệt
c
Country: 2 ký tự viết tắt của quốc gia
o
Organization- tổ chức
ou
Organization unit: đơn vị tổ chức
objectClass
Mỗi giá trị objectClass hoạt động như một khuôn mẫu cho các dữ liệu được lưu giữ trong một entry. Nó định nghĩa một bộ các thuộc tính phải được trình bày trong entry (Ví dụ : entry này có giá trị của thuộc tính objectClass là eperson, mà trong eperson có quy định cần có các thuộc tính là tên, email, uid ,thì entry này sẽ có các thuộc tính đó), còn bộ các thuộc tính tùy chọn có thể có hoặc có thể không có mặt.
givenName
tên
uid
id người dùng
cn
common name – tên thường gọi
telephoneNumber
Số điện thoại
sn
Surname: họ
userPassword
Mật khẩu
mail
Địa chỉ mail
facsimileTelephoneNumber
Số fax
createTimestamp
thời gian tạo ra entry này
creatorsName
tên người tạo ra entry này
pwdChangedTime
thời gian thay đổi mật khẩu
entryUUID
id của entry
2.5.2. Cài đặt và cấu hình
Phần này trình bày các bước cài đặt và cấu hình LDAP trên DC server.
2.5.2.1. Cài đặt Berkeley Database
Truy cập :
- Giải nén
- Vào thư mục db-.NC/build_unix
- ../dist/configure
- make
- make install
- Thêm biến môi trường trong file /etc/profile - export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib:/usr/local/BerkeleyDB.18.1.32/lib:/usr/lib/open ssl"
2.5.2.2. Cài đặt OpenLdap
- Chuẩn bị trước khi cài OpenLdap
+ Tắt firewalld :
systemctl stop firewalld
systemctl disable firewalld
+ Tắt Selinux:
sudo setenforce 0
sedi's/SELINUX=enforcing/SELINUX=disabled/g'/etc/sysconfig/selinux
sedi's/SELINUX=permissive/SELINUX=disabled/g'/etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed-i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
+ Khởi động lại máy để lấy lại cấu hình mới nhất : init 6
+ Cài đặt epel-release và cập nhật các gói phần mềm :
yum install epel-release -y
yum update –y
Cài đặt OpenLDAP#
+ Cài đặt openldap-servers và openldap-clients:
yum -y install openldap-servers openldap-clients
+ Sao chép file cấu hình và phân quyền :
cp/usr/share/openldapservers/DB_CONFIG.example/var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
+ Khởi động slapd:
systemctl start slapd
systemctl enable slapd
+ Thiết lập LDAP admin password, tạo mật khẩu :
slappasswd
New password:
Re-enter new password:
{SSHA}adminpasswd
+ Thêm mới file chroot.ldif:
cat > chrootpw.ldif << EOF
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}adminpasswd
EOF
+ Chạy lệnh sau để update thông từ file chroot.ldif:
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
Import các schemas:
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd-YEXTERNAL-Hldapi:///-f/etc/openldap/schema/inetorgperson.ldif
+ Thiết lập Manager Password, tạo mật khẩu :
slappasswd
New password:
Re-enter new password:
{SSHA}managerpassword
Thêm mới file chdomain.ldif:
cat > chdomain.ldif << EOF
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess:{0}to*bydn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"readbydn.base="cn=Manager,dc=nhanhoa,dc=local" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=nhanhoa,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=nhanhoa,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}managerpassword
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=nhanhoa,dc=local" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=nhanhoa,dc=local" write by * read
EOF
+ Chạy lệnh sau để update thông tin:
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
Thêm file basedomain.ldif:
cat > basedomain.ldif << EOF
dn: dc=nhanhoa,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: Nhanhoa Software
dc: Nhahoa
dn: cn=Manager,dc=nhanhoa,dc=local
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=nhanhoa,dc=local
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=nhanhoa,dc=local
objectClass: organizationalUnit
ou: Group
EOF
+ Update thông tin của basedomain:
ldapadd -x -D cn=Manager,dc=srv,dc=world -W -f basedomain.ldif
Enter LDAP Password: # password của manager
+ Sau khi thực hiện xong các bước chúng ta sử dụng lệnh sau để kiểm tra các entry:
slapcat
+ Để thêm mới một entry chúng ta cần tạo ra file ldif và update thông tin các file ldif đó và dùng slapcat để kiểm tra.
+ Ví dụ về thêm một entry user :
cat > adduser_1.ldif << EOF
dn: cn=adduser_1,ou=People,dc=nhanhoa,dc=local
objectClass: person
objectClass: inetOrgPerson
userPassword:: V2VsY29tZTEyMw==
sn: user
cn: adduser_1
EOF
Update file adduser_1.ldif để thông tin user được thêm vào cây LDAP :
ldapadd -x -D cn=Manager,dc=nhanhoa,dc=local -W -f adduser_1.ldif
2.5.2.3. Cài đặt PHPLDAPADMIN để quản lý LDAP bằng giao diện web
- Cài đặt httpd
yum -y install httpd
+ Mở file /etc/httpd/conf/httpd.conf và sửa đổi các thông tin sau:
# Tại dòng 151 sửa như sau :
AllowOverride All
# Tại dòng 164, sửa thông tin như sau:
DirectoryIndex index.html index.cgi index.php
# Thêm vào cuối file những cấu hình sau:
ServerTokens Prod
KeepAlive On
+ Khởi động httpd:
systemctl start httpd
systemctl enable httpd
Cài đặt PHP
yum -y install php php-mbstring php-pear
+ Mở file /etc/php.ini và sửa lại các thông tin như sau:
# Tại dòng 878 sửa lại timezone: date.timezone = "Asia/Ho_Chi_Minh"
+ Tải và cài dặt epel 7:
yum install wget -y
wget
rpm -ivh epel-release-latest-7.noarch.rpm
+ Cài đặt phpLDAPadminyum --enablerepo=epel -y install phpldapadmin
+ Mở file /etc/phpldapadmin/config.php và sửa lại thông tin như sau:
# Tại dòng 398:
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
+ Cho phép truy cập vào phpLDAPadmin:
cat > /etc/httpd/conf.d/phpldapadmin.conf << EOF
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
# Apache 2.4
Require all granted
# Apache 2.2
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
EOF
+ Khởi động lại httpd:
systemctl restart httpd
+ Truy cập : 127.0.0.1/phpldapadmin
Hình 2.16 : Giao diện web phpldapadmin
2.6. DỊCH VỤ NFS
2.6.1. Giới thiệu NFS
- Phát triển bởi Sun Microsystem năm 1984
- Cho phép client truy cập share file trên hệ thống mạng như local thông qua Open Network Computing Remote Procedure Call (ONC RPC)
- Gồm các version 2, 3 và 4
+ NFSv2
· Truyền dữ liệu bằng UDP
· Truyền file với kích thước tối đa 2GB
· Được định nghĩa trong RFC1094
+ NFSv3
· Truyền dữ liệu bằng UDP và TCP
· Truyền file với kích thước lớn hơn 2GB
· Hỗ trợ chế độ asynchronous
· Được định nghĩa trong RFC1813
· Synchronous: Khi dữ liệu thay đổi thì NFS sẽ ghi vào server buffer cache và sau đó server buffer cache sẽ ghi vào disk. Client phải đợi quá trình này hoàn tất
· Asynchronous: Khi dữ liệu thay đổi thì NFS sẽ ghi vào server buffer cache. Client không phải đợi quá trình ghi vào disk. Hệ thống hoàn toàn tin tưởng server buffer cache sẽ ghi thành công vào disk
+ NFSv3.1
· Cải thiện performance
· Nâng cao bảo mật
· Hỗ trợ clustering giữa các server và truy cập song song
2.6.2. Cài đặt và cấu hình
- NFS chia sẽ file, thư mục theo qui định trong file /etc/exports
- /etc/exports là file chứa danh sách các mount point để client truy cập. Mỗi dòng là một mount point
- Cấu trúc mỗi dòng /etc/exports như sau
()..()
/data 192.168.1.1(rw) 192.168.1.2(ro)
+ Host: hostname và IP
+ Group: @
+ Wildcard: ? *
+ Network: A.B.C.D/X
- Ngoài ra, NFS còn đỏi hỏi phải có một Daemon quan trọng dùng để quản lý các kết nối đó là Portmap. Mặc định portmap được cài đặt sẳn trên hệ thống. Portmap listen trên TCP port 111.
2.6.2.1. Các option
- secure (insecure): source port của client phải nhỏ hơn 1024
- Rw: cho phép client thay đổi trên share folder
- Ro: chỉ cho phép đọc - noaccess: không cho phép truy cập
- sync (async): đồng bộ hay không đồng bộ
- root_squash: không ánh xạ uid, gid giữa server và client (tất cả đều là nfsnobody)
- no_root_squash: ánh xạ uid, gid giữa server và client
2.6.2.2. Cài đặt
- Server cài đặt
+ nfs-utils-lib
+ nfs-utils
+ rpcbind
- Client cài đặt: nfs-utils-lib
2.6.2.3. Cấu hình
– Tạo thư mục chia sẻ tài nguyên trên server :
/var/nfs/share
– Sửa file /etc/exports để tạo mountpoint export, thêm nội dung sau:
/data 192.168.1.0/24 (rw, async) để chia sẻ cho mạng 192.168.1.0
– Khởi động NFS Server
# systemctl start rpcbind nfs-server
– Đặt NFS Server khởi động cùng server
# systemctl enable rpcbind nfs-server
– Kiểm tra port sử dụng bởi NFS
+ Rpcinfo-p
Hình 2.17 : Hiển thị các Port sử dụng NFS
– Cấu hình Firewall để cho phép truy cập
# firewall-cmd --permanent --add-service=nfs
#firewall-cmd --permanent --add-service=mountd
#firewall-cmd --permanent --add-service=rpc-bind
#firewall-cmd --permanent --add-port=2049/tcp
#firewall-cmd --permanent --add-port=2049/udp
#firewall-cmd –reload
– Kiểm tra mount point trên server
#showmount -e localhost
2.7. DỊCH VỤ SAMBA
2.7.1. Giới thiệu SAMBA
- Samba được tạo ra bởi Andrew Tridgell 1991
- Được phát triển dựa trên giao thức SMB và CIFS
- Samba là giao thức dùng để giao tiếp giữa Linux và Window với một số chức năng : Chia sẻ file, thư mục
- Distributed Filesystem (MS-DFS) namespace
- Quản lý printer, printer setting tập trung
- Chứng thực client login vào Window domain
- Cung cấp Windows Internet Name Service (WINS)
Hình 2.18 : Mô hình samba
- Các thành phần cơ bản của SAMBA
+ Tiến trình smbd: Lắng nghe trên port 139, trực tiếp xử lí các request truy cập đến thư mục chia sẻ trên Linux
+ Tiến trình nmbd: Lắng nghe trên port 137, chịu trách nhiệm cung cấp tên NetBIOS của samba server cho các request kết nối.
+ Tiến trình Winbind: Giao tiếp với DC và cung cấp thông về nhóm của user
2.7.2. Cài đặt và cấu hình SAMBA
3.7.2.1. Cài đặt :
- Server cài đặt: yum install samba-common samba
- Client cài: yum install samba-client
3.7.2.2. Cấu hình :
- smbd -V : Kiểm tra version của samba
- testparm -s /etc/samba/smb.conf: Kiểm tra file cấu hình
- Tạo một thư mục tại địa chỉ : /samba/anonymous_share và tiến hành set full permission cho thư mục. Bạn cũng có thể đặt tên thư mục tùy theo ý thích của mình.
# mkdir -p /samba/anonymous_share
# chmod -R 0777 /samba/anonymous_share
- Các port sử dụng trong SAMBA:
+ 137/udp: NetBIOS network browsing (nmbd).
+ 138/udp: NetBIOS name service (nmbd).
+ 139/tcp: File và printer sharing (smbd)
+ 445/tcp: NetBIOS-less CIFS port (smbd).
+ 901/tcp: SWAT giao diện web
- File cấu hình chính của SAMBA vi /etc/samba/smb.conf
[global]
dos charset = CP932
map to guest = Bad User
printcap name = cups
security = USER
server max protocol = SMB2
idmap config * : backend = tdb
cups options = raw
hosts allow = 127. 192.168.1.
[homes]
browseable = No
comment = Home Directories
inherit acls = Yes
read only = No
valid users = %S %D%w%S
[printers]
browseable = No
comment = All Printers
create mask = 0600
path = /var/tmp
printable = Yes
[print$]
comment = Printer Drivers
create mask = 0664
directory mask = 0775
force group = @printadmin
path = /var/lib/samba/drivers
write list = @printadmin root
[Anonymous share]
create mask = 0777
directory mask = 0777
guest ok = Yes
guest only = Yes
path = /samba/anonymous_share
read only = No
– Cấu hình SE Linux :
Chỉnh giá trị samba_enable_home_dirs thành On nếu bạn muốn share thư mục home qua Samba :
# setsebool -P samba_enable_home_dirs on
Nếu bạn tạo một thư mục mới, chẳng hạn như là các thư mục ở gốc, hãy gắn nhãn chúng là samba_share_t, khi đó SELinux sẽ để cho Samba đọc và viết trên nó. Hãy nhớ đừng gắn chúng với các nhãn như /etc/ và /home/.
Ở trường hợp của chúng ta, đã tạo thư mục anonymous, vậy hãy gắn nhãn nó như bên dưới :
# chcon -t samba_share_t /samba/anonymous_share/
Còn nếu chúng ta không muốn bị bối rối với SELinux, hãy disable nó theo hướng dẫn bên dưới :
Mở file SELinux theo đường dẫn /etc/sysconfig/selinux :
# vi /etc/sysconfig/selinux
– Set giá trị của SELinux thành disable :
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
– Reset máy để thay đổi có hiệu lực.
- Bên máy Win 7 , Bấm vào Start -> run. Điền vào địa chỉ IP của máy Samba server theo hình bên dưới và tạo folder trong file share rồi sang máy server kiểm tra
Hình 3.19 : Hiển thị mục share bên phía Server
– Kiểm tra folder vừa được tạo với lệnh :
ls -l /samba/anonymous_share/
– Được kết quả như sau :
total 0
drwxrwxrwx 2 nobody nobody 6 Apr 25 10:39 uneti
CHƯƠNG 3 : BẢO MẬT HỆ THỐNG VÀ CÁC GIẢI PHÁP CHO VIỆC KẾT NỐI MẠNG DÙNG RIÊNG RA INTERNET
3.1 DỊCH VỤ FIREWALL
3.1.1. Giới thiệu
- Firewall là thiết bị phần cứng hay phần mềm có khả năng ngăn chặn, kiểm tra thông tin của các packet đi qua thiết bị đó như IP, port, header
- Tùy theo từng loại firewall có thể lọc tới các layer khác nhau trong mô hình OSI
- Iptables là firewall mặc định trong mô hình OSI có thể lọc packet tới layer 4
- Bất kỳ Packet nào muốn đi vào firewall đều phải đi qua Input Chain.
- Bất kỳ Packet nào từ firewall muốn đi ra ngoài đều phải đi qua Output Chain
- Bất kỳ Packet nào từ PC khác gửi đếnmột Destination khác đều mà qua firewall phải đi qua Forward Chain
- Theo mặc định thì InputChain và Output Chain luôn được cấu hình ở chế độ Accept. Còn Forward luôn được thiết lập ở chế độ Deny
Hình 3.1 : Luồng sự kiện đi qua firewall
- Các bảng trong IPTABLES
+ Mangle: chịu trách nhiệm thay đổi các bits dịch vụ trong TCP header
+ Filter: chịu trách nhiệm lọc gói dữ liệu. Dựa theo 3 cách sau:
· Forward chain: lọc gói khi đến các server khác
· Input chain: lọc gói khi vào trong firewall
· Output chain: lọc gói khi ra khỏi firewall
+ NAT: gồm có 2 loại sau:
· Pre-routing chain: thay đổi địa chỉ đích của gói tin trước khi xảy ra quá trình định tuyến (DNAT)
· Post-routing chain: thay đổi địa chỉ nguồn của gói tin sau khi định tuyến (SNAT)
3.1.2. Cài đặt và cấu hình
3.1.2.1. Cài đặt:
Bắt đầu với CentOS 7, FirewallD thay thế iptables làm công cụ quản lý tường lửa mặc định.
Giờ vô hiệu hóa dịch vụ FirewallD và cài đặt iptables.
Điều kiện tiên quyết : Trước khi bắt đầu với hướng dẫn, hãy đảm bảo bạn đã đăng nhập với tư cách là người dùng có quyền sudo
Bước 1 : Vô hiệu hóa Tường lửa
Để tắt Tường lửa trên hệ thống CentOS 7 của bạn , hãy làm theo các bước sau:
Nhập lệnh sau để dừng dịch vụ FirewallD:
# systemctl stop firewalld
Vô hiệu hóa dịch vụ FirewallD để tự động khởi động khi khởi động hệ thống:
# systemctl disable firewalld
Che dấu dịch vụ FirewallD để ngăn chặn nó bắt đầu bởi một dịch vụ khác:
# systemctl mask --now firewalld
Bước 2 : Cài đặt và kích hoạt Iptables
Thực hiện các bước sau để cài đặt Iptables trên hệ thống CentOS 7:
Chạy lệnh sau để cài đặt iptables-servicegói từ kho CentOS:
# yum install iptables-services
Khi gói được cài đặt bắt đầu dịch vụ Iptables:
# systemctl start iptables
# systemctl start ip6tables
Cho phép dịch vụ Iptables tự động khởi động khi khởi động hệ thống:
# systemctl enable iptables
# systemctl enable ip6tables
Kiểm tra trạng thái dịch vụ iptables với:
# systemctl status iptables
# systemctl status ip6tables
Để kiểm tra các quy tắc iptables hiện tại, hãy sử dụng các lệnh sau:
# iptables -nvL
# ip6tables -nvL
Theo mặc định, chỉ có cổng SSH 22 được mở. Đầu ra sẽ trông giống như thế này:
Hình 3.2 : Kết quả hiện thị thành công cài đạt Iptable tại Port 22
3.1.2.2. Cấu hình
- Target là cơ chế hoạt động trong iptables, dùng để nhận diện và kiểm tra packet. Các target được xây dựng sẵn trong iptables như: + ACCEPT: iptables chấp nhận chuyển data đến đích.
+ DROP: iptables sẽ xóa những packet này.
+ LOG: thông tin của packet sẽ gởi vào syslog daemon iptables tiếp tục xử lý luật tiếp theo trong bảng mô tả luật. Nếu luật cuối cùng không match thì sẽ drop packet. Với tùy chọn thông dụng là --log-prefix=”string”
+ REJECT: ngăn chặn packet và gởi thông báo cho sender. Với tùy chọn thông dụng là --reject-with qualifier
+ DNAT: thay đổi địa chỉ đích của packet. Tùy chọn là --to-destination ipaddress. + SNAT: thay đổi địa chỉ nguồn của packet. Tùy chọn là --to-source [address][:-]
+ MASQUERADING: được sử dụng để thực hiện kỹ thuật NAT (giả mạo địa chỉ nguồn với địa chỉ của interface của firewall). Tùy chọn là
[--to-ports [-]]chỉ định dãy port nguồn sẽ ánh xạ với dãy port ban đầu
- Các options trong iptables
+ t : Chỉ định bảng cho iptables bao gồm: filter, nat, mangle tables.
+ j : Nhảy đến một target chain khi packet thỏa luật hiện tại.
+ A: Thêm luật vào cuối iptables chain.
+ F: Xóa tất cả các luật trong bảng lựa chọn
+ p : Mô tả các giao thức bao gồm: icmp, tcp, udp và all
+ s : Chỉ định địa chỉ nguồn
+ d : Chỉ định địa chỉ đích
+ i : Chỉ định “input” interface nhận packet
+ o : Chỉ định “output” interface chuyển packet ra ngoài
- file cấu hình vi /etc/sysconfig/iptables
Hình 3.2 : Nội dung file cấu hình iptables
- Bước 1: Xóa tất cả các rules
+ iptables -F
- Bước 2: Đặt rules mặc định cho các chain là DROP hay ACCEPT
+ iptables -P INPUT DROP
+ iptables -P OUTPUT DROP
+ iptables -P FORWARD DROP
- Bước 3: Có chép các gói tin liên quan ra vào hệ thống
+ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+ iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+ iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
- Bước 4: Cấu hình các rules cho các tables và các chain theo ý muốn
+ vd1: cấu hình cho phép ssh vào firewall
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
+ vd2: cho phép từ iptables ping ra ngoài
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT
+ vd3: Cho phép mạng internal truy cập internet
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 53 -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
+ vd4: Chuyển đổi địa chỉ đích. Muốn truy cập google.com bằng địa chỉ 1.1.1.1
iptables -t nat -A PREROUTING -i eth1 -d 1.1.1.1 -j DNAT --to-destination 73.125.223.194
+ vd5: NAT webserver địa chỉ 172.16.1.152 ra mạng internet
iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.151 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.152:80
+ vd6: cấu hình proxy và iptables transparent port mặc định của proxy 3128
+ cấu hình phân giải DNS
iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
+ cấu hình cho ra web
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
+ cấu hình forward DNS và Web giữa 2 interface của firewall
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
+ cấu hình NAT
iptables -A INPUT -i eth1 -p tcp -m multiport --dport 80,3128 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -d 0/0 -p tcp --dport 80 -j DNAT --todestination 192.168.1.151:3128
+ Đối với mô hình mạng đã đề xuất. Cấn cấu hình cho client mạng nội bộ truy cập đến các sever. Đa phần các rule này là FORWARD vì firewall chỉ làm trung gian chuyển tiếp giữa client và server. Tùy theo dịch vụ, sẽ mở port tương ứng.
+ Danh sách mô tả các luật:
· Client xin địa chỉ IP, firewall làm DHCP replay agent nhận yêu cầu từ client và gởi đến DHCP server nên loại luật là INPUT và OUPUT
Các file đính kèm theo tài liệu này:
- luan_van_xay_dung_he_thong_mang_doanh_nghiep_su_dung_ma_nguo.docx