Shell là một cầu nối giao tiếp giữa người dùng và hệ điều hành Linux Shell quét dòng lệnh đưa vào máy tính,cấu hình môi trường thực thi và tạo tiến trình để thực hiện lênh Nói cách khác,Shell như là một thông dịch lệnh :Shell là một cầu nối giao tiếp giữa người dùng và hệ điều hành Linux Shell quét dòng lệnh đưa vào máy tính,cấu hình môi trường thực thi và tạo tiến trình để thực hiện lênh Nói cách khác,Shell như là một thông dịch lệnh :
Trang 1TÌM HIỂU VỀ
SHELL SCRIPTS
Trang 2• Nội Dung
• 1.Tổng Quan
• 2.giới thiệu về shell script
• 3.cú pháp của shell script
• 4.các cấu trúc phức tạp
TÌM HIỂU VỀ SHELL SCRIPT
Trang 3• Shell là gì ?
- Shell là một cầu nối giao tiếp giữa người dùng và hệ điều hành Linux
- Shell quét dòng lệnh đưa vào máy tính,cấu hình môi
trường thực thi và tạo tiến trình để thực hiện lênh
- Nói cách khác,Shell như là một thông dịch lệnh :
TÌM HIỂU VỀ SHELL SCRIPT
Trang 7• Để xem hệ thống hỗ trợ những loại shell nào có thể dùng lệnh:
cat /etc/shells hoặc chsh –l
TÌM HIỂU VỀ SHELL SCRIPT
Trang 8• Để xem hệ thống đang chạy shell dùng lệnh:
#echo $SHELL
TÌM HIỂU VỀ SHELL SCRIPT
Trang 9• Chúng ta có thể thay đổi shell mặc định sang một shell khác với sự trợ giúp của lệnh chsh.
TÌM HIỂU VỀ SHELL SCRIPT
Trang 10• Để soạn thảo 1 shell script có thể dùng các trình soạn thảo có sẵn như:
• vi ,emacs hoặc dùng lệnh cat
• Thực thi 1 shell script:
Trang 11• Ví dụ:
TÌM HIỂU VỀ SHELL SCRIPT
Trang 12TÌM HIỂU VỀ SHELL SCRIPT
Trang 13Cú pháp ngôn ngữ shell
• Biến môi trường:
- HOME : đường dẫn thư mục riêng của người dùng,
- MAIL: đường dẫn thư mục chứa hộp thư người dùng,
- PATH: thư mục dùng để tìm các file thể hiện nội dung lệnh,
- PS1: dấu mời ban đầu của shell (ngầm định là $),
- PS2: dấu mời thứ 2 của shell (ngầm định là >),
- PWD: Thư mục hiện tại người dùng đang làm,
- SHELL: Đường dẫn của shell (/bin/sh hoặc /bin/ksh)
- TERM: Số hiệu gán cho trạm cuối,
- USER: Tên người dùng đã vào hệ thống,
TÌM HIỂU VỀ SHELL SCRIPT
Trang 14• Cú Pháp Ngôn Ngữ Shell
• Biến tự động: Biến tự động (hay biến-chỉ đọc, tham số vị trí) là các biến do shell đã có sẵn; tên các biến này cho trước Có 10 biến tự động:
-$0,$1,$2,…$9
TÌM HIỂU VỀ SHELL SCRIPT
Trang 15• Ví dụ :
• Cú Pháp Ngôn Ngữ Shell TÌM HIỂU VỀ SHELL SCRIPT
Trang 16• Biến người dùng:
<tên biến> = <giá trị> :phép gán.
$<tên biến> :phép lấy giá trị.
-Ta có thể khai báo một biến nhưng nó có giá trị NULL như trong những cách sau:
Trang 17• Khai Báo Biến Bằng Lệnh Declare :
-r (readonly):Khai báo biến chỉ có một giá trị ban đầu và không thay đổi được giá trị đó.
-i (integer): Khai báo biến kiểu nguyên.
-a (array) : Khai báo mảng.
-f (function) :Khai báo hàm.
-x (export):Khai báo biến bên ngoài môi trường.
-x var =$value:Khai báo giá trị ban đầu cho biến.
TÌM HIỂU VỀ SHELL SCRIPT
• Cú Pháp Ngôn Ngữ Shell
Trang 19• Dấu huyền (`),dấu nháy đơn(‘ ’) và nháy kép (“ “).
• Cú Pháp Ngôn Ngữ Shell TÌM HIỂU VỀ SHELL SCRIPT
Trang 20• Dấu huyền (`),dấu nháy đơn(‘ ’) và nháy kép (“ “).
• Cú Pháp Ngôn Ngữ Shell TÌM HIỂU VỀ SHELL SCRIPT
Trang 21• Tính toán trong shell:
-Lệnh expr : Trong biểu thức, các toán tử và toán hạng phải cách nhau bởi khoảng trắng.
+ cộng - trừ
\* nhân / chia
• Cú Pháp Ngôn Ngữ Shell TÌM HIỂU VỀ SHELL SCRIPT
Trang 22• Tính toán trong shell:
+ cộng - trừ
\* nhân / chia
**lưu ý:lệnh expr chỏ dùng cho tính toán trên số nguyên.
• Cú Pháp Ngôn Ngữ Shell TÌM HIỂU VỀ SHELL SCRIPT
Trang 23• Tính toán trong shell:
-để tính toán trên số thực ta phải dùng lệnh |bc
• Cú Pháp Ngôn Ngữ Shell TÌM HIỂU VỀ SHELL SCRIPT
Trang 24• Vòng lặp for: Thi hành một hoặc nhiều lệnh trong một số
cố định lận.
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 25• Vòng lặp for: Thi hành một hoặc nhiều lệnh trong một số
cố định lận.
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 26• Vòng lặp while: Thi hành một hoặc nhiều câu lệnh cho đến khi một điều kiện nào đó trở thành true hoặc false.
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 27• Vòng lặp while:
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 28• Vòng lặp until: Thi hành một hoặc nhiều câu lệnh cho đến khi một điều kiện nào đó trở thành true hoặc false.
• Lưu ý: điều kiện ở đây ngược với điều kiện của vòng lặp while.
until [<điều kiện>]
Trang 29• Vòng lặp until:
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 30• Cấu trúc rẽ nhánh if …else : Thi hành một hoặc nhiều câu lệnh nếu có điều kiện là true hoặc false.
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 31• Cấu trúc rẽ nhánh if …else :
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 32• Cấu trúc lựa chọn case : cấu trúc hoạt động tương tự như lệnh switch của C Nó cho phép thực hiện các khổi lệnh phụ thuộc vào giá trị của biến.
Trang 33• Cấu trúc lựa chọn case
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 34• Cấu trúc lựa chọn case
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 35• Hàm: có chức năng mở rộng các tiện ích có sẵn trong
shell, nó có đặc điểm lợi sau:
• + Thi hành nhanh hơn do các hàm shell luôn thường trực trong bộ nhớ.
• + Cho phép lập trình trở nên dễ dàng hơn vì có thể tổ
chức chương trình thành các module.
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 39• Hàm.
-Biến toàn cục : khi không có khai báo local thì được xem là biến toàn cục Biến toàn cục được nhìn thấy và thay đổi vởi tất cả các hàm trong script.
Vd:
• Cấu Trúc Phức Tạp TÌM HIỂU VỀ SHELL SCRIPT
Trang 41Sử dụng các toán tử:
• Toán tử So sánh số:
Trang 42• Toán tử so sánh chuỗi:
So sánh chuỗi Toán tử: Ý nghĩa
string1 = string 2: string 1
-z string: string NULL
• Sử Dụng Toán Tử TÌM HIỂU VỀ SHELL SCRIPT
Trang 43• Toán tử string:Các toán tử string, cũng được gọi là các toán tử thay thế trong tài liệu về bash, kiểm tra giá trị của biến là chưa gán giá trị hoặc khộng xác định:
• Sử Dụng Toán Tử TÌM HIỂU VỀ SHELL SCRIPT
Trang 44• Sử Dụng Toán Tử TÌM HIỂU VỀ SHELL SCRIPT
Trang 45Giảng viên:Th.S Trần Mạnh Hùng
IPTABLES
Trang 461 Giới Thiệu
Iptables do Netfilter Organiztion viết ra để tăng tính năng bảo mật trên
hệ thống Linux.Iptables cung cấp các tính năng sau:
Tích hợp tốt với kernel của Linux
Có khả năng phân tích package hiệu quả
Lọc package dựa vào MAC và một số cờ hiệu trong TCP Heade
Cung cấp chi tiết các tùy chọn để ghi nhận sự kiện hệ thống
Cung cấp kỹ thuật NAT
Có khả năng ngăn chặn một số cơ chế tấn công theo kiểu DoS
Trang 471 Iptables là gì ?
Iptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, miễn phí và có sẵn trên Linux Netfilter/Iptables gồm 2 phần là Netfilter ở nhân Linux và Iptables nằm ngoài nhân Iptables chịu trách nhiệm giũa người dùng và Netfilter để đẩy các luật của người dùng vào cho Netfilter xử lí Netfilter tiến hành lọc các gói dữ liệu ở mức IP Netfilter làm việc trực tiếp trong nhân, nhanh và không làm giảm tốc độ của hệ thống
Trang 482 Cài Đặt
Iptables được cài đặt mặc định trong hệ thống Linux, package của
iptables là iptables-version.rpm hoặc iptables-version.tgz …, ta có thể dùng lệnh để cài đặt package này:
$ rpm –ivh iptables-version.rpm đối Red Hat
$ apt-get install iptables đối với Debian
- Khởi động iptables: service iptables start
- Tắt iptables: service iptables stop
- Tái khởi động iptables: service iptables restart
- Xác định trạng thái iptables: service iptables status
Trang 493 Cơ Chế Xử Lý Package Trong Iptables
- Iptables sẽ kiểm tra tất cả các package khi nó đi qua iptables host, quá trình kiểm tra này được thực hiện một cách tuần tự entry đầu tiên đến entry cuối cùng
- Có ba loại bảng trong iptables:
- Mangle table: chịu trách nhiệm biến đổi quality of service bits
trong TCP header Thông thường loại table này được ứng dụng trong SOHO (Small Office/Home Office)
Trang 503 Cơ Chế Xử Lý Package Trong Iptables (tt)
- Filter queue: chịu trách nhiệm thiết lập bộ lọc packet
(packet filtering), có ba loại built in chains được mô tả để thực hiện các chính sách về firewall (firewall policy rules)
+ Forward chain: Cho phép packet nguồn chuyển qua
firewall
+ Input chain: Cho phép những gói tin đi vào từ firewall + Output chain: Cho phép những gói tin đi ra từ firewall.
- NAT queue: thực thi chức năng NAT (Network Address
Translation), cung cấp hai loại built-in chains sau đây:
Trang 513 Cơ Chế Xử Lý Package Trong Iptables (tt)
- Pre-routing chain: NAT từ ngoài vào trong nội bộ Quá trình NAT
sẽ thực hiện trước khi khi thực thi cơ chế routing Điều này thuận lợi cho việc đổi địa chỉ đích để địa chỉ tương thích với bảng định tuyến của firewall, khi cấu hình ta có thể dùng khóa DNAT để mô
tả kỹ thuật này
- Post-routing chain: NAT từ trong ra ngoài Quá trình NAT sẽ thực
hiện sau khi thực hiện cơ chế định tuyến Quá trình này nhằm thay đổi địa chỉ nguồn của gói tin Kỹ thuật này được gọi là NAT one-to-one hoặc many-to-one, được gọi là Source NAT hay SNAT
- OUPUT: Trong loại này firewall thực hiện quá trình NAT.
Trang 524 Target và Jumps
- Jump là cơ chế chuyển một packet đến một target nào đó để xử lý
thêm một số thao tác khác
- 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 khóa những packet.
- 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”, tức iptables sẽ ghi nhận lại
những message bắt đầu bằng chuỗi “string”
Trang 534 Target và Jumps(tt)
- 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 , tức qualifier chỉ định loại reject message sẽ được gởi lại cho người gởi Các loại
qualifer sau: icmp-port-unreachable (default),
icmp-net-unreachable, icmp-host-icmp-net-unreachable, icmp-proto-icmp-net-unreachable, …
- DNAT: thay đổi địa chỉ đích của packet Tùy chọn là
Trang 545 Thực Hiện Lệnh Trong Iptables
-t <table>:Chỉ định bảng cho iptables bao gồm: filter, nat,
mangle tables
-j <target>: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 <protocol-type> : Mô tả các giao thức bao gồm: icmp,
tcp, udp và all
-s <ip-address> : Chỉ định địa chỉ nguồn
-i <interface-name>: Chỉ định “input” interface nhận packet
-o <interface-name>:Chỉ định “output” interface chuyển
packet ra ngoài
Trang 55#iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p TCP -j ACCEPT
Trang 565 Thực Hiện Lệnh Trong Iptables(tt)
Ví dụ: Iptables được cấu hình cho phép firewall chấp nhận các gói dữ liệu có giao tiếp (protocols) là TCP , đến từ card mạng eth0 , có bất kỳ địa chỉ IP nguồn là bất kỳ , đi đến địa chỉ 192.168.1.58 qua card mạng eth1 Số port nguồn là từ 1024 đến 65535 và port đích là 80 (www/http).
#iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP sport 1024:65535 dport 80 -j ACCEPT
Trang 575 Thực Hiện Lệnh Trong Iptables(tt)
Ví dụ: Iptables được cấu hình cho phép firewall chấp nhận gởi ICMP requests(pings) và gởi trả các ICMP echo-replies
#iptables -A INPUT -p icmp icmp-type echo-reply -j ACCEPT
Trang 586 Sử Dụng Chain Tự Định Nghĩa
• Thay vì sử dụng các chain đã được xây dựng trong iptables, ta có thể sử dụng Use Defined chains để định nghĩa một chain name mô tả cho tất cả protocol-type cho packet Ta có thể dùng User Defined chains thay thế chain dài dòng bằng cách
sử dụng chain chính chỉ đến nhiều chain con
Trang 597 NAT
- Dynamic NAT : Là một kỹ thuật chuyển đổi IP NAT (Network Address Translation) Các địa chỉ IP nội bộ được chuyển sang IP NAT như sau:
Trang 607 NAT
- Dynamic NAT: NAT Router đảm nhận việc chuyển dãy IP nội bộ
192.168.0.x sang dãy IP mới 210.40.2.71 Khi có gói liệu với IP nguồn là
192.168.0.x đến router, router sẽ đổi IP nguồn thành 210.40.2.71sau đó mới gởi
ra ngoài Quá trình này gọi là SNAT (Source-NAT, NAT nguồn) Router lưu dữ liệu trong một bảng gọi là bảng NAT động Ngược lại, khi có một gói từ liệu từ gởi từ ngoài vào với IP đích là 210.40.2.71, router sẽ căn cứ vào bảng NAT
động hiện tại để đổi địa chỉ đích 210.40.2.71 thành địa chỉ đích mới là
192.168.0.x Quá trình này gọi là DNAT (Destination-NAT, NAT đích) Liên lạc giữa 192.168.0.x và 210.40.2.71là hoàn toàn trong suốt (transparent) qua NAT router NAT router tiến hành chuyển tiếp (forward) gói dữ liệu từ 192.168.0.x đến 210.40.2.71và ngược lại.
Trang 627 NAT
• DNAT
# iptables -t nat -A PREROUTING -i eth0 -p tcp dport 80 -j DNAT
to-destination 192.168.1.2# iptables -t nat -A PREROUTING -i eth0 -p tcp dport 25 -j DNAT to-destination 192.168.1.3# iptables -t nat -A PREROUTING -i eth0 -p udp dport 53 -j DNAT to-destination 192.168.1.4
Trang 637 NAT
- Masquerade: Là một kỹ thuật khác trong NAT (Network Address Translation) Các địa chỉ IP nội bộ được chuyển sang IP NAT như sau:
Trang 647 NAT
- Các bước cấu hình Masquerade :
Cho phép forward các packet qua máy chủ đặt Iptables
echo 1 > /proc/sys/net/ipv4/ip_forward
B2: Đổi dãy ip nội bộ 192.186.1.0/24
# iptables -A POSTROUTING -t nat -o eth0 -s 192.168.1.0/24 -d 0/0 -j MASQUERADE
Trang 66IPTABLES